skill
EDA Bridge Standard: one way for an AI to drive every PCB tool
Public Made by Adomby adom
The standard every Adom EDA bridge follows so one AI can drive Altium, KiCad, Fusion 360 and any future PCB tool the same way: shared verb names in tiers, the board model JSON, reply and refusal conventions, and a coverage table of each bridge against the Altium reference.
← Commit history
0.31.8: KiCad's cancel_run is exact
5 files changed
+6−6
README.md+1@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue ## Status +Version 0.31.8: KiCad's cancel_run is exact (a real Freerouting stop proven on 1.0.100). Version 0.31.7: the board model names tracks[].id, the handle edit_tracks takes. Version 0.31.6: coverage reads KiCad bridge 1.0.100 (place_parts, edit_tracks, extensions, preferences, select_items, cancel_run; physical_properties refused with the reason). Version 0.31.5: coverage reads KiCad bridge 1.0.99 (twelve verbs answered under their own names).
docs/coverage.md+1−1@@ -239,7 +239,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `agent_status` | Is the agent loop alive and responsive, in which workspace, and is any loop resident anywhere? Read-only; never starts the agent. | `altium_agent_status` | unsupported | `fusion_addin_status` (partial) | | `agent_stop` | Stop the selected instance's resident agent loop (drops a stop file and waits up to 12 s for the heartbeat to go stale). | `altium_agent_stop` | unsupported | unsupported | | `animate_view` | Camera/zoom choreography on the current document - native Altium camera commands, animated by Altium itself. | `altium_animate_view` | `kicad_animate_view` | `fusion_view` (partial) |-| `cancel_run` *proposed* | Stop the bridge's own long job, between steps, keeping what is done. With nothing to stop it answers cancelRequested:false and a reason. It never claims to... | | `kicad_cancel_run` (partial) | `fusion_cancel_run` (partial) |+| `cancel_run` *proposed* | Stop the bridge's own long job, between steps, keeping what is done. With nothing to stop it answers cancelRequested:false and a reason. It never claims to... | | `kicad_cancel_run` | `fusion_cancel_run` (partial) | | `check_dialogs` | List every Altium dialog currently open, classified, each with a screenshot (the only way to READ one: Altium paints its dialog text). | `altium_check_dialogs` | `kicad_check_dialogs` | `fusion_check_dialogs` | | `close` | Polite close (releases the licence seat). Frees a script engine parked on a breakpoint first (Altium refuses to close over one). discardChanges:true answers... | `altium_close` | `kicad_close` | `fusion_stop` | | `close_all_documents` *proposed* | Close every open document without a save dialog. Unsaved work is never lost by default: a document with unsaved changes stays open and is listed, unless... | `altium_close_all_documents` | `kicad_close_all_documents` | `fusion_close_all_documents` |
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "eda-bridge-standard",- "version": "0.31.7",+ "version": "0.31.8", "type": "skill", "title": "EDA Bridge Standard: one way for an AI to drive every PCB tool", "description": "The standard every Adom EDA bridge follows so one AI can drive Altium, KiCad, Fusion 360 and any future PCB tool the same way: shared verb names in tiers, the board model JSON, reply and refusal conventions, and a coverage table of each bridge against the Altium reference.",
verbs/coverage.json+2−3@@ -1,5 +1,5 @@ {- "standard": "0.31.7",+ "standard": "0.31.8", "reference": { "bridge": "altium", "version": "0.2.89"@@ -3475,8 +3475,7 @@ "altium": null, "kicad": { "verb": "kicad_cancel_run",- "match": "partial",- "note": "stops kicad_autoroute's Freerouting job, the only long job that can stop; a real stop isn't tested yet, because Freerouting isn't on the test laptop"+ "match": "exact" }, "fusion360": { "verb": "fusion_cancel_run",
verbs/standard.json+1−1@@ -1,5 +1,5 @@ {- "standard": "0.31.7",+ "standard": "0.31.8", "reference": { "bridge": "altium", "version": "0.2.89"