ste-writing
Skill4 starsChanged 34 days agoCC0-1.0View on GitHub
Simplified Technical English for software docs, including READMEs, API references, tutorials, docstrings, comments, error messages, changelogs, and CLI help. Use when asked to write, edit, simplify, clarify, or de-slop technical prose.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- tonkeeper/tonkeeper-webtheir own version, first seen Nov 9, 2026
- LeonardiFranco/skillstheir own version, first seen Nov 8, 2026
- xiduzo/wtftheir own version, first seen Nov 8, 2026
- vstorm-co/agenticostheir own version, first seen Oct 16, 2026
- norton77930/understanding-ai-outputstheir own version, first seen Oct 11, 2026
- berkeley-humanoids/skillsword for word, first seen Oct 9, 2026
Used with
Projects with it also use prototype and grilling.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
GoogleSkillprototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
Also in 3 projects that use this
GoogleSkillgrilling
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Also in 3 projects that use this
Other versions13 projects use a version of this.
Word for word · 1
- berkeley-humanoids/skills★ 4100% same
Edited · 0
None found.
Wrote their own version · 12
- tonkeeper/tonkeeper-web★ 448same name
- vstorm-co/agenticos★ 241same name
- ahonn/dotfiles★ 62same name
- xiduzo/wtf★ 7same name
- norton77930/understanding-ai-outputs★ 3same name
- 1fc0nfig/ste-writing★ 2same name
- joshua-noel/skills★ 2same name
- TrimVis/skills★ 2same name
- HarveyZgit/agents★ 1same name
- jokot/skills★ 1same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- clean-codingSkill
- github-workflowSkill
- grounded-researchSkill
- paper-figuresSkill
- pixi-workspaceSkill
- research-code-validationSkill
- robotics-conventionsSkill
- ros2-conventionsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
41 rules. 0 are common, 38 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
38
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
If the user gives no mode and the text tells a reader what to do, use strict.
- Distinctive: line 45
When a visual explains a point more clearly than text, use the visual.
- Distinctive: line 46
Use diagrams for relationships and designs, illustrations for concepts, and charts for numerical results.
- Distinctive: line 53
Use one name for one thing across the whole document.
- Very specific: line 55
Prefer the short common word: use, start, make sure, before, about, also.
- Distinctive: line 57
No slang or jargon: "the update made the router unusable", not "the update bricked the router".
- Distinctive: line 58
Do not combine plain words into phrasal verbs: "start the container", not "spin up the container".
- Distinctive: line 59
Do not turn nouns into verbs.
- Distinctive: line 60
Keep noun clusters to three words or fewer.
- Distinctive: line 61
When a name is longer than three words, write it in full at first use, then define and use a shorter form or its abbreviation.
- Distinctive: line 63
Delete marketing adjectives and empty intensifiers on sight: seamless, robust, powerful, blazing-fast, effortless, battle-tested, …
- Distinctive: line 64
Delete filler transitions, padded summaries, and empty closers: "It is worth noting that", "In conclusion", "Whether you're X or Y".
- Distinctive: line 69
Use the active voice. Name the actor: "you", the tool, or a named component.
- Distinctive: line 71
Use simple tenses only: imperative, simple present, simple past, simple future.
- Distinctive: line 73
Avoid "-ing" main verbs: "When you run the build", not "When running the build".
- Distinctive: line 79
Use the fewest words that preserve meaning.
- Distinctive: line 80
Write short, concrete sentences.
- Very specific: line 81
Put the condition before the command, separated by a comma: "If the port is in use, change the --port value."
- Distinctive: line 82
Do not omit words to shorten a sentence.
- Distinctive: line 84
Keep the conjunction "that" after verbs like "make sure", "show", and "means": "Make sure that the service is stopped."
- Distinctive: line 85
When a pronoun or "this" can point to two things, replace it with the noun.
- Distinctive: line 86
Keep articles, but not before a noun followed by an identifier: "port 8080", "line 42", "step 3".
- Distinctive: line 88
No semicolons. Write two sentences.
- Distinctive: line 93
Use a numbered list for a sequence of 3 or more steps, one action per item, imperative form.
- Distinctive: line 95
Do not mix instructions and description in one list.
- Distinctive: line 100
Keep each instruction to 20 words or fewer.
- Distinctive: line 101
Write one instruction per sentence.
- Distinctive: line 103
After a step that changes visible state, tell the reader what to expect: "The terminal prints the server URL."
- Distinctive: line 108
Keep each sentence to 25 words or fewer.
- Distinctive: line 111
Start each paragraph with a topic sentence that names its topic.
- Distinctive: line 113
Use the same wording for the same kind of statement every time it occurs, across the whole document.
- Distinctive: line 118
Start with the command or the condition, never with background.
- Very specific: line 139
Read references/doc-types.md before you write a specific document type.
- Distinctive: line 143
Keep front matter, MDX imports, Sphinx directives, and admonition markers exactly as they are.
- Distinctive: line 144
Write link text that names the target: "see the install guide", not "click here".
- Distinctive: line 145
Follow the site's document model when one exists.
- Distinctive: line 157
Read the full source before you edit.
- Distinctive: line 167
Do not invent facts, benchmarks, examples, or version numbers.
- Distinctive: line 168
Do not remove caveats, limitations, warnings, or edge cases to make the text shorter.
- Distinctive: line 169
Do not weaken a precise technical claim into a vague plain one.
- Distinctive: line 178
Do notes contain information only, with every limit and requirement in its step?
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
STE Writing
Write software documentation in a controlled plain style that is easy to read for non-native speakers, easy to translate, easy for other agents to parse, and free of AI slop. This standard is derived from ASD-STE100 Simplified Technical English, which you can access at https://asd-ste100.org/.
Scope
Apply this skill to:
- READMEs and repository docs
- API reference pages and generated-doc source (docstrings, doc comments)
- Usage manuals, how-to guides, runbooks, install guides
- Tutorial and concept pages on documentation websites
- Inline code comments
- Error messages, log messages, CLI help text
- Changelogs, release notes, deprecation notices
Never change:
- Code, identifiers, function names, class names, keywords
- CLI commands, flags, environment variables, file paths
- Code samples and sample output, even if the prose inside them is poor
- Version strings, URLs, link targets, anchors
- Quoted error strings that users will search for
- Front matter keys, directives, admonition syntax, license text
Be careful with headings in published docs. A changed heading can break deep links and cross-references. When you edit an existing page, list proposed heading changes separately. Do not apply them silently.
Choose a mode
strict — for text that tells the reader what to do: procedures, install steps, how-to guides, runbooks, error messages, CLI help, warnings. Apply every rule and the 20-word sentence cap.
flavored — for text that explains or reports: README introductions, tutorials, concept pages, code comments, changelogs, release notes, PR descriptions. The same rules apply, but the 25-word sentence cap is a target rather than a hard limit, so the text keeps a natural rhythm.
If the user gives no mode and the text tells a reader what to do, use strict. Otherwise use flavored. A single page can mix modes: strict for its numbered steps, flavored for its introduction.
The rules
Visual presentation
- When a visual explains a point more clearly than text, use the visual. Keep simple facts and instructions in text.
- Use diagrams for relationships and designs, illustrations for concepts, and charts for numerical results.
- Show motion or change over time in video. Let readers explore behavior or compare results with interactive examples.
- Give each visual one clear purpose. Remove decoration. Place labels next to the parts they describe. State the main point in a short caption.
- Describe each visual in text, including alternative text (alt text) for images. Keep essential facts and instructions available without video playback or interaction.
Words
- Use one name for one thing across the whole document. Never "repo" in one section and "repository" in the next, never "config file" then "settings file" for the same file.
- The API's own name wins over plain-word substitution. If the method is
terminate(), write "terminate the process", not "stop the process". - Prefer the short common word: use, start, make sure, before, about, also. The full substitution table is in
references/word-choices.md. - Give each word one meaning and hold it. Use words in their exact sense, not their loose one: "the request failed", not "the request died".
- No slang or jargon: "the update made the router unusable", not "the update bricked the router".
- Do not combine plain words into phrasal verbs: "start the container", not "spin up the container"; "delete the branch", not "blow away the branch".
- Do not turn nouns into verbs. If "backup" is the noun in your terminology, write "create a backup", not "backup the database".
- Keep noun clusters to three words or fewer. Unpack longer stacks with prepositions ("the config for the priority handler of the retry queue"), or hyphenate the words that act as one unit.
- When a name is longer than three words, write it in full at first use, then define and use a shorter form or its abbreviation.
- Define an unfamiliar term at first use. Use gender-neutral language.
- Delete marketing adjectives and empty intensifiers on sight: seamless, robust, powerful, blazing-fast, effortless, battle-tested, enterprise-grade, "simply", "just".
- Delete filler transitions, padded summaries, and empty closers: "It is worth noting that", "In conclusion", "Whether you're X or Y".
- American English spelling, unless the house style says otherwise.
Verbs
- Use the active voice. Name the actor: "you", the tool, or a named component. "Run the installer", "The daemon writes a log".
- Never use the passive in steps. In descriptive text, the passive is allowed only when the agent is truly unknown ("during transmission, the data was corrupted"). When the agent is merely unstated, recast with "you", "we", or the component: "the flag can be set" → "you can set the flag".
- Use simple tenses only: imperative, simple present, simple past, simple future. No perfect tenses ("the build has failed" → "the build failed") and no stacked auxiliaries ("must be configured" → "Configure X" in a step, "you must configure X" in description).
- A past participle before a noun states a condition, not an action: "the cached response", "the connection is closed".
- Avoid "-ing" main verbs: "When you run the build", not "When running the build". The "-ing" form survives in technical names and headings ("the logging system", "Getting started").
- Express an action as a verb, not a nominalization: "validate the input", not "perform validation of the input".
- Name the primary action verb: "Seal the port with a firewall rule", not "Use a firewall rule to seal the port".
Sentences
- Use the fewest words that preserve meaning. Write natural, direct sentences. Remove repeated information and empty phrases.
- Write short, concrete sentences. Replace an abstract claim with a checkable one: "cache size affects performance" → state the direction, and give the numbers if you have them.
- Put the condition before the command, separated by a comma: "If the port is in use, change the
--portvalue." - Do not omit words to shorten a sentence. Keep subjects, verbs, and articles: "If enabled, the proxy..." → "If the flag is enabled, the proxy...". "Files not backed up" has two parses; "the files that are not backed up" has one.
- In strict mode, expand contractions: "do not", not "don't". In flavored mode, contractions may stay if they match the house voice.
- Keep the conjunction "that" after verbs like "make sure", "show", and "means": "Make sure that the service is stopped."
- When a pronoun or "this" can point to two things, replace it with the noun.
- Keep articles, but not before a noun followed by an identifier: "port 8080", "line 42", "step 3".
- Hyphenate multi-word modifiers: "read-only mode", "long-running process".
- No semicolons. Write two sentences.
- Connect related sentences with plain connectors — "and", "but", "then", "thus", "as a result" — and with demonstratives: "This method...".
Lists
- Use a numbered list for a sequence of 3 or more steps, one action per item, imperative form.
- End the lead-in with a colon. Make every item parallel and grammatically connected to the lead-in.
- Do not mix instructions and description in one list.
- In safety lists, repeat "do not" in each item instead of factoring it into the lead-in.
Procedures (strict mode)
- Keep each instruction to 20 words or fewer.
- Write one instruction per sentence. Exception: actions that must occur at the same time stay together ("Hold the reset button and reconnect the power"). A limit or immediate result also stays with its action: "Measure the startup time. It must be under 2 seconds."
- The imperative is the requirement: "Restart the service", not "you must restart the service". Reserve "must" for safety text, hard conditions, and descriptive requirement statements.
- After a step that changes visible state, tell the reader what to expect: "The terminal prints the server URL."
- Notes give information only — never an instruction, requirement, or limit. If the reader must act on it, it is a step. If it prevents damage or loss, it is a warning. The test: the reader must be able to complete the procedure with every note deleted.
Descriptions (flavored mode)
- Keep each sentence to 25 words or fewer.
- Give information gradually: one new idea per sentence, each building on the one before.
- Repeat key words to link sentences. Elegant variation is ambiguity — if sentence one says "the scheduler", sentence three does not say "the dispatcher".
- Start each paragraph with a topic sentence that names its topic. The topic sentences alone should read as an outline of the page.
- One topic per paragraph, at most six sentences.
- Use the same wording for the same kind of statement every time it occurs, across the whole document.
Warnings
- Grade the risk: warning for irreversible outcomes (data loss, security exposure, an unbootable device), caution for recoverable damage. When the two overlap, use the higher level.
- Start with the command or the condition, never with background. Then state the consequence: "Warning: Back up the database before you run the migration. The migration deletes the legacy tables."
Counting words
For the sentence caps, count as one word each: a code span, a flag, a path, an identifier, a number with its unit, a quoted string, a title, a proper noun, a parenthetical, and a hyphenated group. A list's lead-in ends at the colon and counts as one sentence, and each item counts as another.
In-code documentation
Each ecosystem fixes the form of a doc comment's first line. That convention wins over the imperative preference above. Apply the rules to everything else: word choice, sentence length, one meaning per word, active voice inside the descriptive frame.
| Ecosystem | Summary-line convention | Example first line |
| Python (PEP 257) | Imperative | "Return the parsed config as a dict." |
| Rust | Third-person descriptive | "Parses the config file at path." |
| JSDoc / TSDoc | Third-person descriptive | "Parses the config file at the given path." |
| Javadoc / KDoc | Third-person, starts with a verb | "Returns the parsed configuration." |
For parameter and return descriptions, use fragments if the house style uses them ("timeout — maximum wait in seconds"). Keep the fragment form consistent across every entry.
For inline comments: explain why, not what the code already says. Use full sentences for block comments. Short fragments are fine for end-of-line comments. Keep TODO(owner): and FIXME: conventions unchanged.
Read references/doc-types.md before you write a specific document type. It covers READMEs, API references, tutorials, how-to guides, changelogs, error messages, and commit/PR text, with the conventions that override or extend the rules for each.
Documentation websites
- Keep front matter, MDX imports, Sphinx directives, and admonition markers exactly as they are. Edit only the prose inside them.
- Write link text that names the target: "see the install guide", not "click here".
- Follow the site's document model when one exists. In Diátaxis terms: tutorials and explanations take flavored mode, how-to guides and reference pages take strict mode.
- Tables in reference pages may use consistent fragments instead of full sentences.
Line breaks
In Markdown and MDX, write each paragraph and each list item on one line. Do not hard-wrap prose at a fixed width. Renderers join the lines of a paragraph, so hard wraps do not change the output. Hard wraps only add noise to diffs, because a small edit re-wraps the lines around it.
- In an existing file, keep the line breaks that the file already uses. Do not re-wrap a file as part of a prose edit.
- Code comments, docstrings, commit messages, and plain-text files keep the line-length limit of their own convention.
Workflow
- Read the full source before you edit.
- List the facts, warnings, constraints, commands, links, and structure that must survive the rewrite.
- Select a mode for each section.
- Rewrite the prose. Do not touch anything on the never-change list.
- Compare the rewrite with the source. Restore any lost fact, caveat, or qualifier.
- Self-check the rewrite against the Final checks list below. Fix every real violation. Identifiers and deliberate style choices are not violations.
- Return only the requested deliverable. Add an audit table (rule / before / after) only when the user asks for one.
Preserve substance
- Do not invent facts, benchmarks, examples, or version numbers.
- Do not remove caveats, limitations, warnings, or edge cases to make the text shorter.
- Do not weaken a precise technical claim into a vague plain one. If a simplification would lose precision, keep the longer phrasing and flag the trade-off.
Final checks
- Does each sentence add information or direct an action?
- Is each thing called by exactly one name everywhere, and each recurring action worded the same way everywhere?
- Does every pronoun have one clear referent?
- Is every actor named where the actor is known?
- Did every fact, warning, and constraint survive?
- Do notes contain information only, with every limit and requirement in its step?
- In strict mode, is every sentence within its length cap, with all contractions expanded?
- Are all code spans, paths, flags, and links byte-identical to the source?
- In a new Markdown file, is each paragraph and list item on one line?
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

