Fiducial
A drop-in submodule that turns any AI coding agent into a KiCad hardware design assistant — an instruction library plus stdlib-only verification tools that catch what ERC misses.
AI agents hallucinate pinouts. fiducial catches them.
The observation that started this: LLMs write plausible schematics with real bugs — label typos that split nets, pins wired to nothing, wrong symbols, missing debug headers. And the standard tools don’t catch it, because ERC/DRC check rules, not intent.
In the benchmark, an AI-authored RP2040 devboard passed ERC completely clean while its crystal caps were silently disconnected — the board would never boot. fiducial’s intent audit caught it in seconds:
ref pin expected actual result
*U1 20 /XIN Net-(U1-XIN) WRONG
58/64 connections verified
The workflow
The core insight is declaring intent before wiring:
- Write intent as
intent.csv(ref,pin,expected_net) from the datasheet — before the schematic exists. - Let the agent author the schematic using the instruction library in
skills/. - Prove it:
lint→erc→check-intent. Exit codes are agent gates. - Then layout:
drc→render→ inspect.
python fiducial/scripts/fiducial.py lint myboard.kicad_sch # structure
python fiducial/scripts/fiducial.py erc myboard.kicad_sch # ERC
python fiducial/scripts/fiducial.py check-intent myboard.kicad_sch intent.csv # intent
Zero dependencies on purpose
The verification tools run on the Python stdlib only — no pydantic, no
click. That matters because the whole point is to be a drop-in submodule:
git submodule add, run bootstrap.sh, and any agent that reads
AGENTS.md gets the hardware-design skillset. KiCad 7+ is the only external
requirement, and most diagnostics work even without kicad-cli.
What it catches
lint— duplicate refs, single-use labels, orphan nets, missing libs, off-gridcheck-intent— any pin on the wrong net,NChandlingcheck-rules— house-stylerules.csv(min-contacts,net-exclusive)overlap-check— silent shorts (wires sharing coordinates)
Plus a grid-aware SchematicBuilder that generates lint-clean schematics
programmatically.
Status
v0 — builder + schematic-side verification battle-tested on an RP2040
devboard; PCB-side drc/render works but isn’t yet regression-covered.
Next domains on the roadmap: mechanical CAD, using the same verification
architecture.