Skip to content

Commit ea9239a

Browse files
awatson1978claude
andcommitted
docs: fold the unslop pattern catalog into the writing style guide
Adapts the rules from Cursor's unslop skill: the fuller AI-vocabulary list, filler phrases, fancy synonyms for is, vague attributions, synonym cycling, false ranges, punctuation and formatting rules (em dashes, colons, bold, sentence-case headings, straight quotes), abstract metaphor nouns, and a plain-speech section that includes the rule against over-compressed arrow-speak. Also states the boundary this guide draws that unslop does not: metaphors that teach a concept to a non-technical reader stay, metaphors that decorate go. The guide's own prose now follows its own em-dash rule. Source: https://github.com/cursor/plugins/blob/main/pstack/skills/unslop/SKILL.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent bcf0f5b commit ea9239a

1 file changed

Lines changed: 105 additions & 32 deletions

File tree

docs/WRITING_STYLE.md

Lines changed: 105 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22

33
This guide covers prose written for people: pull request descriptions,
44
README sections, documentation pages, changelog entries, and comments that
5-
explain a decision. It exists because reviewers asked for it directly — the
5+
explain a decision. It exists because reviewers asked for it directly. The
66
1.0 review stalled partly on language, not code.
77

8+
Parts of the "patterns to avoid" section are adapted from Cursor's
9+
[unslop skill](https://github.com/cursor/plugins/blob/main/pstack/skills/unslop/SKILL.md),
10+
which catalogs the tells of machine-generated prose.
11+
812
## Who you are writing for
913

1014
Write for a motivated, intelligent reader who probably works in healthcare
@@ -19,54 +23,124 @@ remove it.
1923

2024
## Jargon: define on first use, with one good metaphor
2125

22-
Terms of art are allowed this is a technical projectbut each one gets
23-
a plain-language definition the first time it appears in a document, and a
24-
concrete metaphor helps more than a formal definition. Examples:
26+
Terms of art are allowed, since this is a technical project, but each one
27+
gets a plain-language definition the first time it appears in a document.
28+
A concrete metaphor helps more than a formal definition. Examples:
2529

2630
- A **transfer syntax** is the file's packing instructions: the same
2731
clothes fold differently into different suitcases, and the label on the
2832
suitcase tells you how to unpack it.
2933
- A **DICOMDIR** is the table of contents on the CD a patient receives:
3034
it lists which studies, series, and images are on the disc and where.
31-
- **Streaming** means reading a file the way you read a book one page at
32-
a time instead of photocopying the whole book before reading page one.
35+
- **Streaming** means reading a file the way you read a book, one page at
36+
a time, instead of photocopying the whole book before reading page one.
3337

3438
Pick one metaphor per concept and stay with it for the whole document.
3539
Switching metaphors mid-explanation makes the reader re-learn.
3640

41+
A boundary worth stating: metaphors are for teaching, not decoration. A
42+
metaphor that gives a newcomer a concept they did not have is doing work.
43+
A metaphor draped over a technical statement the reader already understands
44+
("the plan holds it", "the writer rides along on the stream") is
45+
decoration; say the literal thing. If removing the metaphor loses
46+
information for a newcomer, keep it. If removing it changes nothing but
47+
tone, remove it.
48+
3749
Spending a few extra sentences on a well-chosen explanation is preferred
3850
over being ultra-concise. Concision that costs comprehension is not
3951
concision; it just moves the cost to the reader.
4052

41-
## Banned patterns
53+
## Patterns to avoid
4254

4355
These constructions read as machine-generated filler and are not welcome
44-
in this repository's prose:
45-
46-
- The words _delve_, _dive into_, _landscape_, _robust_, _seamless_,
47-
_leverage_ (as a verb), _utilize_, _cutting-edge_, _game-changer_.
48-
- The frame "It's not just X, it's Y" and its cousins ("This isn't about
49-
X"; "X isn't merely Y").
56+
in this repository's prose.
57+
58+
### Words and phrases
59+
60+
- AI vocabulary: _additionally_, _crucial_, _cutting-edge_, _delve_,
61+
_dive into_, _enduring_, _enhance_, _fostering_, _game-changer_,
62+
_garner_, _interplay_, _intricate_, _landscape_ (abstract), _pivotal_,
63+
_robust_, _seamless_, _showcase_, _tapestry_ (abstract), _testament_,
64+
_underscore_, _vibrant_. Use the plain word.
65+
- Fancy synonyms for plain words: _utilize_ means use, _leverage_ means
66+
use, _facilitate_ means help, _numerous_ means many, "in the event
67+
that" means if. The fancier synonym is rarely clearer.
68+
- Fancy ways to say "is": "serves as", "stands as", "boasts",
69+
"features". Just say "is" or "has".
70+
- Filler phrases: "in order to" becomes "to". "Due to the fact that"
71+
becomes "because". "It is important to note that" gets deleted.
72+
- Vague attributions: "experts believe", "industry reports suggest",
73+
"some argue". Name the source or delete the claim.
74+
- Superficial trailing "-ing" phrases: "...ensuring reliability",
75+
"...highlighting the importance of standards". Delete them, or replace
76+
them with a specific fact.
77+
78+
### Constructions
79+
80+
- The frame "It's not just X, it's Y" and its cousins ("This isn't
81+
about X"; "X isn't merely Y"). State the point directly.
82+
- Forcing ideas into groups of three. Use however many there really are.
83+
- False ranges: "from X to Y" where X and Y are not points on a real
84+
scale. List the items directly.
85+
- Synonym cycling: calling the same thing the parser, the reader, and
86+
the engine within one page. Pick one name and repeat it.
5087
- Staccato sentence fragments for emphasis. ("Fast. Simple. Done.")
51-
- Chains of clauses spliced with em-dashes where ordinary sentences would
52-
do.
53-
- Piles of three adjectives or three parallel phrases where one precise
54-
word would do.
55-
- Openers like "Certainly!", "Great question!", or "Let's explore".
88+
- Excessive hedging: "could potentially possibly be argued that it
89+
might" becomes "may".
90+
- Generic conclusions: "The future looks bright." State specific plans
91+
or facts, or end without a conclusion.
92+
- Chatbot phrases and sycophancy: "I hope this helps!", "Let me know
93+
if...", "Certainly!", "Great question!". Respond directly.
5694
- Exclamation points in technical prose.
57-
- Emoji.
58-
59-
If a sentence would survive in any project's README, it is probably
60-
saying nothing about this one. Delete it.
61-
62-
## Sentence-level guidance
6395

64-
- One idea per sentence.
65-
- Active voice: "the parser reads the header," not "the header is read."
66-
- Prefer verbs to noun-forms of verbs: "we validated the output," not
67-
"we performed validation of the output."
68-
- Numbers beat adverbs: "parses a 500 MB file in 1.2 seconds," not
69-
"blazingly fast."
96+
### Punctuation and formatting
97+
98+
- Avoid em dashes. If a thought needs separation, end the sentence or
99+
use a comma.
100+
- Colons are fine before a list or an example, not as mid-sentence
101+
connectors gluing two clauses together.
102+
- Bold sparingly. Do not bold every proper noun or acronym. The bold
103+
label with a colon that restates its own line ("**Performance:**
104+
performance improved") converts to prose. A bold lead-in that ends in
105+
a period, names the item, and is followed by genuinely new detail is
106+
fine.
107+
- Headings in sentence case, not Title Case.
108+
- Straight quotes, not curly quotes.
109+
- No emoji, decorative or otherwise.
110+
111+
### Jargon dressed as depth
112+
113+
Abstract metaphor nouns read as technical but usually hide a plainer
114+
concrete word: _substrate_, _wedge_, _vector_ (for "way"), _locus_,
115+
_nexus_, _primitive_ (as a noun), _harness_ (as metaphor), _surface_ (as
116+
in "API surface"), _bedrock_, _scaffolding_ (as metaphor), _paradigm_,
117+
_north star_, _flywheel_, _endgame_, _ratchet_, _gold-plating_.
118+
"Substrate" becomes "base". "Wedge in" becomes "add". "Endgame" becomes
119+
"the last phase". Pick the concrete word.
120+
121+
## Plain speech
122+
123+
- Say what it does, not how it feels. "SQL you can read" and "the
124+
database stays close at hand" name a feeling. Name the mechanism or a
125+
number instead: "a column rename fails the build", "parses a 500 MB
126+
file in 1.2 seconds". If you cannot restate a sentence as a concrete
127+
instruction, fact, or number, cut it. And if the sentence could appear
128+
unchanged in another project's documentation, it says nothing about
129+
this one; cut it.
130+
- One idea per sentence. If the reader has to backtrack to parse a
131+
sentence, break it in two or drop clauses.
132+
- Active voice, with the actor named: "the compiler validates queries",
133+
not "queries are validated". Passive is fine only when the actor is
134+
unknown or genuinely does not matter.
135+
- Cut adverbs, or use a stronger verb or the measured number. "Runs
136+
quickly" becomes the number. "Significantly improves" becomes the
137+
measured difference.
138+
- Do not over-compress. Dropped articles, verbless fragments, arrows,
139+
and unexplained abbreviations make the reader decode instead of read.
140+
"Parser rejects bad date → exit 2, no write" becomes "The parser
141+
rejects a bad date, exits with code 2, and writes nothing." Write
142+
whole sentences with their articles and verbs, and spell out arrows
143+
and abbreviations.
70144
- Write the explanation the way you would say it to a colleague across a
71145
desk, then delete the throat-clearing from the transcript.
72146

@@ -86,8 +160,7 @@ saying nothing about this one. Delete it.
86160
> file required 20 GB of memory; now it requires about 2 GB, because the
87161
> library only holds the piece it is currently working on. The reading
88162
> code announces each piece as an event, and other code listens for the
89-
> events it cares about — the way a radio broadcasts and receivers tune
90-
> in.
163+
> events it cares about, the way a radio broadcasts and receivers tune in.
91164
92165
The second version is longer. It is also the only one of the two that
93166
tells the reader anything.

0 commit comments

Comments
 (0)