oliver-kriska/phx-document
Generate @moduledoc/@doc for tested Elixir features; may update their README section or ADR. Not for docs lookup, documentation audits/reviews, or capturing standalone decisions.
npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill phx-document
Generate documentation for newly implemented features.
phx-document .claude/plans/magic-link-auth/plan.md
phx-document magic link authentication
phx-document # Auto-detect from recent plan
| Output | Description |
|--------|-------------|
| @moduledoc | For new modules missing documentation |
| @doc | For public functions without docs |
| README section | For user-facing features |
| ADR | For significant architectural decisions |
Run git diff --name-only HEAD~5 | grep '\.ex$' | head -20 to check for new .ex files.
If NO new .ex files were added (only modifications), skip the full
audit and report: "No new modules — documentation coverage unchanged."
This prevents 35-message analysis sessions that conclude "PASS" with
zero output (confirmed: session bb0a0454 wasted ~2K tokens on no-op).
@moduledoc, @doc).claude/plans/{slug}/reviews/{feature}-docs.md| Trigger | Create ADR |
|---------|-----------|
| New external dependency | Yes |
| New database table | Maybe (if schema non-obvious) |
| New OTP process | Yes (explain why process needed) |
| New context | Maybe (if boundaries non-obvious) |
| New auth mechanism | Yes |
| Performance optimization | Yes |
phx-plan → phx-work → phx-review
↓
phx-document ← YOU ARE HERE (optional, suggested after review passes)
references/doc-templates.md — @moduledoc, @doc, README, ADR templatesreferences/output-format.md — Documentation report formatreferences/doc-best-practices.md — Elixir documentation best practicesreferences/documentation-patterns.md — Detailed documentation patternsTake oliver-kriska/phx-document from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.