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.7: the board model names tracks[].id, the handle edit_tracks takes
6 files changed
+11−3
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.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). Version 0.31.4: coverage reads Fusion 360 bridge 1.13.59 (public; answers the 0.31 verbs).
docs/board-model.md+3@@ -50,6 +50,9 @@ layer names. - **Poured copper that reaches nothing else of its net is `isolatedCopper`**, listed and not counted: an island a pour left behind, or a pour that touches no pad, track or via of its net. KiCad's DRC treats it the same way (a warning, not an unconnected item). A stray track or via still counts: copper that reaches nothing is a connection not made.+- **`tracks[].id` is the handle `edit_tracks` takes.** It's optional in the model, and a bridge that answers `edit_tracks`+ gives one. It can be the tool's own id or one built from the track's position (Fusion's tracks have no id), so it+ need only hold until the board changes. It never counts toward `revision`. - **`revision` changes when copper, parts or the outline change**, and only then: it is the edit verbs' guard. It must be stable for an unchanged board; independent of item order is better (KiCad's is). - **The outline as edges, arcs kept.** Measuring against a curved edge needs the arc; sample it every 2 degrees (16
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "eda-bridge-standard",- "version": "0.31.6",+ "version": "0.31.7", "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.",
schema/board.schema.json+4@@ -130,6 +130,10 @@ "net" ], "properties": {+ "id": {+ "type": "string",+ "description": "the track's handle for edit_tracks (optional): a bridge that answers edit_tracks gives one. It need only hold until the board changes, and it never counts toward revision"+ }, "start": { "$ref": "#/$defs/xy" },
verbs/coverage.json+1−1@@ -1,5 +1,5 @@ {- "standard": "0.31.6",+ "standard": "0.31.7", "reference": { "bridge": "altium", "version": "0.2.89"
verbs/standard.json+1−1@@ -1,5 +1,5 @@ {- "standard": "0.31.6",+ "standard": "0.31.7", "reference": { "bridge": "altium", "version": "0.2.89"