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.
Document general routing and diagnostic workflows in the bridge skill #4
Routine KiCad work needs reusable routing and diagnostic instructions in the KiCad Bridge skill package itself. Expand the existing shipped SKILL.md with a caller-independent workflow for path geometry, power/thermal copper planning, DRC limits, safe mutations, first-run dialogs and accurate plugin-health checks. Demo recording remains a separate optional reference.
This changes the existing package-owned entry skill, so no new installer registration is needed. The guidance explicitly distinguishes Python plugin availability from live IPC, component ratings from actual load, and successful edits from board acceptance. No runtime changes, package release or host tests are implied. Validation: strict YAML frontmatter parse and reviewed the diff against the current wiki entry skill.
Diff Skip to comments
@@ -1,306 +1,386 @@⋯ 183 unchanged lines ⋯ subsequent read or save failed. Revision checking is optimistic: avoid concurrent manual edits while committing. Connectivity state that changes mid-read is refused. -For a visible trace-by-trace demo, call route_net once per segment/via; for a-net-by-net demo, send each whole path. See [demo/routing/README.md](demo/routing/README.md).+### General routing workflow +Use this workflow for ordinary board work, repair, and review with any Adom AI+caller. Recording and demonstration playback are optional, separate tasks; no+demo script, narrator, Codex package, or particular model is required to use the+bridge verbs.++1. Resolve the requested desktop through Adom Bridge with explicit target and+ caller identity. Read runtime version, document path, current live revision,+ IPC availability and existing edits. Preserve development pins and other+ callers' work. Package skill version and desktop bridge runtime version are+ different: verify both when a capability appears missing.+2. Inspect the schematic netlist, footprint pads, existing copper and project+ rules before planning. Determine supply voltages, return paths, protection,+ switching nodes and sensitive signals. Component ratings bound capability;+ they do not establish actual load or simultaneous current. Obtain missing+ load/duty, copper thickness and manufacturer constraints before making+ current-capacity or insulation claims.+3. Choose widths, vias and clearances from those requirements. Prefer horizontal,+ vertical and 45-degree trace segments with deliberate pad escapes. Do not+ claim arbitrary-angle straight segments are curved routing; use curves only+ if the discovered editor API supports them and the resulting geometry can+ be checked. Minimize unnecessary vias and keep return paths continuous.+4. Inspect heat-producing devices, exposed pads and existing thermal vias before+ allocating copper. Confirm the electrical net of each exposed pad from the+ actual component documentation. Expand connected same-net copper where it+ improves the thermal path without compromising isolation or routing. External+ copper, inner-layer routing and thermal vias depend on the real stackup and+ assembly process; copper area alone does not establish device temperature.+5. For copper-ablation manufacturing, retain useful connected copper with pours+ where authorized. Respect required isolation, pad access, solderability and+ switching-node constraints. Do not expand every net indiscriminately, add+ floating islands by default, or interpret a tool's minimum kerf as adequate+ electrical clearance. Zone creation requires a separately discovered supported+ operation; route_net does not create pours.+6. Read routing_state, compute a path, dry-run it, and commit against that revision.+ Group a logical net path with points/paths for a useful Undo operation. Keep+ validation enabled for ordinary routing. remove_route uses explicit itemIds;+ do not assume it supports dryRun. Read back the changed copper and revision.+7. Validate the final live board, then save when requested. Record remaining+ errors, warnings and unconnected items separately, including inherited issues.+ Successful routing means the edit succeeded, not that the whole PCB passed+ electrical review or is ready to manufacture.++From runtime 0.9.341, routing validation refills disposable snapshot zones and+reports potentially capped DRC lists. Inspect zonesRefilled,+violationReportMayBeTruncated and unconnectedCountIsLowerBound. A capped count+is a lower bound, and drc_incomplete refuses an uncertifiable error comparison.+Do not disable validation to turn that refusal into a claimed success. Older+runtimes lacking these fields do not establish equivalent validation.++### First-run and diagnostic handling++Discover current verb schemas and read response hints and nested errors before+retrying. A timeout can leave an editor open or an edit committed. Inspect state+and dialogs first. Use kicad_errors, kicad_log_tail and targeted desktop_ui_tree+reads to capture the actual blocker; do not blindly press Escape or Cancel on+unknown dialogs. In particular, cancelling a setup wizard can open a second+confirmation. UIA can identify and invoke a benign control without coordinate+clicks, but KiCad may still raise itself: follow kicad-uia foreground etiquette.++KiCad 9/10 eeschema does not host the Python reverse-bridge plugin. For plugin+health, inspect kicad_bridge_status and ping a discovered pcbnew instance;+plugin_not_running for eeschema is not an installation failure. Live routing+uses the separate KiCad IPC API; a plugin ping alone does not prove IPC readiness.++Resolve stock libraries through the detected KiCad installation and configured+path overrides. Do not repair a resolution failure by moving stock libraries+into Documents. Report the requested library, resolved path, installed KiCad+version and exact response. For footprint-load failures, collect status, errors,+log_tail (errorsOnly:true), plugin_diagnose and list_footprints from the same run.++Test installation separately from first editor launch. Confirm host detection,+CLI version, actual editor readiness and required APIs. Only clear configuration+or uninstall when the user authorized it. Treat successful close with forceKilled+as forced termination, not graceful save/close. Preserve evidence and report+reproducible problems in the KiCad Bridge wiki issues, with explicit test skips.+A passing subset is not all-verbs acceptance.++For optional presentation and recordings, see [demo/routing/README.md](demo/routing/README.md).++ ## Offline copper editing (from 0.9.340) `kicad_board_pads` reads pads and existing copper from the saved file.⋯ 111 unchanged lines ⋯ - **Adom boards with a schematic and a PCB**: `adom/drone-motor-carrier`, `adom/esc-g431`, `adom/carrier-fc-rp2350a-mini`, `adom/rp2350a-ads1220` (each carries `<slug>.kicad_sch`, `<slug>.kicad_pcb`, `.step`, `.glb`). Pull the `.kicad_sch` + `.kicad_pcb`, push them to the desktop, then `kicad_open_board` / `kicad_show_2d_board` / `kicad_show_3d_board`, `kicad_lint_board`, `kicad_set_design_rules {"fab":"adom-instapcb"}`, `kicad_export_gerbers`. - **The Adom PCM libraries** (symbols, footprints and 3D for every part on the Adom line): `kicad_pcm_install {"repositoryUrl":"https://wiki.adom.inc/api/v1/pages/kicad-pcm/files/repository.json","identifier":"inc.adom.kicad.basic-parts"}` (also `inc.adom.kicad.rp2040`). KiCad registers the libraries on its next start. - Never quote a wiki page you have not fetched: `aravk/in-s42ata`, an older example, no longer exists.+
Comments
Log in to comment.
No comments yet.