doc-gen
Generate or update documentation for a module, file, function, or class. Produces JSDoc, docstrings, README sections, or standalone docs depending on the target. Use when the user says "document this", "add docs", "generate documentation", or "write a README for this module".
Generate or update documentation for: $ARGUMENTS
-
Locate the target:
- If $ARGUMENTS is a file path, read it directly
- If $ARGUMENTS is a module or function name, use Grep and Glob to find the definition
- If $ARGUMENTS is empty, document the current directory's main entry point
-
Read the target fully, including:
- All public functions, methods, classes, and constants
- Existing documentation (to update rather than duplicate)
- Related test files to understand intended behavior and edge cases
- Callers to understand real-world usage
-
Detect the documentation format from the project:
- TypeScript/JavaScript: JSDoc (
/** */) with@param,@returns,@throws,@example - Python: Google-style docstrings with
Args:,Returns:,Raises:,Example: - Go: standard Go doc comments (
// FunctionName ...) - Other languages: use the idiomatic format for that language
- TypeScript/JavaScript: JSDoc (
-
Generate documentation:
- Module/file-level: overview of what the module does, when to use it, key concepts
- Each public function/method: description, all parameters with types and meaning, return value, exceptions/errors thrown, at least one usage example
- Each public class: purpose, construction, key methods summary
- Skip private/internal functions unless they have complex logic worth explaining
-
If a README does not exist for the module and the target is a directory:
- Create a
README.mdwith: module name, one-paragraph description, installation/import, quick start example, API summary table, notes on configuration
- Create a
-
Write all documentation in-place (inline comments/docstrings) and also create or update any separate doc files.
-
Report what was added or updated with a file list.
Requirements
- The target ($ARGUMENTS) must be a valid file path, module name, or function name in the project
Error Handling
- If the target is not found: report and suggest similar names
- If documentation already exists and is accurate: note it and suggest only additions
- If the code is too complex to document without understanding domain context: ask the user for clarification before writing