Write or repair documentation that stays true to the system it describes — README, setup guide, how-to, API reference, architecture explanation, release notes, runbook — by fixing the reader and the task first, then grounding every factual claim in code you actually read. Use when documentation is being written, restructured or found to be stale, or when a reader cannot get from the docs to a working result. Not for interface strings inside a product, not for persuasive or marketing copy, and not itself proof that the documented commands work.
Documentation drifts because it is written from what the author remembers rather than from what
the system does. The failure is not bad prose — it is a true-sounding sentence nobody checked.
Keep the verbs apart: created is the document written; reviewed is someone reading it;
verified is every command run and every link resolved. This skill gets you to created and
reviewed. It does not get you to verified — see documentation-verification.
When this fires
Documentation is being authored, restructured, or updated after a change; a README no longer
matches the repository; a reader reports that the guide does not work. It does not fire for copy
inside the product's own interface, or for copy whose job is to persuade.
Procedure
Name the reader and the moment. Who they are, what they already know, what they were doing
one step before they opened this, and what state the system is in when they arrive. Write to
that person. "Developers" is not a reader.
Name the one task this document completes, and what proves it completed — a running server,
a passing request, a deployed change. A document with no finishable task becomes reference by
accident and serves nobody.
Choose the shape and keep it pure. A tutorial gets a beginner to a first success; a how-to
solves one problem for someone who already has the context; a reference is looked up, never
read; an explanation covers why. Mixing two of these in one page is the most common structural
defect — split instead, and link.
Find the source of truth and pin the scope. Read the code, the config, the schema, the
route definitions, the CLI's own help output, the migrations. Record the version, platform and
environment the document is true for. Where two sources disagree, resolve it before writing —
an unresolved contradiction shipped as prose is a defect you authored.
Draft the spine before the sentences: prerequisites, the single main path in order, and
what the reader should observe after each step. If a reader cannot tell whether step 4 worked,
step 5 is where they will silently fail.
Ground every factual claim in something you read. Default flags, env var names, config
keys, return shapes, error text, supported versions — each should be traceable to a file you
can name. A claim you cannot trace is a hypothesis: check it, or mark it as unconfirmed. Never
write plausible output you have not seen.
Make examples literally runnable. Copy-pasteable commands, complete code, and placeholders
that are visibly placeholders (<your-project-id>), never a real-looking value a reader will
paste. Never invent a flag, an endpoint or a sample response to make an example tidy.
Document the failure the reader will actually hit — the missing dependency, the wrong
version, the permission error you met while checking. A troubleshooting section written from
imagination is filler.
Reconcile with what already exists. Update the stale page rather than adding a second
truth; fix cross-references, navigation and terminology so one name means one thing throughout.
Delete what the code no longer supports instead of leaving it as history.
Hand off honestly. List the commands, examples and links you did not execute, and say the
document is written but unverified. Publishing it — to a docs site, a wiki, a package
registry, a public repository — is an outward-facing act: stop and ask rather than
shipping it as part of the writing.
Checklist
Reader, prior knowledge and finishing condition are written down, not assumed
One document shape, not two spliced together
Version, platform and environment scope stated
Every factual claim traceable to code, config or observed output
Every command and example complete, runnable, with placeholders marked as such
No invented flags, fields, options or sample output
Each step tells the reader what they should now see
Failure cases come from real ones encountered, not imagined
Stale content updated or deleted; cross-references and terminology consistent
Unexecuted commands, examples and links named; publication not performed unasked
Failure handling
The code does not settle the question — read the tests and the callers next. If it is still
ambiguous, write what is true of every branch and raise the question; do not pick the version
that reads better.
The existing document contradicts the implementation — the implementation wins for what you
describe, but say so in the report. A silent rewrite hides either a doc bug or a code bug, and
you do not yet know which.
A behaviour only the maintainers know — mark it unconfirmed and ask. An authoritative
sentence sourced from inference is the exact failure this skill exists to prevent.
The feature is not built yet — do not document it in the present tense. Documentation
describing intent is indistinguishable from documentation describing the product.
A third-party library's current behaviour matters — read its current documentation rather
than recalling it, and cite what you read.
Evidence to report
The reader and task the document targets; the files, commands and outputs each non-obvious claim
came from; the version and platform scope; the contradictions found between docs and code, and how
you resolved them; and the explicit list of what remains unverified. "Docs updated" with no source
named and no unverified list is not evidence — it is the claim this skill asks you to back.
1---2name: technical-writing3description: Write or repair documentation that stays true to the system it describes — README, setup guide, how-to, API reference, architecture explanation, release notes, runbook — by fixing the reader and the task first, then grounding every factual claim in code you actually read. Use when documentation is being written, restructured or found to be stale, or when a reader cannot get from the docs to a working result. Not for interface strings inside a product, not for persuasive or marketing copy, and not itself proof that the documented commands work.4---56# Technical writing78Documentation drifts because it is written from what the author remembers rather than from what9the system does. The failure is not bad prose — it is a true-sounding sentence nobody checked.1011Keep the verbs apart: **created** is the document written; **reviewed** is someone reading it;12**verified** is every command run and every link resolved. This skill gets you to created and13reviewed. It does not get you to verified — see `documentation-verification`.1415## When this fires1617Documentation is being authored, restructured, or updated after a change; a README no longer18matches the repository; a reader reports that the guide does not work. It does not fire for copy19inside the product's own interface, or for copy whose job is to persuade.2021## Procedure22231. **Name the reader and the moment.** Who they are, what they already know, what they were doing24 one step before they opened this, and what state the system is in when they arrive. Write to25 that person. "Developers" is not a reader.262. **Name the one task this document completes**, and what proves it completed — a running server,27 a passing request, a deployed change. A document with no finishable task becomes reference by28 accident and serves nobody.293. **Choose the shape and keep it pure.** A tutorial gets a beginner to a first success; a how-to30 solves one problem for someone who already has the context; a reference is looked up, never31 read; an explanation covers why. Mixing two of these in one page is the most common structural32 defect — split instead, and link.334. **Find the source of truth and pin the scope.** Read the code, the config, the schema, the34 route definitions, the CLI's own help output, the migrations. Record the version, platform and35 environment the document is true for. Where two sources disagree, resolve it before writing —36 an unresolved contradiction shipped as prose is a defect you authored.375. **Draft the spine before the sentences:** prerequisites, the single main path in order, and38 what the reader should observe after each step. If a reader cannot tell whether step 4 worked,39 step 5 is where they will silently fail.406. **Ground every factual claim in something you read.** Default flags, env var names, config41 keys, return shapes, error text, supported versions — each should be traceable to a file you42 can name. A claim you cannot trace is a hypothesis: check it, or mark it as unconfirmed. Never43 write plausible output you have not seen.447. **Make examples literally runnable.** Copy-pasteable commands, complete code, and placeholders45 that are visibly placeholders (`<your-project-id>`), never a real-looking value a reader will46 paste. Never invent a flag, an endpoint or a sample response to make an example tidy.478. **Document the failure the reader will actually hit** — the missing dependency, the wrong48 version, the permission error you met while checking. A troubleshooting section written from49 imagination is filler.509. **Reconcile with what already exists.** Update the stale page rather than adding a second51 truth; fix cross-references, navigation and terminology so one name means one thing throughout.52 Delete what the code no longer supports instead of leaving it as history.5310. **Hand off honestly.** List the commands, examples and links you did not execute, and say the54 document is written but unverified. Publishing it — to a docs site, a wiki, a package55 registry, a public repository — is an outward-facing act: **stop and ask** rather than56 shipping it as part of the writing.5758## Checklist5960- [ ] Reader, prior knowledge and finishing condition are written down, not assumed61- [ ] One document shape, not two spliced together62- [ ] Version, platform and environment scope stated63- [ ] Every factual claim traceable to code, config or observed output64- [ ] Every command and example complete, runnable, with placeholders marked as such65- [ ] No invented flags, fields, options or sample output66- [ ] Each step tells the reader what they should now see67- [ ] Failure cases come from real ones encountered, not imagined68- [ ] Stale content updated or deleted; cross-references and terminology consistent69- [ ] Unexecuted commands, examples and links named; publication not performed unasked7071## Failure handling7273- **The code does not settle the question** — read the tests and the callers next. If it is still74 ambiguous, write what is true of every branch and raise the question; do not pick the version75 that reads better.76- **The existing document contradicts the implementation** — the implementation wins for what you77 describe, but say so in the report. A silent rewrite hides either a doc bug or a code bug, and78 you do not yet know which.79- **A behaviour only the maintainers know** — mark it unconfirmed and ask. An authoritative80 sentence sourced from inference is the exact failure this skill exists to prevent.81- **The feature is not built yet** — do not document it in the present tense. Documentation82 describing intent is indistinguishable from documentation describing the product.83- **A third-party library's current behaviour matters** — read its current documentation rather84 than recalling it, and cite what you read.8586## Evidence to report8788The reader and task the document targets; the files, commands and outputs each non-obvious claim89came from; the version and platform scope; the contradictions found between docs and code, and how90you resolved them; and the explicit list of what remains unverified. "Docs updated" with no source91named and no unverified list is not evidence — it is the claim this skill asks you to back.
Run npx skillmds@latest add nahid-sparktales/technical-writing in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Write or repair documentation that stays true to the system it describes — README, setup guide, how-to, API reference, architecture explanation, release notes, runbook — by fixing the reader and the task first, then grounding every factual claim in code you actually read. Use when documentation is being written, restructured or found to be stale, or when a reader cannot get from the docs to a working result. Not for interface strings inside a product, not for persuasive or marketing copy, and not itself proof that the documented commands work. It is listed under Marketing & Growth on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
nahid-sparktales (@nahid-sparktales) published this skill. Their other Agent Skills are listed on their SkillMD profile.