app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Drive your own KiCad from an AI, in the background: open every editor, read the whole board as data (the EDA Bridge Standard board model), stack-up, part heights, netlists, place, route, pour, DRC and exports.
← Commit history
1.0.82: 1.0.82: five more of the standard's app-tier verbs, and KiCad's own Python from the bridge.
- **kicad_eval:** a Python snippet run with KiCad's bundled Python and its pcbnew module, headless.
- With filePath the board is loaded as `board`, and the snippet's `result` comes back as JSON.
- Checked: 149 footprints and 83 nets read in 0.4 s; a failing snippet returns its traceback.
- **kicad_run_script:** a .py of your own run the same way, with arguments; stdout, stderr and the exit code come back.
- **kicad_foreground:** brings a KiCad window to the person. It needs a reason written for them, captions it first, and refuses without one.
- **kicad_dialog_log:** every dialog the bridge's sweeps dismissed since it started, newest last.
- **kicad_license_status:** KiCad's licence in plain words: GPL-3.0-or-later, no seat, sign-in or trial.
1 file changed
+8−3
README.md+8−3@@ -257,7 +257,7 @@ viewer. This is how every 3D shot above exists. <!-- verbs:start (tools/readme_verbs.py writes this) --> -Every verb of this build (291, `kicad_describe` is the live catalog with inputs, hints and pitfalls). A name marked *standard* is the EDA Bridge Standard's name for the verb after the arrow.+Every verb of this build (296, `kicad_describe` is the live catalog with inputs, hints and pitfalls). A name marked *standard* is the EDA Bridge Standard's name for the verb after the arrow. **Board model and reads (EDA Bridge Standard)** (12) @@ -427,7 +427,7 @@ Every verb of this build (291, `kicad_describe` is the live catalog with inputs, | `kicad_set_design_rules` | Stage a fab's .kicad_dru next to a board and run DRC with it. | | `kicad_zone_state` | Read every zone on the live board with KiCad's filled copper area per layer and the coverage. | -**Checks, exports and manufacturing** (26)+**Checks, exports and manufacturing** (27) | Verb | What it does | |---|---|@@ -456,6 +456,7 @@ Every verb of this build (291, `kicad_describe` is the live catalog with inputs, | `kicad_render_board` | Render a 3D image (PNG/JPG) of a board from a side via kicad-cli pcb render, headless, no KiCad window. | | `kicad_run_drc` | Run kicad-cli pcb drc on a board and return the parsed JSON report (violations, unconnected, counts by severity). | | `kicad_run_erc` | Run kicad-cli sch erc on a schematic and return the parsed JSON report. |+| `kicad_run_script` | Run a Python script of your own with KiCad's bundled Python, where `import pcbnew` works, headless; its output comes back. | | `kicad_validate_for_fab` | Manufacturability pre-flight: closed outline, layer count, min track, space, drill and ring vs a fab profile, copper near the edge, silkscreen on pads, vias in pads, acid traps, footprints without 3D models, fiducials (assembly), plus KiCad DRC errors and unconnected items. Pass or fail with findings. | **Projects** (4)@@ -467,7 +468,7 @@ Every verb of this build (291, `kicad_describe` is the live catalog with inputs, | `kicad_project_rename` | Rename a project: the .kicad_pro, root .kicad_sch, .kicad_pcb, .kicad_prl (and .kicad_dru, backups folder), with the references inside updated (project file entries, every schematic's instance headers, the board's sheet references and title). Refused while KiCad has the project open. | | `kicad_project_snapshot` | Timestamped copy of the project's files into <project>/snapshots/<stamp>[-label]/, plus schematic and board PDFs made with kicad-cli. | -**Windows, editors, install and the bridge** (118)+**Windows, editors, install and the bridge** (122) | Verb | What it does | |---|---|@@ -501,16 +502,19 @@ Every verb of this build (291, `kicad_describe` is the live catalog with inputs, | `kicad_demo` | Six-beat KiCad showcase tour: staged, or a background job with structured progress (percent/ETA), an ab demo-panel remote, captions, narration, per-beat verification and a kicad_state final payload. | | `kicad_describe` | List every verb with input, example, hint, related verbs and pitfalls. | | `kicad_diagnostics` | Environment the bridge runs in: user, paths, env vars that matter, KiCad config dir. |+| `kicad_dialog_log` | What the bridge's dialog sweeps pressed since it started, newest last: each KiCad dialog it dismissed (benign notices, error boxes after a verb), with its title, body, the button and when. | | `kicad_diff_pairs` | Differential pairs on the board: list the pairs KiCad's router recognises from net names (+/-, P/N, _P/_N), with the net class that sets their width and gap; define one (a net class holding both nets, with diffPairWidth and diffPairGap) or remove that class. | | `kicad_dismiss_dialogs` | Programmatically expire KiCad dialogs (auto-clears the benign OpenGL/software-render notice; {all:true} clears every dialog). | | `kicad_doc_params` | Read or set a sheet's document parameters: KiCad's title block (Title, Revision, Date, Company, Comment1 to Comment9). | | `kicad_edit_parts` | *standard* → `kicad_edit_footprint` | | `kicad_enable_software_opengl` | LAST-RESORT fallback: deploy Mesa llvmpipe software OpenGL into KiCad's bin so it renders on a GPU-less host (Hyper-V/RDP/headless). SLOW (CPU). Never suggest proactively. |+| `kicad_eval` | Run a Python snippet with KiCad's pcbnew module, headless: with filePath the board is loaded as `board`; set `result` to return a value as JSON. | | `kicad_extract_netlist` | Extract the full netlist from a schematic: every component and every net with its nodes (read-only, via kicad-cli). | | `kicad_find_connections` | Everything one component connects to, pin by pin, with peer pins per net (read-only). | | `kicad_find_space` | Free spots on the board for a part near another: clear of every other part's courtyard on that side, of that side's tracks and vias, and inside the outline, nearest first. check:true lists parts that already overlap or leave the outline. | | `kicad_fix_keyboard` | Reset stuck modifier keys on a KiCad window. | | `kicad_footprint_from_land_pattern` | Build a complete footprint from the land pattern a datasheet prints: pads numbered the standard way (chip, dual SOIC/TSSOP/DFN, SOT, quad QFP/QFN, BGA), an exposed pad, the courtyard, silkscreen kept clear of the copper with a pin-1 dot, a fab outline with a pin-1 chamfer, and a 3D body box when the height is given. |+| `kicad_foreground` | Bring a KiCad window in front of the user: the one sanctioned exception to the never-foreground rule. A reason written for the person is required; the bridge captions it first. | | `kicad_generate_body` | Make a part's 3D body from its package family and datasheet dimensions (chip, SOIC, QFN, QFP, BGA, SOT-23, DFN, MELF, electrolytic can, crystal, pin header and others), to IPC-7351 proportions, optionally with a marking on its top; written as a STEP file and, given a footprint, attached to it. | | `kicad_get_settings` | Read the bridge's user-visible settings (overlay badges, ...). | | `kicad_height_check` | Will it fit the enclosure? Each part's height from its 3D model (top and bottom), the parts over a height limit board-wide or under a lid feature in a region, and bodies that collide or come closer than a gap. |@@ -521,6 +525,7 @@ Every verb of this build (291, `kicad_describe` is the live catalog with inputs, | `kicad_layers` | The board's whole layer set: KiCad's id, name, kind (signal, power, mixed, user) and the user's name for each, and whether the open PCB editor shows it. | | `kicad_length_tune` | Lengthen a routed net to a target length, or to match another net (a pair's skew, a DDR byte lane): a serpentine in its longest straight track that has room beside it, the bumps sized to add exactly the length missing, every bump clear of other copper and inside the board. Live as one Undo step after a DRC check, else in the closed file. | | `kicad_library_views` | Pictures of library parts for review, each as an image file: the schematic symbol, the footprint (pads with their numbers), the 3D body seated on the footprint, and the device view (every symbol pin mapped to a pad). |+| `kicad_license_status` | What licence KiCad is on, in plain words: KiCad is free, open-source software (GPL-3.0-or-later), so there is no seat, sign-in or trial; with the installed version. | | `kicad_list_installed_libraries` | Every symbol and footprint library KiCad loads: the global tables and, with projectPath, the project's own, with nickname, path and whether the path exists. | | `kicad_list_versions` | Every KiCad install found (registry and standard folders) with bin dir, kicad-cli path and version. | | `kicad_log_tail` | New KiCad log output since a byte offset: what KiCad said about ITSELF (read-only). |