Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so the result is clear, unambiguous, and free of AI slop. Use for documentation, READMEs, runbooks, procedures, error messages, release notes, incident reports, and API guides. Also use when the user says "STE", "Simplified Technical English", "ASD-STE100", "de-slop", "make this readable", "write for non-native readers", or asks for docs that translate well. Enforces the 53 rules of the standard (Issue 9) with a deterministic lint gate.
4description: "Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so the result is clear, unambiguous, and free of AI slop. Use for documentation, READMEs, runbooks, procedures, error messages, release notes, incident reports, and API guides. Also use when the user says \"STE\", \"Simplified Technical English\", \"ASD-STE100\", \"de-slop\", \"make this readable\", \"write for non-native readers\", or asks for docs that translate well. Enforces the 53 rules of the standard (Issue 9) with a deterministic lint gate."
5---
6
7# Simple English
8
9> **HARD GATE** — Do NOT deliver technical text without classifying it first as procedural or descriptive. Every sentence limit and verb form depends on this choice.
10>
11> **HARD GATE** — Do NOT change code, identifiers, CLI flags, file paths, or quoted error messages. Leave them exact.
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.
> **HARD GATE** — Do NOT claim STE compliance. State that final approval rests with the writer.
14
15Write technical text with the rules of ASD-STE100 Simplified Technical English. STE removes long sentences, synonym rotation, and decorative clauses so a tired reader cannot misread an instruction.
16
17## Your task
18
19When asked to write or rewrite technical text, do these steps in order:
20
211. Select mode (**Pragmatic** default for docs/READMEs; **Strict** when user requests full STE/compliance).
222. Classify each passage as procedural or descriptive.
233. Fix vocabulary before drafting (pick one verb/noun per concept).
244. Apply core limits and rules from REFERENCE.md.
255. Run mandatory self-check before delivery.
266. Leave code, identifiers, and quoted errors untouched.
27
28When asked to CHECK text, report each violation with rule number, offending text, and compliant rewrite.
68-[REFERENCE.md](REFERENCE.md) — full 53-rule catalog, slop substitutions, doc-type adaptations, and verification checklist.
69
70---
71
72# Simple English — Reference
73
74Deep detail for the rules in SKILL.md. Read this section when you apply the rules, when you select words, or when you write a specific doc type.
75
76## The 53 rules
77
7853 rules in 9 sections, paraphrased from ASD-STE100 Issue 9 with software examples. The official wording is in the free standard at asd-ste100.org.
79
80### Section 1 — Words (Rules 1.1 to 1.14)
81
82| Rule | Instruction |
83|---|---|
84| 1.1 | Use only approved words, technical nouns, or technical verbs. |
85| 1.2 | Use an approved word only as its listed part of speech. |
86| 1.3 | Use an approved word only with its approved meaning. |
87| 1.4 | Use only the approved forms of verbs and adjectives. |
88| 1.5 | Use domain words as technical nouns ("webhook", "commit", "endpoint"). |
89| 1.6 | Use an unapproved word only when it is a technical noun or part of one. |
90| 1.7 | Do not use technical nouns as verbs. |
91| 1.8 | Use the technical nouns of your project or industry. |
92| 1.9 | Pick a short and clear technical noun. |
93| 1.10 | Do not use regional, slang, or jargon words as technical nouns. |
94| 1.11 | One item, one name. Do not call it "config" here and "settings" there. |
95| 1.12 | Use domain verbs as technical verbs ("deploy", "compile", "merge"). |
96| 1.13 | Do not use technical verbs as nouns. |
97| 1.14 | Use American English spelling. |
98
99In pragmatic mode, rules 1.5, 1.8, and 1.12 do the heavy lifting. Your domain vocabulary is legal. The rules agents break most are 1.7, 1.11, and 1.13.
100
101| Before | After |
102|---|---|
103| You can webhook the event, then do a deploy. | Send the event to the webhook. Then deploy the service. |
104
105### Section 2 — Multi-word nouns (Rules 2.1 to 2.2)
106
107| Rule | Instruction |
108|---|---|
109| 2.1 | Write multi-word nouns of three words or fewer. |
110| 2.2 | When a technical noun needs more than three words, write it in full once. Then give a short form or hyphenate the units. |
111
112Break long noun chains with prepositions (of, on, in, for):
113
114| Before | After |
115|---|---|
116| the connection pool timeout configuration value | the timeout value for the connection pool |
117
118### Section 3 — Verbs (Rules 3.1 to 3.7)
119
120| Rule | Instruction |
121|---|---|
122| 3.1 | Use only the verb forms the dictionary gives. |
123| 3.2 | Use only: infinitive, imperative, simple present, simple past, simple future, past participle as adjective. |
124| 3.3 | Use the past participle only as an adjective ("the cached response"). |
125| 3.4 | Do not use auxiliary verbs for complex constructions. No present perfect. No "is to be installed". |
126| 3.5 | Use an "-ing" form only as a technical noun or inside one ("logging", "the mounting bracket"). Never as a verb. |
127| 3.6 | Active voice. In descriptive text, passive is legal only when the agent is unknown. |
128| 3.7 | Describe an action with a verb, not a noun. Write "compress the file", not "perform compression of the file". |
129
130| Before | After |
131|---|---|
132| The migration has completed and the table is being rebuilt. | The migration is complete. The database rebuilds the table. |
133| The flag can be set in the config, making restarts unnecessary. | You can set the flag in the config file. Then a restart is not necessary. |
134| The temperature must be adjusted. | Adjust the temperature. |
135
136### Section 4 — Sentences (Rules 4.1 to 4.5)
137
138| Rule | Instruction |
139|---|---|
140| 4.1 | Write short and clear sentences. |
141| 4.2 | Do not omit words or use contractions. Keep articles. Keep "that". |
142| 4.3 | Use a vertical list for complex text. |
143| 4.4 | Use connecting words between sentences on related topics ("Then", "As a result"). |
144| 4.5 | Put an article (the, a, an) or a demonstrative adjective (this, these) before nouns where applicable. |
145
146Rule 4.2 is the anti-terseness rule. STE is short sentences with complete grammar, not telegraph style:
147
148| Wrong shortening | STE |
149|---|---|
150| Ensure file exists before running. | Make sure that the file exists before you run the command. |
151
152### Section 5 — Procedural writing (Rules 5.1 to 5.5)
153
154| Rule | Instruction |
155|---|---|
156| 5.1 | Maximum 20 words per sentence. Warnings and cautions included. |
157| 5.2 | One instruction per sentence, unless two actions occur at the same time. |
158| 5.3 | Write instructions in the imperative: "Run the migration." |
159| 5.4 | Put a required condition before the command, divided by a comma. |
160| 5.5 | Notes give information, never instructions. Notes get the 25-word limit. |
161
162| Before | After |
163|---|---|
164| Grab the API key from the dashboard before configuring the client, which you can do under Settings. | Get the API key from the dashboard, under Settings. Then configure the client with this key. |
165
166### Section 6 — Descriptive writing (Rules 6.1 to 6.6)
167
168| Rule | Instruction |
169|---|---|
170| 6.1 | Give information gradually: one new fact per sentence. |
171| 6.2 | Use key words and phrases to give the text a logical structure. |
172| 6.3 | Maximum 25 words per sentence. |
173| 6.4 | Group related information in paragraphs. |
174| 6.5 | One topic per paragraph. |
175| 6.6 | Maximum six sentences per paragraph. |
176
177Do not use the imperative in descriptive text. Descriptions explain. Procedures instruct.
178
179### Section 7 — Safety instructions (Rules 7.1 to 7.3)
180
181| Rule | Instruction |
182|---|---|
183| 7.1 | Use a word that shows the risk level. "WARNING" equals injury. "CAUTION" equals damage. |
184| 7.2 | Start with a clear command or condition. |
185| 7.3 | Then give the risk or the possible result. |
186
187Do not bury the instruction after the explanation. The pattern transfers to destructive CLI flags, irreversible migrations, and dangerous API options.
188
189| Before | After |
190|---|---|
191| Note that data loss can occur if the destructive flag is enabled against production. | CAUTION: Do not use the `--force` flag against production. The flag deletes rows that do not match the source. |
192
193### Section 8 — Punctuation and word count (Rules 8.1 to 8.7)
194
195| Rule | Instruction |
196|---|---|
197| 8.1 | All standard punctuation is legal except the semicolon. Write two sentences instead. |
198| 8.2 | Use hyphens to connect words that act as one unit. |
199| 8.3 | Parentheses are legal for references, item numbers, abbreviations, and explanations. |
200| 8.4 | In a vertical list, the lead-in colon ends a sentence for word count. |
201| 8.5 | Text inside parentheses counts as one word. |
202| 8.6 | Count as one word each: numbers, numbers with units, abbreviations, identifiers, quoted text, titles, proper nouns. |
203| 8.7 | A hyphenated word counts as one word. |
204
205Rule 8.6 matters for software text. `sqlpipe run --config sqlpipe.yaml` in backticks is quoted text and counts as one word. Long identifiers do not blow the sentence budget.
206
207### Section 9 — Writing practices (Rules 9.1 to 9.4, GR-1 to GR-8)
208
209| Rule | Instruction |
210|---|---|
211| 9.1 | When a word-for-word replacement does not work, restructure the sentence. |
212| 9.2 | Use each approved word correctly: approved meaning, approved part of speech. |
213| 9.3 | Do not build phrasal verbs. Write "decrease" not "go down". Write "install" not "set up". |
214| 9.4 | Keep one consistent style and terminology through the whole document. |
215
216General recommendations GR-1 to GR-8:
217
218| Rule | Instruction |
219|---|---|
220| GR-1 | Keep the conjunction "that". |
221| GR-2 | Be careful with "with". |
222| GR-3 | Give pronouns clear referents. |
223| GR-4 | Prefer "this plus noun" over a bare "this". |
224| GR-5 | Avoid false friends. |
225| GR-6 | Avoid Latin abbreviations. Write "for example", "that is". Name the items instead of "etc.". |
226| GR-7 | Use inclusive language (primary and replica, not master and slave). |
227| GR-8 | Use the possessive apostrophe only when you are sure it is correct. If unsure, do not use it. |
228
229## Word selection
230
231The official dictionary (about 900 approved words, about 1200 banned words with alternatives) is copyrighted by ASD. This skill does not reproduce it. The mechanics apply without the dictionary: one word, one meaning, one part of speech.
232
233Use this decision flow when you pick or replace a word:
234
2351. Is the word in the dictionary? If yes, go to step 2. If no, go to step 6.
2362. Is the word approved (an UPPERCASE headword)? If yes, go to step 3. If no, go to step 5.
2373. Does the word have the same part of speech as your intended use? If yes, read the meaning, then go to step 4. If no, select the correct alternative, then go to step 5a.
2384. Is the approved meaning correct? If yes, use the word. If no, go to step 6.
2395. Read the alternative, its meaning, and its examples. Select the correct alternative. Then go to step 5a.
240- 5a. Does the alternative have the same part of speech? If yes, do a word-for-word replacement. If no, use a different sentence construction.
2416. Is the word a technical noun or technical verb? If yes, add it to the project glossary, then use it. If no, do not use the word.
242
243Known part-of-speech rulings, useful as patterns:
244
245| Word | Ruling |
246|---|---|
247| test, check, work | Noun only. "Do a test", not "test the pump". "Check that X" becomes "make sure that X". |
248| oil | Noun only in STE examples. For the verb, the dictionary gives "lubricate". |
249| help | Verb only. For the noun, the dictionary gives "aid". |
250| fall | "To move down by gravity" only. Never "decrease". |
251| follow | "To come after" only. Never "obey". Write "obey the instructions". |
252| above, below | Physical positions only. For limits, write "more than" or "less than". |
253
254## Doc-type adaptations
255
256The same rules transfer to any text where misreading has a cost. Each case names the mode and the adaptations.
257
258### Error messages and CLI output
259
260Mode: procedural. This is the highest-value target. An error message is an instruction to a stressed reader at 2 a.m. State what happened in the simple past. State the cause if known. Give the command or condition to fix it. Remove "Oops", "Please ensure", and apology filler.
261
262| Before | After |
263|---|---|
264| Oops! Something went wrong while attempting to establish a connection. Please ensure your credentials are configured and try again. | Connection to the database failed. The password for user `app` was not correct. Set `DB_PASSWORD` and connect again. |
265
266### Runbooks and standard operating procedures
267
268Mode: strict procedural. This is STE home turf. An on-call runbook is a maintenance manual. Write every step in the imperative. Put one instruction per step. Put conditions first. Put warnings before the step, command first, risk second. Enforce the 20-word limit. An operator under pager stress reads each sentence once.
269
270### Incident reports and postmortems
271
272Mode: descriptive. Use the simple past only. A timeline in the present perfect hides when things happened. STE removes hedges. The report states what is known and writes "unknown" for the rest. This reads more honest because it is.
273
274| Before | After |
275|---|---|
276| We have identified an issue that may have impacted some users. | Between 14:02 and 14:31 UTC, 12% of requests failed. A deploy at 14:00 removed the cache warmup step. |
277
278### Commit messages and PR descriptions
279
280Mode: descriptive body, imperative subject. The convention already matches STE. Write an imperative subject line. Write plain past facts in the body. Apply the substitution table and the 25-word limit to the body. Delete "this PR aims to".
281
282### API changelogs and release notes
283
284Mode: descriptive. Write one entry, one change, one sentence where possible. "Breaking" entries follow the warning pattern, command first. Example: "Update your calls to `v2/users`. The `name` field split into `first_name` and `last_name`."
285
286### Instructions for AI agents
287
288Mode: procedural. A system prompt is a procedure for a reader that cannot ask questions. That reader is the exact reader STE was designed for. Write one instruction per sentence. This keeps rules independently quotable and hard to half-follow. Apply one word, one meaning so the model does not treat "check", "verify", and "validate" as three operations. Put conditions first. Remove the banned modals. A model reads them as optional. Write "must" or delete the rule.
289
290### UI copy and empty states
291
292Mode: procedural, hard length limits. Buttons and labels are technical names and stay exempt. Body copy follows the rules. Example: "No projects yet. Create a project to start." Nothing else survives at this length.
293
294### Translation and localization prep
295
296Mode: strict. The original purpose of STE was to make English readable for non-native maintenance crews. It doubles as pre-editing for machine translation. One meaning per word plus complete grammar removes most translation ambiguity.
297
298## Verification checklist
299
300Run this pass on every draft before delivery. The checks run from mechanical to judgment.
301
302### Mechanical checks (searchable)
303
304Search the draft for each pattern. Every hit outside code blocks and quoted text is a violation.
316| ` if ` or ` when ` mid-sentence | Trailing condition (5.4) | Move the condition to the start. Add a comma. |
317
318### Countable checks
319
320| Check | Limit |
321|---|---|
322| Sentence length, procedural | 20 words (5.1) |
323| Sentence length, descriptive and notes | 25 words (6.3, 5.5) |
324| Paragraph size | Six sentences max (6.6) |
325| Multi-word noun chains | Three words max (2.1) |
326| Instructions per sentence | One, unless simultaneous (5.2) |
327
328Backticked commands, numbers with units, and identifiers count as one word each (Rule 8.6).
329
330### Judgment checks
331
332| Check | Question |
333|---|---|
334| Classification | Is each passage cleanly procedural or descriptive? |
335| Voice | For each passive sentence: is the agent truly unknown, and is the passage descriptive? |
336| Condition placement | Does every condition stand before its command, with a comma? |
337| Synonym rotation | Does one term per concept hold across the whole document? |
338| Warnings | Does each warning put the command or condition first, the risk second? |
339| Completeness | Are articles present? Is "that" present after "make sure"? |
340| Untouchables | Are code, identifiers, quoted errors, and proper nouns unchanged? |
341
342## When reporting violations (check mode)
343
344For each violation, give the rule number, the offending text, and a compliant rewrite. Cite only rule numbers that appear in this reference.
345
346End the report with this statement when the user asked for STE compliance: "No tool can guarantee ASD-STE100 compliance. Final approval rests with the writer. The official standard is a free download at asd-ste100.org."
Cursor's activation model with a different vocabulary — trigger modes instead of rule types — plus hard character caps, which is the one place a format here will silently drop instructions rather than fail loudly.