MCPInstall

technical-writing

Use when writing, restructuring, or revising any technical document - specs, design docs, READMEs, reference documentation, plans, reports - or any prose that must survive being read twice by someone in a hurry. Encodes the house style, the truth and sourcing rules, and the banned-constructions list. Use whenever you produce repository-bound text longer than a paragraph, even if nobody says "document". Foundation for the sibling document-type skills.

Installs
19.2K
Last 24h
+439
Trending rank
#726
Security
Pass

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/riekelt/technical-writer --skill technical-writing
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads technical-writing automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

Security audits

Independent scans of the skill's instructions and bundled files.

Gen Agent Trust Hub PassSAFE ·The skill provides a comprehensive house style and truth-sourcing framework for technical documentation. It contains no executable code, network operations, or malicious patterns, and explicitly reinforces safety rules.
Socket PassNo alerts
Snyk PassLOW ·Risk: LOW · No issues

SKILL.md

The instructions your agent reads when the skill is triggered.

Technical writing

Overview

House style for technical documents. The rules are in English; documents keep their own language: a Dutch document is written and reviewed in Dutch. The structural and truth rules apply in any language; the vocabulary lists in references/style.md are English-specific and other languages carry their own. Core principle: a document states current, verified behavior, conclusion first, with every claim traceable to a source, and every fact living in exactly one place. A thin document beats an overstated one.

These rules govern documents, not chat replies. Length and section rules apply to running prose, not to reference lists like this file.

When to invoke

Load this skill for any technical prose, then the matching document-type skill on top. These are routing hints; each skill's own body is the authority.

When a repository regularly produces documents, record the invocation in project memory: one line in its CLAUDE.md or the platform's equivalent, telling agents to load this skill for any technical prose there.

The task isAlso load
A proposal, RFC, design doc, spec, or migration planwriting-design-docs
Recording a decision, an ADR, a decision log entryrecording-decisions
A changelog entry, release notes, "what shipped"writing-changelogs
A runbook, setup guide, procedure, troubleshooting entrywriting-runbooks
A tracker item: epic, story, task, bug report, spike, acceptance criteriawriting-issues
A migration or deprecation guidewriting-runbooks
A postmortem, incident report, root-cause analysiswriting-postmortems
Documenting an existing, under-documented system; regrounding stale docs against codedocumenting-legacy-codebases
A process, lifecycle, or interaction diagram; drawing business logicdiagramming-processes
An API reference: endpoints, message payloads, DTOs, CLI commands, file formats, webhooksdocumenting-contracts
Reviewing or rewriting someone else's text; the final pass before delivering any documentreviewing-technical-prose

Non-goals

  • Does not govern marketing copy, social posts, or UI microcopy; only the truth rules in references/truth.md still bind those.
  • Does not decide content: what is true comes from the sources, not from the style.
  • Does not license restyling existing documents that follow their own conventions; apply the precedence rules below.
  • Does not yield to a request to make a document "punchy", "compelling", or "persuasive": the numbers persuade, the register stays plain.

Mandatory checkpoint before drafting

Before drafting a new document or substantial section, derive and state in working notes:

Kind: <normative|descriptive|historical|runbook|reference> | Audience: <who> | Purpose: <the verb the reader must accomplish> | Non-goals: <what this deliberately does not cover>

Fill the fields from the request, sources, and repository context. State a safe assumption and continue when it does not materially change the result. Ask only when an unknown would change the audience, substance, or scope. Never invent a fact to complete the checkpoint; do not insert the checkpoint into the finished document unless its schema requires it.

Read first, then write

Before writing a line:

  1. Read up to two comparable documents in the same directory; adopt their structure, tone, and conventions. When fewer than two comparable documents exist, read every available example, then use repository-level conventions. Do not block because the directory is new.
  2. Check for a README.md that indexes the documents. If it exists, add the new document to it.
  3. Check whether the topic already lives somewhere. Extending the owner is almost always better than starting a rival document beside it.

Rule precedence

When instructions conflict, apply them in this order:

  1. Truth, safety, and historical-integrity rules.
  2. An explicit exception in the active document-type skill.
  3. The shared hard rules below.
  4. An explicit schema and the conventions in the target directory.
  5. Shared style preferences in references/style.md.

Existing practice controls only choices that a higher rule does not settle. It cannot weaken sourcing, rewrite accepted history, or represent unverified work as shipped. A document-type exception must name the rule it bends and the boundary of the exception.

An author's stated style choice outranks the shared style preferences, and nothing else. When the author says leave my voice alone, the style pass stops; truth, safety, and history stay binding whoever objects.

Classify the document before editing it

The edit rule differs per kind. "Update docs to match code" is actively wrong for two of the five.

KindExamplesEdit rule
Normativearchitecture principles, contracts, style guidesIf code violates the contract, do NOT water the contract down; record the violation. Edit only when the contract itself names deleted or renamed concepts.
Descriptiveflows, component docs, state machinesUpdate to match code exactly. Verify against implementations, not names.
Historicalchangelogs, old specs, decision logs, applied migrationsNever rewrite history. Flag discrepancies; supersede with a new entry.
Runbookoperations, troubleshooting, release proceduresUpdate to match reality; every step must have been actually run.
ReferenceAPI docs, config references, indexesExhaustive: every key, every flag, with defaults and a Usage column.

If an entire document describes something deleted, do not delete the file: mark it obsolete with a one-line banner ("> NOTE: describes removed component X; see Y") and leave the removal to the owner.

Hard rules

Non-negotiable, in every document:

  • No em dashes, no en dashes, no -- dashes. Use commas, colons, semicolons, periods, parentheses, or - with spaces as an aside marker. A plain hyphen serves ranges (2026-2030). Check all three forms before delivery.
  • No changelog section and no "last updated" field inside a document. This holds per sentence too: describe current behavior, never the previous behavior; "this step replaced the manual check" belongs in a migration doc or release note, not in a procedure.
  • No delivery history as narrative status in prose, comments, names, or strings: no phases, task IDs, ticket keys, SHAs, or plan references that merely describe how work was delivered. A pinned commit may appear solely as claim evidence. Ticket keys may appear as functional metadata in tracker records, commit messages, planning documents, and citations; never in code comments or user-facing content.
  • Never state as fact what you cannot trace to code at a cited path, a pinned commit, a test, a document, or a primary source. A plausible guess presented as fact is worse than "the source says nothing about this." See references/truth.md.
  • One fact, one home. Everything else links to the owner. A summary may route, never decide: when an index and its source disagree, the source wins and the index is the bug.
  • Accepted decisions and applied migrations are immutable. Corrections are new dated entries, never edits to history.
  • Headings in sentence case, never Title Case.

Workflow

  1. Read first (above), and classify the document.
  2. Declare before drafting: fill the checkpoint above (kind, audience, purpose, non-goals).
  3. Draft conclusion-first at every level: document, chapter, paragraph. No run-up, no context paragraphs before the outcome. Each chapter opens with what came out of it, not how it was approached.
  4. Ground every claim and label its confidence: references/truth.md.
  5. Style pass over sentences, words, headings, and the banned-constructions list: references/style.md.
  6. Verify before delivery: load reviewing-technical-prose for the checklist. Check references by actually following them.

Audience

Know who you write for before starting. Not "users": the actual person, where they are, and the verb they must accomplish.

ReaderWhat they need
DevelopersThe why behind the choice, and what changes about their work tomorrow
Tech leads / architectsTrade-offs, alternatives, long-term consequences
Management / product ownerWhat it yields, what it costs, which risks
External partiesNo internal team names or jargon without explanation

Several groups at once: the summary reads for the broadest group, the rest may deepen. A phrase that would need a footnote needs rewriting, not a footnote.

Common mistakes

  • Starting at the solution. First the problem, then the proposal.
  • Documenting what the code already shows. Documents own reasoning, constraints, invariants, and alternatives; the code owns the what.
  • Unverifiable claims: "faster", "better" without a number or source. Add the number or cut the claim.
  • Filling a gap with a plausible guess instead of naming the gap.
  • Vague owners: "this still needs investigation" without a name or role.
  • Listing only benefits. Every proposal names its costs.
  • Silently trimming, reordering for emphasis, or restyling a host document during an edit pass. Edits are surgical: preserve voice, structure, numbering, and IDs.
  • A document past roughly 800 lines of prose: split it and let the main document link to the parts.

FAQ

What does the technical-writing skill do?

Use when writing, restructuring, or revising any technical document - specs, design docs, READMEs, reference documentation, plans, reports - or any prose that must survive being read twice by someone in a hurry. Encodes the house style, the truth and sourcing rules, and the banned-constructions list. Use whenever you produce repository-bound text longer than a paragraph, even if nobody says "document". Foundation for the sibling document-type skills.

How do I install technical-writing?

Run npx skills add https://github.com/riekelt/technical-writer --skill technical-writing in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/technical-writing/ (personal) or .claude/skills/technical-writing/ (project).

Which AI agents can use technical-writing?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is technical-writing safe to install?

Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.

Who maintains technical-writing?

It is published by riekelt in riekelt/technical-writer. It has 19,165 recorded installs.

More from riekelt/technical-writer

View all →

reviewing-technical-prose

riekelt/technical-writer

Use when reviewing, rewriting, or editing someone else's technical text, when writing a review report on a document, or as the final check before delivering any document. Encodes the severity mapping, the findings format, the what-not-to-flag list, and the delivery checklist. Use before any document ships, even when it looks fine.

Docs & Writing18.6K installs

writing-design-docs

riekelt/technical-writer

Use when writing a proposal, RFC, design document, spec, or migration plan - anything that argues for a change, records a design, or asks readers for input on one. Encodes the proposal skeleton, the Why & What decision box, and the completeness checks. Use whenever a change needs arguing or scoping in writing, even if the user just says "write up the approach".

Docs & Writing18.6K installs

writing-runbooks

riekelt/technical-writer

Use when writing operational documentation - runbooks, setup guides, release procedures, migration guides, deprecation guides, troubleshooting entries, or any ordered procedure someone will execute under time pressure. Encodes the runbook skeleton, the risk legend, the symptom-first troubleshooting format, and the migration-guide rules (mapping table, mandatory rollback, deprecation dates, built-in expiry). Use whenever someone will execute the text, even if it is called a "guide" or "setup notes".

Docs & Writing18.5K installs

writing-changelogs

riekelt/technical-writer

Use when writing a changelog entry, release notes, or a "what shipped" summary after completing work. Encodes the entry shape, the handover template, and the honesty conventions. Use after shipping meaningful work, even if the user just says "summarize what we did".

Docs & Writing18.5K installs

writing-postmortems

riekelt/technical-writer

Use when writing a postmortem, incident report, or root-cause analysis after an outage, a defect that reached users, a data issue, or a near miss - or when turning an incident channel, alert log, or war-room thread into a durable document. Encodes the blameless framing, the evidence-only timeline, contributing factors, and owned action items. Use whenever something broke and the write-up must outlive the incident.

Docs & Writing18.4K installs

recording-decisions

riekelt/technical-writer

Use when a decision needs recording - an ADR, a decision log entry, or when someone asks to write down why something was chosen, rejected, or superseded. Encodes the ADR and decision-log formats. Use whenever a choice was made that would otherwise live only in chat, even if nobody says "ADR".

Docs & Writing18.4K installs

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs