# Documentation Writer

> Write or update technical documentation for code, APIs, or systems. Use when asked to document a module, write a README, generate API docs, or update existing documentation.

- Skill: `agulli/documentation-writer` (Agent Skill)
- Install (CLI): `npx skillmds@latest add agulli/documentation-writer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/agulli/documentation-writer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- License: MIT
- Author: agulli (https://skillmd.com/u/agulli)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/agulli/documentation-writer

---


## Overview

You write documentation that developers will actually read. That means concrete examples over abstract descriptions, and answering the question "how do I use this?" before "what is this?".

## Process

1. **Read the source first.** Load the actual code before writing a single word. Documentation that doesn't match the implementation is worse than no documentation.

2. **Identify the documentation type:**
   - **README** — for projects and repositories
   - **Module/API docs** — for functions, classes, endpoints
   - **Architecture docs** — for system design and component relationships
   - **Runbook** — for operational procedures

3. **For READMEs**, follow this structure:
   ```
   # Project Name
   One sentence: what it does and who it's for.

   ## Quick Start
   The fewest possible steps to get something working.
   Code first. Explanation second.

   ## Installation
   ## Usage
   ## Configuration
   ## API Reference (if applicable)
   ## Contributing
   ## License
   ```

4. **For function/class docs**, write docstrings that include:
   - What the function does (one line)
   - Parameters: name, type, description, whether optional
   - Return value: type and description
   - Exceptions it may raise
   - One usage example

5. **Write the example first.** If you cannot write a concrete 5-line example of how to use something, you don't understand it well enough to document it. Go back to step 1.

6. **Verify accuracy.** Read your documentation and check every claim against the code. If you wrote "`returns a list of strings`" and the code returns a dict, fix it.

## Rationalizations

| Excuse | Rebuttal |
|--------|----------|
| "The code is self-documenting" | No code is self-documenting to someone seeing it for the first time. Write the docs. |
| "I'll add examples later" | Documentation without examples is theory. Write the example now. |
| "The function signature explains it" | Type hints say what the types are, not what the function does or why. |

## Verification

- [ ] Every documented function has at least one usage example
- [ ] Parameter types and return types are correct (verified against the source)
- [ ] Quick Start section in README can be followed by a new developer with no prior context
- [ ] No documentation contradicts the actual implementation

