Stable wrappers around the Verible CLI, plus a reviewer agent that runs lint first and cites rule IDs as evidence — so the judgment layer rests on something the user can audit.
Each skill maps to one Verible CLI tool. The interface is small on purpose: a name, a docstring, deterministic output. Invoke them directly or let Claude pick by relevance.
Runs verible-verilog-lint with the project's rule set, returns rule IDs and locations. The same data sv-reviewer consumes — exposed directly so you can call it without invoking the agent.
verible-verilog-lintRuns verible-verilog-format. The same binary that powers format-on-save, exposed for explicit invocation — useful when you want to reformat a tree before review or in a one-off cleanup.
verible-verilog-formatRuns verible-verilog-diff to compare two SystemVerilog files structurally — past whitespace, past trivial reformats. Useful for reviewing refactors and verifying that "just-cleanup" PRs are actually just cleanup.
verible-verilog-diffThe agent runs verible-verilog-lint before opining, then layers HDL-specific judgment — inferred latches, blocking-vs-nonblocking in always_ff, sensitivity-list drift, X-propagation, clock-domain hygiene. Every finding cites a Verible rule ID where one exists.
verible-verilog-lint --rules_config_search src/counter.sv
counter.sv:9:7 [always-ff-non-blocking] counter.sv:13:1 [module-end-label]
q with = inside an always_ff block. Use non-blocking <= — blocking creates a race when q is read elsewhere in the same cycle.
endmodule is unlabeled. Add the label so cross-file refactors stay anchored: endmodule : counter.
Schematic of the agent's stream. Real traces include the full Verible rule docs and any extra HDL judgment the agent layered on.
Verible's rule corpus is excellent at the lexical & structural layer but stops at design-intent issues. sv-reviewer picks up where the linter ends — and only after the linter has spoken.
always with incomplete assignments — flagged with the offending signal name and the missing branch.always_ff. Cross-checked against the lint result; agent explains the race in plain English so a reviewer can act.always @(*) recommended over hand-rolled lists; explicit lists flagged when they omit a referenced signal.Hooks fire on Claude Code lifecycle events. Two ship today — both small, both opt-out per project.
Walks the workspace once at session start and writes .fpga-lsp/verible.filelist. Verible reads it via --file_list_path for cross-file go-to-definition and reference resolution. If your repo commits a verible.filelist, the plugin respects it byte-for-byte.
After Claude writes a SystemVerilog file, the hook runs verible-verilog-format on the changed file. Quiet, fast, opinionated. Disable per-project by removing the hook from .lsp.json.