Write or update technical documentation for the target project at $ARGUMENTS.
Preconditions
- If
$ARGUMENTSis empty, report:Error: Please provide the target path and the documentation task (for example: './docs/api.md update the payment API docs' or './src/utils.ts add JSDoc for the public helpers'). - Read
$SKILL_DIR/references/WORKFLOW.md,$SKILL_DIR/references/DOCUMENT_TYPES.md, and$SKILL_DIR/references/VERIFICATION_CHECKLIST.mdbefore drafting. - If the request is in Chinese, the output file is Chinese, or the user wants polishing/rewrite into Chinese, also read
$SKILL_DIR/references/CHINESE_TECH_WRITING.md.
Execution Flow
1. Classify the task
Determine the closest document type before writing:
README.mdor overview docs- API reference or endpoint documentation
- Architecture or design explanation
- User guide, operator guide, troubleshooting, FAQ
CONTRIBUTING, maintenance, migration, or release notes- JSDoc, docstrings, or code comments
Infer the type from the requested file, target path, and user request. Ask only if multiple document types would lead to materially different outputs.
2. Gather evidence from the codebase
Use the actual project files as the source of truth:
- Read existing documentation first so you preserve project vocabulary and avoid duplicating stale mistakes.
- Inspect the directory structure, entrypoints, configs, public interfaces, examples, and tests.
- Trace important flows from input to output when documenting behavior, not just file names.
- For API or architecture docs, verify routes, config keys, environment variables, and defaults against code.
- For JSDoc or comments, read the concrete symbol implementation before writing anything.
3. Decide language, audience, and output location
- Match the language requested by the user or already used by the surrounding docs.
- If the task is a rewrite into Chinese, follow the Chinese writing reference instead of translating line by line.
- Prefer updating the explicitly requested file in place.
- If no exact file is given, use the conventional location:
- repository root for
README.md,CONTRIBUTING.md,MIGRATION.md docs/for user, API, or architecture docs- source file for JSDoc or code comments
- repository root for
- If location is still ambiguous after exploring the repo, ask one focused question.
4. Draft using the correct structure
- Apply the matching template and required sections from
DOCUMENT_TYPES.md. - Scale the detail to the real scope:
- small utility or module: shorter docs, fewer sections
- multi-component flow or public API: full structure with examples and failure cases
- Organize around reader tasks, public interfaces, or data flow instead of mirroring the folder tree mechanically.
- For architecture docs covering more than one component, include a Mermaid diagram unless the repo already uses another explicit format.
5. Generate content that can survive verification
- Base commands, code snippets, function signatures, env vars, and config values on real files.
- Preserve industry-standard English terms when they are clearer than forced translation.
- In Chinese docs, prefer natural Chinese phrasing over literal translation.
- Use
TODO:only for facts that cannot be derived from the repo and are necessary for completeness. - For comments and JSDoc, document public contracts, side effects, invariants, errors, or non-obvious behavior. Do not add boilerplate comments that restate the code.
6. Verify before handoff
Walk through VERIFICATION_CHECKLIST.md and confirm:
- every important claim is backed by code, config, tests, or existing maintained docs
- examples and commands match the project layout
- links and file paths exist
- no secrets, tokens, private endpoints, or internal-only notes were leaked
- Chinese output follows the Chinese writing reference when applicable
Rules
- Do not fabricate APIs, CLI flags, configuration defaults, performance numbers, or implementation details.
- Do not copy stale wording from old docs without checking whether the code still matches.
- Do not translate common technical terms into unnatural Chinese when the English form is the norm.
- Keep the tone concise, direct, and professional.
- Output the documentation artifact only. Avoid extra conversational explanation unless the user explicitly asks for it.