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 fusion-lane (reference/fusion360-1.12.7.json, public: export_odb, export_ipc356, export_gencad, export_ipc2581 partial, read_footprint): Fusion 123 of 236
4 files changed
+35−19
README.md+3−3@@ -57,12 +57,12 @@ verb by verb: [docs/coverage.md](docs/coverage.md). <!-- coverage:start (tools/generate.py writes this) --> | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---|-| **core** | 93 | 86 | 89 | 53 |-| **native** | 46 | 38 | 41 | 20 |+| **core** | 93 | 86 | 89 | 54 |+| **native** | 46 | 38 | 41 | 24 | | **checks** | 37 | 33 | 11 | 9 | | **app** | 60 | 56 | 25 | 36 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 213 | 166 | 118 |+| standard (all but platform) | 236 | 213 | 166 | 123 | <!-- 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+9−9@@ -1,17 +1,17 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.76 (the reference), KiCad bridge 1.0.66, Fusion 360 bridge 1.12.6. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.76 (the reference), KiCad bridge 1.0.66, Fusion 360 bridge 1.12.7. 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. | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---|-| **core** | 93 | 86 | 89 | 53 |-| **native** | 46 | 38 | 41 | 20 |+| **core** | 93 | 86 | 89 | 54 |+| **native** | 46 | 38 | 41 | 24 | | **checks** | 37 | 33 | 11 | 9 | | **app** | 60 | 56 | 25 | 36 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 213 | 166 | 118 |+| standard (all but platform) | 236 | 213 | 166 | 123 | ## core @@ -61,7 +61,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `project_info` *proposed* | A project at a glance: name, files with sizes and dates, the sheet tree, the board (layers, parts, nets, size), text variables, net classes, last change,... | | `kicad_project_info` | | | `project_rename` *proposed* | Rename a project: the project file, the root sheet, the board and the tool's side files, with the references inside them updated. Refused while the tool has... | | `kicad_project_rename` | | | `read_board` | ONE round trip: components, nets, layers, copper, rules, occupancy, outline. | `altium_read_board` | `kicad_board_summary` (partial) | `fusion_board_info / fusion_get_design_info` (partial) |-| `read_footprint` *proposed* | Every detail of one library footprint: pads (number, type, shape, position, size, drill, layers), the layers it uses, its courtyard box, graphics per layer,... | | `kicad_read_footprint` | |+| `read_footprint` *proposed* | Every detail of one library footprint: pads (number, type, shape, position, size, drill, layers), the layers it uses, its courtyard box, graphics per layer,... | | `kicad_read_footprint` | `fusion_read_footprint` | | `read_rules` | Every design rule on the current board, flat, disabled ones included: name, kind ordinal, enabled, priority, both scope expressions, comment, and Altium's... | `altium_read_rules` | `kicad_list_design_rules` | `fusion_read_rules` | | `read_schematic` | Components on the CURRENT schematic sheet (designator, library reference, comment, position, parameters) in one agent round trip. | `altium_read_schematic` | `kicad_sch_components` (partial) | `fusion_schematic` (partial) | | `read_symbol` | Read a SchLib component back: description, display-mode count, the pins of mode 0 (designator, name, electrical type), every parameter with its hidden flag,... | `altium_read_symbol` | `kicad_read_symbol` | |@@ -131,13 +131,13 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `diff_pairs` | Differential pairs on the current board: list them, define one from two nets (replacing a pair of that name), or remove one. Altium's differential-pair... | `altium_diff_pairs` | `kicad_diff_pairs` (partial) | | | `export_bom` | Bill of materials export: altium_run_outjob with the assembly OutJob and the 'Folder Structure' medium as defaults. | `altium_export_bom` | `kicad_export_bom_csv` (partial) | `fusion_export_bom / fusion_board_bom` | | `export_dxf` *proposed* | Export chosen board layers to DXF, one file per layer (the outline, panel drawings, stencils, enclosure work). | | `kicad_export_dxf` | `fusion_export_dxf` |-| `export_gencad` *proposed* | Export the board as GenCAD 1.4, the input of test-fixture tools and some assembly houses' CAM. | | `kicad_export_gencad` | |+| `export_gencad` *proposed* | Export the board as GenCAD 1.4, the input of test-fixture tools and some assembly houses' CAM. | | `kicad_export_gencad` | `fusion_export_gencad` | | `export_gerber` | Gerber/drill export: altium_run_outjob with the fabrication OutJob and the 'Folder Structure' medium as defaults. | `altium_export_gerber` | `kicad_export_gerber` | `fusion_export_gerbers` |-| `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` | |-| `export_ipc356` *proposed* | Export the IPC-D-356 netlist of the board, for bare-board electrical test (flying probe or bed of nails). | | `kicad_export_ipc356` | |+| `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). | | `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... | | `kicad_export_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_gerber / kicad_export_pos` (partial) | `fusion_export_gerbers / fusion_export_cpl / fusion_export_bom` (partial) |-| `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` | |+| `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` | | | `export_step` | Headless STEP export of a board. Default lane 'outjob': Altium's own ExportSTEP output run from a throwaway project in %TEMP% that points at the board - no... | `altium_export_step` | `kicad_export_step` | `fusion_export_step` | | `install_library` | Register a library file in Altium's Installed Libraries (IntegratedLibraryManager.InstallLibrary) so its parts appear in the Components panel. | `altium_install_library` | `kicad_install_library` | |
verbs/coverage.json+22−6@@ -7,7 +7,7 @@ "proposed": 54, "compared": { "kicad": "1.0.66",- "fusion360": "1.12.6"+ "fusion360": "1.12.7" }, "tiers": { "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -653,7 +653,10 @@ "verb": "kicad_read_footprint", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_read_footprint",+ "match": "exact"+ } }, { "name": "read_rules",@@ -1628,7 +1631,10 @@ "verb": "kicad_export_gencad", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_export_gencad",+ "match": "exact"+ } }, { "name": "export_gerber",@@ -1659,7 +1665,11 @@ "verb": "kicad_export_ipc2581", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_export_ipc2581",+ "match": "partial",+ "note": "IPC-2581 revision C in mode ASSEMBLY (valid against the C schema): stack-up, outline, packages, components, BOM, nets, pads, traces, vias, poured copper and drills. Solder mask, paste and silkscreen are not written; Fusion has no IPC-2581 writer of its own, so fabrication goes through export_odb."+ } }, { "name": "export_ipc356",@@ -1670,7 +1680,10 @@ "verb": "kicad_export_ipc356", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_export_ipc356",+ "match": "exact"+ } }, { "name": "export_library_part",@@ -1712,7 +1725,10 @@ "verb": "kicad_export_odb", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_export_odb",+ "match": "exact"+ } }, { "name": "export_pdf",
verbs/standard.json+1−1@@ -7,7 +7,7 @@ "proposed": 54, "compared": { "kicad": "1.0.66",- "fusion360": "1.12.6"+ "fusion360": "1.12.7" }, "tiers": { "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",