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
standard 0.23.8: coverage reads KiCad 1.0.88 (214)
5 files changed
+24−16
README.md+4−3@@ -61,11 +61,11 @@ verb by verb: [docs/coverage.md](docs/coverage.md). | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | **core** | 93 | 93 | 90 | 89 |-| **native** | 47 | 47 | 43 | 40 |+| **native** | 47 | 47 | 44 | 40 | | **checks** | 37 | 37 | 35 | 37 |-| **app** | 62 | 62 | 44 | 53 |+| **app** | 62 | 62 | 45 | 53 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 239 | 239 | 212 | 219 |+| standard (all but platform) | 239 | 239 | 214 | 219 | <!-- coverage:end --> The **checks** tier is where the other bridges are furthest behind, and it is the cheapest to close: those verbs are@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue ## Status +Version 0.23.8: coverage reads KiCad bridge 1.0.88 (214 of 239: variants, and sch_zoom partial). Version 0.23.7: coverage reads Fusion 360 bridge 1.13.23 (219 of 239: diagnostics, instances, progress, foreground; panel and selection unsupported). Version 0.23.6: `variants` moves from platform to native (Altium, Fusion and KiCad 10 all have assembly variants), so the standard is 239 verbs; coverage reads Fusion 360 bridge 1.13.22 (variants and silkscreen_prep, partial). Version 0.23.5: coverage reads Fusion 360 bridge 1.13.21 (213 of 238: replicate_layout, symbol_prims, set_visibility, and partial place_on_pcb, place_on_sch, pcb_report).
docs/coverage.md+6−6@@ -1,17 +1,17 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.83 (the reference), KiCad bridge 1.0.87, Fusion 360 bridge 1.13.23. 56 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.83 (the reference), KiCad bridge 1.0.88, Fusion 360 bridge 1.13.23. 56 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. | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | **core** | 93 | 93 | 90 | 89 |-| **native** | 47 | 47 | 43 | 40 |+| **native** | 47 | 47 | 44 | 40 | | **checks** | 37 | 37 | 35 | 37 |-| **app** | 62 | 62 | 44 | 53 |+| **app** | 62 | 62 | 45 | 53 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 239 | 239 | 212 | 219 |+| standard (all but platform) | 239 | 239 | 214 | 219 | ## core @@ -165,7 +165,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `teardrops` | Add (or remove) teardrops with Altium's own Tools > Teardrops: on vias and through-hole pads, SMD pads, track width changes and T-junctions, for the whole... | `altium_teardrops` | `kicad_teardrops` (partial) | `fusion_teardrops` (partial) | | `uninstall_library` | Remove libraries from Altium's Installed Libraries: the inverse of install_library / install_library_bundle. Library files are never touched. | `altium_uninstall_library` | `kicad_uninstall_library` | | | `update_pcb` | Design > Update PCB Document from the schematic (the engineering change order): parts added, removed or renamed, nets and footprints updated on the board.... | `altium_update_pcb` | `kicad_update_pcb` (partial) | `fusion_cross_check` (partial) |-| `variants` | Assembly variants of a project (which parts are fitted on which build): list them, make or change one with not-fitted parts (or put parts back), or remove... | `altium_variants` | | `fusion_variants` (partial) |+| `variants` | Assembly variants of a project (which parts are fitted on which build): list them, make or change one with not-fitted parts (or put parts back), or remove... | `altium_variants` | `kicad_variants` | `fusion_variants` (partial) | ## checks @@ -257,7 +257,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `run_command` | Run an Altium process (Server:Command) through the agent, on the CURRENT document or on filePath opened first. | `altium_run_command` | `kicad_send_key` (partial) | `fusion_run_command` | | `run_script` | One shot: run a procedure of YOUR OWN .PrjScr through Altium's -R command line. Only for when the agent is NOT resident. | `altium_run_script` | `kicad_run_script` | `fusion_run_script` | | `save` | Save the focused document, or the document at filePath (opened first if need be, saved by its path, never whatever happens to have focus). | `altium_save` | `kicad_save` (partial) | `fusion_save` |-| `sch_zoom` | Find parts on a sheet: select them (everything else deselected), frame the view on them and return a proof frame. The schematic half of cross-probing (the... | `altium_sch_zoom` | | `fusion_sch_zoom` |+| `sch_zoom` | Find parts on a sheet: select them (everything else deselected), frame the view on them and return a proof frame. The schematic half of cross-probing (the... | `altium_sch_zoom` | `kicad_sch_zoom` (partial) | `fusion_sch_zoom` | | `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_net` | `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_selection` (partial) | unsupported | | `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` | | unsupported |
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "eda-bridge-standard",- "version": "0.23.7",+ "version": "0.23.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+11−4@@ -1,12 +1,12 @@ {- "standard": "0.23.7",+ "standard": "0.23.8", "reference": { "bridge": "altium", "version": "0.2.83" }, "proposed": 56, "compared": {- "kicad": "1.0.87",+ "kicad": "1.0.88", "fusion360": "1.13.23" }, "tiers": {@@ -2407,7 +2407,10 @@ "verb": "altium_variants", "match": "exact" },- "kicad": null,+ "kicad": {+ "verb": "kicad_variants",+ "match": "exact"+ }, "fusion360": { "verb": "fusion_variants", "match": "partial",@@ -3720,7 +3723,11 @@ "verb": "altium_sch_zoom", "match": "exact" },- "kicad": null,+ "kicad": {+ "verb": "kicad_sch_zoom",+ "match": "partial",+ "note": "finds the parts and returns KiCad's plot of the saved sheet cropped to them, each outlined; KiCad 10's Schematic Editor has no API, so its selection and view are not changed"+ }, "fusion360": { "verb": "fusion_sch_zoom", "match": "exact"
verbs/standard.json+2−2@@ -1,12 +1,12 @@ {- "standard": "0.23.7",+ "standard": "0.23.8", "reference": { "bridge": "altium", "version": "0.2.83" }, "proposed": 56, "compared": {- "kicad": "1.0.87",+ "kicad": "1.0.88", "fusion360": "1.13.23" }, "tiers": {