Cursor rule
.cursor/rules/simple-english.mdcWrite 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.
Quality
47/100
Scores the file, not the repository.Length
3,163 words
34 headings · 0 code blocksRepository
119
— · pushed 1 days agoLast changed
3 days ago
First indexed 3 days ago.123456# Simple English78> **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.9>10> **HARD GATE** — Do NOT change code, identifiers, CLI flags, file paths, or quoted error messages. Leave them exact.11>12> **HARD GATE** — Do NOT claim STE compliance. State that final approval rests with the writer.1314Write 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.1516## Your task1718When asked to write or rewrite technical text, do these steps in order:19201. Select mode (**Pragmatic** default for docs/READMEs; **Strict** when user requests full STE/compliance).212. Classify each passage as procedural or descriptive.223. Fix vocabulary before drafting (pick one verb/noun per concept).234. Apply core limits and rules from REFERENCE.md.245. Run mandatory self-check before delivery.256. Leave code, identifiers, and quoted errors untouched.2627When asked to CHECK text, report each violation with rule number, offending text, and compliant rewrite.2829## Passage classification3031| | Procedural (instructions) | Descriptive (explanations) |32|---|---|---|33| Purpose | Tell the reader what to do | Explain what a thing is or does |34| Verb form | Imperative: "Install the pump." | Simple present, past, or future |35| Sentence limit | **20 words** (Rule 5.1) | **25 words** (Rule 6.3) |36| Unit rule | One instruction per sentence (5.2) | One topic per paragraph (6.5), max 6 sentences (6.6) |3738## Core limits3940| Limit | Rule |41|---|---|42| Max 20 words per procedural sentence / 25 words per descriptive sentence or note | 5.1, 6.3, 5.5 |43| Max 6 sentences per paragraph; multi-word nouns max 3 words | 6.6, 2.1 |44| Approved verbs: infinitive, imperative, simple present/past/future, past participle as adj | 3.2 |45| Active voice; no semicolons; put required conditions before commands | 3.6, 8.1, 5.4 |46| Code, numbers with units, identifiers, quoted text count as 1 word each | 8.6 |4748## Approved modals & slop replacements4950Approved modals: `can`, `will`, `must`. Replace `should` → `must` (requirement) or delete (recommendation); `may`/`might`/`could` → `can`.5152Common slop replacements: `leverage`/`utilize` → `use`; `in order to` → `to`; `prior to` → `before`; `ensure` → `make sure that`; `functionality` → `function`/`feature`. See full table in REFERENCE.md.5354## Self-check before delivery55561. Count words in 3 longest sentences (over limit → split).572. Search draft for contractions, perfect tenses, banned modals, `-ing` verbs after comma, semicolons.583. Check `if`/`when` placement (must start sentence before command).594. Verify consistent single term per concept across whole doc.6061## Verify6263→ verify: `test -x skills/simple-english/scripts/ste_lint.py && python3 skills/simple-english/scripts/ste_lint.py --self-test && echo OK`6465## Reference6667- [REFERENCE.md](REFERENCE.md) — full 53-rule catalog, slop substitutions, doc-type adaptations, and verification checklist.6869---7071# Simple English — Reference7273Deep 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.7475## The 53 rules767753 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.7879### Section 1 — Words (Rules 1.1 to 1.14)8081| Rule | Instruction |82|---|---|83| 1.1 | Use only approved words, technical nouns, or technical verbs. |84| 1.2 | Use an approved word only as its listed part of speech. |85| 1.3 | Use an approved word only with its approved meaning. |86| 1.4 | Use only the approved forms of verbs and adjectives. |87| 1.5 | Use domain words as technical nouns ("webhook", "commit", "endpoint"). |88| 1.6 | Use an unapproved word only when it is a technical noun or part of one. |89| 1.7 | Do not use technical nouns as verbs. |90| 1.8 | Use the technical nouns of your project or industry. |91| 1.9 | Pick a short and clear technical noun. |92| 1.10 | Do not use regional, slang, or jargon words as technical nouns. |93| 1.11 | One item, one name. Do not call it "config" here and "settings" there. |94| 1.12 | Use domain verbs as technical verbs ("deploy", "compile", "merge"). |95| 1.13 | Do not use technical verbs as nouns. |96| 1.14 | Use American English spelling. |9798In 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.99100| Before | After |101|---|---|102| You can webhook the event, then do a deploy. | Send the event to the webhook. Then deploy the service. |103104### Section 2 — Multi-word nouns (Rules 2.1 to 2.2)105106| Rule | Instruction |107|---|---|108| 2.1 | Write multi-word nouns of three words or fewer. |109| 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. |110111Break long noun chains with prepositions (of, on, in, for):112113| Before | After |114|---|---|115| the connection pool timeout configuration value | the timeout value for the connection pool |116117### Section 3 — Verbs (Rules 3.1 to 3.7)118119| Rule | Instruction |120|---|---|121| 3.1 | Use only the verb forms the dictionary gives. |122| 3.2 | Use only: infinitive, imperative, simple present, simple past, simple future, past participle as adjective. |123| 3.3 | Use the past participle only as an adjective ("the cached response"). |124| 3.4 | Do not use auxiliary verbs for complex constructions. No present perfect. No "is to be installed". |125| 3.5 | Use an "-ing" form only as a technical noun or inside one ("logging", "the mounting bracket"). Never as a verb. |126| 3.6 | Active voice. In descriptive text, passive is legal only when the agent is unknown. |127| 3.7 | Describe an action with a verb, not a noun. Write "compress the file", not "perform compression of the file". |128129| Before | After |130|---|---|131| The migration has completed and the table is being rebuilt. | The migration is complete. The database rebuilds the table. |132| 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. |133| The temperature must be adjusted. | Adjust the temperature. |134135### Section 4 — Sentences (Rules 4.1 to 4.5)136137| Rule | Instruction |138|---|---|139| 4.1 | Write short and clear sentences. |140| 4.2 | Do not omit words or use contractions. Keep articles. Keep "that". |141| 4.3 | Use a vertical list for complex text. |142| 4.4 | Use connecting words between sentences on related topics ("Then", "As a result"). |143| 4.5 | Put an article (the, a, an) or a demonstrative adjective (this, these) before nouns where applicable. |144145Rule 4.2 is the anti-terseness rule. STE is short sentences with complete grammar, not telegraph style:146147| Wrong shortening | STE |148|---|---|149| Ensure file exists before running. | Make sure that the file exists before you run the command. |150151### Section 5 — Procedural writing (Rules 5.1 to 5.5)152153| Rule | Instruction |154|---|---|155| 5.1 | Maximum 20 words per sentence. Warnings and cautions included. |156| 5.2 | One instruction per sentence, unless two actions occur at the same time. |157| 5.3 | Write instructions in the imperative: "Run the migration." |158| 5.4 | Put a required condition before the command, divided by a comma. |159| 5.5 | Notes give information, never instructions. Notes get the 25-word limit. |160161| Before | After |162|---|---|163| 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. |164165### Section 6 — Descriptive writing (Rules 6.1 to 6.6)166167| Rule | Instruction |168|---|---|169| 6.1 | Give information gradually: one new fact per sentence. |170| 6.2 | Use key words and phrases to give the text a logical structure. |171| 6.3 | Maximum 25 words per sentence. |172| 6.4 | Group related information in paragraphs. |173| 6.5 | One topic per paragraph. |174| 6.6 | Maximum six sentences per paragraph. |175176Do not use the imperative in descriptive text. Descriptions explain. Procedures instruct.177178### Section 7 — Safety instructions (Rules 7.1 to 7.3)179180| Rule | Instruction |181|---|---|182| 7.1 | Use a word that shows the risk level. "WARNING" equals injury. "CAUTION" equals damage. |183| 7.2 | Start with a clear command or condition. |184| 7.3 | Then give the risk or the possible result. |185186Do not bury the instruction after the explanation. The pattern transfers to destructive CLI flags, irreversible migrations, and dangerous API options.187188| Before | After |189|---|---|190| 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. |191192### Section 8 — Punctuation and word count (Rules 8.1 to 8.7)193194| Rule | Instruction |195|---|---|196| 8.1 | All standard punctuation is legal except the semicolon. Write two sentences instead. |197| 8.2 | Use hyphens to connect words that act as one unit. |198| 8.3 | Parentheses are legal for references, item numbers, abbreviations, and explanations. |199| 8.4 | In a vertical list, the lead-in colon ends a sentence for word count. |200| 8.5 | Text inside parentheses counts as one word. |201| 8.6 | Count as one word each: numbers, numbers with units, abbreviations, identifiers, quoted text, titles, proper nouns. |202| 8.7 | A hyphenated word counts as one word. |203204Rule 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.205206### Section 9 — Writing practices (Rules 9.1 to 9.4, GR-1 to GR-8)207208| Rule | Instruction |209|---|---|210| 9.1 | When a word-for-word replacement does not work, restructure the sentence. |211| 9.2 | Use each approved word correctly: approved meaning, approved part of speech. |212| 9.3 | Do not build phrasal verbs. Write "decrease" not "go down". Write "install" not "set up". |213| 9.4 | Keep one consistent style and terminology through the whole document. |214215General recommendations GR-1 to GR-8:216217| Rule | Instruction |218|---|---|219| GR-1 | Keep the conjunction "that". |220| GR-2 | Be careful with "with". |221| GR-3 | Give pronouns clear referents. |222| GR-4 | Prefer "this plus noun" over a bare "this". |223| GR-5 | Avoid false friends. |224| GR-6 | Avoid Latin abbreviations. Write "for example", "that is". Name the items instead of "etc.". |225| GR-7 | Use inclusive language (primary and replica, not master and slave). |226| GR-8 | Use the possessive apostrophe only when you are sure it is correct. If unsure, do not use it. |227228## Word selection229230The 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.231232Use this decision flow when you pick or replace a word:2332341. Is the word in the dictionary? If yes, go to step 2. If no, go to step 6.2352. Is the word approved (an UPPERCASE headword)? If yes, go to step 3. If no, go to step 5.2363. 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.2374. Is the approved meaning correct? If yes, use the word. If no, go to step 6.2385. Read the alternative, its meaning, and its examples. Select the correct alternative. Then go to step 5a.239 - 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.2406. 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.241242Known part-of-speech rulings, useful as patterns:243244| Word | Ruling |245|---|---|246| test, check, work | Noun only. "Do a test", not "test the pump". "Check that X" becomes "make sure that X". |247| oil | Noun only in STE examples. For the verb, the dictionary gives "lubricate". |248| help | Verb only. For the noun, the dictionary gives "aid". |249| fall | "To move down by gravity" only. Never "decrease". |250| follow | "To come after" only. Never "obey". Write "obey the instructions". |251| above, below | Physical positions only. For limits, write "more than" or "less than". |252253## Doc-type adaptations254255The same rules transfer to any text where misreading has a cost. Each case names the mode and the adaptations.256257### Error messages and CLI output258259Mode: 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.260261| Before | After |262|---|---|263| 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. |264265### Runbooks and standard operating procedures266267Mode: 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.268269### Incident reports and postmortems270271Mode: 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.272273| Before | After |274|---|---|275| 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. |276277### Commit messages and PR descriptions278279Mode: 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".280281### API changelogs and release notes282283Mode: 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`."284285### Instructions for AI agents286287Mode: 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.288289### UI copy and empty states290291Mode: 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.292293### Translation and localization prep294295Mode: 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.296297## Verification checklist298299Run this pass on every draft before delivery. The checks run from mechanical to judgment.300301### Mechanical checks (searchable)302303Search the draft for each pattern. Every hit outside code blocks and quoted text is a violation.304305| Search for | Violation | Fix |306|---|---|---|307| contractions (`n't`, `'ll`, `'re`, `'ve`, `it's`) | Contraction (4.2) | Expand it. |308| `has been`, `have been`, `had been` | Perfect tense (3.4) | Simple past or simple present. |309| `has` or `have` plus a past participle | Present perfect (3.4) | Simple past. |310| `is being`, `are being`, `was being` | Progressive passive (3.4, 3.5) | Active, simple tense. |311| a comma plus `making`, `allowing`, `enabling`, `ensuring` | "-ing" clause as verb (3.5) | New sentence with a real subject. |312| semicolon `;` | Semicolon (8.1) | Two sentences. |313| `e.g.`, `i.e.`, `etc.` | Latin abbreviation (GR-6) | "for example", "that is", name the items. |314| `simply`, `easily`, `seamlessly`, `robust` | Filler (no fact) | Delete. |315| ` if ` or ` when ` mid-sentence | Trailing condition (5.4) | Move the condition to the start. Add a comma. |316317### Countable checks318319| Check | Limit |320|---|---|321| Sentence length, procedural | 20 words (5.1) |322| Sentence length, descriptive and notes | 25 words (6.3, 5.5) |323| Paragraph size | Six sentences max (6.6) |324| Multi-word noun chains | Three words max (2.1) |325| Instructions per sentence | One, unless simultaneous (5.2) |326327Backticked commands, numbers with units, and identifiers count as one word each (Rule 8.6).328329### Judgment checks330331| Check | Question |332|---|---|333| Classification | Is each passage cleanly procedural or descriptive? |334| Voice | For each passive sentence: is the agent truly unknown, and is the passage descriptive? |335| Condition placement | Does every condition stand before its command, with a comma? |336| Synonym rotation | Does one term per concept hold across the whole document? |337| Warnings | Does each warning put the command or condition first, the risk second? |338| Completeness | Are articles present? Is "that" present after "make sure"? |339| Untouchables | Are code, identifiers, quoted errors, and proper nouns unchanged? |340341## When reporting violations (check mode)342343For each violation, give the rule number, the offending text, and a compliant rewrite. Cite only rule numbers that appear in this reference.344345End 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."346
Also in danielvm-git/bigpowers
Diff this repo’s formatsOne 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?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| danielvm-git/bigpowers.cursor/rules/align-grid.mdc · 119 | Cursor rules | lint-formatdo-notagent-behaviour | 65/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/assess-impact.mdc · 119 | Cursor rules | testtesting-strategydeployment | 66/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/audit-code.mdc · 119 | Cursor rules | setuptestlint-formatstyle+4 | 66/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/audit-plan.mdc · 119 | Cursor rules | buildteststylegit | 74/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/build-epic.mdc · 119 | Cursor rules | buildgit | 58/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/change-request.mdc · 119 | Cursor rules | no sections | 48/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/commit-message.mdc · 119 | Cursor rules | lint-formatstyletypesgit+3 | 82/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/compose-workflow.mdc · 119 | Cursor rules | styledo-notagent-behaviour | 65/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/context7-mcp.mdc · 119 | Cursor rules | style | 54/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/deepen-architecture.mdc · 119 | Cursor rules | testtesting-strategydo-not | 57/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/define-language.mdc · 119 | Cursor rules | lint-formatdo-not | 65/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/delegate-task.mdc · 119 | Cursor rules | git | 62/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/deploy.mdc · 119 | Cursor rules | setupbuildtestdeployment | 77/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/develop-tdd.mdc · 119 | Cursor rules | teststylearchtesting-strategy+5 | 85/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/diagnose-root.mdc · 119 | Cursor rules | no sections | 39/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/dispatch-agents.mdc · 119 | Cursor rules | git | 54/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/edit-document.mdc · 119 | Cursor rules | no sections | 39/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/elaborate-spec.mdc · 119 | Cursor rules | test | 58/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/enforce-first.mdc · 119 | Cursor rules | no sections | 50/100 | 3 days ago | |
| danielvm-git/bigpowers.cursor/rules/evolve-skill.mdc · 119 | Cursor rules | no sections | 50/100 | 3 days ago |
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 3 days ago | |
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 3 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 3 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 3 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 3 days ago |
