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 gateflowThis skill is limited to using the following tools:
Lint SystemVerilog files with structured output for orchestration.
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.
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