← Commit history

standard 0.30.5: reference Altium 0.2.88 (all 252)

Colby Knox ·9f726926fc ·11d ago ·parent 36ac369
5 files changed +40−24
README.md+4−3
@@ -61,11 +61,11 @@ verb by verb: [docs/coverage.md](docs/coverage.md). | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | **core** | 95 | 95 | 95 | 93 |-| **native** | 53 | 50 | 53 | 50 |+| **native** | 53 | 53 | 53 | 50 | | **checks** | 38 | 38 | 38 | 38 |-| **app** | 66 | 65 | 55 | 58 |+| **app** | 66 | 66 | 55 | 58 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 252 | 248 | 241 | 239 |+| standard (all but platform) | 252 | 252 | 241 | 239 | <!-- 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.30.5: the reference is Altium bridge 0.2.88 (public), which answers all 252 standard verbs (import_design and tool_update partial). Version 0.30.4: coverage reads KiCad bridge 1.0.95 (public): eleven partials now exact, cross_check from the engine. 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.
docs/coverage.md+9−9
@@ -1,17 +1,17 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.87 (the reference), KiCad bridge 1.0.95, Fusion 360 bridge 1.13.38. 67 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.88 (the reference), KiCad bridge 1.0.95, 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.  | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | **core** | 95 | 95 | 95 | 93 |-| **native** | 53 | 50 | 53 | 50 |+| **native** | 53 | 53 | 53 | 50 | | **checks** | 38 | 38 | 38 | 38 |-| **app** | 66 | 65 | 55 | 58 |+| **app** | 66 | 66 | 55 | 58 | | **platform** | 18 | 18 | 0 | 1 |-| standard (all but platform) | 252 | 248 | 241 | 239 |+| standard (all but platform) | 252 | 252 | 241 | 239 |  ## core @@ -131,8 +131,8 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `component_classes` | List, make or remove component classes on the board, each optionally with a room: a placement area that keeps its parts together (fitted around the parts or... | `altium_component_classes` | `kicad_component_classes` | unsupported | | `create_part_project` *proposed* | Generate a small real project (schematic and board) around one library part, so the part can be shown and tested in every view: schematic, 2D board and 3D... | `altium_create_part_project` | `kicad_create_part_project` (partial) | `fusion_make_test_project` (partial) | | `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) | `fusion_diff_pairs` (partial) |-| `edit_pours` *proposed* | Change existing pours in place without redrawing them: clearance, minimum width, thermal relief (on/off, spoke width, gap), priority or rank, the net, and... |  | `kicad_edit_pours` | `fusion_edit_pours` (partial) |-| `export_3d` *proposed* | Export the board's 3D model in a mesh or CAD format other than STEP (export_step has STEP), through the tool's own exporter, with an optional web-optimized... |  | `kicad_export_3d` | `fusion_export_3d` |+| `edit_pours` *proposed* | Change existing pours in place without redrawing them: clearance, minimum width, thermal relief (on/off, spoke width, gap), priority or rank, the net, and... | `altium_edit_pours` | `kicad_edit_pours` | `fusion_edit_pours` (partial) |+| `export_3d` *proposed* | Export the board's 3D model in a mesh or CAD format other than STEP (export_step has STEP), through the tool's own exporter, with an optional web-optimized... | `altium_export_3d` | `kicad_export_3d` | `fusion_export_3d` | | `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` | `fusion_export_bom` | | `export_dxf` *proposed* | Export chosen board layers to DXF, one file per layer (the outline, panel drawings, stencils, enclosure work). | `altium_export_dxf` | `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. | `altium_export_gencad` | `kicad_export_gencad` | `fusion_export_gencad` |@@ -145,8 +145,8 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `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` | | `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` |-| `import_design` *proposed* | Bring a design from another tool into a NEW native design with the parts instantiated: an EAGLE .sch with its paired .brd, a KiCad project, or an Altium... | `altium_import_kicad` (partial) | `kicad_import_design` | `fusion_new_electronics_from_eagle` (partial) |-| `import_step` *proposed* | Bring a STEP model in as 3D geometry placed with the board: an enclosure, a bracket or a mating part, for fit and clearance checks. Not a footprint's own... |  | `kicad_import_step` | `fusion_import_step` |+| `import_design` *proposed* | Bring a design from another tool into a NEW native design with the parts instantiated: an EAGLE .sch with its paired .brd, a KiCad project, or an Altium... | `altium_import_design` (partial) | `kicad_import_design` | `fusion_new_electronics_from_eagle` (partial) |+| `import_step` *proposed* | Bring a STEP model in as 3D geometry placed with the board: an enclosure, a bracket or a mating part, for fit and clearance checks. Not a footprint's own... | `altium_import_step` | `kicad_import_step` | `fusion_import_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` | | `list_installed_libraries` | Every library in Altium's Installed Libraries list (read-only). | `altium_list_installed_libraries` | `kicad_list_installed_libraries` | `fusion_list_installed_libraries` (partial) |@@ -287,7 +287,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `simulate` *proposed* | Run a circuit simulation of the design's schematic and return the signals as data: an operating point, a DC sweep, an AC sweep or a transient, with the nets... | `altium_simulate` | `kicad_simulate` | `fusion_simulate` | | `state` | The whole picture in one call: licence state, windows, dialogs, a screenshot of every main/dialog window, and the agent's logical state (focused document,... | `altium_state` | `kicad_state` | `fusion_state` | | `status` | Is Altium running, licensed, and is the resident agent alive? | `altium_status` | `kicad_status` | `fusion_status` |-| `tool_update` *proposed* | The tool's own updates: check whether one is offered, apply it in the background when no work would be lost, or read or set automatic updating. |  | `kicad_tool_update` | `fusion_tool_update` |+| `tool_update` *proposed* | The tool's own updates: check whether one is offered, apply it in the background when no work would be lost, or read or set automatic updating. | `altium_tool_update` (partial) | `kicad_tool_update` | `fusion_tool_update` | | `uninstall` | Remove the bridge's own cache directory (agent workspaces, rendered agent scripts, the Altium 365 token file). Altium Designer and the user's designs are... | `altium_uninstall` | `kicad_uninstall` | `fusion_uninstall` | | `verb_times` *proposed* | Measured run times of this bridge's verbs on this machine: per verb the count, p50, p90, max, last and failures, from its own run log, slowest p90 first. | `altium_verb_times` | `kicad_verb_times` | `fusion_verb_times` | | `window_info` | Altium's top-level windows plus any open dialogs, without screenshots. The cheap way to ask 'is a modal blocking the engine?'. | `altium_window_info` | `kicad_window_info` | `fusion_window_info` |
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "eda-bridge-standard",-  "version": "0.30.4",+  "version": "0.30.5",   "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+21−8
@@ -1,8 +1,8 @@ {- "standard": "0.30.4",+ "standard": "0.30.5",  "reference": {   "bridge": "altium",-  "version": "0.2.87"+  "version": "0.2.88"  },  "proposed": 67,  "compared": {@@ -1850,7 +1850,10 @@    "name": "edit_pours",    "tier": "native",    "source": "proposed",-   "altium": null,+   "altium": {+    "verb": "altium_edit_pours",+    "match": "exact"+   },    "kicad": {     "verb": "kicad_edit_pours",     "match": "exact"@@ -1865,7 +1868,10 @@    "name": "export_3d",    "tier": "native",    "source": "proposed",-   "altium": null,+   "altium": {+    "verb": "altium_export_3d",+    "match": "exact"+   },    "kicad": {     "verb": "kicad_export_3d",     "match": "exact"@@ -2087,9 +2093,9 @@    "tier": "native",    "source": "proposed",    "altium": {-    "verb": "altium_import_kicad",+    "verb": "altium_import_design",     "match": "partial",-    "note": "format kicad only (Altium's KiCad importer); EAGLE through the Import Wizard comes with altium_import_design"+    "note": "format kicad only; eagle refused by name until 0.2.89"    },    "kicad": {     "verb": "kicad_import_design",@@ -2105,7 +2111,10 @@    "name": "import_step",    "tier": "native",    "source": "proposed",-   "altium": null,+   "altium": {+    "verb": "altium_import_step",+    "match": "exact"+   },    "kicad": {     "verb": "kicad_import_step",     "match": "exact"@@ -4331,7 +4340,11 @@    "name": "tool_update",    "tier": "app",    "source": "proposed",-   "altium": null,+   "altium": {+    "verb": "altium_tool_update",+    "match": "partial",+    "note": "check reports each install's build; offered stays null where the Extensions page has no builds in UIA; apply refused by name"+   },    "kicad": {     "verb": "kicad_tool_update",     "match": "exact"
verbs/standard.json+5−3
@@ -1,8 +1,8 @@ {- "standard": "0.30.4",+ "standard": "0.30.5",  "reference": {   "bridge": "altium",-  "version": "0.2.87"+  "version": "0.2.88"  },  "proposed": 67,  "compared": {@@ -6260,7 +6260,8 @@    "source": "altium",    "summary": "Compare one schematic sheet's designators with a board's. Altium holds ONE current document, so the verb activates the board, reads it, then activates the sheet and reads that.",    "input": {-    "board": "path to the .PcbDoc - optional, else the current board",+    "board": "path to the .PcbDoc - optional, else the current board (with projectPath: the project's board)",+    "projectPath": "a .PrjPcb: every sheet it lists against its board instead of one sheet, through the standard's engine (parts kept out of the BOM by kind are not counted missing)",     "sheet": "path to the .SchDoc - optional, else the current sheet",     "timeout": "seconds per step, default 45"    },@@ -7199,6 +7200,7 @@    "source": "altium",    "summary": "Review the schematic before Update PCB: every placed pin (read from the sheet files, with its electrical type) against Altium's compiled netlist. Errors: power pins on no net, outputs driving each other. Warnings: pins on no net, one-pin nets, inputs nothing drives, IC supplies with no decoupling capacitor to ground.",    "input": {+    "drawing": "bool, default true: read each sheet's drawing too, for the drawing checks (dangling wire ends, labels off their wire, overlapping symbols)",     "projectPath": "the .PrjPcb (its sheets are read from file; the netlist is Altium's compile)"    },    "output": {