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
Fusion bridge 1.12.0 reference: 56 of 182 standard verbs (was 39); board model conformance
5 files changed
+317−60
README.md+5−5@@ -42,12 +42,12 @@ verb by verb: [docs/coverage.md](docs/coverage.md). <!-- coverage:start (tools/generate.py writes this) --> | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---|-| **core** | 60 | 60 | 12 | 9 |-| **native** | 34 | 34 | 18 | 10 |-| **checks** | 32 | 32 | 4 | 1 |-| **app** | 56 | 56 | 21 | 19 |+| **core** | 60 | 60 | 12 | 20 |+| **native** | 34 | 34 | 18 | 14 |+| **checks** | 32 | 32 | 4 | 2 |+| **app** | 56 | 56 | 21 | 20 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 182 | 182 | 55 | 39 |+| standard (all but platform) | 182 | 182 | 55 | 56 | <!-- 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+29−29@@ -1,17 +1,17 @@ # Coverage: every standard verb on each bridge -Reference: Altium bridge 0.2.75. Compared: KiCad bridge 1.0.58, Fusion 360 bridge 1.11.44.+Reference: Altium bridge 0.2.75. Compared: KiCad bridge 1.0.58, Fusion 360 bridge 1.12.0. `exact` is the same job under the same or an equivalent name; `partial` does part of it or does it differently; blank is missing. Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand. | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---|-| **core** | 60 | 60 | 12 | 9 |-| **native** | 34 | 34 | 18 | 10 |-| **checks** | 32 | 32 | 4 | 1 |-| **app** | 56 | 56 | 21 | 19 |+| **core** | 60 | 60 | 12 | 20 |+| **native** | 34 | 34 | 18 | 14 |+| **checks** | 32 | 32 | 4 | 2 |+| **app** | 56 | 56 | 21 | 20 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 182 | 182 | 55 | 39 |+| standard (all but platform) | 182 | 182 | 55 | 56 | ## core @@ -25,25 +25,25 @@ 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... | | | | `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... | | | | `board_shape` | Redefine the CURRENT board's outline as a wMm x hMm rectangle at (x0Mm, y0Mm) by rewriting the board outline's segments. | | |-| `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. | | `fusion_board_info` (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. | | `fusion_board_summary` | | `clone_symbol` | Copy a symbol inside the current SchLib under a new name, all display modes included. | | |-| `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... | | |-| `component_pins` | Every pad of one board component with its net, position, layer, size and hole. | | |-| `copper_layers` | Every copper layer Altium can address on the current board (top, mid 1-30, planes 1-16, bottom) with names and visibility. | | |+| `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... | | `fusion_component_data` |+| `component_pins` | Every pad of one board component with its net, position, layer, size and hole. | | `fusion_component_pins` |+| `copper_layers` | Every copper layer Altium can address on the current board (top, mid 1-30, planes 1-16, bottom) with names and visibility. | | `fusion_copper_layers` | | `copy_footprint` | Duplicate a footprint inside the current PcbLib under a new name (every primitive replicated). | | | | `create_footprint` | Create one footprint from a pad list in a PcbLib (the library is created and saved if the path does not exist) and return a proof frame. | | | | `create_symbol` | Create one rectangular symbol from a pin list in a SchLib (the library is created and saved if the path does not exist) and return a proof frame. | | | | `doc_params` | Read or set a sheet's document parameters: the title block (Title, DocumentNumber, Revision, DrawnBy, Author, CompanyName, ...). | | | | `find_symbol` | Find symbols (or footprints with kind:'footprint') by part of their name across libraries: the given ones, or every installed .SchLib/.PcbLib. | | | | `footprint_primitives` | Geometry dump of one PLACED component: its tracks, arcs, pads (with solder and paste mask expansion in um) and texts in mils with layer ids; other primitive... | | |-| `layer_stack` | The CURRENT board's stack-up: copper layers in order with copper thickness and the dielectric under each (height, constant, material), and the total... | | `fusion_board_stackup` |-| `layers` | The current board's layer set with ids, names, kind and whether each is displayed. | | |-| `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. | | |-| `list_designators` | Every component designator on the current board. | | |+| `layer_stack` | The CURRENT board's stack-up: copper layers in order with copper thickness and the dielectric under each (height, constant, material), and the total... | | `fusion_layer_stack` |+| `layers` | The current board's layer set with ids, names, kind and whether each is displayed. | | `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. | | `fusion_layers_in_use` |+| `list_designators` | Every component designator on the current board. | | `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. | `kicad_list_footprints / kicad_list_symbols` (partial) | |-| `list_nets` | Every net on the current board with its pad count. | | |+| `list_nets` | Every net on the current board with its pad count. | | `fusion_list_nets` | | `move_parts` | Move and rotate placed components; each part is read back to 0.001 mm and the exact rotation. One undo step. | `kicad_move_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)... | `kicad_trace_net / kicad_find_connections` (partial) | |+| `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)... | `kicad_trace_net / kicad_find_connections` (partial) | `fusion_net_connections` | | `normalize_bodies` | Move every 3D body of a PcbLib's footprints (or one footprint) onto its pad cluster. A body added through the canvas lands 50000 mil from the pads in the... | | | | `part_parameters` | The parameter names a project's parts carry (with how many parts carry each), or with name, that parameter's value on every part. | | | | `place_on_pcb` | Place ONE footprint from a PcbLib on a new board and return a proof frame. The single-part predecessor of altium_test_board. | `kicad_place_footprint` | |@@ -51,7 +51,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `place_vias` | Place vias (through, top to bottom). One undo step, read back. | `kicad_add_via` | `fusion_place_vias` | | `plate_vias` | Make every drilled pad in a PcbLib a plated MULTI-LAYER pad (all footprints, or footprintName). adom-lbr writes heatsink vias as pads with a hole; Altium... | | | | `read_board` | ONE round trip: components, nets, layers, copper, rules, occupancy, outline. | | `fusion_board_info / fusion_get_design_info` (partial) |-| `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... | `kicad_list_design_rules` | |+| `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... | `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. | | `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,... | | | | `remove_footprint` | Delete one footprint from the current PcbLib. | | |@@ -62,7 +62,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `ripup_nets` | Delete every free track, arc and via on each named net. One undo step. | | `fusion_ripup_nets` | | `route_net` | Route one net as tracks, segment by segment; a waypoint on another layer drops a via there. One undo step, read back. | `kicad_route_net` | `fusion_route_net` | | `routing_state` | The WHOLE current board as data, in mm: tracks, arcs, vias, pads (with owner and net), components (ref, x, y, rotation, side), polygon pours, the outline,... | `kicad_routing_state` | `fusion_routing_state` |-| `rules_by_kind` | The current board's ENABLED design rules grouped by rule kind (Clearance, Width, RoutingVias, ...), each group sorted by priority. Shaped from one... | | |+| `rules_by_kind` | The current board's ENABLED design rules grouped by rule kind (Clearance, Width, RoutingVias, ...), each group sorted by priority. Shaped from one... | | `fusion_rules_by_kind` | | `sch_connect` | Connect pins of placed parts: a wire stub from each pin's outer end plus a net label (kind label), a power port (kind power: GND-like nets get a ground... | `kicad_sch_wire / kicad_sch_label` (partial) | | | `sch_edit` | Change placed parts on a sheet: move (to x,y mil), moveBy (dx,dy), rotate (degrees), rename (designator), re-comment (comment), delete. One undo step. | `kicad_sch_set_property / kicad_sch_move / kicad_sch_delete` (partial) | | | `sch_place_part` | Place a component from a .SchLib onto an EXISTING sheet at a position, with its library parameters (MPN, Manufacturer, distributor numbers) and its... | `kicad_sch_place_symbol` | |@@ -75,7 +75,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `set_track_width` | Set the width of the EXISTING tracks and arcs on nets or a net class (rules only steer new routing). Widen power nets after routing, or thin a net that... | | | | `set_visibility` | Show or hide one named parameter on a SchLib component. | | | | `sheet_params` | Write parameters onto PLACED parts on the schematic sheets (the BOM write-back): MPN, Manufacturer, Mouser/DigiKey/LCSC numbers, anything. A missing... | | |-| `silk_state` | The silkscreen as it stands: every part's body box, its designator and comment (text, location, size, rotation, shown, Altium's measured box), and the free... | | |+| `silk_state` | The silkscreen as it stands: every part's body box, its designator and comment (text, location, size, rotation, shown, Altium's measured box), and the free... | | `fusion_silk_state` | | `swap_footprint` | Replace the FIRST component on the current board with a footprint from a PcbLib at the same position, re-assigning nets by pad designator. Tracks are... | | | | `symbol_prims` | Read a SchLib component's drawing: primitive counts by kind, body rectangle, polyline bounding box, display mode and the footprint models. Read-only, use it... | | | | `xcopy_footprint` | Copy a footprint ACROSS libraries: from fromLib into toLib (opened and made current), optionally under a new name. | | |@@ -96,23 +96,23 @@ 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... | | | | `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... | | | | `export_bom` | Bill of materials export: altium_run_outjob with the assembly OutJob and the 'Folder Structure' medium as defaults. | `kicad_export_bom_csv` (partial) | `fusion_export_bom` |-| `export_gerber` | Gerber/drill export: altium_run_outjob with the fabrication OutJob and the 'Folder Structure' medium as defaults. | `kicad_export_gerber` | `fusion_export_gerbers` |+| `export_gerber` | Gerber/drill export: altium_run_outjob with the fabrication OutJob and the 'Folder Structure' medium as defaults. | `kicad_export_gerber` | `fusion_export_gerber` | | `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... | `kicad_export_gerber / kicad_export_pos` (partial) | `fusion_export_gerbers / fusion_export_cpl / fusion_export_bom` (partial) | | `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... | `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... | `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. | `kicad_install_library` | | | `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. | `kicad_install_library_bundle` | `fusion_install_library_bundle` | | `list_installed_libraries` | Every library in Altium's Installed Libraries list (read-only). | | |-| `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... | | |-| `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... | `kicad_extract_netlist` | |+| `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... | | `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... | `kicad_extract_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... | | | | `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... | `kicad_errors` (partial) | | | `pour_state` | Every polygon pour with the copper it actually poured: filled area per pour and per layer, and the pours that poured nothing. | `kicad_zone_state` | `fusion_pour_state` | | `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. | `kicad_remove_zone` | `fusion_remove_pours` | | `replicate_layout` | Copy one channel's placement to matching channels: each target keeps its anchor part where it is and every other part takes the source's offset and rotation... | | |-| `repour` | Repour every polygon on the board (Altium's Repour All) and answer the copper after. Runs outside the script engine so scoped rules apply. | | |+| `repour` | Repour every polygon on the board (Altium's Repour All) and answer the copper after. Runs outside the script engine so scoped rules apply. | | `fusion_repour` | | `routing_drc` | Design-rule violations on the current board WITH locations, plus the unrouted (ratsnest) count, as one clean/not-clean answer. | `kicad_routing_validate` (partial) | `fusion_routing_drc` |-| `run_drc` | Run the design rule check on a board and read the violation markers back. PCB:DesignRuleCheck opens a MODAL; the bridge clicks 'Run Design Rule Check'... | `kicad_run_drc` | |+| `run_drc` | Run the design rule check on a board and read the violation markers back. PCB:DesignRuleCheck opens a MODAL; the bridge clicks 'Run Design Rule Check'... | `kicad_run_drc` | `fusion_run_drc` | | `run_erc` | Electrical rules check. Same handler as altium_compile: in Altium, compiling the project IS the ERC. | `kicad_run_erc` | | | `set_design_rules` | Write a fab's design rules into the current board: clearance, track width, routing via style, hole size, annular ring, hole-to-hole and board-edge clearance... | `kicad_set_design_rules` | `fusion_set_design_rules` | | `silkscreen_prep` | Clean the silkscreen off the copper with Altium's own Tools > Silkscreen Preparation: silk clipped clear of every mask opening (pad) by the board's silk... | | |@@ -150,7 +150,7 @@ Engineering computed from the board model, not by the tool: one shared engine, s | `net_lengths` | Routed length of every net (or the ones named) on the live board, by layer with its vias; the skew inside each differential pair; and the spread of... | | | | `pin_pad_check` | Do the footprints fit their symbols? Part by part, the symbol's pin numbers (from the sheet files) against the footprint's pad names (from the board): pins... | | | | `placement_check` | Review the placement before routing: parts whose courtyards (pads and body, grown by a margin) overlap on the same side, parts off the board or over its... | `kicad_placement_validate` (partial) | |-| `read_sheet_file` | Read a schematic sheet straight from its .SchDoc file, without Altium (it need not be installed or running): every part with its designator, library... | | |+| `read_sheet_file` | Read a schematic sheet straight from its .SchDoc file, without Altium (it need not be installed or running): every part with its designator, library... | | `fusion_read_sheet_file` | | `return_path` | Where signal tracks lose their reference: for every signal net, the length of track on each layer that runs over no pour or plane copper on either... | | | | `review_board` | Design-review checks (14) over one board read; schematic checks with includeSchematic. | `kicad_lint_board` (partial) | | | `route_pair` | Route a differential pair as a pair: one centreline from the source pads' midpoint through waypoints to the destination pads' midpoint, each net offset to... | | |@@ -180,16 +180,16 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `describe` | This list - the bridge's verbs and schemas for ab's Verbs tab. | `kicad_describe` | `fusion_describe` | | `diagnostics` | Bridge-side facts for a bug report: environment variables, every Altium install found, Altium's windows, the agent status block and the cache directory. | `kicad_diagnostics` | | | `dialog_log` | What the standing dialog reaper (and the bridge's own recoveries) pressed, newest last: nuisance boxes, script-error boxes, discarded save prompts, silent... | | |-| `dismiss_dialogs` | Press one named button (default OK) on the detected Altium dialogs through UIA - no cursor, no focus steal. titles narrows it to dialogs whose title... | `kicad_dismiss_dialogs` | `fusion_dismiss_blocking_dialogs` |+| `dismiss_dialogs` | Press one named button (default OK) on the detected Altium dialogs through UIA - no cursor, no focus steal. titles narrows it to dialogs whose title... | `kicad_dismiss_dialogs` | `fusion_dismiss_dialogs` | | `ensure_licensed` | One call to get a usable Altium: launch if needed, then claim a seat (Use License via UIA). Optional escalations: sign out to force a seat release, or start... | | | | `eval` | Run a DelphiScript snippet inside Altium (optional Var block, then Begin ... End;) on the CURRENT document, or on filePath opened first. | | | | `extension_ping` | Does the AdomBridge .NET extension answer? Sends AdomBridge:Ping through the -R lane and waits up to 30 s for its result file. | | | | `foreground` | Bring Altium in front of the user - the sanctioned exception to the never-foreground rule. | | |-| `install` | Install Altium Designer on this machine, STAGED, with the rules in the verb (from 0.2.29). stage: preflight / get_installer / launch / wait / license, or... | | `fusion_install_fusion` |+| `install` | Install Altium Designer on this machine, STAGED, with the rules in the verb (from 0.2.29). stage: preflight / get_installer / launch / wait / license, or... | | `fusion_install` | | `install_extension` | Install, update or remove the AdomBridge .NET extension (the PowerShell installer shipped beside the bridge). Altium must be CLOSED. | | | | `install_receipt` | The last bundle install's full receipt (proof frame included), for a client whose install call outlived ab's budget. | | | | `instances` | Every running Altium (Designer + Designer Develop can run together). | | |-| `launch` | Start Altium (the newest numbered install, or the one install names) and wait for its main window, then hand the user's own window back. Answers... | `kicad_launch` | `fusion_start` |+| `launch` | Start Altium (the newest numbered install, or the one install names) and wait for its main window, then hand the user's own window back. Answers... | `kicad_launch` | `fusion_launch` | | `license` | Drive the License Management page (UIA first - no cursor, no foreground). | | | | `license_status` | Plain-language answer to 'what Altium licence am I on?': the state from the window title plus a capture of the License Management page. | | | | `list_commands` | Search Altium's process-launcher catalog (about 1,100 Server:Command entries parsed from the install's System/*.rcs files) by text and/or server. | | |@@ -221,7 +221,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `status` | Is Altium running, licensed, and is the resident agent alive? | `kicad_status` | | | `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... | `kicad_uninstall` | `fusion_uninstall` | | `window_info` | Altium's top-level windows plus any open dialogs, without screenshots. The cheap way to ask 'is a modal blocking the engine?'. | `kicad_window_info` | |-| `zoom_to` | Frame the PCB view on a rectangle, a part (or several) or a whole net, with a margin. | | |+| `zoom_to` | Frame the PCB view on a rectangle, a part (or several) or a whole net, with a margin. | | `fusion_zoom_to` | ## platform
reference/fusion360-1.12.0.jsonadded+206@@ -0,0 +1,206 @@+{+ "bridge": "fusion360",+ "version": "1.12.0",+ "verbs": [+ "fusion_account",+ "fusion_action_ledger",+ "fusion_activate_document",+ "fusion_addin_status",+ "fusion_alerts",+ "fusion_apply_fusion_update",+ "fusion_apply_pours",+ "fusion_aps_browse",+ "fusion_aps_create_folder",+ "fusion_aps_download",+ "fusion_aps_file_info",+ "fusion_aps_forget_browser",+ "fusion_aps_get",+ "fusion_aps_get_browser",+ "fusion_aps_open",+ "fusion_aps_recent",+ "fusion_aps_search",+ "fusion_aps_set_browser",+ "fusion_aps_set_client_id",+ "fusion_aps_signin",+ "fusion_aps_status",+ "fusion_aps_upload",+ "fusion_aps_versions",+ "fusion_assembly_bom",+ "fusion_attach_3d_package",+ "fusion_bind_library_3d",+ "fusion_board_bom",+ "fusion_board_info",+ "fusion_board_seed",+ "fusion_board_source",+ "fusion_board_stackup",+ "fusion_board_summary",+ "fusion_bodies",+ "fusion_build_library_3d",+ "fusion_cancel_run",+ "fusion_capture_library_views",+ "fusion_change_pours",+ "fusion_check_recovery",+ "fusion_claim_seat",+ "fusion_cleanup_cloud_files",+ "fusion_close_all_documents",+ "fusion_close_document",+ "fusion_close_window",+ "fusion_component_data",+ "fusion_component_pins",+ "fusion_copper_layers",+ "fusion_create_cloud_folder",+ "fusion_create_library",+ "fusion_delete_cloud_file",+ "fusion_demo",+ "fusion_demo_progress",+ "fusion_describe",+ "fusion_detect_layers",+ "fusion_dismiss_blocking_dialogs",+ "fusion_dismiss_dialogs",+ "fusion_document_info",+ "fusion_eagle_import_status",+ "fusion_electron_pan",+ "fusion_electron_run",+ "fusion_electron_select",+ "fusion_electron_zoom",+ "fusion_electronics_query",+ "fusion_execute_text_command",+ "fusion_export_3mf",+ "fusion_export_board_image",+ "fusion_export_bom",+ "fusion_export_cloud_file",+ "fusion_export_cpl",+ "fusion_export_dwg",+ "fusion_export_dxf",+ "fusion_export_eagle_source",+ "fusion_export_f3d",+ "fusion_export_fbx",+ "fusion_export_gerber",+ "fusion_export_gerbers",+ "fusion_export_iges",+ "fusion_export_lbr",+ "fusion_export_obj",+ "fusion_export_optimized_glb",+ "fusion_export_sat",+ "fusion_export_skp",+ "fusion_export_source",+ "fusion_export_step",+ "fusion_export_stl",+ "fusion_export_usdz",+ "fusion_fetch_optimized_glb",+ "fusion_generate_package",+ "fusion_get_app_state",+ "fusion_get_design_info",+ "fusion_get_parameters",+ "fusion_get_preferences",+ "fusion_import_electronics",+ "fusion_import_step",+ "fusion_inspect_bodies",+ "fusion_install",+ "fusion_install_fusion",+ "fusion_install_library_bundle",+ "fusion_interactive",+ "fusion_kill",+ "fusion_launch",+ "fusion_layer_stack",+ "fusion_layers",+ "fusion_layers_in_use",+ "fusion_library_manager",+ "fusion_library_parts",+ "fusion_list_cloud_files",+ "fusion_list_cloud_projects",+ "fusion_list_designators",+ "fusion_list_nets",+ "fusion_list_text_commands",+ "fusion_live_feed",+ "fusion_make_3d_package",+ "fusion_make_showcase_project",+ "fusion_make_test_project",+ "fusion_managed_library_create",+ "fusion_managed_library_link",+ "fusion_managed_library_pull",+ "fusion_managed_library_push",+ "fusion_managed_library_unlink",+ "fusion_mcp_call",+ "fusion_mcp_enable",+ "fusion_mcp_resources",+ "fusion_mcp_status",+ "fusion_mcp_tools",+ "fusion_move_parts",+ "fusion_narrate",+ "fusion_net_classes",+ "fusion_net_connections",+ "fusion_netlist",+ "fusion_new_electronics_from_eagle",+ "fusion_notify_owner",+ "fusion_open_board",+ "fusion_open_by_urn",+ "fusion_open_by_urn_note",+ "fusion_open_cloud_file",+ "fusion_open_design",+ "fusion_open_electronics",+ "fusion_open_lbr",+ "fusion_open_schematic",+ "fusion_physical_properties",+ "fusion_place_vias",+ "fusion_plan_library_import",+ "fusion_plan_route",+ "fusion_pour_state",+ "fusion_preflight_lbr",+ "fusion_prefs_close",+ "fusion_prefs_open",+ "fusion_prewarm",+ "fusion_prove_result",+ "fusion_read_rules",+ "fusion_read_sheet_file",+ "fusion_readiness",+ "fusion_release_seat",+ "fusion_remove_pours",+ "fusion_repour",+ "fusion_reset_workspace",+ "fusion_resolve_seat_dialog",+ "fusion_restart_for_addin",+ "fusion_ripup_nets",+ "fusion_route_net",+ "fusion_routing_drc",+ "fusion_routing_state",+ "fusion_rules_by_kind",+ "fusion_run_drc",+ "fusion_run_modeling_script",+ "fusion_save_to_cloud",+ "fusion_schematic",+ "fusion_schematic_plan",+ "fusion_schematic_run",+ "fusion_screenshot_fusion",+ "fusion_search_cloud_files",+ "fusion_set_auto_update",+ "fusion_set_design_rules",+ "fusion_set_driving_badge",+ "fusion_set_parameter",+ "fusion_set_preference",+ "fusion_set_seat_takeover",+ "fusion_set_window_sizing",+ "fusion_show_2d_board",+ "fusion_show_3d_board",+ "fusion_show_3d_package",+ "fusion_show_attributes",+ "fusion_show_footprint",+ "fusion_show_library",+ "fusion_show_project",+ "fusion_show_schematic",+ "fusion_show_symbol",+ "fusion_signin",+ "fusion_signin_2fa",+ "fusion_silk_state",+ "fusion_start",+ "fusion_state",+ "fusion_stop",+ "fusion_take_screenshot",+ "fusion_uninstall",+ "fusion_verb_times",+ "fusion_view",+ "fusion_walk_cloud_tree",+ "fusion_web_signin",+ "fusion_zoom_to"+ ]+}
verbs/coverage.json+76−25@@ -5,7 +5,7 @@ }, "compared": { "kicad": "1.0.58",- "fusion360": "1.11.44"+ "fusion360": "1.12.0" }, "tiers": { "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -63,8 +63,8 @@ "altium": "altium_board_summary", "kicad": null, "fusion360": {- "verb": "fusion_board_info",- "match": "partial"+ "verb": "fusion_board_summary",+ "match": "exact" } }, {@@ -79,21 +79,30 @@ "tier": "core", "altium": "altium_component_data", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_component_data",+ "match": "exact"+ } }, { "name": "component_pins", "tier": "core", "altium": "altium_component_pins", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_component_pins",+ "match": "exact"+ } }, { "name": "copper_layers", "tier": "core", "altium": "altium_copper_layers", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_copper_layers",+ "match": "exact"+ } }, { "name": "copy_footprint",@@ -143,7 +152,7 @@ "altium": "altium_layer_stack", "kicad": null, "fusion360": {- "verb": "fusion_board_stackup",+ "verb": "fusion_layer_stack", "match": "exact" } },@@ -152,21 +161,30 @@ "tier": "core", "altium": "altium_layers", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_layers",+ "match": "exact"+ } }, { "name": "layers_in_use", "tier": "core", "altium": "altium_layers_in_use", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_layers_in_use",+ "match": "exact"+ } }, { "name": "list_designators", "tier": "core", "altium": "altium_list_designators", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_list_designators",+ "match": "exact"+ } }, { "name": "list_library",@@ -183,7 +201,10 @@ "tier": "core", "altium": "altium_list_nets", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_list_nets",+ "match": "exact"+ } }, { "name": "move_parts",@@ -206,7 +227,10 @@ "verb": "kicad_trace_net / kicad_find_connections", "match": "partial" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_net_connections",+ "match": "exact"+ } }, { "name": "normalize_bodies",@@ -277,7 +301,10 @@ "verb": "kicad_list_design_rules", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_read_rules",+ "match": "exact"+ } }, { "name": "read_schematic",@@ -375,7 +402,10 @@ "tier": "core", "altium": "altium_rules_by_kind", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_rules_by_kind",+ "match": "exact"+ } }, { "name": "sch_connect",@@ -475,7 +505,10 @@ "tier": "core", "altium": "altium_silk_state", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_silk_state",+ "match": "exact"+ } }, { "name": "swap_footprint",@@ -592,7 +625,7 @@ "match": "exact" }, "fusion360": {- "verb": "fusion_export_gerbers",+ "verb": "fusion_export_gerber", "match": "exact" } },@@ -667,7 +700,10 @@ "tier": "native", "altium": "altium_net_classes", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_net_classes",+ "match": "exact"+ } }, { "name": "netlist",@@ -677,7 +713,10 @@ "verb": "kicad_extract_netlist", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_netlist",+ "match": "exact"+ } }, { "name": "panelize",@@ -734,7 +773,10 @@ "tier": "native", "altium": "altium_repour", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_repour",+ "match": "exact"+ } }, { "name": "routing_drc",@@ -757,7 +799,10 @@ "verb": "kicad_run_drc", "match": "exact" },- "fusion360": null+ "fusion360": {+ "verb": "fusion_run_drc",+ "match": "exact"+ } }, { "name": "run_erc",@@ -995,7 +1040,10 @@ "tier": "checks", "altium": "altium_read_sheet_file", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_read_sheet_file",+ "match": "exact"+ } }, { "name": "return_path",@@ -1193,7 +1241,7 @@ "match": "exact" }, "fusion360": {- "verb": "fusion_dismiss_blocking_dialogs",+ "verb": "fusion_dismiss_dialogs", "match": "exact" } },@@ -1231,7 +1279,7 @@ "altium": "altium_install", "kicad": null, "fusion360": {- "verb": "fusion_install_fusion",+ "verb": "fusion_install", "match": "exact" } },@@ -1265,7 +1313,7 @@ "match": "exact" }, "fusion360": {- "verb": "fusion_start",+ "verb": "fusion_launch", "match": "exact" } },@@ -1569,7 +1617,10 @@ "tier": "app", "altium": "altium_zoom_to", "kicad": null,- "fusion360": null+ "fusion360": {+ "verb": "fusion_zoom_to",+ "match": "exact"+ } }, { "name": "a365_configure",
verbs/standard.json+1−1@@ -5,7 +5,7 @@ }, "compared": { "kicad": "1.0.58",- "fusion360": "1.11.44"+ "fusion360": "1.12.0" }, "tiers": { "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",