Check and configure code documentation standards and generators (TSDoc, JSDoc, pydoc, rustdoc)
Configures documentation standards and generators for TypeScript, Python, and Rust projects.
/plugin marketplace add laurigates/claude-plugins/plugin install configure-plugin@lgates-claude-plugins[--check-only] [--fix] [--level <minimal|standard|strict>] [--type <typescript|javascript|python|rust>] [--generator <typedoc|sphinx|mkdocs|rustdoc>]configure/pwdls -la package.json pyproject.toml Cargo.toml 2>/dev/null || echo "None found"ls -la biome.json 2>/dev/null || echo "None found"ls -la tsdoc.json typedoc.json 2>/dev/null || echo "None found"ls -la pyproject.toml ruff.toml .ruff.toml 2>/dev/null || echo "None found"ls -la Cargo.toml clippy.toml 2>/dev/null || echo "None found"ls -la .pre-commit-config.yaml 2>/dev/null || echo "None found"ls -la mkdocs.yml docs/conf.py docusaurus.config.* 2>/dev/null || echo "None found"ls -d docs/ 2>/dev/null || echo "Not found"Parse from command arguments:
--check-only: Report compliance status without modifications (CI/CD mode)--fix: Apply fixes automatically without prompting--level <minimal|standard|strict>: Documentation enforcement level (default: standard)--type <typescript|javascript|python|rust>: Override language detection--generator <typedoc|sphinx|mkdocs|rustdoc>: Override documentation generator detectionEnforcement Levels:
minimal: Syntax validation only (valid doc comments)standard: Public API documentation required (recommended)strict: All items documented, including privateGenerator Auto-Detection:
| Project Type | Default Generator |
|---|---|
| TypeScript/JavaScript | TypeDoc |
| Python | MkDocs (simpler) or Sphinx |
| Rust | rustdoc |
| Multi-language/Other | MkDocs |
Configure documentation standards for the detected project language(s), including linter rules and compliance tests.
Detect project language(s) from file structure:
| Indicator | Language |
|---|---|
package.json + tsconfig.json | TypeScript |
package.json (no tsconfig) | JavaScript |
pyproject.toml or *.py files | Python |
Cargo.toml | Rust |
Multi-language projects: Configure each detected language. Allow --type override to focus on one.
For each detected language, check existing documentation configuration:
TypeScript/JavaScript:
tsdoc.json exists (TypeScript)Python:
pyproject.toml has [tool.ruff.lint.pydocstyle] sectionRust:
Cargo.toml has [lints.rust] sectionmissing_docs lint configured[lints.rustdoc] section for rustdoc-specific lintsGenerate formatted compliance report:
Documentation Standards Compliance Report
=========================================
Project: [name]
Languages: [detected languages]
Enforcement Level: [minimal|standard|strict]
TypeScript/JavaScript:
tsdoc.json [✅ PASS | ❌ MISSING | ⏭️ N/A]
TypeDoc configured [✅ PASS | ❌ MISSING | ⚠️ OUTDATED]
API docs generated [✅ PASS | ❌ DISABLED]
Python:
ruff pydocstyle [✅ PASS | ❌ MISSING]
convention [✅ google | ⚠️ not set]
D rules enabled [✅ PASS | ❌ DISABLED]
Rust:
missing_docs lint [✅ PASS | ❌ DISABLED]
rustdoc lints [✅ PASS | ⚠️ PARTIAL]
Overall: [X issues found]
Create/update tsdoc.json:
{
"$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json"
}
Install TypeDoc for API documentation:
npm install --save-dev typedoc
# or
bun add --dev typedoc
Configure typedoc.json:
{
"$schema": "https://typedoc.org/schema.json",
"entryPoints": ["./src"],
"entryPointStrategy": "expand",
"out": "docs/api",
"name": "PROJECT_NAME",
"includeVersion": true,
"readme": "README.md"
}
Update pyproject.toml:
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # pyflakes
"D", # pydocstyle
]
[tool.ruff.lint.pydocstyle]
convention = "google" # or "numpy" for scientific projects
Level-specific configuration:
| Level | Rules |
|---|---|
| minimal | D1 (missing docstrings warning) |
| standard | D with convention, ignore D107 (init), D203 |
| strict | All D rules, no ignores |
Update Cargo.toml:
[lints.rust]
missing_docs = "warn" # standard level
# missing_docs = "deny" # strict level
[lints.rustdoc]
broken_intra_doc_links = "warn"
missing_crate_level_docs = "warn"
For strict level, add clippy lint:
[lints.clippy]
missing_docs_in_private_items = "warn"
Create tests to validate documentation compliance.
Add npm script to package.json:
{
"scripts": {
"docs:build": "typedoc",
"docs:check": "typedoc --emit none"
}
}
Create test file tests/docs.test.ts:
import { execSync } from 'child_process';
import { describe, it, expect } from 'vitest';
describe('Documentation Compliance', () => {
it('should generate API documentation without errors', () => {
expect(() => {
execSync('npm run docs:check', { stdio: 'pipe' });
}).not.toThrow();
});
});
Add test file tests/test_docs.py:
"""Documentation compliance tests."""
import subprocess
import pytest
def test_pydocstyle_compliance():
"""Verify all modules have proper docstrings."""
result = subprocess.run(
["ruff", "check", "--select", "D", "--output-format", "json", "src/"],
capture_output=True,
text=True,
)
assert result.returncode == 0, f"Documentation violations found:\n{result.stdout}"
def test_public_api_documented():
"""Verify public API has docstrings."""
result = subprocess.run(
["ruff", "check", "--select", "D1", "src/"],
capture_output=True,
text=True,
)
assert result.returncode == 0, f"Missing public docstrings:\n{result.stdout}"
Add test in tests/docs.rs:
//! Documentation compliance tests.
#[test]
fn verify_docs_compile() {
// Run rustdoc in test mode to verify doc examples compile
// This is automatically done by `cargo test --doc`
}
Add CI check in .github/workflows/docs.yml:
name: Documentation Check
on: [push, pull_request]
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check documentation
run: |
cargo doc --no-deps
cargo clippy -- -W missing_docs
If .pre-commit-config.yaml exists, add documentation hooks:
repos:
# Python
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.2
hooks:
- id: ruff
args: [--select, D, --fix]
# Rust (if not already present)
- repo: local
hooks:
- id: cargo-clippy-docs
name: clippy docs
entry: cargo clippy -- -W missing_docs
language: system
types: [rust]
pass_filenames: false
Update .fvh-standards.yaml:
standards_version: "2025.1"
project_type: "[detected]"
last_configured: "[timestamp]"
components:
docs: "2025.1"
docs_level: "[minimal|standard|strict]"
docs_languages: ["typescript", "python", "rust"]
Auto-detect and configure the appropriate static site generator for publishing documentation.
Detection Logic:
--generator provided, use specified generatorInstall TypeDoc:
npm install --save-dev typedoc
# or
bun add --dev typedoc
Create typedoc.json:
{
"$schema": "https://typedoc.org/schema.json",
"entryPoints": ["./src"],
"entryPointStrategy": "expand",
"out": "docs/api",
"name": "PROJECT_NAME",
"includeVersion": true,
"readme": "README.md",
"plugin": ["typedoc-plugin-markdown"]
}
Install MkDocs with Material theme:
uv add --group docs mkdocs mkdocs-material mkdocstrings[python]
Create mkdocs.yml:
site_name: PROJECT_NAME
site_description: Project description
repo_url: https://github.com/OWNER/REPO
theme:
name: material
features:
- navigation.tabs
- navigation.sections
- search.suggest
plugins:
- search
- mkdocstrings:
handlers:
python:
options:
show_source: true
show_root_heading: true
nav:
- Home: index.md
- API Reference: api/
Install Sphinx:
uv add --group docs sphinx sphinx-rtd-theme sphinx-autodoc-typehints myst-parser
Create docs/conf.py:
project = 'PROJECT_NAME'
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.napoleon',
'sphinx_autodoc_typehints',
'myst_parser',
]
html_theme = 'sphinx_rtd_theme'
Update Cargo.toml:
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[lints.rustdoc]
broken_intra_doc_links = "warn"
missing_crate_level_docs = "warn"
Add documentation build commands to the project.
Add to package.json:
{
"scripts": {
"docs:build": "typedoc",
"docs:serve": "npx serve docs"
}
}
Add to pyproject.toml:
[project.scripts]
# Or use uv run directly:
# uv run mkdocs build
# uv run mkdocs serve
Build command: mkdocs build (outputs to site/)
Serve command: mkdocs serve
Create docs/Makefile:
SPHINXBUILD = sphinx-build
SOURCEDIR = .
BUILDDIR = _build
html:
$(SPHINXBUILD) -b html $(SOURCEDIR) $(BUILDDIR)/html
Build command: make -C docs html (outputs to docs/_build/html/)
Build command: cargo doc --no-deps (outputs to target/doc/)
Add generator status to the compliance report:
Documentation Standards Compliance Report
=========================================
Project: [name]
Languages: [detected languages]
Enforcement Level: [minimal|standard|strict]
Linting Standards:
TypeScript/JavaScript:
tsdoc.json [✅ PASS | ❌ MISSING | ⏭️ N/A]
TypeDoc configured [✅ PASS | ❌ MISSING | ⚠️ OUTDATED]
API docs generated [✅ PASS | ❌ DISABLED]
Python:
ruff pydocstyle [✅ PASS | ❌ MISSING]
convention [✅ google | ⚠️ not set]
D rules enabled [✅ PASS | ❌ DISABLED]
Rust:
missing_docs lint [✅ PASS | ❌ DISABLED]
rustdoc lints [✅ PASS | ⚠️ PARTIAL]
Documentation Generator:
Generator type [typedoc|mkdocs|sphinx|rustdoc] [✅ DETECTED | ⚠️ SUGGESTED]
Config file [config path] [✅ EXISTS | ❌ MISSING]
Build script [command] [✅ EXISTS | ❌ MISSING]
Output directory [docs/|site/|target/doc/] [✅ EXISTS | ⏭️ NOT BUILT]
Overall: [X issues found]
Next Steps:
- Run `[build command]` to generate documentation locally
- Run `/configure:github-pages` to set up deployment
Provide:
/configure:github-pages - Set up GitHub Pages deployment/configure:all - Run all compliance checks/configure:status - Quick compliance overview/configure:pre-commit - Pre-commit hook configuration