← Commit history

standard 0.29.5: coverage reads Fusion 1.13.34

Colby Knox ·6d1c980604 ·11d ago ·parent d6fa39f
5 files changed +23−25
README.md+1
@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue  ## Status +Version 0.29.5: coverage reads Fusion 360 bridge 1.13.34 (five partials now exact: board_summary, read_schematic, list_library, export_pos, window_info). Version 0.29.4: coverage reads Fusion 360 bridge 1.13.33 (239 of 252: panel now real; export_3d, import_step and tool_update exact). Version 0.29.3: coverage reads KiCad bridge 1.0.93 (sends sheetDrawing); `sheetDrawing` entries may carry `sizeMm` (the sheet's width and height). Version 0.29.2: Altium's `import_kicad` counts as `import_design` (partial, kicad only).
docs/coverage.md+6−6
@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.86 (the reference), KiCad bridge 1.0.93, Fusion 360 bridge 1.13.33. 67 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.87 (the reference), KiCad bridge 1.0.93, Fusion 360 bridge 1.13.34. 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. @@ -26,7 +26,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `apply_silkscreen` | Land a silkscreen plan in one undo step: designators and comments moved, sized and turned (or hidden), free overlay texts and lines added (bottom texts... | `altium_apply_silkscreen` | `kicad_silk_fields_batch / kicad_silk_text_batch / kicad_silk_graphics_batch` | `fusion_apply_silkscreen` | | `board_outline` | Draw the board shape as tracks and arcs on a mechanical layer: the outline a fab house reads from the Gerbers. A board built by script has its shape but... | `altium_board_outline` | `kicad_board_outline` | `fusion_board_outline` | | `board_shape` | Redefine the CURRENT board's outline as a wMm x hMm rectangle at (x0Mm, y0Mm) by rewriting the board outline's segments. | `altium_board_shape` | `kicad_board_outline` | `fusion_board_shape` |-| `board_summary` | One-screen summary of the current board, shaped from one read_board round trip: component counts by side, nets, copper layers actually in use, rule counts. | `altium_board_summary` | `kicad_board_summary` | `fusion_board_summary` (partial) |+| `board_summary` | One-screen summary of the current board, shaped from one read_board round trip: component counts by side, nets, copper layers actually in use, rule counts. | `altium_board_summary` | `kicad_board_summary` | `fusion_board_summary` | | `bodies` *proposed* | Every part's 3D body as a box: its footprint rectangle on the board and its height range above the surface it sits on (a bottom part measures down from the... | `altium_bodies` | `kicad_bodies` | `fusion_bodies` | | `clone_symbol` | Copy a symbol inside the current SchLib under a new name, all display modes included. | `altium_clone_symbol` | `kicad_clone_symbol` | `fusion_clone_symbol` (partial) | | `component_data` | Placement data for one board component, or for all of them: footprint pattern, comment, layer/side, position, rotation, size, pad count and the nets on its... | `altium_component_data` | `kicad_component_data` | `fusion_component_data` |@@ -47,7 +47,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `layers` | The current board's layer set with ids, names, kind and whether each is displayed. | `altium_layers` | `kicad_layers` | `fusion_layers` | | `layers_in_use` | Which layers of the current board actually carry primitives: copper layers with copper (densest first) and every layer with anything on it. | `altium_layers_in_use` | `kicad_layers_in_use` | `fusion_layers_in_use` | | `list_designators` | Every component designator on the current board. | `altium_list_designators` | `kicad_list_designators` | `fusion_list_designators` |-| `list_library` | Names of every component in a .SchLib or every footprint in a .PcbLib (kind taken from the extension). Opens the library; no screenshot. | `altium_list_library` | `kicad_list_footprints / kicad_list_symbols` (partial) | `fusion_library_parts` (partial) |+| `list_library` | Names of every component in a .SchLib or every footprint in a .PcbLib (kind taken from the extension). Opens the library; no screenshot. | `altium_list_library` | `kicad_list_footprints / kicad_list_symbols` (partial) | `fusion_list_library` | | `list_nets` | Every net on the current board with its pad count. | `altium_list_nets` | `kicad_list_nets` | `fusion_list_nets` | | `move_parts` | Move, rotate and flip placed components (side top or bottom; flip:true turns a part over); each part is read back to 0.001 mm, the exact rotation and its... | `altium_move_parts` | `kicad_move_footprint / kicad_flip_footprint` | `fusion_move_parts` | | `net_connections` | Every pad on the board with its net and owner (Designator.Pad), plus a bounding span and the airline length (minimum spanning tree over its pads, airlineMm)... | `altium_net_connections` | `kicad_trace_net / kicad_find_connections` (partial) | `fusion_net_connections` |@@ -63,7 +63,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `read_board` | ONE round trip: components, nets, layers, copper, rules, occupancy, outline. | `altium_read_board` | `kicad_board_summary` (partial) | `fusion_read_board` | | `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,... | `altium_read_footprint` | `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_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_read_schematic` | | `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` | `fusion_read_symbol` (partial) | | `remove_footprint` | Delete one footprint from the current PcbLib. | `altium_remove_footprint` | `kicad_remove_footprint` | `fusion_remove_footprint` | | `remove_graphics` *proposed* | Remove board graphics (lines, rectangles, circles, arcs, polygons, texts, dimensions) by id, or every one on a layer and of a kind. One undo step. | `altium_remove_graphics` | `kicad_remove_graphics` | `fusion_remove_graphics` |@@ -143,7 +143,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). | `altium_export_pos` | `kicad_export_pos` | `fusion_export_cpl` (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) |  | `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... |  |  | `fusion_import_step` |@@ -290,7 +290,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `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. |  |  | `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_check_dialogs` (partial) |+| `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` | | `zoom_to` | Frame the PCB view on a rectangle, a part (or several) or a whole net, with a margin. | `altium_zoom_to` | `kicad_zoom_to` | `fusion_zoom_to` |  ## platform
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "eda-bridge-standard",-  "version": "0.29.4",+  "version": "0.29.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+12−15
@@ -1,13 +1,13 @@ {- "standard": "0.29.4",+ "standard": "0.29.5",  "reference": {   "bridge": "altium",-  "version": "0.2.86"+  "version": "0.2.87"  },  "proposed": 67,  "compared": {   "kicad": "1.0.93",-  "fusion360": "1.13.33"+  "fusion360": "1.13.34"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -153,8 +153,7 @@    },    "fusion360": {     "verb": "fusion_board_summary",-    "match": "partial",-    "note": "fusion_board_info under the standard's name: its reply (parts, nets, layers, counts), not the standard's summary shaped from read_board (fusion_read_board gives those sections)"+    "match": "exact"    }   },   {@@ -518,8 +517,8 @@     "match": "partial"    },    "fusion360": {-    "verb": "fusion_library_parts",-    "match": "partial"+    "verb": "fusion_list_library",+    "match": "exact"    }   },   {@@ -797,8 +796,8 @@     "match": "partial"    },    "fusion360": {-    "verb": "fusion_schematic",-    "match": "partial"+    "verb": "fusion_read_schematic",+    "match": "exact"    }   },   {@@ -2057,9 +2056,8 @@     "match": "exact"    },    "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"+    "verb": "fusion_export_pos",+    "match": "exact"    }   },   {@@ -4379,9 +4377,8 @@     "match": "exact"    },    "fusion360": {-    "verb": "fusion_check_dialogs",-    "match": "partial",-    "note": "every open Fusion dialog with title, text and buttons, without a screenshot; fusion_state adds the window and a background screenshot"+    "verb": "fusion_window_info",+    "match": "exact"    }   },   {
verbs/standard.json+3−3
@@ -1,13 +1,13 @@ {- "standard": "0.29.4",+ "standard": "0.29.5",  "reference": {   "bridge": "altium",-  "version": "0.2.86"+  "version": "0.2.87"  },  "proposed": 67,  "compared": {   "kicad": "1.0.93",-  "fusion360": "1.13.33"+  "fusion360": "1.13.34"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",