kicad-partspec
Pre-alpha. Datasheet-derived PartSpec in, verified KiCad symbols and footprints out.
A model reads the datasheet and fills a PartSpec, a JSON file in which every value carries the datasheet page and a
verbatim quote. Deterministic code generates the KiCad files and checks them independently: against the spec, against
the PDF, and by loading them in kicad-cli.
The accuracy of model extraction has only been measured on three parts, and the answer key for those was written by the same author as the skill and has not been reviewed by a human. See evals/README.md before relying on it.
Status
| Piece | State |
|---|---|
| PartSpec model, loader, spec-layer checks | done |
| Source check (quotes must appear on the cited datasheet page) | done |
| KiCad symbol generation (multi-unit, alternates, grid-aligned) | done |
| Symbol checks (pins vs spec, grid, overlap, name collisions) | done |
kicad-cli load check |
done |
| Footprint generation (dual-row and quad packages, exposed pad) from the datasheet land pattern | done |
Footprint checks (pads vs datasheet, pads reach leads, silkscreen, courtyard) + kicad-cli load |
done |
| MCP server (3 tools), skill, plugin manifests | done (plugin install not verified in Claude Code) |
Extraction evaluation (evals/score.py, round 1 in evals/runs/) |
done, 3 parts only |
Install
Python 3.10 to 3.13. Not on PyPI yet; from GitHub:
pip install "git+https://github.com/w23x0/kicad-partspec" # CLI
pip install "kicad-partspec[mcp] @ git+https://github.com/w23x0/kicad-partspec" # CLI + MCP server
Optional tools the checks use when present: KiCad 9 or later (kicad-cli, for the load checks; without it you get a
warning instead) and poppler (pdftotext, for the datasheet quote check).
The package contains the CLI and the MCP server. The skill that teaches a model how to extract a PartSpec, and the plugin
manifests, live in the repository (skills/, .claude-plugin/, .mcp.json), not in the wheel.
Use
kicad-partspec validate SPEC.json [--datasheet FILE.pdf]
kicad-partspec build SPEC.json --out DIR # writes <mpn>.kicad_sym and <lib>.pretty/<name>.kicad_mod, verifies both
kicad-partspec verify SPEC.json --symbol FILE --footprint FILE
kicad-partspec-mcp # MCP server; PARTSPEC_WORKSPACE limits the paths it may touch
python evals/check_gold.py --datasheets DIR_WITH_PDFS
python evals/score.py --extracted DIR --datasheets DIR_WITH_PDFS # score model extractions against gold
Add --concise to print failures in full and warnings only counted by kind.
Gold cases and their conventions are in evals/README.md. Generated symbols target the KiCad 9 file format
(version 20241209) and were loaded with KiCad 9.0.9.
Footprints are generated from the datasheet's example land pattern (land_* dimensions), not computed from a standard,
so a part whose datasheet has no land pattern gets a symbol and a footprint.skipped warning that names the missing
dimensions.
History
This repository replaces codex-kicad-mcp, a read-first MCP server for KiCad projects. Its code is kept in the history
and on the legacy branch; the tags v0.2.0 and v0.2.1 point at it.
License
MIT.
Metadata
Release files for kicad-partspec 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| kicad_partspec-0.0.1.tar.gz | 64.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kicad_partspec-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 108.0 kB
Release files / kicad_partspec-0.0.1.tar.gz
| Download URL | kicad_partspec-0.0.1.tar.gz |
|---|---|
| Size | 64.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6c5882147dfaa8b2c069d7c5b1f52e3d6c8790115126e5e0bcf2591430d85cf8
|
|
BLAKE2b-256 checksum How to use checksums |
f3d166e158a90a08b1b66e833a0808771cef5e65f7c846b4ff1ba250548ea22b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / kicad_partspec-0.0.1-py3-none-any.whl
| Download URL | kicad_partspec-0.0.1-py3-none-any.whl |
|---|---|
| Size | 43.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
93cf8419fe8c264f32918f3581f84910f3740c9444d0cfcab17203e373b41a73
|
|
BLAKE2b-256 checksum How to use checksums |
470b4b31016b4e136ff3ca5ed29c57a2bc94345d99536361ec1859a960d59c07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logSecurity for kicad-partspec 0.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for kicad_partspec-0.0.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.