Docs
Use when improving project docs, not only writing prose.
Boundary
Use this skill for document structure, readability, docs workflows, ADRs,
changelogs, and Markdown quality.
- pair with
python when doc work is mainly docstrings or Python usage docs
- pair with
arch when document is ADR or SDD about boundaries and rollout
- pair with
design when documenting API contracts or UI decisions
- pair with
project-state when editing SPEC.md, DESIGN.md, TODO.md, .spec/, or .mem/
This skill shapes docs artifact itself, not replaces domain-specific
guidance of other skills.
Core Workflow
- keep document easy to scan
- prefer explicit headings over long uninterrupted text
- keep examples copyable and runnable-looking
- run
rumdl after editing Markdown-heavy content
README Structure
# Project Name -- Brief description (1-2 sentences)
## Features
## Quick Start -- Installation and first run in < 5 commands
## Usage -- Key use cases with runnable examples
## Configuration -- Environment variables and settings
## Development -- Setup, testing, contributing
## License
Quick Start must be copy-paste ready. Usage examples runnable or close enough
to paste with minimal edits.
Project State Docs
SPEC.md: objective, scope, requirements, success criteria, validation plan
DESIGN.md: architecture, API/UI decisions, product constraints
TODO.md: current tasks, blocked items, done items
.spec/*.md: active work state, checks, handoff
.mem/*.md: stable memory, decisions, open loops
Keep these concise and dated. Do not duplicate the same decision in several files.
ADRs
Use ADRs for meaningful technical decisions.
# ADR-{number}: {Title}
## Status -- Proposed | Accepted | Deprecated | Superseded
## Context
## Decision
## Consequences
- create for major architecture, storage, integration, or versioning choices
- number sequentially
- deprecate or supersede old ADRs over deleting
Changelogs
Follow Keep a Changelog:
- Added
- Changed
- Deprecated
- Removed
- Fixed
- Security
Write entries as work happens; do not reconstruct whole release from memory later.
Markdown Structure
Headings
- start with one
# title
- increase heading depth one level at time
- keep headings short and descriptive
- avoid empty sections and one-line stub headings
Paragraphs and Lists
- prefer short paragraphs over dense walls of text
- use bullets for enumerations, commands, and checklists
- keep bullet phrasing parallel where possible
- avoid deep nesting unless hierarchy essential
Code Blocks
- always fence multi-line code
- add info string such as
bash, python, toml, or json
- keep examples minimal but realistic
- prefer one command per line in shell examples
Links and Tables
- use descriptive link text
- use tables only when matrix genuinely compact
- prefer sections or bullets when explanations longer than phrase
Readability
- prefer explicit names over shorthand
- preserve local style unless it harms readability or lint compliance
- delete duplicated guidance over maintaining two versions
Docstrings
Document non-obvious behavior, invariants, constraints, and side effects.
Do not restate signature.
- always: public library APIs
- usually: complex business logic or tricky algorithms
- skip: trivial wrappers, obvious private helpers, most tests
Mermaid
| Type |
When |
flowchart |
system architecture and data flow |
sequenceDiagram |
request/response or async interaction |
erDiagram |
schema and entity relationships |
classDiagram |
domain models and responsibilities |
stateDiagram |
workflows and explicit state transitions |
Keep diagrams small, focused, and close to part of system they explain.
Auto-Generated Docs
- use MkDocs for lightweight doc sites
- use Sphinx when cross-references and API-heavy docs dominate
- keep generated API docs supplemental; top-level docs still need narrative guidance
Rumdl
Install
uv tool install rumdl
Common Commands
uv run rumdl check .
uv run rumdl check --fix .
uv run rumdl fmt .
uv run rumdl init
Recommended .rumdl.toml
[global]
disable = ["MD013", "MD033"]
exclude = ["node_modules", "dist", "build", "target"]
respect_gitignore = true
[MD003]
style = "atx"
[MD007]
indent = 4
[MD060]
enabled = true
style = "aligned"
Rules of Thumb
- keep top-level docs focused; move detail to focused docs when needed
- document decisions, not usage
- examples beat abstract explanation
- if doc is hard to scan, it will not get used
1---2name: docs3description: Documentation patterns for Markdown structure, README shape, ADRs, changelogs, diagrams, docstrings, and rumdl. Load when writing, refactoring, or validating docs.4---56# Docs78Use when improving project docs, not only writing prose.910## Boundary1112Use this skill for document structure, readability, docs workflows, ADRs,13changelogs, and Markdown quality.1415- pair with `python` when doc work is mainly docstrings or Python usage docs16- pair with `arch` when document is ADR or SDD about boundaries and rollout17- pair with `design` when documenting API contracts or UI decisions18- pair with `project-state` when editing `SPEC.md`, `DESIGN.md`, `TODO.md`, `.spec/`, or `.mem/`1920This skill shapes docs artifact itself, not replaces domain-specific21guidance of other skills.2223## Core Workflow24251. keep document easy to scan262. prefer explicit headings over long uninterrupted text273. keep examples copyable and runnable-looking284. run `rumdl` after editing Markdown-heavy content2930## README Structure3132```markdown33# Project Name -- Brief description (1-2 sentences)3435## Features3637## Quick Start -- Installation and first run in < 5 commands3839## Usage -- Key use cases with runnable examples4041## Configuration -- Environment variables and settings4243## Development -- Setup, testing, contributing4445## License46```4748Quick Start must be copy-paste ready. Usage examples runnable or close enough49to paste with minimal edits.5051## Project State Docs5253- `SPEC.md`: objective, scope, requirements, success criteria, validation plan54- `DESIGN.md`: architecture, API/UI decisions, product constraints55- `TODO.md`: current tasks, blocked items, done items56- `.spec/*.md`: active work state, checks, handoff57- `.mem/*.md`: stable memory, decisions, open loops5859Keep these concise and dated. Do not duplicate the same decision in several files.6061## ADRs6263Use ADRs for meaningful technical decisions.6465```markdown66# ADR-{number}: {Title}6768## Status -- Proposed | Accepted | Deprecated | Superseded6970## Context7172## Decision7374## Consequences75```7677- create for major architecture, storage, integration, or versioning choices78- number sequentially79- deprecate or supersede old ADRs over deleting8081## Changelogs8283Follow [Keep a Changelog](https://keepachangelog.com/):8485- Added86- Changed87- Deprecated88- Removed89- Fixed90- Security9192Write entries as work happens; do not reconstruct whole release from memory later.9394## Markdown Structure9596### Headings9798- start with one `#` title99- increase heading depth one level at time100- keep headings short and descriptive101- avoid empty sections and one-line stub headings102103### Paragraphs and Lists104105- prefer short paragraphs over dense walls of text106- use bullets for enumerations, commands, and checklists107- keep bullet phrasing parallel where possible108- avoid deep nesting unless hierarchy essential109110### Code Blocks111112- always fence multi-line code113- add info string such as `bash`, `python`, `toml`, or `json`114- keep examples minimal but realistic115- prefer one command per line in shell examples116117### Links and Tables118119- use descriptive link text120- use tables only when matrix genuinely compact121- prefer sections or bullets when explanations longer than phrase122123### Readability124125- prefer explicit names over shorthand126- preserve local style unless it harms readability or lint compliance127- delete duplicated guidance over maintaining two versions128129## Docstrings130131Document non-obvious behavior, invariants, constraints, and side effects.132Do not restate signature.133134- always: public library APIs135- usually: complex business logic or tricky algorithms136- skip: trivial wrappers, obvious private helpers, most tests137138## Mermaid139140| Type | When |141| ----------------- | ---------------------------------------- |142| `flowchart` | system architecture and data flow |143| `sequenceDiagram` | request/response or async interaction |144| `erDiagram` | schema and entity relationships |145| `classDiagram` | domain models and responsibilities |146| `stateDiagram` | workflows and explicit state transitions |147148Keep diagrams small, focused, and close to part of system they explain.149150## Auto-Generated Docs151152- use MkDocs for lightweight doc sites153- use Sphinx when cross-references and API-heavy docs dominate154- keep generated API docs supplemental; top-level docs still need narrative guidance155156## Rumdl157158### Install159160```bash161uv tool install rumdl162```163164### Common Commands165166```bash167uv run rumdl check .168uv run rumdl check --fix .169uv run rumdl fmt .170uv run rumdl init171```172173### Recommended `.rumdl.toml`174175```toml176[global]177disable = ["MD013", "MD033"]178exclude = ["node_modules", "dist", "build", "target"]179respect_gitignore = true180181[MD003]182style = "atx"183184[MD007]185indent = 4186187[MD060]188enabled = true189style = "aligned"190```191192## Rules of Thumb193194- keep top-level docs focused; move detail to focused docs when needed195- document decisions, not usage196- examples beat abstract explanation197- if doc is hard to scan, it will not get used