document-feature
Interview a developer to produce a living feature doc at docs/feature/{slug}.md, capturing user value, architecture (with ADR links), and data/user flow with at least one Mermaid diagram. Use when the
SKILL.md.claude/skills/document-feature/SKILL.md
GitHubdocument-feature
What this is, what this isn't
docs/feature/{slug}.md is the living, present-tense doc for a shipped feature. Adjacent doc types serve different purposes:
thoughts/designs/— forward-looking proposals (past-tense once shipped)thoughts/epics/— scope and milestone planningthoughts/plans/— the build roadmap for an epicdocs/adr/— point-in-time decisions
A feature doc tells a future engineer (human or LLM agent) what the feature does today and where to look. It is not a design history.
Quick start
User: /document-feature lead-conversation-history
→ Recon → Interview (3 pillars) → Draft → Plain-language pass → Update index
Output: docs/feature/lead-conversation-history.md + an entry in docs/feature/README.md.
Workflow
1. Recon (read code first, ask less)
- Resolve
{slug}from user input. - Check
docs/feature/{slug}.md— if it exists, ask: update or replace? - Grep code for the feature; identify file paths and route segments.
- List ADRs in
docs/adr/that may relate. - Find GitHub issues/PRs:
gh issue list --search "{slug}",gh pr list --search "{slug}", andgit log --oneline --grep="{slug}"to surface PRs that shipped the feature. Capture issue numbers for the frontmatterrelated-issues:field. - Fast-path: if
thoughts/designs/*-{slug}.mdexists, read it first and pre-fill draft answers — the interview then verifies and updates rather than gathering from scratch. - Surface findings to the user before starting the interview.
2. Interview (3 pillars, one Q at a time)
Methodology: one question at a time, propose a recommended answer when the codebase suggests one, explore code instead of asking when answerable. Full bank in INTERVIEW.md.
- P1 — User value: who is the user, what problem does this solve, what's out of scope, how do we know it works?
- P2 — Design + ADRs + ops: where does this live in code, what was the design choice (and what was rejected), which ADRs apply, what logs/alerts/flags signal health, what are the failure modes?
- P3 — Flow: what triggers it (UI, cron, webhook — list all), what data path does it follow, what state changes happen, what are the edges?
3. Draft
- Load TEMPLATE.md; write to
docs/feature/{slug}.md. - Embed at least one Mermaid diagram in the Flow section. Pick by content:
sequenceDiagram— ≥2 actors with ordered messagesflowchart LR— single-actor branching logicstateDiagram-v2— explicit state transitionsgraph TD/graph LR— feature spans ≥3 services/modules
- Mirror the diagram styles already proven in
docs/README.mdso they render in the existing stack. - Cross-link ADRs/designs/epics via relative paths (see
docs/adr/adr001-imessage-integration-for-sales-automation.mdLinks section).
4. Plain-language pass
- Apply rules from PLAIN-LANGUAGE.md — two zones: explain-mode (
grade 6) for user-value sections, tech-mode (grade 9-10) for architecture/flow. - Invoke the
writing-clearly-and-conciselyskill on the draft for the final pass.
5. Update index
- Append/update
docs/feature/README.md: one line per slug, sorted alphabetically. Format:- [Feature Name](slug.md) — one-line description from doc's intro. - Bootstrap on first run with a brief explainer paragraph framing what
docs/feature/is.
Behavioural rules
- Do not create ADRs. If a hard-to-reverse decision surfaces without one, flag inline with
> [!NOTE] Missing ADR: <decision>. Recommend /domain-model.Defer creation to thedomain-modelskill. - Frontmatter required fields:
status: living,last-updated: YYYY-MM-DD,related-adrs:,related-design:,related-epic:,related-issues:(GitHub issue/PR numbers —gh issue listandgit logfor the slug surface candidates). - Bootstrap
docs/feature/if it does not exist; the first feature doc creates the directory.
See also
- INTERVIEW.md — full question bank with skip-if conditions.
- PLAIN-LANGUAGE.md — Strunk rules, compression principles, replaceable-pattern checklist.
- TEMPLATE.md — output skeleton with frontmatter and Mermaid placeholders.