Fabrication output

One of the kicad_skills usage guides for the eda CLI — all of them. 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.

Looking at the set before you upload

--preview plots every layer that went into the Gerber set, one PNG each plus a labelled contact sheet, into preview/:

./bin/eda.sh pcb fab hardware/ -o build/fab --preview --background black
build/fab/
├── gerbers/ ...
└── preview/
    ├── layer-F_Cu.png ...   one per exported layer, Edge.Cuts drawn on each
    ├── contact-sheet.png    all of them tiled and labelled
    └── images.json

--background white|black|transparent (default white) chooses what they are drawn on: black to read on a dark screen, transparent to drop a layer into a document or stack two of them. --preview-dpi defaults to 200.

The preview is the only thing kept out of the zip — the board house wants the manufacturing files, not pictures of them.

These are plots of the board rather than of the .gbr files, so they need no Gerber viewer; the geometry is the same, and they answer the question a file listing cannot. Gerber files carry no colours of their own — they are aperture data — which is why the background is a property of the plot, not of the export.

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