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.69: 1.0.69: length tuning, mouse-bite panels, silkscreen prep, component classes, new boards from footprints, and schematic sheets read from the file.
- **kicad_panelize separation:"tabs":** the copies stand gapMm apart (2 mm default) inside a frame with rails all round.
- Each board's edges are broken at its tabs on Edge.Cuts (the rout path), and every tab carries five 0.6 mm mouse-bite holes on the board side.
- The tab layout and JLCPCB's panel rules (for tabs and for V-score) are the Altium bridge's, and the reply now carries them as jlcpcb.rules, with boardsAt and nearestCopperToEdge.
- **kicad_build_board:** a new board from a parts list and a netlist: the outline (a rectangle with rounded corners, or a polygon), every footprint from its library by its own origin, pad nets set, read back pin by pin.
- **kicad_test_board:** one footprint or a ';' list from a library on a new board, or added to an existing one.
- **kicad_read_sheet_file:** a .kicad_sch's parts read from the file (designator, symbol, value, uuid, unit, position, fields and pins), one entry per placed unit.
- **kicad_length_tune:** lengthens a net to targetMm, or to matchTo's length (pair skew, a byte lane). It draws a serpentine of square bumps in its longest straight track with room on one side, sized to add exactly the missing length, clear of other copper and the edge. Live as one Undo step, or in the closed file, after KiCad's DRC shows no new error.
- **kicad_silkscreen_prep:** on a closed board, in one call:
- turns on KiCad's own clipping: the Gerbers subtract the solder mask from the silkscreen;
- deletes silkscreen lying outside the board;
- moves designators that sit on pads;
- reports KiCad's silk DRC counts before and after.
- **kicad_component_classes:** lists, makes or removes KiCad 9+ component classes. An optional room is a rule area plus a custom DRC rule that flags any member outside it. Both were checked against KiCad 10.0.7's DRC.
1 file changed
+9−3
README.md+9−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 (276, `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 (282, `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) @@ -466,7 +466,7 @@ Every verb of this build (276, `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** (104)+**Windows, editors, install and the bridge** (110) | Verb | What it does | |---|---|@@ -481,6 +481,7 @@ Every verb of this build (276, `kicad_describe` is the live catalog with inputs, | `kicad_bom` | The project's bill of materials: every schematic part (fields, DNP, exclude from BOM) merged with the board (footprint, position, side), one line per manufacturer part number, checked for what an order needs, and written as bom.csv, bom-jlcpcb.csv + cpl-jlcpcb.csv, bom-mouser.csv and bom-digikey.csv (+ bom.json). | | `kicad_bridge_call` | Retired: there is no in-KiCad plugin to call. Use the verb that does the job directly. | | `kicad_bridge_status` | Retired: the in-KiCad Python plugin (reverse bridge) is not part of the native bridge. Reports that, plus what replaced each of its jobs. |+| `kicad_build_board` | Build a NEW board from a parts list and a netlist: the outline (a rectangle with rounded corners allowed, or a polygon), every footprint from its library placed by its own origin, pad nets assigned, saved; then read back pin by pin. | | `kicad_check_for_updates` | Read-only: installed KiCad vs latest stable. | | `kicad_check_orientation` | Advisory: two-pad parts whose rotation could be better. Each part is scored at 0, 90, 180 and 270 degrees by airline length (a net's spanning tree, or for a plane-like net the distance to its nearest pad); parts whose best turn saves minImprovementMm are listed. Nothing is moved. | | `kicad_click` | Click at coordinates inside a KiCad window. |@@ -490,6 +491,7 @@ Every verb of this build (276, `kicad_describe` is the live catalog with inputs, | `kicad_close_footprint_editor` | Close the Footprint Editor window. | | `kicad_close_symbol_editor` | Close the Symbol Editor window. | | `kicad_compile` | Check a project's schematic the way a compile does: KiCad's ERC on the root sheet (hierarchy followed) and the netlist, with the messages counted by class and the net and part counts. |+| `kicad_component_classes` | List, make or remove component classes on the board (KiCad 9+), each optionally with a room: a rule area that keeps the class's parts together (fitted around their pads or a rectangle), enforced by a custom DRC rule. The classes scope rules (A.hasComponentClass('<name>')) and group a channel for kicad_replicate_layout. | | `kicad_copper_balance` | Copper per layer as a share of the board, poured copper included, and how evenly mirrored layers match (F.Cu against B.Cu, In1 against the last inner layer): a pair that differs by more than 20 points can bow or twist through reflow. | | `kicad_copy_footprint` | Duplicate a footprint inside a .pretty library under a new name (every pad, graphic, text and 3D model copied). | | `kicad_create_part_project` | *standard* → `kicad_make_part_project` |@@ -514,6 +516,7 @@ Every verb of this build (276, `kicad_describe` is the live catalog with inputs, | `kicad_jlcpcb_order` | A JLCPCB order in one call: the board checked against JLCPCB's fab limits, the Gerbers and drill zipped the way JLCPCB's order page takes them, the JLCPCB BOM and pick-and-place (CPL), the assembly-tier check and the order-form values, in one folder with every issue in one list. | | `kicad_launch` | Cold-start KiCad (project manager) when nothing is running. | | `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_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). |@@ -525,7 +528,7 @@ Every verb of this build (276, `kicad_describe` is the live catalog with inputs, | `kicad_open_footprint_editor` | Open the Footprint Editor (optionally at a footprint). | | `kicad_open_schematic` | Open a .kicad_sch in the schematic editor (eeschema). | | `kicad_open_symbol_editor` | Open the Symbol Editor (optionally at a symbol). |-| `kicad_panelize` | Step a rectangular board into a manufacturing panel on V-score: rows x cols copies abutting, each copy's nets renamed B<n>-<net>, one panel outline with rails above and below, V-cut lines on Cmts.User along every seam, three tooling holes and three fiducials on the rails; written as a new board and checked with KiCad's DRC. |+| `kicad_panelize` | Step a rectangular board into a manufacturing panel: rows x cols copies, each copy's nets renamed B<n>-<net>, rails, three tooling holes and three fiducials; separated by V-score (copies abutting, V-cut lines on Cmts.User) or mouse-bite tabs (copies a gap apart, the rout path on Edge.Cuts broken at the tabs, five 0.6 mm holes a tab), with JLCPCB's panel rules checked; written as a new board and checked with KiCad's DRC. | | `kicad_part_parameters` | The parameter (field) names a project's placed parts carry, with how many parts carry each; or, with name, that parameter's value on every part. Read only. | | `kicad_pin_pad_check` | Do the footprints fit their symbols? Part by part, the symbol's pin numbers (every pin, from the schematic's netlist) against the footprint's pad numbers on the board: pins with no pad, pads with no pin, and parts only on the sheets or only on the board. | | `kicad_place_footprint` | Deterministically place a footprint into a board preview. |@@ -534,6 +537,7 @@ Every verb of this build (276, `kicad_describe` is the live catalog with inputs, | `kicad_prewarm` | Get this machine ready for a fast first KiCad call: detect KiCad, seed its first-run config, mark its setup wizard done, repair its taskbar shortcuts. Idempotent. | | `kicad_progress` | What this bridge is doing RIGHT NOW: one progress block per in-flight phase for THIS caller (stepLabel, percent, etaSec, confidence, blockedBy, stepShot), plus the machine's timing history. | | `kicad_read_footprint` | *standard* → `kicad_fp_info` |+| `kicad_read_sheet_file` | Read a schematic sheet straight from its .kicad_sch file, with no KiCad running: every placed part unit with its designator, library symbol, value, description, uuid, unit and unit count, position, rotation, flags, and optionally its fields and pins. | | `kicad_readiness` | Is KiCad installed and usable here; if not, the three alternatives (service-kicad, kicad-cli in your container, another box). | | `kicad_refresh_board_views` | Refresh the exact PCB editor and its already-open linked 3D viewer without focus or mouse. | | `kicad_remove_footprint` | Delete one footprint from a .pretty library (a library file, not a part on the board: that is kicad_remove_parts). |@@ -561,11 +565,13 @@ Every verb of this build (276, `kicad_describe` is the live catalog with inputs, | `kicad_show_symbol` | Show a schematic symbol in the Symbol Editor (design/library surface). | | `kicad_silk_designators` | Place every reference designator the way assembly houses want: one size, upright, beside its own part, clear of every pad (JLCPCB: 0.15 mm), every other part's body and the other designators, inside the board, then read back from KiCad. Parts with no clear spot are reported, not forced onto pads. | | `kicad_silk_state` | The silkscreen as it stands: every part's body box, its designator and value as placed (text, position, size, rotation, shown), and the free texts and graphics on both silkscreen layers. |+| `kicad_silkscreen_prep` | Get the silkscreen off the copper for fab: the Gerbers set to subtract the solder mask from the silkscreen (KiCad's own clipping), silkscreen lying outside the board deleted, designators that sit on pads moved beside their parts, and KiCad's silkscreen DRC findings counted before and after. | | `kicad_state` | KiCad's full state of the union: every owned window as inline base64 PNG + logical state. | | `kicad_status` | Bridge health, KiCad version, install location and uptime. | | `kicad_symbol_prims` | A library symbol's drawing: primitives counted by kind, the body rectangle, the polylines' bounding box, units and body styles, the footprint link and filters. Read only. | | `kicad_taskbar_repair` | Fix the white taskbar icon on standalone KiCad editors by writing KiCad's own AUMID onto its Start Menu shortcuts. | | `kicad_teardrops` | Add (or remove) teardrops with KiCad's own Edit > Edit Teardrops on the board open in the PCB editor: on vias, PTH pads and SMD pads, optionally track to track, for the whole board or the selection; teardrops counted before and after. |+| `kicad_test_board` | Place one footprint, or a ';' list, from a library on ONE board: a NEW board (wMm x hMm outline) when pcbPath does not exist, APPENDED right of the parts already there when it does; optionally pad nets on the last part. | | `kicad_thermal_vias` | A thermal via grid in a part's exposed pad (the ground or thermal pad under a QFN, DFN, PowerPAD or regulator): centred, inset from the pad's edge, on the pad's net, sized by the project's Default net class. Live as one Undo step after a DRC preflight, else written into the closed file. | | `kicad_trace_net` | Every pin on one named net (read-only). | | `kicad_uninstall` | Remove everything this bridge created: plugin payload, Adom symbol/footprint/3D libraries and their lib-table rows, Mesa fallback DLLs, discovery files, demo and staging projects. Never KiCad itself, never user projects. |