kicad_skills

Fabrication output

One of the kicad_skills usage guides for the eda CLI — all six. Plain Markdown: read it directly, or hand it to whatever assistant you use.

Turns a finished board into the files a manufacturer accepts. Runs in the container (see the eda-environment guide), offline.

One command for the whole package

./bin/eda.sh pcb fab hardware/ -o build/fab

Writes, and records in build/fab/manifest.json:

build/fab/
├── gerbers/          copper, mask, paste, silkscreen, Edge.Cuts (X2, 6 digits)
│   ├── *.gbr
│   ├── *.drl         Excellon, mm, with a PDF map
│   └── drill-report.txt
├── <board>-pos.csv   pick and place, mm, DNP excluded
├── <board>-bom.csv   grouped by value + footprint, DNP excluded
├── <board>-fab.zip   everything above, ready to upload
└── manifest.json     what was written, and what failed

Options: --step (3D model for mechanical review), --ipc2581 (single-file exchange format some fabs prefer), --fab-layers (also plot F.Fab/B.Fab for the assembler), --include-dnp, --pos-format ascii|csv|gerber, --no-zip.

Each step is independent: if STEP export fails, the Gerbers are still written and the failure is listed in manifest.json.errors. The command exits 2 when anything failed.

Before you send it

Run the reviews first. A fab package built from a board with DRC errors is just a faster way to make scrap:

./bin/eda.sh pcb review hardware/ --text     # must be error free
./bin/eda.sh sch review hardware/ --text
./bin/eda.sh pcb fab    hardware/ -o build/fab

Then check the package itself:

Bill of materials on its own

./bin/eda.sh sch bom hardware/ -o build/bom.csv
./bin/eda.sh sch bom hardware/ -o build/bom.csv --fields Reference,Value,Footprint,MPN,QUANTITY

Returns line_items and total_parts alongside the CSV, so a BOM that is suddenly one part short is easy to spot between revisions. Grouping defaults to Value,Footprint; DNP parts are excluded unless --include-dnp is given.

For ordering, the BOM needs manufacturer part numbers: add an MPN (or Manufacturer_Part_Number) field to the symbols in the schematic and export it with --fields. The toolkit does not invent part numbers.

What this does not do