From prose
Use when drafting, editing, reviewing, or giving feedback on any prose a human will read - a Slack/Teams message, email, PR description, code review comment, design doc, RFC, technical spec, incident update, postmortem, status report, standup note, commit message, ticket, README, or doc comment - including when the user pastes text and says "fix this", "tighten this", "make this sound better", or "is this clear?", and before sending or posting any of the above. Not for code itself, only the prose humans read.
How this skill is triggered — by the user, by Claude, or both
Slash command
/prose:proseThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
One skill, one pass, three layers in order: **structure** (is each sentence
One skill, one pass, three layers in order: structure (is each sentence clear?), concision (is it tight?), surface (does it read human?). This skill merges the former clarity-and-grace and stop-slop pipeline. The ordering and the tie-breakers live here, in the text you are reading now, not in a protocol document that never loads.
Sources, encoded as method in original wording: Williams and Bizup (Style: Lessons in Clarity and Grace) for structure and concision; Verlyn Klinkenborg (Several Short Sentences About Writing) for sentence discipline; Hardik Pandya's stop-slop (MIT) for the tell inventory, re-tuned for work writing.
The audience is a software engineer writing to coworkers. The goal is writing that a busy, distracted reader understands on the first pass, in the author's own voice.
The single most useful move, Williams's own first step: look at the first seven or eight words of each sentence. Most trouble lives there - abstract subjects, long wind-ups, the action hidden in a noun. If a sentence opens concrete and reaches a strong verb fast, the rest usually takes care of itself.
Find the people, teams, services, systems doing things and make them the grammatical subjects.
Input: There was a failure in the retry logic that led to duplicate writes. Output: The retry logic failed and wrote duplicates. Why: "there was" hides the actor; name what failed and let it act.
A nominalization is a verb or adjective turned into a noun: decide into decision, fail into failure, implement into implementation. Tell-tale endings: -tion, -ment, -ance, -ence, -ity, -al, -ing-as-noun. Suspect one whenever it sits in the subject or after a weak verb (make, perform, conduct, provide, achieve, do).
Input: We need to make a determination about whether deprecation of the v1 endpoint will have an impact on downstream consumers. Output: We need to determine whether deprecating the v1 endpoint will affect downstream consumers. Why: three buried actions freed; the sentence drops by a third.
Keep nominalizations that are the real subject ("the decision was reversed") or terms of art (authentication, deployment).
Open each sentence with something familiar from the previous one; end on the new thing. Choppy "and then... and then" prose is usually new information crashing in at the front.
Input: We added a cache layer. A 40% latency drop came from it. Output: We added a cache layer. That dropped latency 40%. Why: the second sentence now opens on the familiar idea and ends on the new fact.
Across a paragraph, keep the subjects consistent and concrete so the passage feels like it is about one thing. If every sentence opens on a different abstract noun, the paragraph wanders even when each sentence is fine.
The end of a sentence is where the reader's mind puts the weight. Put the most important or newest information there; don't let a throwaway qualifier ("in most cases", "I think", "for now") dribble off the end.
Input: This will probably break the nightly batch job if we ship Friday, in my opinion. Output: If we ship Friday, this will probably break the nightly batch job. Why: the consequence, the thing they act on, now sits last.
Open with the subject and verb, then extend with conditions and clauses. Long wind-ups and big interruptions between subject and verb are the main reason a sentence feels hard.
Input: Because of the fact that, as was mentioned in the sync, the auth service, which is owned by another team, has rate limits, retries can fail. Output: Retries can fail because the auth service (owned by another team) has rate limits, as we mentioned in the sync.
Cut without changing meaning, in order of payoff:
Figurative-verb tics. A verb borrowed from physical action to dress up an abstract one is a tell. The test is metaphor, not the word: the literal or domain sense is fine.
| Tic (figurative) | Use instead | Fine (literal/domain) |
|---|---|---|
| land a point/message | make, put, end on | a plane lands |
| ship a decision/narrative | make, finalize, send | ship a release |
| leverage the tooling | use, apply | financial leverage |
| delve/dive into | examine, look at | a diver dives |
| unlock value/potential | enable, allow | unlock a file |
| tap into | use, draw on | tap a pipe |
| foster/drive/fuel engagement | build, cause, support | drive a car |
The guardrail: cut words, never load-bearing reasoning. In a design doc, PR, or postmortem, the why (why this approach, why not the alternative, what the risk is) is the payload, not filler. Be economical with words and generous with reasons.
Run last, on finished sentences. This layer removes the patterns that make prose read as generated.
Each genre has a shape: what goes first, how long, how blunt. When the task
names or implies one (PR description, code review comment, design doc or
RFC, incident update or postmortem, async message, status update, commit
message, ticket), read references/genre-playbook.md before editing. The
unifying rule: bottom line up front.
A terse, declarative voice lives in the separate laconic skill. It is a
register choice, never a correction: apply it only when the user explicitly
asks for laconic, terse, clipped, or spare prose, or runs /prose:laconic.
Generic "edit this" requests never trigger it.
Keep your own explanation as clean as the revision; practice what the skill
preaches. Two presentation rules: a draft you produce is your prose and gets
gated wherever it appears (inline or blockquoted), so write it clean; and
when you name a phrase you cut, put it in backticks (worth noting), and
put any verbatim third-party text you quote in a code fence. Backticks and
fences are the only gate exemptions.
A Stop hook (prose-gate) lints final replies for the mechanical floor:
unicode dashes, tell-phrases, figurative verb tics, emphasis adverbs,
telegraphed contrasts. If it blocks a reply, fix the listed items and finish
again; don't argue with the gate. The judgment layers - structure, cohesion,
emphasis - are yours alone; no linter checks them.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub dabd/tacit --plugin prose