writing skills · assembly order
Getting started.
Six steps. Step 1 is a decision rather than an action, because it changes what the later steps are worth to you.
Decide whose voice you are editing toward
Three of the skills treat a voice profile as authoritative and defer to it
wherever their own defaults disagree. That profile,
Profiles/voice.md, is not in the repository and is not published
here. It is Shane’s private note.
So pick one of two paths now, before installing anything:
| Path | What you get | Which skills |
|---|---|---|
| Supply your own profile | Point the voice-bound skills at a profile of your own and they edit toward you. The procedure is the reusable part; the profile is the material. | humanize, ms-style-pass,
writing-review |
| Skip the profile | Use only the skills that apply a published standard, and leave the voice-bound ones alone until you have a profile. Running them blind yields Shane’s voice, not yours. | plain-language, ste100 |
Either way, writing-interview stays out. It interviews Shane and
depends on his own material, so it does not travel. The
choosing a pass page has the
per-skill detail.
Install from the marketplace
This is the installation instruction the README gives, in full:
Install via the slogsdon-claude-code-config marketplace.
The README stops there. The commands are documented in a sibling project, in the
Loop
& Gate Grow Kit’s reference/tools.md. In Claude Code:
/plugin marketplace add slogsdon/claude-code-config
/plugin install skills-writing@slogsdon-claude-code-config
On pi, the same file gives:
pi install git:github.com/slogsdon/skills-writing
There is nothing else to install. The skills are Markdown, the two linters are Python, and neither the plugin nor this site needs a build step of its own.
Confirm the six skills are there
The plugin ships one skill directory per skill, and the plugin manifest describes all six. After installation you should be able to see these names in your skill listing:
humanize
ms-style-pass
plain-language
ste100
writing-review
writing-interview
If a name is missing, the plugin did not install completely. Two skills carry a
references/ file (humanize and
ms-style-pass). Four carry evals/ cases. Neither is
required for the skill to run.
Put your own voice profile where the skills look
Skip this step if you took the second path in step 1. If you took the first, write the profile before you run a voice pass, because the pass has nothing else to aim at.
The skills refer to it as Profiles/voice.md and read it when it is
available. What belongs in that file is your material, not this site’s: rules
you refuse, substitutions you have made, phrases you never use, and the shapes
your prose already takes. Expect the profile to win arguments with the skill,
since that precedence is stated in humanize and
writing-review alike.
Two cautions from the skill files, both worth carrying into your own profile.
humanize insists that existing texture is voice and invented
texture is performance, so do not ask the profile for hedges, asides, or jokes
the author never wrote. And writing-review treats a fragment
sequence that lands a build-up as a deliberate choice, so a profile that bans
fragments outright will produce reviews that argue with you.
Run one pass on a real draft
Each skill loads from its description, so the ask is what matters. These are the trigger phrases from the six skill files, quoted:
humanize "humanize this", "edit in my voice", "make this sound like me"
ms-style-pass "ms style pass", "apply the style guide"
plain-language "make this plain language", "plain language pass"
ste100 "apply STE100 to this", "simplified technical english"
writing-review "review this", "critique this draft"
writing-interview "interview me first", "help me write about X"
Order matters where two passes touch the same draft. The source README states
that workflow-stage-draft runs them as
interview → draft → humanize → ms-style-pass, with
writing-review sitting alongside as the read-only diagnostic. Run
the style pass first and the voice pass after, and you will have edited the
same sentences twice in the wrong order.
The two most useful expectations to hold onto: writing-review never
writes a replacement draft, and writing-interview writes no prose
until you answer. A run that breaks either one has drifted out of the skill’s
stated boundary.
Measure the edit, if you want a cross-check
Two diagnostic linters sit in scripts/, byte-identical to
addyosmani/clarity and
deliberately unmodified. From a checkout of the repository:
python3 scripts/strip_markdown.py draft.md > /tmp/draft.txt
python3 scripts/prose_stats.py /tmp/draft.txt
Or in one pass:
python3 scripts/strip_markdown.py draft.md | python3 scripts/prose_stats.py -
They report sentence-length variation, short-line share, anchor density, hedge
and booster density, and stock-lexis hits. There is no composite score, and
scripts/README.md is explicit that this is not a quality gate and
never an authorship or detector verdict. Measure the same piece before and
after a pass and compare the two readings.
One run you can repeat measures the project’s own README.md at
commit d4e7ce7, on Python 3.15:
python3 scripts/strip_markdown.py README.md | python3 scripts/prose_stats.py -
The first part of the output:
220 words, 17 sentences, 7 paragraphs
note: under 400 words. Cadence and density figures are unstable at this length, and so is any judgement made from a short excerpt.
MEASUREMENTS (descriptive, not targets)
body_sentence_cv 0.994
short_line_share 0.294
hedge_per_100 0.0
booster_per_100 0.0
anchors_per_100 10.91
signpost_opener_share 0.0
Further down, under LOOK HERE, it lists four triads, one of them
“on agentic workflows / web standards / payments engineering”. It also notes that
a third of the lines are under eight words. In a README those are list items, so
the script’s own advice applies: read body_sentence_cv and ignore
the short-line share. A README isn’t written in anyone’s voice, so the run shows
the shape of the output. It says nothing about whether the prose is good.
To confirm the vendored files are the upstream ones, scripts/README.md
gives the check:
shasum -a 256 scripts/*.py
what setup does not get you
two limitsThe skills edit, apply a standard, diagnose, or ask. None of them verify a fact,
and humanize is explicit that when a better sentence needs a fact,
number, or experience only the author has, it leaves a [TK: your question]
marker rather than writing plausible filler. Treat every [TK] as
work you still owe the draft.
The scoring gate in humanize is a pattern checklist with a threshold
of 90, not a claim about how text is received. A deduction on protected text (an
accurate hedge, a landing fragment, a required technical term, the actual ask in a
message) is kept and reported as kept (−N): reason. If the final score
is under 90 because items were kept, the skill reports the real number.
where to go
after setup-
Choosing a pass
What each of the six does, when it applies, and which parts travel to another author.
-
Project introduction
What the plugin is, and what this site does not claim about it.
-
Source on GitHub
The README, the changelog, the six skill files, the references, and the eval cases.