Help us improve
Share bugs, ideas, or general feedback.
From rtl-agent-team
Runs Verilator, Verible, and slang lint checks on RTL files with project coding convention enforcement. Use before commit or phase gate verification.
npx claudepluginhub babyworm/rtl-agent-team --plugin rtl-agent-teamHow this skill is triggered — by the user, by Claude, or both
Slash command
/rtl-agent-team:rtl-lint-checkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<Purpose>
Lints SystemVerilog files using Verilator or Verible, categorizes errors/warnings, explains common issues with fixes, and returns structured output for /gf orchestration.
Provides passive lint tool profiles (verilator, verible, slang, spyglass) with unified report expectations for Verilog/SystemVerilog codebases.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
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.