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
regenerate after kicad-lane (reference/kicad-1.0.71.json, insiders: library_views, set_layer_visibility): KiCad 202 of 236
4 files changed
+17−11
README.md+2−2@@ -62,9 +62,9 @@ verb by verb: [docs/coverage.md](docs/coverage.md). | **core** | 93 | 93 | 89 | 79 | | **native** | 46 | 46 | 43 | 29 | | **checks** | 37 | 33 | 34 | 13 |-| **app** | 60 | 60 | 34 | 37 |+| **app** | 60 | 60 | 36 | 37 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 232 | 200 | 158 |+| standard (all but platform) | 236 | 232 | 202 | 158 | <!-- coverage:end --> The **checks** tier is where the other bridges are furthest behind, and it is the cheapest to close: those verbs are
docs/coverage.md+5−5@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.78 (the reference), KiCad bridge 1.0.70, Fusion 360 bridge 1.13.2. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.78 (the reference), KiCad bridge 1.0.71, Fusion 360 bridge 1.13.2. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*. `exact` is the same job under the same or an equivalent name; `partial` does part of it or does it differently (`verbs/coverage.json` names what in `note`); `unsupported` answers `not_supported` for the whole job and is not counted; blank is missing. Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand. @@ -9,9 +9,9 @@ Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand | **core** | 93 | 93 | 89 | 79 | | **native** | 46 | 46 | 43 | 29 | | **checks** | 37 | 33 | 34 | 13 |-| **app** | 60 | 60 | 34 | 37 |+| **app** | 60 | 60 | 36 | 37 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 232 | 200 | 158 |+| standard (all but platform) | 236 | 232 | 202 | 158 | ## core @@ -243,7 +243,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `install_receipt` | The last bundle install's full receipt (proof frame included), for a client whose install call outlived ab's budget. | `altium_install_receipt` | | | | `instances` | Every running Altium (Designer + Designer Develop can run together). | `altium_instances` | `kicad_state` (partial) | | | `launch` | Start Altium (the newest numbered install, or the one install names) and wait for its main window, then hand the user's own window back. Answers... | `altium_launch` | `kicad_launch` | `fusion_start` |-| `library_views` *proposed* | Pictures of library parts for review, each as an image file: the schematic symbol, the footprint (pads and layers), the 3D body seated on the footprint, and... | `altium_library_views` | | `fusion_library_views` |+| `library_views` *proposed* | Pictures of library parts for review, each as an image file: the schematic symbol, the footprint (pads and layers), the 3D body seated on the footprint, and... | `altium_library_views` | `kicad_library_views` | `fusion_library_views` | | `license` | Drive the License Management page (UIA first - no cursor, no foreground). | `altium_license` | | | | `license_status` | Plain-language answer to 'what Altium licence am I on?': the state from the window title plus a capture of the License Management page. | `altium_license_status` | | `fusion_license_status` | | `list_commands` | Search Altium's process-launcher catalog (about 1,100 Server:Command entries parsed from the install's System/*.rcs files) by text and/or server. | `altium_list_commands` | `kicad_menu_items` (partial) | `fusion_list_commands` |@@ -259,7 +259,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `select_net` | Select one net as a whole on the current board (tracks, arcs, vias, pads, pours) and nothing else, optionally framing it; no net clears the selection. | `altium_select_net` | `kicad_select_clear` (partial) | `fusion_select_net` | | `selection` | What the user has selected in the current board (components with position mm, rotation, side, footprint, size) or sheet (components with location mils and... | `altium_selection` | `kicad_get_selection / kicad_select_items` | | | `selftest_script_error` | Regression test for the script-error safety net (from 0.2.23): makes the agent raise a REAL DelphiScript runtime error on purpose and checks that the bridge... | `altium_selftest_script_error` | | |-| `set_layer_visibility` | Show or hide one layer of the current board (by layer id) and refresh the view and the layer tabs. | `altium_set_layer_visibility` | | `fusion_set_layer_visibility` |+| `set_layer_visibility` | Show or hide one layer of the current board (by layer id) and refresh the view and the layer tabs. | `altium_set_layer_visibility` | `kicad_set_layer_visibility` | `fusion_set_layer_visibility` | | `setup_trial` | Onboarding state machine: from nothing to a working trial. Each call reports the stage it found (install / launch / signin / done) and the ONE next action;... | `altium_setup_trial` | | | | `show_2d_board` | Open a .PcbDoc, switch to 2D, zoom to fit, and return a proof frame. With no filePath it opens the bundled Bluetooth Sentinel board. | `altium_show_2d_board` | `kicad_show_2d_board` | `fusion_show_2d_board` | | `show_3d_board` | Open a .PcbDoc, switch to 3D, zoom to fit, and return a proof frame. With no filePath it opens the bundled Bluetooth Sentinel board. | `altium_show_3d_board` | `kicad_show_3d_board` | `fusion_show_3d_board` |
verbs/coverage.json+9−3@@ -6,7 +6,7 @@ }, "proposed": 54, "compared": {- "kicad": "1.0.70",+ "kicad": "1.0.71", "fusion360": "1.13.2" }, "tiers": {@@ -3225,7 +3225,10 @@ "verb": "altium_library_views", "match": "exact" },- "kicad": null,+ "kicad": {+ "verb": "kicad_library_views",+ "match": "exact"+ }, "fusion360": { "verb": "fusion_library_views", "match": "exact"@@ -3458,7 +3461,10 @@ "verb": "altium_set_layer_visibility", "match": "exact" },- "kicad": null,+ "kicad": {+ "verb": "kicad_set_layer_visibility",+ "match": "exact"+ }, "fusion360": { "verb": "fusion_set_layer_visibility", "match": "exact"
verbs/standard.json+1−1@@ -6,7 +6,7 @@ }, "proposed": 54, "compared": {- "kicad": "1.0.70",+ "kicad": "1.0.71", "fusion360": "1.13.2" }, "tiers": {