han-release
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as…
Creates and maintains project documentation for features, systems, and components. Use when documenting how a feature, system, or component works — including writing, updating, or organizing docs. Does not scan or detect the project's technology stack — use project-discovery for
Claude Code
$ npx -y skills add testdouble/han --skill project-documentation --agent claude-code
Codex
$ npx skills add testdouble/han --skill project-documentation -a codex -y
Cursor
$ npx skills add testdouble/han --skill project-documentation -a cursor -y
Gemini CLI
$ npx skills add testdouble/han --skill project-documentation -a gemini-cli -y
GitHub Copilot
$ npx skills add testdouble/han --skill project-documentation -a github-copilot -y
OpenCode
$ npx skills add testdouble/han --skill project-documentation -a opencode -y
Windsurf
$ npx skills add testdouble/han --skill project-documentation -a windsurf -y
name: project-documentation
description: >
Creates and maintains project documentation for features, systems, and components. Use when documenting how a feature,
system, or component works — including writing, updating, or organizing docs. Does not scan or detect the project's
technology stack — use project-discovery for repository analysis and config detection. Does not create architectural
decision records — use architectural-decision-record for ADRs. Does not create or update coding standards — use
coding-standard instead. Does not generate PR descriptions — use update-pr-description for that. Does not produce
runbooks for operational scenarios — use runbook for that. Does not rewrite existing prose for readability — use
edit-for-readability for that. Does not produce an ephemeral, understand-now overview of code or a PR — use
code-overview for that.
argument-hint: "[feature-name or document-path]"
allowed-tools:
Read, Write, Edit, Glob, Grep, Agent, Bash(date *), Bash(mkdir *), Bash(find *),
Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")As your first action, use the Read tool on `.han/config.md` inside the `personal config directory` path above. A read that returns no file is no personal configuration: continue silently. When that file or the `project .han/config.md` probe supplies content, apply it per [config-rule.md](../../references/config-rule.md), which governs precedence between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.
**Readability.** As you write the documentation, source the standard by invoking `han-communication:readability-guidance` and apply it. The output is a committed file, so the standard applies at generation time. Hold a named audience above the default: a technically-literate reader who needs to understand the feature's behavior before reading or modifying its code. Scope that frame per section so the technical specifics the reader needs are not simplified away.
**Guard check:** If the request is about an **architectural decision**, suggest `architectural-decision-record` instead. If it's about a **coding convention**, suggest `coding-standard` instead. Proceed only after confirming this is project documentation.
**Docs directory:** Resolve project config: read CLAUDE.md's `## Project Discovery` section for docs directory and language; fall back to project-discovery.md; fall back to Glob default (`docs/`). Use the found docs directory with Glob to enumerate existing `.md` files. If no docs directory was found, create `docs/`. The found language informs code fence language identifiers in Step 3.
**Resolve target files:** Derive the filename in kebab-case: `docs/{feature-name}.md`. Use Glob to check if the file already exists (`docs/{feature-name}*.md`). If it exists, use `AskUserQuestion` to ask: update the existing document, or create with a different name? If not, it will be created.
**Topic context:** Use the arguments and conversation context to understand the topic and scope. If unclear, use `AskUserQuestion` to clarify.
**Flag content audit need:** Determine whether the Content Audit (Step 6) will be needed. It is needed when updating an existing doc, migrating content from CLAUDE.md, or restructuring content from any other source. It is not needed only when creating documentation for a feature with no prior documentation of any kind.
Launch 2-3 `han-core:codebase-explorer` agents in parallel with the feature name, scope, and any known file paths. Include the docs directory from Step 1 so agents can discover existing documentation. Each agent should explore from a different angle (e.g., entry points and core logic; data models and configuration; tests and existing docs).
After all agents complete, merge their findings into a unified **discovery summary** — a numbered list (D1, D2, D3, ...) that combines all items, deduplicates files found by multiple agents, and resolves any conflicting findings.
Use the template at [template.md](./references/template.md) as the structural guide. The template's HTML comments explain when to include each section and what to cover.
**Readability.** Invoke `han-communication:readability-guidance` to surface the shared readability standard into your context, then draft into the template so the structure carries that standard: main point first, descriptive headings, one idea per paragraph with the first sentence carrying it, numbered lists for steps and bullets for non-sequential items, and progressive disclosure that reveals the core before the detail.
**File location:** `docs/{feature-name}.md` (in the directory determined in Step 1)
**Writing rules:**
Lead with behavior. These rules make the doc an overview first and a reference second:
1. **Lead with behavior.** Write the Summary, How It Works, and Primary Flows in plain language before any reference section. Describe what the feature does and what happens when it runs, in functional terms. Name files and types only where it aids understanding. 2. **Summary is prose plus bullets.** Open the Summary with a 2-4 sentence plain-language paragraph for a reader who has not seen the code, then the scannable bullets. The paragraph carries no code, type names, or paths. 3. **Primary Flows narrate the main paths.** Cover the 1-3 flows that matter, not every branch. Name the actor or trigger, give numbered plain-language steps (what happens and why, not which function is
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as…
Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate. On a…
Produces a progressive-disclosure overview of unfamiliar code or a pull request's changes with code-overview and publishes the…
Runs an evidence-based investigation of a bug, failure, or unexpected behavior with investigate and publishes the resulting…
Publishes a local Markdown file to a user-specified Confluence location, creating a new page or updating an existing one through…
Builds a feature specification from scratch with plan-a-feature and publishes it to a user-specified Confluence location, posting…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.