plain-english
Make the agent's replies readable for someone who reads English as a second
language. Two problems, three rule groups: words (common ones, no idioms),
amount (answer what was asked), order (the answer first).
The rules live in references/rule-block.md. That
file is the single source. This skill does not restate the rules, does not
paraphrase them, and does not write its own version of them.
Why this skill does not enforce anything
A skill loads when something triggers it. "Write plainly" has no trigger — it
applies to every reply, including the ones where nobody mentions writing. So
the skill cannot be the enforcer.
It is the source, the installer, and the updater. It copies the
rules into ~/.claude/CLAUDE.md, which is re-sent as input on every turn.
After that, the user can forget this skill exists.
Modes
Route on the argument.
| Argument |
Mode |
Do this |
none, or install |
Install |
Follow references/install.md → Install |
update |
Update |
Same file → Update |
status |
Status |
Same file → Status |
uninstall |
Uninstall |
Same file → Uninstall |
| a passage of text, or "rewrite this" |
Rewrite |
See below |
If the argument is ambiguous, ask one short question. Do not guess between
installing and rewriting — one edits the user's global config.
Rewrite mode
Apply every rule in references/rule-block.md to the
text the user gave you.
Read the rule block first. Do not rewrite from memory of these rules.
Swap every listed word. Scan the passage for each row of the table.
Fix order. Move the answer to the first sentence. Caveats go after.
Do not cut content. The user handed you this passage, so all of it is in
scope and all of it survives. The Amount rule governs replies you author;
it does not license deleting the user's own points here. Tighten wording,
split long sentences, drop padding words — never drop an idea. If you think
the passage says more than it needs, that is the user's call and they did not
ask. Return all of it, plainly worded.
Keep every technical term. React, async, migration, cache, and the like
stay exactly as they are. Apply the keep-test in the rule block: domain
nouns stay, borrowed pictures go. A real term of art is kept and explained
in plain words beside it, never replaced.
When the user asks you to remove them ("no jargon", "explain this for
someone non-technical", "rewrite it for my mum"), their instruction wins.
Do it. Then use the note in step 8 to say the terms were dropped and that
the result is no longer precise enough for a reader who needs them. Do not
refuse, and do not quietly keep the terms after being asked to remove them.
Keep the warmth. Swap the hard word for a kind one. Do not delete the
sentence to make the text shorter.
Check what you wrote. If scripts/check-swaps.py is reachable, run it
on your output. It is the only check here that is not you grading yourself:
python3 skills/plain-english/scripts/check-swaps.py -
Review every hit and fix the real ones, then run it again. Do not apply
hits blindly: the script matches strings, so it cannot tell the verb
"surface" from "surface tension", or a banned word quoted as an example from
one used for real. A hit you reject is fine; a hit you did not look at is
not. If the script cannot run, scan the real characters of your output
against the swap table by hand.
Either way, a note in your reasoning saying you used plain words does not
count. And a clean result is not proof the text is plain — the script only
sees the listed words, in the forms it can match. Hard words that are not on
the list are still yours to catch.
Output the rewritten text only. No preamble, no list of what you
changed.
One exception, one line. Add a note in exactly two cases:
- You dropped a technical term because the user asked you to.
- You kept a harder word because the plain swap would have lost meaning.
That is the whole list. Making an ordinary swap is following the rules, not
departing from them, so it never earns a note — not even a true one, and not
to show your work. "The passage was already plain, so I changed little" is
not a departure either. When the rewrite is clean, the text is the whole
answer and you add nothing.
When a note is due, it must be true. Do not write "the only change was X"
unless X really was the only change. An inaccurate note is worse than no
note, because it tells the reader to stop checking.
Never change what the passage means. If a swap would lose real information,
keep the meaning and find a different plain wording. Losing content is a worse
failure than using a hard word.
What this skill cannot do
Say this plainly when it comes up. Do not claim more.
- It cannot promise the rules are followed. Installing them puts them in
context every turn. Whether the agent follows them late in a long session is
not measured. If replies get denser as a session goes on, that is worth
reporting — the fix would be a
UserPromptSubmit hook that repeats the short
version, and that has not been built.
- It is English only. It does not translate, and it does not make text
easier to read in any other language.
- The swap list is not complete. It was built from real failures, in one
variety of English. Users will meet hard words that are not on it. The
general rule covers those; the list is the teaching examples.
Boundaries
| Skill |
Owns |
Not this skill because |
ghostwriter |
Text the user sends to other people, in the user's voice |
plain-english governs what the agent says to the user |
define |
What one word means in its sentence |
It explains a word; it does not change how replies are written |
i18n |
Translation files, locale data, cultural rewriting |
Different language, not English readability |
| — |
English teaching: lesson plans, grammar drills, test prep |
This skill writes for readers, it does not teach them |
1---2name: plain-english3description: Installs a lasting plain-English rule set into the user's global CLAUDE.md, so every later reply stays readable for people who read English as a second language — common words, the answer first, no idioms. Also rewrites a dense passage on demand. Triggers on: "say that in plain English", "simpler English", "your replies are too long / too dense / hard to read", "write for non-native English readers", "ESL readers", "install / update / uninstall the plain-English rules", "/plain-english". Does NOT trigger for: drafting messages sent as the user (`ghostwriter`); explaining what one word means in context (`define`); translation files or locale work (`i18n`); tuning the whole collaboration or its defaults (`whoami`, `handshake`) — this fixes readability only; or teaching English — no lesson plans, grammar drills, or test prep. Keeps technical terms (React, async, migration, cache) unchanged.4---56# plain-english78Make the agent's replies readable for someone who reads English as a second9language. Two problems, three rule groups: **words** (common ones, no idioms),10**amount** (answer what was asked), **order** (the answer first).1112The rules live in [references/rule-block.md](references/rule-block.md). That13file is the single source. This skill does not restate the rules, does not14paraphrase them, and does not write its own version of them.1516## Why this skill does not enforce anything1718A skill loads when something triggers it. "Write plainly" has no trigger — it19applies to every reply, including the ones where nobody mentions writing. So20the skill cannot be the enforcer.2122It is the **source**, the **installer**, and the **updater**. It copies the23rules into `~/.claude/CLAUDE.md`, which is re-sent as input on every turn.24After that, the user can forget this skill exists.2526## Modes2728Route on the argument.2930| Argument | Mode | Do this |31|---|---|---|32| none, or `install` | Install | Follow [references/install.md](references/install.md) → Install |33| `update` | Update | Same file → Update |34| `status` | Status | Same file → Status |35| `uninstall` | Uninstall | Same file → Uninstall |36| a passage of text, or "rewrite this" | Rewrite | See below |3738If the argument is ambiguous, ask one short question. Do not guess between39installing and rewriting — one edits the user's global config.4041## Rewrite mode4243Apply every rule in [references/rule-block.md](references/rule-block.md) to the44text the user gave you.45461. **Read the rule block first.** Do not rewrite from memory of these rules.472. **Swap every listed word.** Scan the passage for each row of the table.483. **Fix order.** Move the answer to the first sentence. Caveats go after.494. **Do not cut content.** The user handed you this passage, so all of it is in50 scope and all of it survives. The **Amount** rule governs replies you author;51 it does not license deleting the user's own points here. Tighten wording,52 split long sentences, drop padding words — never drop an idea. If you think53 the passage says more than it needs, that is the user's call and they did not54 ask. Return all of it, plainly worded.555. **Keep every technical term.** React, async, migration, cache, and the like56 stay exactly as they are. Apply the keep-test in the rule block: domain57 nouns stay, borrowed pictures go. A real term of art is kept and explained58 in plain words beside it, never replaced.5960 **When the user asks you to remove them** ("no jargon", "explain this for61 someone non-technical", "rewrite it for my mum"), their instruction wins.62 Do it. Then use the note in step 8 to say the terms were dropped and that63 the result is no longer precise enough for a reader who needs them. Do not64 refuse, and do not quietly keep the terms after being asked to remove them.656. **Keep the warmth.** Swap the hard word for a kind one. Do not delete the66 sentence to make the text shorter.677. **Check what you wrote.** If `scripts/check-swaps.py` is reachable, run it68 on your output. It is the only check here that is not you grading yourself:6970 ```bash71 python3 skills/plain-english/scripts/check-swaps.py -72 ```7374 **Review** every hit and fix the real ones, then run it again. Do not apply75 hits blindly: the script matches strings, so it cannot tell the verb76 "surface" from "surface tension", or a banned word quoted as an example from77 one used for real. A hit you reject is fine; a hit you did not look at is78 not. If the script cannot run, scan the real characters of your output79 against the swap table by hand.8081 Either way, a note in your reasoning saying you used plain words does not82 count. And a clean result is not proof the text is plain — the script only83 sees the listed words, in the forms it can match. Hard words that are not on84 the list are still yours to catch.858. **Output the rewritten text only.** No preamble, no list of what you86 changed.8788 **One exception, one line.** Add a note in exactly two cases:8990 - You dropped a technical term because the user asked you to.91 - You kept a harder word because the plain swap would have lost meaning.9293 That is the whole list. Making an ordinary swap is following the rules, not94 departing from them, so it never earns a note — not even a true one, and not95 to show your work. "The passage was already plain, so I changed little" is96 not a departure either. When the rewrite is clean, the text is the whole97 answer and you add nothing.9899 When a note is due, it must be true. Do not write "the only change was X"100 unless X really was the only change. An inaccurate note is worse than no101 note, because it tells the reader to stop checking.102103Never change what the passage means. If a swap would lose real information,104keep the meaning and find a different plain wording. Losing content is a worse105failure than using a hard word.106107## What this skill cannot do108109Say this plainly when it comes up. Do not claim more.110111- **It cannot promise the rules are followed.** Installing them puts them in112 context every turn. Whether the agent follows them late in a long session is113 not measured. If replies get denser as a session goes on, that is worth114 reporting — the fix would be a `UserPromptSubmit` hook that repeats the short115 version, and that has not been built.116- **It is English only.** It does not translate, and it does not make text117 easier to read in any other language.118- **The swap list is not complete.** It was built from real failures, in one119 variety of English. Users will meet hard words that are not on it. The120 general rule covers those; the list is the teaching examples.121122## Boundaries123124| Skill | Owns | Not this skill because |125|---|---|---|126| `ghostwriter` | Text the user sends to other people, in the user's voice | `plain-english` governs what the agent says **to** the user |127| `define` | What one word means in its sentence | It explains a word; it does not change how replies are written |128| `i18n` | Translation files, locale data, cultural rewriting | Different language, not English readability |129| — | English teaching: lesson plans, grammar drills, test prep | This skill writes for readers, it does not teach them |