Help us improve
Share bugs, ideas, or general feedback.
From gateflow
Lints SystemVerilog files using Verilator or Verible, categorizes errors/warnings, explains common issues with fixes, and returns structured output for /gf orchestration.
npx claudepluginhub codejunkie99/gateflow-plugin --plugin gateflowHow this skill is triggered — by the user, by Claude, or both
Slash command
/gateflow:gf-lintThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Lint SystemVerilog files with structured output for orchestration.
Runs Verilator, Verible, and slang lint checks on RTL files with project coding convention enforcement. Use before commit or phase gate verification.
Summarizes Verilator lint output into a formatted report with error/warning counts, line-specific issues, fix suggestions, and recommendations for Verilog/SystemVerilog files.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Share bugs, ideas, or general feedback.
Lint SystemVerilog files with structured output for orchestration.
Before running lint, check if Verilator is available:
which verilator
If Verilator is not available, check for Verible:
which verible-verilog-lint
If neither is available, return immediately:
---GATEFLOW-RESULT---
STATUS: ERROR
ERRORS: 0
WARNINGS: 0
FILES: []
DETAILS: No lint tool available. Install Verilator (recommended) or Verible.
macOS: brew install verilator
Linux: sudo apt install verilator
---END-GATEFLOW-RESULT---
Do NOT attempt to lint without a tool. Return the ERROR status and let the orchestrator handle it.
If files specified in args: Use the provided file paths.
If no files specified: Auto-detect SV files:
ls *.sv rtl/*.sv 2>/dev/null | head -20
verilator --lint-only -Wall <files>
Count issues by category:
%Error: lines - must be fixed%Warning-*: lines - should be reviewedFor each warning type found, explain:
| Warning | Meaning | Fix |
|---|---|---|
| UNUSED | Signal declared but not used | Remove signal or suppress with /* verilator lint_off UNUSED */ |
| UNDRIVEN | Signal never assigned a value | Assign the signal or connect it |
| WIDTH | Bit width mismatch in operation | Add explicit sizing: [7:0] |
| CASEINCOMPLETE | Case statement missing items | Add default: branch |
| LATCH | Inferred latch from incomplete if/case | Add default assignment at start of always_comb |
| BLKSEQ | Blocking assignment in always_ff | Use <= (non-blocking) in sequential blocks |
| PINCONNECTEMPTY | Module port left unconnected | Connect or explicitly mark as .* |
| IMPLICIT | Implicit wire declaration | Declare with logic or wire |
ALWAYS end your response with this exact block format:
---GATEFLOW-RESULT---
STATUS: PASS|FAIL|ERROR
ERRORS: <count>
WARNINGS: <count>
FILES: <comma-separated list>
DETAILS: <one-line summary>
---END-GATEFLOW-RESULT---
Status definitions:
PASS: No errors, warnings OK (0-N warnings acceptable)FAIL: One or more errors foundERROR: Could not run lint (missing files, tool error)Running lint on: rtl/fifo.sv, rtl/uart.sv
$ verilator --lint-only -Wall rtl/fifo.sv rtl/uart.sv
%Warning-UNUSED: rtl/fifo.sv:25: Signal 'debug_flag' is not used
%Warning-WIDTH: rtl/uart.sv:42: Operator ASSIGN expects 8 bits but got 16
## Summary
**Files:** 2 | **Errors:** 0 | **Warnings:** 2
### Warnings Explained
1. **UNUSED** (rtl/fifo.sv:25): `debug_flag` is declared but never read
- Fix: Remove if unneeded, or suppress with lint pragma
2. **WIDTH** (rtl/uart.sv:42): Assigning 16-bit value to 8-bit signal
- Fix: Truncate explicitly `data[7:0]` or widen the target
---GATEFLOW-RESULT---
STATUS: PASS
ERRORS: 0
WARNINGS: 2
FILES: rtl/fifo.sv,rtl/uart.sv
DETAILS: Lint passed with 2 warnings
---END-GATEFLOW-RESULT---
$ verilator --lint-only -Wall rtl/broken.sv
%Error: rtl/broken.sv:10: syntax error, unexpected IDENTIFIER
---GATEFLOW-RESULT---
STATUS: FAIL
ERRORS: 1
WARNINGS: 0
FILES: rtl/broken.sv
DETAILS: Syntax error on line 10
---END-GATEFLOW-RESULT---
The /gf skill uses this skill internally and parses the result block:
Parse ---GATEFLOW-RESULT--- block:
- STATUS: PASS -> proceed to next step
- STATUS: FAIL -> spawn sv-refactor agent with error context
- STATUS: ERROR -> report issue to user