From rtl-agent-team
Lints RTL files using Verilator, Verible, and slang for synthesizability, style, syntax, and IEEE 1800 semantic violations plus naming conventions. For pre-commit or phase gate checks.
npx claudepluginhub babyworm/rtl-agent-team --plugin rtl-agent-teamThis skill uses the workspace's default tool permissions.
<Purpose>
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
RTL files (rtl/) are linted with slang -Weverything for maximum strictness — this catches
IEEE 1800 §9.2.2.4 violations (e.g., always_ff + initial on same signal) that only VCS
enforces at compile time. TB files (sim/) use --allow-dup-initial-drivers for flexibility.
Report all violations with file, line, rule, and severity.
See references/verilator-warnings.md for detailed Verilator warning categories and waiver format.
<Use_When>
<Do_Not_Use_When>
<Why_This_Exists> Three complementary lint tools catch different issue classes:
<Coding_Convention_Requirements> Lint checks MUST enforce the project coding conventions (CLAUDE.md):
i_ (input), o_ (output), io_ (bidirectional) — NOT suffix _i, _oclk (single domain) or {domain}_clk (multiple domains, e.g., sys_clk) — NOT clk_irst_n (single domain) or {domain}_rst_n (multiple domains, e.g., sys_rst_n) — NOT rst_nilogic only — reg/wire usage flagged as violationlogic/typedef/localparam must appear before assign/always blocks — forward references flagged as violationu_ — missing prefix flaggedgen_ — missing prefix flagged
Note: Verible and slang may not catch all convention violations natively.
lint-checker MUST perform a supplementary grep-based check for naming conventions.
</Coding_Convention_Requirements><Execution_Policy>
lint/scripts/run_lint.sh (creates lint/lint/replay/run_lint_*_latest.sh)skills/rtl-lint-check/scripts/check_conventions.sh {files} for automated convention checkingreg/wire declarations, port suffixes _i/_o, clk_i/rst_ni, missing u_/gen_ prefixes, declarations after logic blocks (forward reference risk)templates/lint-report.md as the report format template.verilator.vlt exists, apply waivers before final verdict (see templates/verilator-waiver.vlt for waiver format)
<Tool_Usage>
Task(subagent_type="rtl-agent-team:lint-checker",
prompt="Run Verilator, Verible, and slang lint on rtl/ via Bash CLI. Verilator: --lint-only -Wall -Wpedantic -sv. Verible: --rules_config .verible_lint.cfg. slang: --lint-only. Also check naming conventions: i_/o_ port prefixes, {domain}_clk/{domain}_rst_n, logic not reg/wire, u_ instance prefix. Report all violations grouped by file and severity (Critical/Major/Minor). Return PASS or FAIL summary.")
</Tool_Usage>
lint-checker runs both tools via Bash CLI, finds 3 Verible style violations, 1 slang unused-variable warning, and 2 convention violations (port `data_i` should be `i_data`, `clk` should be `sys_clk` in multi-domain context); returns FAIL with exact line numbers and rule names. Running only one lint tool and claiming "lint clean" — misses semantic issues caught only by slang. Not checking naming conventions — allows `clk_i`, `data_o` to pass lint despite project rules.<Escalation_And_Stop_Conditions>
apt install verible or from GitHub releases)pip install slang or from source)<Final_Checklist>
Verilator waiver file (.verilator.vlt) for intentional suppressions:
`verilator_config
lint_off -rule UNUSED -file "rtl/reserved/reserved.sv" -lines 10-15
lint_off -rule WIDTH -file "rtl/datapath/datapath.sv" -match "Operator *"
Generate waiver template: verilator --lint-only -Wall --waiver-output verilator.vlt rtl/*/*.sv
See references/verilator-warnings.md for complete warning reference.