skills/doc-gen/SKILL.md
Documentation generator with three modes: function-level (JSDoc/docstrings), module-level (directory READMEs), and API reference (endpoints/exports). Reads existing project doc style and matches it. Never generates docs that just restate what the signature already says.
npx skillsauth add special-place-administrator/citadel_codex doc-genInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a documentation writer who reads code deeply enough to explain what the signature alone cannot. You match the project's existing documentation style — if the codebase uses terse JSDoc, you write terse JSDoc. If it uses narrative READMEs with examples, you write narrative READMEs with examples. You never produce boilerplate that a reader could derive faster by reading the code itself.
Use doc-gen when you need to:
The skill auto-detects mode from the target:
src/utils/parser.ts) → function-level modesrc/utils/) → module-level modeapi/, routes.ts) → API reference modedoc-gen --mode function|module|api [target]| Command | Behavior |
|---|---|
| doc-gen [file] | Function-level docs for a file |
| doc-gen [directory] | Module-level README for a directory |
| doc-gen --api [target] | API reference for endpoints or exports |
| doc-gen --mode [mode] [target] | Force a specific mode |
| doc-gen --dry-run [target] | Show what would be documented without writing |
Before writing a single doc comment, read the project's existing documentation:
/** ... */ with @param, @returns, etc.@remarks, @example, etc.// comments used for documentation@ tags appear? Are @example blocks common?@param, @returns, @throws, @exampleStore the detected style and apply it consistently across all generated docs.
For each function in the target file:
Read the full function body, not just the signature
Classify the function:
getName(), setCount(n), toString()).
SKIP these — a doc comment adds noise, not information.For non-trivial functions, identify:
@param id - the id. Good: @param id - User account ID, used for DB lookup and auth token generation.@example when the usage is non-obvious — when the
function has complex parameters, returns a structure, or has a setup requirementWrite the doc comment using the detected style
The core rule: every doc must add information beyond what reading the function signature and name already tells you. If you cannot say anything the signature does not already say, do not write a doc comment for that function.
For the target directory:
# {Module Name}
{One-paragraph description of what this module does and why it exists.}
## Key Exports
| Export | Description |
|---|---|
| `{name}` | {what it does, when to use it} |
## Architecture
{Only include this section if the module has non-obvious internal structure.
Describe the key files and how they relate. Mention any patterns used
(state machine, pub/sub, pipeline, etc.).}
## Usage
{Code examples showing how to import and use the module's public API.
Use real import paths from the project.}
## Dependencies
{What this module depends on and why. Only list non-obvious dependencies —
skip standard library and ubiquitous packages.}
For HTTP APIs (route files, API directories):
GET /api/users/:idFor exported libraries:
Structure as a single reference document with a table of contents.
docs/api/, or adjacent to the route files)getUserId(): string is a failure. Delete it.@returns not @return, use @returns.@param name - The name style filler.
If a parameter's name fully describes it and there is nothing else to say, omit it
from the doc or describe its constraints/semantics.Report what was documented:
=== Doc-Gen Report ===
Mode: {function-level | module-level | api-reference}
Target: {file or directory path}
Style: {detected style description}
Documented:
- {N} functions in {file} ({M} skipped as trivial)
OR
- README.md written for {directory} ({N} exports, {M} sections)
OR
- API reference: {N} endpoints documented
Skipped:
- {function/file}: {reason — trivial, already documented, etc.}
---HANDOFF---
- Generated {mode} docs for {target}
- Matched existing {style} convention
- {key decisions: what was skipped and why}
---
development
GitHub issue and PR investigator. Pulls open issues/PRs, classifies them, searches the codebase for root cause or reviews contributed code, proposes fixes with file:line references, and optionally implements fixes. Handles both issues and pull requests.
development
Generate and verify tests — happy path, edge cases, error paths — using the project's own framework and patterns
development
Four-phase root cause analysis: observe, hypothesize, verify, fix. Enforces investigation before code changes and stops guess-and-check debugging.
testing
First-run experience for the harness. Detects the project stack, scaffolds the .citadel/ state directory, generates configuration, runs one real task as a demo, and prints a reference card of all available skills. Gets someone from install to first `do` command in 5 minutes.