writing-docs
Skill2 starsChanged 12 days agoMITView on GitHub
When a feature is structurally complete and a consumer of the project would need docs to use, understand, or extend what changed. Especially when: The scope test, in one question: is this read by someone consuming the project, rather than an internal record of how it was decided or built? If yes, and no other skill owns it, it belongs here. A doc is a set of answers to questions a reader arrives with. You do not know the doc…
24 other projects use a version of this.
Adopted by
Most recently taken up by
- smarzban/agent-skillstheir own version, first seen Nov 15, 2026
- grgrwlkr/claude-dashboard-vscodetheir own version, first seen Nov 8, 2026
- johannschopplich/skillstheir own version, first seen Nov 8, 2026
- The-Vibe-Company/quivrtheir own version, first seen Nov 8, 2026
- Wade-DevCode/awesome-coding-skills-cntheir own version, first seen Nov 8, 2026
- gabrielbauman/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use pr-description, implement and 6 more.
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.
MicrosoftSkillpr-description
Draft Nacelle PR titles, pull request descriptions, commit titles, commit descriptions, and squash commit messages. Use when asked for PR or commit wording, a branch summary, or a PR description that can be used in a commit. Omit validation sections from commit bodies and remove filler.
Also in 3 projects that use this
Hugging FaceSkillimplement
Make tests pass. Invoke after /write-tests produces failing tests.
Also in 5 projects that use this
Google CloudSkilltriage
Gather context on a change or bug and plan the implementation.
Also in 3 projects that use this
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
MicrosoftSkillrelease
Use ONLY when the user explicitly asks to cut/publish a Huabu desktop release or tag a version. Performs an outward action — bumps the version in apps/desktop/package.json, commits + annotated-tags vX.Y.Z, and pushes the branch + tag. That tag push auto-builds the macOS/Windows installers and publishes a GitHub Release. Provides `status`, `bump`, `tag-push`, and a one-command `run` (bump → tag-push).
Also in 4 projects that use this
- +1 more from microsoft
- +1 more from google
Other versions24 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 24
- remotion-dev/remotion★ 72ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- medusajs/medusa★ 37ksame name
- Nagi-ovo/gemini-voyager★ 21ksame name
- nukeop/nuclear★ 19ksame name
- ngrx/platform★ 8.3ksame name
- cuthbertLab/music21★ 2.6ksame name
- c15t/c15t★ 2ksame name
- NVIDIA/Megatron-Energon★ 388same name
14 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 repository19 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- addressing-review-feedbackSkill
- bounding-heavy-commandsSkill
- copilot-review-loopSkill
- developing-a-featureSkill
- drafting-a-releaseSkill
- fanning-out-with-worktreesSkill
- maintaining-architectural-coherenceSkill
- opening-a-pull-requestSkill
- planning-a-featureSkill
- product-epicSkill
- reporting-a-skill-gapSkill
- resuming-a-featureSkill
- reviewing-feature-progressSkill
- stacking-dependent-prsSkill
- testing-a-featureSkill
- testing-end-to-endSkill
- writing-code-commentsSkill
- writing-github-issuesSkill
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.
0
Common
Most of the 23 edited versions we read keep these.
1
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 13
When a feature is structurally complete and a consumer of the project would need docs to use, understand, or extend what changed.
“Common” is measured: kept by at least 6 in 10 of the 23 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-docs
When to invoke
When a feature is structurally complete and a consumer of the project would need docs to use, understand, or extend what changed. Especially when:
- You just finished a feature and are about to call it shippable.
- You are about to write docs from memory and judge them done by re-reading your own draft.
- You are reaching for a diagram and about to hand-draw it in ASCII.
The scope test, in one question: is this read by someone consuming the project, rather than an internal record of how it was decided or built? If yes, and no other skill owns it, it belongs here.
Core principle
A doc is a set of answers to questions a reader arrives with. You do not know the doc works until a reader who has only the doc can answer those questions.
You cannot be that reader. You carry the whole feature in your head, so the draft always "reads clearly" to you — that judgment is worthless for finding gaps. The reader who has only the page is the test. Same Iron Law as superpowers:writing-skills: no doc change without a failing reader scenario first.
The loop
- Locate the doc surfaces and their levels. Before writing, go find where this project's docs actually live and what each is for — a README (entry point: what it is, install, one taste, links out), a
docs/tree or generated site / homepage (depth: task guides and exhaustive reference), a wiki (often dev-internal). Look, don't assume: check the repo for adocs/directory and a docs-site config, and follow the links the README already points to. Decide which surface(s) this change belongs in and at what level, and where a pointer is needed so the surfaces cross-link instead of duplicating. Don't assume the README is the only home, and don't pour reference depth into it — a project with a docs site wants the depth there and only a pointer in the README. - Name the reader personas and their questions. Who reads this, and the concrete questions each must answer or tasks each must complete. A doc often serves two at once — a newcomer who needs zero-to-working, and an experienced reader scanning for depth. Name each, per surface where more than one is in play. The personas and their questions are the test.
- RED — run the reader, do not imagine it. Dispatch a fresh subagent per persona, given only the current doc text — no codebase, no outside knowledge, no access to you — and that persona's questions. Record verbatim where it cannot answer, answers wrong, or guesses. "It reads clearly to me" and "a new reader could probably follow this" are not the test; an actual fresh reader failing a question is. If every persona answers everything, the change is not needed — stop. If you genuinely cannot dispatch a subagent, simulate the reader: answer each question using only the words on the page, nothing you know from building the feature. Treat that result as provisional — a real fresh-reader pass is still owed before the docs are called done. "Dispatch is unavailable" is never a license to fall back to judging your own draft.
- GREEN. Write or update the doc to close exactly those gaps. A fresh subagent per persona, given only the new doc, answers all its questions and completes its task. The novice succeeds from the early sections; the advanced reader finds depth later; the advanced material does not block the novice. That ordering is progressive disclosure — proven by the test, not asserted.
- REFACTOR. Cut anything that served no persona's question. Length is justified only by a question it answers. "Shorter" is never the goal; "no unearned content" is.
Device and depth selection
A diagram, image, code block, or extra level of detail is never the default and never decoration. Each earns its place only by answering a reader's question better than prose would — and the fresh-reader test proves it did.
- Diagram — when the subject is a structure, flow, or relationship prose forces the reader to reassemble in their head (architecture, state machine, request lifecycle, decision flow). Use Mermaid, fenced as a
```mermaidblock. It is not a dependency and needs no build step or asset hosting: GitHub, GitLab, and most markdown viewers render it natively from the source, and it diffs as text. Do not hand-draw ASCII diagrams — an ASCII box-and-arrow sketch is not a rendered diagram; it misaligns across fonts, rots on edit, and reviews badly. "ASCII renders fine in plain markdown" is the trap: it renders as the literal characters you typed, not as a diagram. If a reader answers the "how does X flow through Y" question from prose alone, the diagram was decoration; cut it. - Image — only when the content is genuinely visual (a real screenshot, a rendered output) that Mermaid cannot express.
- Code block — when the reader's question is "how do I actually do this." A copyable, complete, runnable example beats a paragraph describing the call. One excellent example over many fragments. No example for a concept the reader only needs to understand, not invoke.
- Depth — calibrate per persona via progressive disclosure: accessible material first, deeper material below, ordered so depth never blocks the newcomer.
Quality bar
The bar is the documentation of a well-run open-source project: precise, structured, assumes a competent reader, earns every sentence. No marketing fluff — superlatives ("blazing-fast", "seamless", "powerful"), feature-listing without telling the reader what they can now do, and adjectives standing in for an explanation all fail the bar.
OPTIONAL SUB-SKILL: simple-english:simple-english for the prose of the doc. If it is available, load it before you draft and write the sentences under it. Where its formatting rules (headings, bold, lists, or its register for chat replies) differ from the host skill or its template, the host skill and its template win. It sets sentence style only: the loop above still decides what the doc covers, where it lives, and how long it is, and the fresh-reader test is still the gate. Code blocks keep their own content. If the skill is not available, do not stop or wait for it. If you have not already done so in this session, tell the user once that it can be installed with /plugin marketplace add AminBlg/SimpleEnglish and then /plugin install simple-english@simple-english. Then write short, plain, active sentences without it.
Out of scope
These are documentation, but other skills own them. Point there; do not duplicate.
- Docstrings / code contracts →
feature-dev-workflow:writing-code-commentsowns what a doc comment holds.feature-dev-workflow:testing-a-featuretests against that contract. - Release notes / changelog "why" →
feature-dev-workflow:drafting-a-release. - Spec / ADR / plan →
feature-dev-workflow:planning-a-feature. These are internal records of how the work was decided and built, not consumer-facing.
Anti-patterns
- Assuming the README is the only doc home. Writing without checking where the project's docs live. A project with a docs site or
docs/tree wants the depth there and a pointer in the README; dumping everything into the README duplicates that content and rots. - Calling docs done on the strength of your own read. You wrote them, so they always read clearly to you; that is the one judgment that cannot find a gap. Until a reader who has only the page passes, you are guessing.
- A diagram or section that answers no reader question. Content that survives because it "looks thorough." If no persona's question needs it, the refactor step cuts it.
- Hand-drawing a diagram in ASCII. An ASCII sketch is not a rendered diagram — it misaligns and rots. Use Mermaid, or prose if the relationship does not need a picture.
- Documenting an internal artifact, or re-documenting one another skill owns. A spec, plan, or docstring written up here as public docs creates a second source of truth. Keep to consumer-facing docs; point at the owning skill for the rest.
Red flags
| Thought | Reality |
| "I'll document it in the README" | Check where the docs actually live first. If the project has a docs site or docs/ tree, the README may warrant only a pointer to the real home. |
| "It reads clearly to me" / "a new reader could probably follow this" | You hold the whole feature in your head. Run an actual fresh reader with only the doc; your read proves nothing. |
| "I'll write the docs from what I just built and check them myself" | Self-check is not the test. The reader who has only the page is. |
| "ASCII renders fine in plain markdown, no Mermaid dependency" | It renders as literal characters, not a diagram. Mermaid is not a dependency — GitHub renders it natively from source. Use a mermaid block. |
| "A diagram makes it look thorough" | Decoration fails the test. A diagram is only for a flow/structure prose can't carry. |
| "More detail is safer" | Unearned content buries the answer. Every section maps to a reader question or it's cut. |
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.

