Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Drives the KiCad command-line interface (`kicad-cli`, version 9.0) to export schematics and PCBs, produce fabrication outputs, and run design checks. This skill should be used when the user asks to export gerbers, drill, or pick-and-place files, generate a BOM or netlist, run ERC or DRC (including in CI), export a STEP/3D model or PDF/SVG, upgrade KiCad symbol/footprint libraries, or run a KiCad job set. Invoked via "/hardware:use-kicad-cli".
.claude/skills/fradser-use-kicad-cli/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 118% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 101% | 0% |
Generate fabrication, documentation, and 3D outputs from KiCad projects, and run electrical/design rule checks, by driving kicad-cli — KiCad 9.0's command-line tool. It has six command groups: sch (schematic), pcb (board), sym (symbols), fp (footprints), jobset (batch job sets), and version.
kicad-cli version first to confirm it works.kicad-cli <group> <command> -h./Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli. On Linux kicad-cli is on PATH; on Windows it is kicad-cli.exe in the KiCad bin folder. MUST confirm with kicad-cli version before building a pipeline.--exit-code-violations. pcb drc and sch erc exit 0 by default even when violations exist — they only write a report. MUST pass --exit-code-violations to get exit 5 when violations are found. In CI, treat exit 5 as "violations found"; other non-zero codes are tool/IO errors. See references/checks.md.--output is a directory for some commands, a file for others. Directory: pcb export gerbers, pcb export drill, */export svg (multi-file). File: pcb export pdf, pcb export step, pcb export pos, single-file exports. Create the directory first; never assume deep auto-creation.pcb export gerbers (plural). The singular pcb export gerber is deprecated in 9.0 and removed in 10.0.--define-var KEY=VALUE (-D) to override project text variables (e.g. ${REV}) at export time instead of editing the board. Protect KiCad field variables like ${QUANTITY} with single quotes in the shell so they are not expanded.--format json is supported but its field names are not officially documented — generate a sample and inspect it before parsing.kicad-cli generally runs headless, but some operations expect an X display. The robust pattern is the official kicad/kicad:9.0 Docker image, or Xvfb :99 -ac -nolisten tcp & then export DISPLAY=:99. See references/setup.md.| User wants | Command | Reference | |---|---|---| | Gerbers / drill / pick-and-place | pcb export gerbers / drill / pos | references/pcb-export.md | | Board PDF / SVG / DXF | pcb export pdf / svg / dxf | references/pcb-export.md | | 3D model (STEP/GLB/VRML/…) | pcb export step / glb / vrml | references/pcb-export.md | | IPC-2581 / IPC-D-356 / ODB++ | pcb export ipc2581 / ipcd356 / odb | references/pcb-export.md | | Board render (PNG/JPEG) | pcb render | references/pcb-export.md | | Schematic PDF / SVG / DXF / PS / HPGL | sch export <fmt> | references/sch-export.md | | BOM / netlist | sch export bom / netlist | references/sch-export.md | | Design / electrical rule check | pcb drc / sch erc | references/checks.md | | Symbol/footprint SVG or library upgrade | sym ... / fp ... | references/sym-fp-jobset.md | | Reproducible batch of outputs | jobset run | references/sym-fp-jobset.md | | End-to-end recipes | — | references/workflows.md |
Try, in order: kicad-cli on PATH; macOS /Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli; Windows C:\Program Files\KiCad\9.0\bin\kicad-cli.exe. Assign the resolved path to a shell variable and reuse it:
bashKCLI=$(command -v kicad-cli || echo /Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli) "$KCLI" version
If none works, tell the user KiCad 9.0 is not installed or ask for the install path.
references/setup.md — locating the binary cross-platform, headless/CI setup, version, global options (--define-var, --output semantics), gotchas.references/pcb-export.md — every pcb export subcommand (gerbers, drill, pos, pdf, svg, dxf, step, glb, vrml, ipc2581, ipcd356, odb, others) plus pcb render.references/sch-export.md — sch export pdf/svg/dxf/ps/hpgl, netlist, bom, python-bom.references/checks.md — pcb drc and sch erc: flags, severity, exit codes, JSON caveat, CI gating.references/sym-fp-jobset.md — sym and fp export/upgrade, and jobset run.references/workflows.md — end-to-end recipes (fab package, CI checks, schematic PDF, STEP model, job set).| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | fail→pass | 14,823 | 9,472 | -36% | 1 | 1 | 0% | 2,382 | 3,106 | +30% | 0 | 0 | — |
case-01 | fail→fail | 7,703 | 11,580 | +50% | 1 | 1 | 0% | 1,271 | 2,663 | +110% | 0 | 0 | — |
case-02 | fail→fail | 9,405 | 9,481 | +1% | 1 | 1 | 0% | 1,686 | 3,262 | +93% | 0 | 0 | — |
case-03 | fail→pass | 8,625 | 7,584 | -12% | 1 | 1 | 0% | 1,631 | 3,025 | +85% | 0 | 0 | — |
case-04 | pass→pass | 6,583 | 4,816 | -27% | 1 | 1 | 0% | 1,023 | 2,227 | +118% | 0 | 0 | — |
case-05 | pass→pass | 6,664 | 2,786 | -58% | 1 | 1 | 0% | 1,025 | 2,064 | +101% | 0 | 0 | — |
case-06 | pass→pass | 8,765 | 6,981 | -20% | 1 | 1 | 0% | 1,619 | 2,453 | +52% | 0 | 0 | — |
case-07 | pass→pass | 12,560 | 6,126 | -51% | 1 | 1 | 0% | 2,134 | 2,685 | +26% | 0 | 0 | — |
case-08 | pass→pass | 9,710 | 4,139 | -57% | 1 | 1 | 0% | 1,499 | 2,103 | +40% | 0 | 0 | — |
case-09 | pass→pass | 14,779 | 9,214 | -38% | 1 | 1 | 0% | 2,612 | 3,001 | +15% | 0 | 0 | — |
case-11 | pass→pass | 6,003 | 6,152 | +2% | 1 | 1 | 0% | 806 | 2,626 | +226% | 0 | 0 | — |
case-12 | pass→pass | 7,009 | 4,199 | -40% | 1 | 1 | 0% | 1,146 | 2,307 | +101% | 0 | 0 | — |
case-13 | pass→pass | 6,344 | 4,291 | -32% | 1 | 1 | 0% | 954 | 2,240 | +135% | 0 | 0 | — |
case-14 | pass→pass | 8,226 | 3,031 | -63% | 1 | 1 | 0% | 1,360 | 2,080 | +53% | 0 | 0 | — |
case-15 | pass→pass | 5,204 | 3,465 | -33% | 1 | 1 | 0% | 927 | 2,090 | +125% | 0 | 0 | — |
case-16 | pass→pass | 4,945 | 2,485 | -50% | 1 | 1 | 0% | 934 | 1,844 | +97% | 0 | 0 | — |
case-17 | pass→pass | 6,011 | 4,680 | -22% | 1 | 1 | 0% | 1,047 | 2,279 | +118% | 0 | 0 | — |
case-18 | pass→pass | 7,458 | 4,241 | -43% | 1 | 1 | 0% | 1,296 | 2,338 | +80% | 0 | 0 | — |
case-19 | fail→pass | 7,511 | 5,224 | -30% | 1 | 1 | 0% | 1,216 | 2,070 | +70% | 0 | 0 | — |
case-20 | pass→pass | 14,298 | 13,130 | -8% | 1 | 1 | 0% | 2,613 | 3,588 | +37% | 0 | 0 | — |
case-21 | pass→pass | 17,001 | 24,269 | +43% | 1 | 1 | 0% | 3,029 | 4,536 | +50% | 0 | 0 | — |
case-22 | pass→pass | 17,242 | 12,588 | -27% | 1 | 1 | 0% | 2,904 | 4,022 | +38% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.