rtl-document
Generate Markdown docs for an RTL module (port/param/FSM tables, synth summary) — 'document this module', 'port table', 'refresh RTL docs'.
Skill by babyworm
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/babyworm-rtl-document
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/rtl-document
Tools it pre-approves 7
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash,Read,Write,Edit,Task,Grep,Glob
What's inside
- Skill name
rtl-document- Description
- Generate Markdown docs for an RTL module (port/param/FSM tables, synth summary) — 'document this module', 'port table', 'refresh RTL docs'.
- License
- MIT
- Allowed tools
- Bash,, Read,, Write,, Edit,, Task,, Grep,, Glob
- Instructions
- 118 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
Files (14)
- SKILL.md
- .gitkeep · examples/
- axi_stream_bridge.md · examples/
- cabac_encoder_excerpt.md · examples/
- simple_fifo.md · examples/
- .gitkeep · references/
- doc-conventions.md · references/
- .gitkeep · scripts/
- extract_module_doc.py · scripts/
- render_doc.py · scripts/
- block-diagram-snippet.d2 · templates/
- fsm-section-snippet.md · templates/
- module-doc-template.md · templates/
- port-table-snippet.md · templates/
SKILL.md (first lines)
<Purpose>
Generate per-module Markdown documentation for SystemVerilog RTL — port table, parameter table, instance table, FSM section, and synthesis summary. Output: docs/rtl/{module}.md.
</Purpose>
<Use_When>
- A new RTL module needs documentation.
- Module documentation has become stale after RTL changes.
- A pre-release documentation pass is required.
- The user asks to "document this module", "generate port table", or "refresh RTL docs".
</Use_When>
<Do_Not_Use_When>
- Architecture specification writing is needed → use p2-arch-design.
- IP-XACT XML generation is needed → use rtl-ipxact-gen.
- Synthesis-only reporting is needed → use rtl-synth-check.
</Do_Not_Use_When>
<Why_This_Exists>
RTL documentation written by hand drifts from implementation. Auto-extraction from SV source keeps port tables, parameter lists, and instance trees accurate. The skill splits work between a deterministic parser (objective structure) and the LLM (functional description, FSM semantics, design rationale), making the contract surface explicit and regression-debuggable.
</Why_This_Exists>
## Prerequisites
- RTL files exist under `rtl/**/*.sv`.
- Optional: synthesis report at `syn/synth_report.txt` for area/timing summary.
If the prerequisite is missing: WARNING — recommend running `/rtl-agent-team:rtl-p4-implement` first. Proceed with available artifacts; the orchestrator adapts scope.
<Assets>
| Path | Role |
|------|------|
| `templates/module-doc-template.md` | Main Markdown skeleton (Overview/Params/Ports/Clocks/Instances/Diagram). |
| `templates/port-table-snippet.md` | Port-table format with `i_/o_/io_` prefix, `{domain}_clk`/`{domain}_rst_n`, kind column. |
| `templates/fsm-section-snippet.md` | FSM table plus Mermaid `stateDiagram-v2` skeleton. |
| `templates/block-diagram-snippet.d2` | D2 block diagram for sub-instance hierarchy. |
| `scripts/extract_module_doc.py` | Verible-based deterministic extractor — emits JSON for ports/params/instances/FSM/conventions. |
| `scripts/render_doc.py` | JSON + template → `docs/rtl/{module}.md` with `<!-- LLM_FILL: ... -->` markers. |
| `references/doc-conventions.md` | Naming rules, table format, diagram-tool choice, anti-patterns. |
| `examples/simple_fifo.md` | Small datapath, single domain — minimal baseline. |
| `examples/axi_stream_bridge.md` | AXI4-Stream + APB control, two clock domains — protocol grouping. |
| `examples/cabac_encoder_excerpt.md` | FSM-heavy + sub-instance tree — full template usage. |
</Assets>
<Responsibility_Boundary>
- **Scripts** handle deterministic extraction: module name, ports, parameters, instances, FSM-candidate states, clock-domain inference from naming, convention violations.
- **LLM** handles interpretive content: functional description, FSM state semantics, design rationale, integration notes.
- `<!-- LLM_FILL: ... -->` markers in rendered output mark the contract surface. Replace each marker; never delete.
</Responsibility_Boundary>
<Execution>
1. Run `python3 {plugin_root}/skills/rtl-document/scripts/extract_module_doc.py --rtl rtl/{module}/{module}.sv [--syn-report syn/synth_report.txt] --out /tmp/{module}.json` (`{plugin_root}` = plugin root resolved from `.rat/state/spawn-context.json`). If exit code 2 (verible missing), fall back to manual extraction via `rtl-explorer` (see Tool_Usage).
2. Run `python3 {plugin_root}/skills/rtl-document/scripts/render_doc.py --json /tmp/{module}.json --template-dir {plugin_root}/skills/rtl-document/templates/ --out docs/rtl/{module}.md`. The script composes `module-doc-template.md` with the optional snippets — `port-table-snippet.md` when ports exist, `fsm-section-snippet.md` when `fsm_candidates` is non-empty, `block-diagram-snippet.d2` when there are two or more instances.
3. Read `references/doc-conventions.md` once for naming/format/diagram rules.
4. Open at least one matching `examples/*.md` for tone reference — pick the example whose complexity (small / multi-domain / FSM-heavy) is closest to the target module.
5. Replace every `<!-- LLM_FILL: ... -->` marker in `docs/rtl/{module}.md`. Apply to all such markers in the file — do not stop after the first.
6. Report the generated file path to the user.
Apply steps 1-6 to every requested module. When `--all` is passed, fan out using one task per module in parallel.
</Execution>
<Tool_Usage>
Manual-extraction fallback (when verible is unavailable):
```
Task(subagent_type="rtl-agent-team:rtl-explorer",
prompt="Document RTL module per skills/rtl-document/. Read rtl/{module}/{module}.sv, extract ports/parameters/instances/FSM, apply project naming conventions, and fill the LLM_FILL markers in docs/rtl/{module}.md.")
```
Synthesis summary:
```
Task(subagent_type="rtl-agent-team:synthesis-reporter",
prompt="Summarize syn/synth_report.txt and syn/timing_report.txt for the docs/rtl/{module}.md synthesis section.")
```
</Tool_Usage>
<Examples>
<example index="1">
<scenario>Small datapath module, no FSM, single clock domain.</scenario>
<reference>examples/simple_fifo.md</reference>
<expected_output>Port table only; FSM and D2 sections omitted by render_doc.py because the JSON has empty fsm_candidates and one instance or fewer.</expected_output>
</example>
<example index="2">
<scenario>AXI-Stream bridge with two clock domains.</scenario>
<reference>examples/axi_stream_bridge.md</reference>
<expected_output>Ports grouped by AXI / APB; Clock Domains table lists both `sys` and `pixel`; D2 block diagram shows the async-FIFO bridge.</expected_output>
</example>
<example index="3">
<scenario>FSM-heavy codec module with multiple sub-instances.</scenario>
<reference>examples/cabac_encoder_excerpt.md</reference>
<expected_output>FSM table with Mermaid `stateDiagram-v2`; D2 block diagram for the sub-instance tree; functional description references the relevant standard section.</expected_output>
</example>
</Examples>
<Escalation_And_Stop_Conditions>
- `extract_module_doc.py` returns SV parse error → report file:line; do not fabricate ports. Ask the user to fix the syntax first.
- FSM register cannot be inferred → JSON has `fsm_candidates: []`. Add an FSM section manually only when a state machine clearly exists and the state register is identifiable.
- Synthesis report absent → omit the Synthesis Summary section; note the absence in the document footer.
- Port name violates convention (e.g., `data_i` suffix) → record in `convention_violations` and surface the violation at the top of the generated doc. Do not rewrite the RTL.
</Escalation_And_Stop_Conditions>
## Output
- `docs/rtl/{module}.md` — per-module documentation.
- `/tmp/{module}.json` — intermediate extraction (transient; not committed).
<Final_Checklist>
- [ ] `docs/rtl/{module}.md` exists for every requested module.
- [ ] Port table lists every port with `i_/o_/io_` prefix; clock/reset rows tagged `kind=clock|reset`.
- [ ] Parameters use `UPPER_SNAKE_CASE`.
- [ ] Instance table uses `u_` prefix.
- [ ] All `<!-- LLM_FILL: ... -->` markers replaced.
- [ ] RTL source not modified.
- [ ] Synthesis Summary included when `syn/synth_report.txt` exists.
- [ ] Convention violations flagged at the top of the doc when any were found.
</Final_Checklist>From babyworm/rtl-agent-team, MIT.
More from babyworm/rtl-agent-team
- 0.628score
ref-model
babyworm
Builds Phase 2 golden C reference model with bitexact conformance and bandwidth estimation.
SkillBFreshness: B★ 61Claude Code - 0.628score
rtl-conformance-test
babyworm
Final codec standards compliance gate: bitexact RTL bitstream check against JM/HM reference.
SkillBFreshness: B★ 61Claude Code - 0.628score
rtl-bug-repro
babyworm
Reproduce an RTL bug with a minimal TB and isolate root cause via waveform diff — 'reproduce this bug', 'minimal repro TB', regression failure isolation.
SkillBFreshness: B★ 61Claude Code - 0.628score
rtl-ipxact-gen
babyworm
Generate IEEE 1685-2014 IP-XACT XML descriptor from RTL source — 'generate IP-XACT', IP handoff, or SoC/EDA integration needing component XML.
SkillBFreshness: B★ 61Claude Code - 0.628score
rtl-lint-check
babyworm
Lint RTL with Verilator, Verible, and slang; report-only quick check for 'run lint', pre-commit, or phase-gate verification (no fixing).
SkillBFreshness: B★ 61Claude Code +9 - 0.628score
codec-conformance-eval
babyworm
Evaluate C ref-model decoder against JVET/JCTVC conformance bitstreams (bitexact/MD5) — 'decoder conformance'; C-level, not RTL (rtl-conformance-test).
SkillBFreshness: B★ 61Claude Code +9 - 0.628score
codec-rd-eval
babyworm
Encoder RD evaluation of C ref model: BD-PSNR/BD-rate (VCEG-M33) across sequences/QPs — 'RD eval', 'BD-rate', codec algorithm quality comparison.
SkillBFreshness: B★ 61Claude Code +9 - 0.624score
rat-init-project
babyworm
Initialize RTL project workspace: directory structure, coding rules, phase guides.
SkillBFreshness: B★ 61Claude Code +9 - 0.623score
domain-consult
babyworm
Route domain questions to the best expert agent: codec standards, video/signal processing, fixed-point math, HW protocols.
SkillBFreshness: B★ 61Claude Code +9 - 0.623score
rtl-p4-block-parallel
babyworm
Phase 4 RTL in isolated git worktrees per codec block, team-coordinated with upstream-first merge.
SkillBFreshness: B★ 61Claude Code - 0.620score
cdc-tool-profiles
babyworm
Internal reference: cdc tool profiles (agent-loaded; do not invoke).
SkillBFreshness: B★ 61Claude Code +9 - 0.620score
rat-auto-design-policy
babyworm
Internal reference: rat auto design policy (agent-loaded; do not invoke).
SkillBFreshness: B★ 61Claude Code +9
Signals
- Stars
- 61
- Forks
- 16
- Open issues
- 0
- Last commit (this folder)
- Aug 16, 2026 (2 months ago)
- Last release
- Jul 17, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/babyworm/rtl-agent-team
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from babyworm
- 0.628score
rtl-bug-repro
babyworm
Reproduce an RTL bug with a minimal TB and isolate root cause via waveform diff — 'reproduce this bug', 'minimal repro TB', regression failure isolation.
SkillBFreshness: B★ 61Claude Code - 0.628score
codec-rd-eval
babyworm
Encoder RD evaluation of C ref model: BD-PSNR/BD-rate (VCEG-M33) across sequences/QPs — 'RD eval', 'BD-rate', codec algorithm quality comparison.
SkillBFreshness: B★ 61Claude Code +9 - 0.628score
rtl-conformance-test
babyworm
Final codec standards compliance gate: bitexact RTL bitstream check against JM/HM reference.
SkillBFreshness: B★ 61Claude Code - 0.628score
ref-model
babyworm
Builds Phase 2 golden C reference model with bitexact conformance and bandwidth estimation.
SkillBFreshness: B★ 61Claude Code - 0.628score
codec-conformance-eval
babyworm
Evaluate C ref-model decoder against JVET/JCTVC conformance bitstreams (bitexact/MD5) — 'decoder conformance'; C-level, not RTL (rtl-conformance-test).
SkillBFreshness: B★ 61Claude Code +9 - 0.628score
rtl-ipxact-gen
babyworm
Generate IEEE 1685-2014 IP-XACT XML descriptor from RTL source — 'generate IP-XACT', IP handoff, or SoC/EDA integration needing component XML.
SkillBFreshness: B★ 61Claude Code
Cite this page
rtl-document skill. Agent Mart. https://agentmart.dev/skills/babyworm-rtl-document (last updated 2026-10-24)