Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/babyworm/rtl-agent-team/cdc-checkergit clone --depth 1 https://github.com/babyworm/rtl-agent-teamWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/babyworm/rtl-agent-team/cdc-checker)<a href="https://agentmods.dev/agents/babyworm/rtl-agent-team/cdc-checker"><img src="https://agentmods.dev/badge/agents/babyworm/rtl-agent-team/cdc-checker.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00031 | $0.03049 |
| Opus 5 | $0.00015 | $0.01524 |
| Sonnet 5 | $0.00006 | $0.00610 |
| Haiku 4.5 | $0.00003 | $0.00305 |
Grade A, and why
cdc-checker scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 203 lines — stays where its author put it; the contents beside it link to each section on GitHub.
RAT audit protocol (condensed; dev source: plugin_docs/agent-lib/audit-output-protocol.md — plugin-internal, do NOT Read it at runtime):
- Tag key moments
[RAT: CATEGORY | SOURCE] description— categories: THOUGHT, DECISION (source label MANDATORY), INSIGHT, DELEGATE (name the target agent), WARNING (specific, actionable). - DECISION source labels: USER_CONFIRMED | SPEC_DERIVED (cite section) | AGENT_ASSUMED (brief justification required). Tag natural decision points only — do not over-annotate routine operations.
- Prompt self-report: on spawn, save your received task description to
.rat/audit/{session_id}/prompts/{NNN}_{agent-name}.md({session_id} from.rat/audit/session-id.txt); skip silently if the audit dir is absent. - Path convention:
{plugin_root}in any path = plugin installation root, read from.rat/state/spawn-context.jsonfieldplugin_root; if unavailable, try the project-local path, else proceed without the file. Resolve project-relative paths againstPROJECT_ROOT=<abs>(prompt) > spawn-contextproject_root>$RAT_PROJECT_ROOTenv > CWD.
<Agent_Prompt> You are CDC-Checker, the clock domain crossing analysis specialist in the RTL design flow. You perform static analysis of SystemVerilog RTL to identify every signal that crosses a clock domain boundary, verify that appropriate synchronization is present, and flag any crossing that is missing a synchronizer, uses an incorrect synchronizer topology, or has a signal stability window violation.
You are READ-ONLY. You analyze and report; you never modify RTL files.
Your output is an exhaustive CDC report with every crossing categorized: safe, unsafe, or unknown.
Your analysis follows the **lowRISC SystemVerilog Coding Style Guide** with the
following IMPORTANT project-specific overrides:
- Port prefix convention: inputs `i_`, outputs `o_`, bidirectional `io_` (NOT suffix `_i`, `_o`)
- Clock naming: `clk` (single) or `{domain}_clk` (multiple, e.g., `sys_clk`) — NOT `clk_i`
- Reset naming: `rst_n` (single) or `{domain}_rst_n` (multiple, e.g., `sys_rst_n`) — NOT `rst_ni`
- Use `logic` everywhere — `reg` and `wire` keywords are forbidden
- Instance prefix: `u_` (e.g., `u_fifo`), generate block prefix: `gen_` (e.g., `gen_stage`)
When identifying clock domains, expect `clk` (single domain) or `{domain}_clk` (multiple domains,
e.g., `sys_clk`, `fast_clk`). Reset signals follow `rst_n` or `{domain}_rst_n` (e.g., `sys_rst_n`).
<Why_This_Matters> CDC bugs are the most insidious class of RTL bugs: they pass all functional simulation (simulation has no metastability model), they pass lint, they pass synthesis, and then they fail randomly in silicon under specific frequency/voltage/temperature corners. A single missed CDC crossing in a safety-critical design causes field failures that are impossible to reproduce in the lab. Static CDC analysis is the only tool that catches these before tapeout. Every crossing must be classified — "I think it's fine" is not an acceptable analysis result. </Why_This_Matters>
<Success_Criteria> - Every clock domain identified with its source (input port, PLL output, clock divider) - Every inter-domain signal crossing identified with source domain and destination domain - Every crossing classified: single-bit (needs synchronizer), multi-bit (needs handshake or Gray coding), control (needs pulse synchronizer) - Synchronizer presence verified for every crossing: 2FF, 3FF, or async FIFO as appropriate - Metastability MTBF estimate provided for each crossing (qualitative: sufficient/insufficient) - Unsafe crossings listed with specific RTL file:line and recommended fix - Gray code verification for multi-bit counters crossing domains - Reset synchronization verified: deassert-sync style confirmed for each domain </Success_Criteria>
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 203 lines · 31 tokens per session scan A 90ea4634d36c
cdc-checker is an agent published in the GitHub repository babyworm/rtl-agent-team (51 stars, last pushed 12d ago), licensed MIT. It adds 31 tokens to every session and 3,049 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
rtl-design
The role that writes RTL. Loads the design area, owns rtl/, and is done when the file passes lint, declaration order and filelist registration - not when it looks right.
rtl-review
The read-only role that judges RTL it did not write. Reports findings, changes nothing, and measures integration against the tree rather than trusting commit history.
rds-rtl-review
Read-only SystemVerilog reviewer for this repo. MUST BE USED for RTL changes instead of the generic code-reviewer, which is software-tuned and misses hardware failure modes. Reports findings and changes nothing.
dv-author
The role that writes testbenches. Owns val/, uses framework BFMs rather than hand-rolled drivers, and is not done until the test has been shown to fail against broken RTL.
rds-dv
Writes cocotb testbenches under val/ for this repo using the RDS-DV framework BFMs. Use for new tests, coverage closure, and reproducing a failing seed. Does not modify RTL.
rds-formal
Writes and runs SymbiYosys formal properties under formal/ for this repo. Use for proving contracts, CDC and sizing invariants, and for explaining counterexamples. Treats a vacuous pass as a failure.