KiCad Workflow
How OpenSkyhawk KiCad projects are organised, share a common parts library, and get fabbed.
Every physical board is its own KiCad project; shared parts and rules live in PCB/Libraries/.
Shared library — no global setup needed
All projects point at PCB/Libraries/ as the single source of truth for custom parts. The
library tables use the built-in ${KIPRJMOD} variable, so they resolve automatically — clone
the repo, open a project, and the library is just there. No global KiCad configuration.
The tables resolve three levels up from the board folder, matching the fixed structure:
PCB/
├── Libraries/ ← shared library root
└── <Console>/
└── <Group>/
└── <Board>/ ← the KiCad project, 3 levels below Libraries
├── sym-lib-table
└── fp-lib-table
Scaffolding a new board — use the skill
Always create a new board with the /new-kicad-project skill — never hand-roll the project
files. It copies the library tables, pins the OpenSkyhawk libs, pre-loads the
design rules, creates the root schematic, and registers the board in
the GitHub Project (Panel Research & Assignment).
/new-kicad-project <Console> <Group> <BoardName> [mcu|breakout]
The shared library
PCB/Libraries/OpenSkyhawk.kicad_sym + OpenSkyhawk.pretty/ hold the custom symbols and
footprints (the 5050 LED, IRLML2502, the X27 steppers). Everything else is a KiCad built-in. The
full parts list with symbol references is on the Component Library page.
To add a new custom part: add the symbol in OpenSkyhawk.kicad_sym, create the matching
.kicad_mod in OpenSkyhawk.pretty/, and commit both — no per-project duplication.
Reusable sheet templates
PCB/Libraries/sheets/ is for shared hierarchical sheets (power rail, MCP23017 instance, LED
zone switch, ADC filter, CAN transceiver) — Place → Add Sheet and browse to the template.
(README present; the .kicad_sch templates aren't populated yet.)
The KiCad CLI
KiCad 10.0.1 ships a CLI used for validation and fabrication outputs:
KICAD=/Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli
# Validation
$KICAD sch erc --output erc.json <board.kicad_sch>
$KICAD pcb drc --output drc.json <board.kicad_pcb>
# Fabrication
$KICAD pcb export gerbers --output ./gerbers/ <board.kicad_pcb>
$KICAD pcb export drill --output ./gerbers/ <board.kicad_pcb>
$KICAD sch export bom --output bom.csv <board.kicad_sch>
# Fusion/FreeCAD fit-check + panel cutout
$KICAD pcb export step --output board.step <board.kicad_pcb>
$KICAD pcb export dxf --output cutout.dxf <board.kicad_pcb>
ERC/DRC also run automatically in CI on PRs that touch PCB files.
CAD fit-check
The pcb export step output drops straight into the mechanical CAD for a board-in-enclosure fit
check. The CAD side of that workflow is on the CAD Workflow page (tooling
still under evaluation).