Skip to main content

kicad-bot

CI PyPI Python versions License

A CI quality gate for KiCad projects — ERC/DRC verification, BOM availability checks, visual diffs, and fabrication-output generation. CI-friendly and framework-agnostic.

kicad-bot runs your KiCad project through automated quality gates on every push and pull request, and produces a fabrication/documentation package on release. It catches electrical (ERC) and design-rule (DRC) violations before they reach main, flags BOM parts that have gone end-of-life or out of stock, generates visual schematic/PCB diffs for reviewers, and emits a reproducible fab package on tag — so the board that ships is always verified, sourceable, and reproducible.

It wraps battle-tested upstream tooling rather than reinventing it:

Tool Used for
kicad-cli (KiCad 8+) headless ERC/DRC (--exit-code-violations, --schematic-parity)
KiBot fabrication/documentation output generation & orchestration
KiCost (via KiBot) distributor-API pricing, availability, lifecycle status
KiDiff / KiBot diff graphical schematic & PCB diffs

Capabilities

Capability Action flag CLI entry point Backed by Gates
Verify run-verify kicad-bot-verify kicad-cli sch erc / pcb drc fail-on-erc, fail-on-drc, drc-severity
BOM check run-bom-check kicad-bot-bom KiBot + KiCost fail-on-eol, fail-on-unavailable
Diff run-diff kicad-bot-diff KiDiff / KiBot diff (non-gating, informational)
Fabrication run-fab kicad-bot-fab KiBot outputs fail-on-missing-output
Quickstart quickstart kicad-bot-quickstart auto-detect + run enabled stages n/a

Quick start

name: kicad-bot
on:
  push:
    paths: ["**.kicad_sch", "**.kicad_pcb"]
  pull_request:
    paths: ["**.kicad_sch", "**.kicad_pcb"]

jobs:
  kicad-bot:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: embedded-pro/kicad-bot@v0
        with:
          run-verify: "true"
          fail-on-drc: "true"

Enabling more capabilities is just more flags:

      - uses: embedded-pro/kicad-bot@v0
        with:
          run-verify: "true"
          run-bom-check: "true"
          run-diff: "true"
          fail-on-drc: "true"
          fail-on-eol: "true"
          distributors: "Mouser,Digi-Key"
        env:
          MOUSER_KEY: ${{ secrets.MOUSER_KEY }}
          DIGIKEY_CLIENT_ID: ${{ secrets.DIGIKEY_CLIENT_ID }}
          DIGIKEY_CLIENT_SECRET: ${{ secrets.DIGIKEY_CLIENT_SECRET }}

Path filters keep kicad-bot from running on unrelated commits. Restrict the workflow to changes that touch **.kicad_sch / **.kicad_pcb as shown above.

Outputs

Each run writes to output-dir (default kicad-bot-output/) and uploads it as a build artifact:

File Purpose
report.md Full report: ERC/DRC summary, BOM table, diff thumbnails
pr_comment.md Compact PR comment (idempotent marker)
kicad_bot_metrics.json Machine-readable summary (counts, pass/fail per gate)
erc.json / drc.json Raw kicad-cli JSON reports
bom.xlsx KiCost spreadsheet (cost/availability/lifecycle) — with run-bom-check
diff.pdf Schematic/PCB visual diff — with run-diff
fab/ Gerbers, drill, position, BOM, 3D, schematic PDF — with run-fab

Development & required checks

This repo's own CI (.github/workflows/ci.yml) runs three jobs you can mark as required status checks on main:

Job What it guards
lint ruff lint + format and mypy --strict
unit hermetic unit tests on Python 3.11–3.13
integration full kicad-bot-verify pipeline against the examples/ projects using a real kicad-cli

The integration job installs KiCad and runs tests/integration/, which verifies the clean examples/minimal project passes and the deliberately-broken examples/drc-violation project trips the DRC gate. Locally these tests skip automatically when kicad-cli is not installed, so pytest tests/unit stays fast and dependency-free.

All workflow actions are pinned to commit SHAs and kept current by Dependabot (.github/dependabot.yml).

Documentation

Scope & limitations

  • kicad-bot is a CI guardrail, not a substitute for design review or sign-off.
  • BOM availability is a snapshot of distributor data at run time, not a guarantee of stock at order time.
  • Visual diffs surface geometric/electrical changes but do not perform semantic net-level reasoning.
  • Git remains unsuitable for merging concurrent board edits; kicad-bot verifies, it does not resolve layout conflicts.

License

Apache-2.0

Metadata

Release files for kicad-bot 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kicad-bot 0.1.4
File Size Uploaded Provenance Actions
kicad_bot-0.1.4.tar.gz 44.4 kB With provenance Details for kicad_bot-0.1.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for kicad-bot 0.1.4
File Interpreter ABI Platform Actions
kicad_bot-0.1.4-py3-none-any.whl Python 3 none any Details for kicad_bot-0.1.4-py3-none-any.whl

Total release size: 67.4 kB

Release files / kicad_bot-0.1.4.tar.gz

Download URL kicad_bot-0.1.4.tar.gz
Size 44.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4d6ab9fcf14248174ca180a1f7eb55958e833f9f257aace85d11aa4cbe3ad729
BLAKE2b-256 checksum
How to use checksums
a8c68bb89001fc5f8e36d1cd843610d2cf44f59d015402e6a96765c546bad4f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Jun 21, 2026.

Transparency log

Release files / kicad_bot-0.1.4-py3-none-any.whl

Download URL kicad_bot-0.1.4-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1ca4a27419031d97d02166b7d295ff5924386e61e3ebfa67d2a6d105781fd51b
BLAKE2b-256 checksum
How to use checksums
77049d653ff57ad971b58cb22c25a2e30ba36d497a467aee997272890d2b4a2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Jun 21, 2026.

Transparency log

Security for kicad-bot 0.1.4

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.

Select from 2 files

Attestation for kicad_bot-0.1.4.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 Jun 21, 2026.

Transparency log

A 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.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page