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.26.2: Fusion render_board and export_pos (228)
5 files changed
+20−11
README.md+3−2@@ -61,11 +61,11 @@ verb by verb: [docs/coverage.md](docs/coverage.md). | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | **core** | 94 | 94 | 90 | 91 |-| **native** | 49 | 47 | 46 | 42 |+| **native** | 49 | 47 | 46 | 44 | | **checks** | 38 | 38 | 38 | 38 | | **app** | 64 | 62 | 53 | 55 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 245 | 241 | 227 | 226 |+| standard (all but platform) | 245 | 241 | 227 | 228 | <!-- 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.26.2: Fusion maps render_board and export_pos (partial), 228 of 245. Version 0.26.1: `align_footprints` and `edit_placed_footprint` withdrawn: they duplicated `align_parts` and `edit_parts` (#29). Four verbs from this round stay: `verb_times`, `prewarm`, `render_board`, `export_pos`. Version 0.26.0: six verbs from kicad-lane join the standard (#29): `verb_times` and `prewarm` (app), `render_board`, `align_footprints` and `export_pos` (native), `edit_placed_footprint` (core). Version 0.25.1: regenerated on kicad-lane's latest #29 equivalents (panel, activate_document).
docs/coverage.md+4−4@@ -7,11 +7,11 @@ Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | **core** | 94 | 94 | 90 | 91 |-| **native** | 49 | 47 | 46 | 42 |+| **native** | 49 | 47 | 46 | 44 | | **checks** | 38 | 38 | 38 | 38 | | **app** | 64 | 62 | 53 | 55 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 245 | 241 | 227 | 226 |+| standard (all but platform) | 245 | 241 | 227 | 228 | ## core @@ -140,7 +140,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `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_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). | | `kicad_export_pos` | |+| `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). | | `kicad_export_pos` | `fusion_export_cpl` (partial) | | `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` | `fusion_install_library_bundle` (partial) | | `install_library_bundle` | One-click install of a wiki library bundle (zip of .SchLib/.PcbLib): unpack, register, open the library, prove it with a frame. | `altium_install_library_bundle` | `kicad_install_library_bundle` | `fusion_install_library_bundle` |@@ -152,7 +152,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `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` |-| `render_board` *proposed* | A rendered 3D picture (PNG or JPG) of a board from one side, made by the tool's own renderer with no window: optionally framed on parts, turned for an... | | `kicad_render_board` | |+| `render_board` *proposed* | A rendered 3D picture (PNG or JPG) of a board from one side, made by the tool's own renderer with no window: optionally framed on parts, turned for an... | | `kicad_render_board` | `fusion_render_board_3d` (partial) | | `render_board_3d` *proposed* | Render a 3D picture of the board from one side to an image file, through the tool's own renderer, without opening a window. | `altium_render_board_3d` | `kicad_render_board_3d` | `fusion_render_board_3d` | | `render_board_layers` *proposed* | Render chosen board layers to an image file without opening a window: a preset view (copper, silkscreen, solder mask, paste, outline, drill, assembly or... | `altium_render_board_layers` | `kicad_export_svg` (partial) | `fusion_export_board_image` (partial) | | `render_schematic` *proposed* | Render a sheet to an image without opening a window, through the tool's own plotter, and keep visual baselines: baseline set stores the image, baseline... | `altium_render_schematic` | `kicad_render_schematic` | `fusion_render_schematic` |
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "eda-bridge-standard",- "version": "0.26.1",+ "version": "0.26.2", "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−3@@ -1,5 +1,5 @@ {- "standard": "0.26.1",+ "standard": "0.26.2", "reference": { "bridge": "altium", "version": "0.2.84"@@ -1994,7 +1994,11 @@ "verb": "kicad_export_pos", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_export_cpl",+ "match": "partial",+ "note": "the Component Placement List CSV in mm, side all, top or bottom; JLCPCB's own CPL columns come from fusion_jlcpcb_order (cpl-jlcpcb.csv). No ascii or gerber format, inch units, smdOnly or excludeDnp filter"+ } }, { "name": "export_step",@@ -2198,7 +2202,11 @@ "verb": "kicad_render_board", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_render_board_3d",+ "match": "partial",+ "note": "Fusion's own view of the design's 3D PCB from one side (top, bottom, left, right, front, back, iso), png or jpg, transparent background, width, height, zoom, perspective. No refs framing, rotation only through side iso, and quality high (raytraced) is refused: Fusion's raytracer is the mechanical layer's render_image, for a 3D design"+ } }, { "name": "render_board_3d",
verbs/standard.json+1−1@@ -1,5 +1,5 @@ {- "standard": "0.26.1",+ "standard": "0.26.2", "reference": { "bridge": "altium", "version": "0.2.84"