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.30.3: coverage reads Fusion 1.13.38
5 files changed
+13−13
README.md+1@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue ## Status +Version 0.30.3: coverage reads Fusion 360 bridge 1.13.38 (public; export_manufacturing and pcb_report exact). Version 0.30.2: coverage reads KiCad bridge 1.0.94 (public): export_3d, import_design, edit_pours, tool_update, and the schematic verbs in the standard's own arguments. Version 0.30.1: coverage reads Fusion 360 bridge 1.13.37 (engine 0.24.0: bom from the engine; render_board and render_board_layers exact). Version 0.30.0: engine 0.24.0 answers `bom` (grouped by part number, a variant applied, order checks, the JLCPCB, Mouser and DigiKey files as text; from the Altium bridge) and `cross_check` (the sheets' designators against the board's), so every bridge can answer them exactly from the parts it already reads.
docs/coverage.md+3−3@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.87 (the reference), KiCad bridge 1.0.94, Fusion 360 bridge 1.13.37. 67 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.87 (the reference), KiCad bridge 1.0.94, Fusion 360 bridge 1.13.38. 67 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. @@ -140,7 +140,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `export_ipc2581` *proposed* | Export the board as IPC-2581: one XML file with copper, drill, stack-up, netlist and BOM, through the tool's own exporter. | `altium_export_ipc2581` | `kicad_export_ipc2581` | `fusion_export_ipc2581` (partial) | | `export_ipc356` *proposed* | Export the IPC-D-356 netlist of the board, for bare-board electrical test (flying probe or bed of nails). | `altium_export_ipc356` | `kicad_export_ipc356` | `fusion_export_ipc356` | | `export_library_part` *proposed* | Export one library part into its own small library files: a symbol library with only its symbol, a footprint library with only its footprint, and its 3D... | `altium_export_library_part` | `kicad_export_library_part` | `fusion_export_library_part` (partial) |-| `export_manufacturing` | A project's manufacturing set in one call: Gerbers, NC drill, pick and place (CSV, mm) and the BOM, from an OutJob the bridge writes beside the project... | `altium_export_manufacturing` | `kicad_export_manufacturing` | `fusion_export_gerbers / fusion_export_cpl / fusion_export_bom` (partial) |+| `export_manufacturing` | A project's manufacturing set in one call: Gerbers, NC drill, pick and place (CSV, mm) and the BOM, from an OutJob the bridge writes beside the project... | `altium_export_manufacturing` | `kicad_export_manufacturing` | `fusion_export_manufacturing` | | `export_odb` *proposed* | Export the board as ODB++ (copper, drill, stack-up, netlist and parts in one archive) through the tool's own exporter. | `altium_export_odb` | `kicad_export_odb` | `fusion_export_odb` | | `export_pdf` | Every sheet of a project as one PDF, plus on request the board's composite print, Altium's assembly drawings (top and bottom, designators on the parts) and... | `altium_export_pdf` | `kicad_export_pdf` | `fusion_export_pdf` (partial) | | `export_pos` *proposed* | Export the pick-and-place (component position, CPL) file of a board, optionally in a fab's assembly format (JLCPCB's columns). | `altium_export_pos` | `kicad_export_pos` | `fusion_export_pos` |@@ -153,7 +153,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `net_classes` | Net classes on the current board: list them with their nets, or make one (replacing a class of that name) with an optional width and clearance rule scoped... | `altium_net_classes` | `kicad_net_classes` | `fusion_net_classes` | | `netlist` | The compiled netlist of a project: every net with its pins (Designator.Pin) across every sheet, the hierarchy resolved; or one net; or compare with the nets... | `altium_netlist` | `kicad_netlist` | `fusion_netlist` | | `panelize` | Step and repeat a board into a manufacturing panel: a new .PcbDoc holding Altium's own embedded board array of the board (rows x cols), with rails, the... | `altium_panelize` | `kicad_panelize` (partial) | `fusion_panelize` |-| `pcb_report` | Numbers instead of pixels: for a PcbLib, every footprint's pads, pad bounding box, primitive census and 3D bodies; for a board, outline, components with... | `altium_pcb_report` | `kicad_errors` (partial) | `fusion_read_footprint / fusion_read_board` (partial) |+| `pcb_report` | Numbers instead of pixels: for a PcbLib, every footprint's pads, pad bounding box, primitive census and 3D bodies; for a board, outline, components with... | `altium_pcb_report` | `kicad_errors` (partial) | `fusion_pcb_report` | | `pour_state` | Every polygon pour with the copper it actually poured: filled area per pour and per layer, and the pours that poured nothing. | `altium_pour_state` | `kicad_pour_state` | `fusion_pour_state` | | `project_snapshot` *proposed* | A dated copy of the project's documents into <project>/snapshots/<stamp>[-label]/, with PDFs of the schematic and the board made by the tool. | `altium_project_snapshot` | `kicad_project_snapshot` | `fusion_project_snapshot` (partial) | | `remove_pours` | Delete polygon pours by net (and layer), or all of them, and the pour keepouts (cutouts) apply_pours made. Tracks and vias are untouched. | `altium_remove_pours` | `kicad_remove_zone` | `fusion_remove_pours` |
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "eda-bridge-standard",- "version": "0.30.2",+ "version": "0.30.3", "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+6−7@@ -1,5 +1,5 @@ {- "standard": "0.30.2",+ "standard": "0.30.3", "reference": { "bridge": "altium", "version": "0.2.87"@@ -7,7 +7,7 @@ "proposed": 67, "compared": { "kicad": "1.0.94",- "fusion360": "1.13.37"+ "fusion360": "1.13.38" }, "tiers": { "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -2009,8 +2009,8 @@ "match": "exact" }, "fusion360": {- "verb": "fusion_export_gerbers / fusion_export_cpl / fusion_export_bom",- "match": "partial"+ "verb": "fusion_export_manufacturing",+ "match": "exact" } }, {@@ -2234,9 +2234,8 @@ "match": "partial" }, "fusion360": {- "verb": "fusion_read_footprint / fusion_read_board",- "match": "partial",- "note": "a library footprint's pads, layers, courtyard and graphics (read_footprint), or the live board's sections (read_board); not one call for a whole library"+ "verb": "fusion_pcb_report",+ "match": "exact" } }, {
verbs/standard.json+2−2@@ -1,5 +1,5 @@ {- "standard": "0.30.2",+ "standard": "0.30.3", "reference": { "bridge": "altium", "version": "0.2.87"@@ -7,7 +7,7 @@ "proposed": 67, "compared": { "kicad": "1.0.94",- "fusion360": "1.13.37"+ "fusion360": "1.13.38" }, "tiers": { "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",