writing-for-humans
Skill1 starsChanged 57 days agoMITView on GitHub
Writes developer-facing documentation in literal style — every sentence states a fact, mechanism, or instruction, with no metaphor, analogy, or restatement. Use when drafting or revising a README, guide, API reference, runbook, or release note for engineers, or when the user says "write the docs", "write this guide", "make this literal", "strip the metaphors", "tighten this documentation".
9 other projects use a version of this.
Adopted by
Most recently taken up by
- drosam/agentstheir own version, first seen Nov 15, 2026
- adelrodriguez/skillstheir own version, first seen Nov 15, 2026
- Suge8/friedbuntheir own version, first seen Nov 8, 2026
- edgarcosta/skillztheir own version, first seen Nov 1, 2026
- lstmemery/skillstheir own version, first seen Oct 8, 2026
- jd-solanki/krutrimboxtheir own version, first seen Sep 27, 2026
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- timharris707/skills★ 44same name
- Suge8/friedbun★ 12same name
- dork-labs/dorkos★ 11same name
- edgarcosta/skillz★ 2same name
- adelrodriguez/skills★ 1same name
- drosam/agents★ 1same name
- jd-solanki/krutrimbox★ 1same name
- lstmemery/skills★ 1same name
- J03Fr0st/skills★ 0same name
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 repository47 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- bump-versionsSkill
- obsolete-skillSkill
- prefer-direct-statementsSkill
- prefer-official-docsSkill
- prefer-skillsSkill
- extract-llms-txtSkill
- init-agent-docsSkill
- maintain-agent-docsSkill
- retroSkill
- tanstack-data-loadingSkill
- customize-skillSkill
- writing-skillsSkill
- cte-modeSkill
- eli10-modeSkill
- example-drivenSkill
- plain-languageSkill
- simplified-technical-englishSkill
- ghost-writingSkill
- break-down-prdSkill
- draft-a-prdSkill
- from-first-principlesSkill
- round-tableSkill
- deep-researchSkill
- get-alignedSkill
- picking-modelsSkill
- todoSkill
- transcribe-videoSkill
- using-subagentsSkill
- using-teamsSkill
- visualiseSkill
- promptingSkill
- biome-pluginsSkill
- hardenSkill
- testing-principlesSkill
- devils-advocateSkill
- rubber-duckSkill
- steelmanSkill
- ddd-modular-monolithSkill
- module-designSkill
- ubiquitous-languageSkill
- wutSkill
- doc-commentsSkill
- writing-for-agentsSkill
- design-calloutsSkill
- design-dashboardsSkill
- prune-local-branchesSkill
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 45
Every sentence carries information the reader cannot get from another sentence.
- Distinctive: line 47
No preamble: Do not open with what the document is about.
- Distinctive: line 67
Before finalising, scan the draft and remove or flag any sentence that:
“Common” is measured: kept by at least 6 in 10 of the 8 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
Writing for humans
The reader is an engineer looking for a specific fact under time pressure. They are not reading for comprehension of a narrative; they are scanning for the parameter, the constraint, or the step, and every sentence that does not carry one is a sentence they had to reject before reaching the one that did.
write drafts; audit applies the same rules to prose already on the page. Absent, infer from the target: an empty or missing file is write, an existing one with content is audit.
House convention outranks the wording and formatting rules here — a project style guide, an existing docs set with a settled voice, a vendor template. It does not override the source contract or the verification scan.
Source contract
Work from source material the user supplies: a specification, a codebase, an existing document, a transcript. Where the source is missing, incomplete, or self-contradictory, name the gap and stop short of it. Do not fill it from general knowledge of how such systems usually work — a plausible invention is indistinguishable from a verified fact once it is on the page, and the reader has no way to tell which they are acting on.
A contradiction between two parts of the source is reported, not silently resolved. Say which parts disagree and what each claims.
Literal
State what something is, what it does, or how to do it. Never state what it is like.
✗ The scheduler wakes up, glances at the queue, and picks the hungriest job.
✓ The scheduler polls the queue every 5 seconds and runs the job with the highest priority value.- No figurative language — no metaphor, simile, personification, analogy, or idiom. Each one asks the reader to translate an image back into behaviour before they can act, and the image lands differently in every reader's first language.
- No rhetorical devices — no rhetorical questions, no hyperbole, no appeals to how the reader will feel. "Blazingly fast" is not a performance claim;
p99 under 40 ms at 1000 rpsis. - A dead metaphor that is the domain's own vocabulary is literal, not figurative. A stream drains, a handler listens, a node has a parent, a lock is held, a cache is warm. These are the precise technical terms and have no plainer equivalent. The test is whether you reached for the image or the field did.
Plain language, exact identifiers
Two registers, and the boundary between them is where the words come from the code.
- Identifiers are copied exactly — API names, parameter names, file paths, config keys, error codes, environment variables. Never paraphrase, never simplify, never fix the casing.
MAX_RETRY_ATTEMPTSis not "the max retries setting". Put every one in inline code. - Everything else is plain language — common words, active voice, present tense, one idea per sentence. Name the actor: "the worker retries the request", not "the request is retried".
Where the two conflict, accuracy wins. A concept whose only correct name is a domain term keeps that term, and gets one definition the first time it appears rather than a simpler word that means something slightly different.
Density
Every sentence carries information the reader cannot get from another sentence.
No preamble. Do not open with what the document is about.
✗ This guide explains how to configure the connection pool. Configuration is important because pooling affects throughput. Let's get started. ✓ Set the pool size with `DB_POOL_MAX`. Default: 10.- No doubling back. State each fact once, in the section it belongs to. No summary section restating what the reader just read, unless the user asked for one.
- No hedging. Generally, typically, it is worth noting, please make sure to. A hedge on a real rule tells the reader the rule bends. Where a rule genuinely has an exception, state the exception.
- Nothing deletable. A sentence that could be removed without the reader losing information is removed.
Structure
Headers and lists earn their place by aiding retrieval, not by breaking up the page. Steps, parameters, options, error codes, and limits go in lists or tables, because the reader is looking one of them up. Everything else is short prose.
Code, commands, file paths, and parameter names go in inline code or code blocks. Write no length target — the source material sets the length.
Verification
Before finalising, scan the draft and remove or flag any sentence that:
- Contains figurative language the domain did not supply.
- Restates a point already made.
- Could be deleted without losing information.
- Was invented to fill a gap in the source material — flag the gap instead.
In audit mode, report each hit with the original line, the rule it breaks, and the replacement text. An audit that names a problem without supplying the replacement leaves the work undone.
Out of scope
This skill produces documentation. Marketing copy, opinion pieces, and narrative content need the devices these rules ban, so a request for one of those is named as out of scope rather than attempted in literal style. Say which it is and what you can write instead.
Sibling skills: use writing-for-agents where the reader is another agent loading one section in isolation, and doc-comments for in-source API documentation. Both ship in the same plugin as this skill — /plugin install technical-writing-skills@draekien-skills, or npx skills add draekien/skills --skill "writing-for-agents". The plain-language and simplified-technical-english output styles set how the assistant talks; this skill sets how the artefact reads.
Done
Every sentence in the target states a fact, mechanism, or instruction. Every identifier matches the source exactly. Every gap in the source material is named in the output rather than filled. The verification scan runs clean, and in audit mode every finding carries its replacement text.
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.

