From hdl
ALWAYS invoke this skill when reviewing SystemVerilog or Verilog code for idiomatic style, synthesizability, or best practices. NEVER review SystemVerilog or Verilog without this skill.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hdl:reviewing-systemverilogThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<objective>
<quick_start>
Invoke: /reviewing-systemverilog
Provide the SystemVerilog files you want reviewed (design files, packages, interfaces, testbenches, or any combination). The skill walks through a structured review:
logic usage, enums, structs, packages, parameterizationalways_ff/always_comb, blocking vs non-blocking, FSM patterns</quick_start>
<essential_principles>
logic everywhere. wire and reg are legacy. logic is the unified type — it works in all contexts. Only use wire for multi-driver nets (tri-state buses).
always_ff and always_comb, never always @. always_ff enforces sequential semantics. always_comb enforces combinational semantics and auto-infers the sensitivity list. always @(posedge clk) and always @(*) are legacy Verilog-2001.
unique case, not bare case. unique case tells the synthesizer all cases are covered and mutually exclusive. priority case when first-match priority encoding is intended. Bare case communicates nothing about designer intent.
Non-blocking (<=) in always_ff, blocking (=) in always_comb. Mixing them up causes simulation/synthesis mismatch. always_ff enforces this; always @(posedge clk) does not.
ANSI-style ports, named connections. Module ports declared in the header, not in a separate body. Instantiations use .port_name(signal), never positional.
Packages for shared types. Enums, structs, typedefs, constants, and functions belong in packages. No `define macros for things that can be parameter or localparam.
</essential_principles>
What would you like reviewed?Provide any combination of:
You can provide file paths, paste code, or point to a directory.
Wait for the user to provide files before proceeding.
After the user provides files, execute the review workflow:Read ${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md first, then follow ${CLAUDE_SKILL_DIR}/workflows/systemverilog-review.md exactly.
| User Provides | Reference to Read | Additional Context |
|---|---|---|
| Design files | ${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md | Full review against all idiom categories |
| Package files | ${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md | Focus on type discipline, naming |
| Interface files | ${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md | Focus on modport, parameterization |
| Testbench files | ${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md | Testbench-specific idioms apply |
| Mixed | ${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md | Review each file in its appropriate mode |
<reference_index>
| File | Purpose |
|---|---|
${CLAUDE_SKILL_DIR}/references/systemverilog-idioms.md | Comprehensive idiomatic SystemVerilog IEEE 1800-2017 reference |
${CLAUDE_SKILL_DIR}/workflows/systemverilog-review.md | Step-by-step review procedure with finding format |
</reference_index>
<success_criteria> Review is complete when:
</success_criteria>
npx claudepluginhub outcomeeng/plugins --plugin hdlCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.