← Commit history

0.31.5: coverage reads KiCad bridge 1.0.99

Colby Knox ·ac53bd7da3 ·8d ago ·parent 953dcfa
5 files changed +54−59
README.md+1
@@ -158,6 +158,7 @@ Decisions so far (proposals from the KiCad and Fusion bridges, 2026-10-27; issue  ## Status +Version 0.31.5: coverage reads KiCad bridge 1.0.99 (twelve verbs answered under their own names). Version 0.31.4: coverage reads Fusion 360 bridge 1.13.59 (public; answers the 0.31 verbs). Version 0.31.3: the reference is Altium 0.2.89 (import_design and tool_update exact). Version 0.31.2: Fusion's 22 cloud verbs are listed in the platform tier (#29), outside the totals.
docs/coverage.md+16−16
@@ -1,6 +1,6 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.89 (the reference), KiCad bridge 1.0.98, Fusion 360 bridge 1.13.59. 100 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.89 (the reference), KiCad bridge 1.0.99, Fusion 360 bridge 1.13.59. 100 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. @@ -20,7 +20,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | Verb | What it does | Altium | KiCad | Fusion 360 | |---|---|---|---|---| | `add_body` | Put a 3D body on a footprint of a PcbLib: a STEP model, or an extruded box when no step is given. It REPLACES the footprint's existing 3D bodies (a... | `altium_add_body` | `kicad_add_body` (partial) | `fusion_attach_3d_package` (partial) |-| `add_models` | Attach one or more PCBLIB footprint models, parameters, comment and description to a SchLib component (Altium's several-footprints-per-symbol mechanism). | `altium_add_models` | `kicad_footprint_models` (partial) | `fusion_add_models` |+| `add_models` | Attach one or more PCBLIB footprint models, parameters, comment and description to a SchLib component (Altium's several-footprints-per-symbol mechanism). | `altium_add_models` | `kicad_add_models` (partial) | `fusion_add_models` | | `add_symbol_art` | Draw the chip-outline artwork (the chip-thumbnailer polylines adom-symbol baked into the KiCad symbol) into a SchLib component, fitted to its body... | `altium_add_symbol_art` | `kicad_add_symbol_art` | `fusion_add_symbol_art` | | `align_parts` *proposed* | Line parts up on a common left, right, top, bottom or centre line, or space them evenly, by courtyard box or by anchor point. One undo step, with... | `altium_align_parts` | `kicad_align_parts` | `fusion_align_parts` | | `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` |@@ -61,10 +61,10 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `project_create` *proposed* | Create a new project folder with a project file, an empty schematic and an empty board (2 to 32 copper layers), with a title and text variables. | `altium_project_create` | `kicad_project_create` | `fusion_project_create` (partial) | | `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,... | `altium_project_info` | `kicad_project_info` | `fusion_project_info` (partial) | | `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... | `altium_project_rename` | `kicad_project_rename` | `fusion_project_rename` (partial) |-| `read_board` | ONE round trip: components, nets, layers, copper, rules, occupancy, outline. | `altium_read_board` | `kicad_board_summary` (partial) | `fusion_read_board` |+| `read_board` | ONE round trip: components, nets, layers, copper, rules, occupancy, outline. | `altium_read_board` | `kicad_read_board` | `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_read_schematic` |+| `read_schematic` | Components on the CURRENT schematic sheet (designator, library reference, comment, position, parameters) in one agent round trip. | `altium_read_schematic` | `kicad_read_schematic` | `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` |@@ -105,9 +105,9 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `sch_text` *proposed* | Add free text to a sheet (a note, a title, a design comment) with size, angle, justification, bold and italic. Text has no electrical meaning. One undo step. | `altium_sch_text` | `kicad_sch_text` | `fusion_sch_text` | | `sch_trace_point` *proposed* | Everything electrically connected at a point on a sheet: the wires, labels, pins, junctions, sheet pins and no-connect markers there, and for each net they... | `altium_sch_trace_point` | `kicad_sch_trace_point` | `fusion_sch_trace_point` | | `sch_wire` *proposed* | Draw a wire through given points on a sheet, in the same units as the other sch_* wiring verbs. One undo step. |  | `kicad_sch_wire` | `fusion_sch_wire` |-| `schematic_data` | Components on a schematic sheet (filePath, else the CURRENT sheet) with their pins (number, name, electrical type), position and orientation. designator... | `altium_schematic_data` | `kicad_sch_components` (partial) | `fusion_schematic_data` (partial) |+| `schematic_data` | Components on a schematic sheet (filePath, else the CURRENT sheet) with their pins (number, name, electrical type), position and orientation. designator... | `altium_schematic_data` | `kicad_schematic_data` | `fusion_schematic_data` (partial) | | `set_layer_count` *proposed* | Set the board's copper layer count (2, 4, 6 or 8): the layer table and the stack-up, keeping the board thickness. | `altium_set_layer_count` | `kicad_set_layer_count` | `fusion_set_layer_count` |-| `set_models` | Replace every footprint model on a SchLib component with ONE PCBLIB model (set_params footprint and add_models APPEND, which is how a symbol ends up with two). | `altium_set_models` | `kicad_footprint_models` (partial) | `fusion_set_models` |+| `set_models` | Replace every footprint model on a SchLib component with ONE PCBLIB model (set_params footprint and add_models APPEND, which is how a symbol ends up with two). | `altium_set_models` | `kicad_set_models` | `fusion_set_models` | | `set_outline` | Reshape the current board's outline (a rectangle with rounded corners, or a polygon). One undo step. | `altium_set_outline` | `kicad_board_outline` | `fusion_set_outline` | | `set_params` | Set parameters on a SchLib component, optionally its comment, and optionally link a footprint by name. | `altium_set_params` | `kicad_set_params` | `fusion_set_params` (partial) | | `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... | `altium_set_track_width` | `kicad_set_track_width` | `fusion_set_track_width` |@@ -158,7 +158,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `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... | `altium_net_classes` | `kicad_net_classes` | `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... | `altium_netlist` | `kicad_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... | `altium_panelize` | `kicad_panelize` (partial) | `fusion_panelize` |-| `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... | `altium_pcb_report` | `kicad_errors` (partial) | `fusion_pcb_report` |+| `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... | `altium_pcb_report` | `kicad_pcb_report` | `fusion_pcb_report` | | `physical_properties` *proposed* | Per component: volume, mass, density, surface area and centre of mass, from the tool's own materials. A tool with no materials or part masses answers... |  |  | `fusion_physical_properties` | | `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) |@@ -178,7 +178,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `symbol_mode` | Show one display mode (0 = Normal, 1.. = alternates) of the CURRENT SchLib component in the editor and capture a frame. Drives the editor's own mode toggle,... | `altium_symbol_mode` | `kicad_symbol_mode` | unsupported | | `teardrops` | Add (or remove) teardrops with Altium's own Tools > Teardrops: on vias and through-hole pads, SMD pads, track width changes and T-junctions, for the whole... | `altium_teardrops` | `kicad_teardrops` (partial) | `fusion_teardrops` (partial) | | `uninstall_library` | Remove libraries from Altium's Installed Libraries: the inverse of install_library / install_library_bundle. Library files are never touched. | `altium_uninstall_library` | `kicad_uninstall_library` | unsupported |-| `update_pcb` | Design > Update PCB Document from the schematic (the engineering change order): parts added, removed or renamed, nets and footprints updated on the board.... | `altium_update_pcb` | `kicad_update_pcb` (partial) | `fusion_update_pcb` (partial) |+| `update_pcb` | Design > Update PCB Document from the schematic (the engineering change order): parts added, removed or renamed, nets and footprints updated on the board.... | `altium_update_pcb` | `kicad_update_pcb_from_schematic` (partial) | `fusion_update_pcb` (partial) | | `variants` | Assembly variants of a project (which parts are fitted on which build): list them, make or change one with not-fitted parts (or put parts back), or remove... | `altium_variants` | `kicad_variants` | `fusion_variants` (partial) |  ## checks@@ -240,10 +240,10 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `agent_stop` | Stop the selected instance's resident agent loop (drops a stop file and waits up to 12 s for the heartbeat to go stale). | `altium_agent_stop` | unsupported | unsupported | | `animate_view` | Camera/zoom choreography on the current document - native Altium camera commands, animated by Altium itself. | `altium_animate_view` | `kicad_animate_view` | `fusion_view` (partial) | | `cancel_run` *proposed* | Stop the bridge's own long job, between steps, keeping what is done. With nothing to stop it answers cancelRequested:false and a reason. It never claims to... |  |  | `fusion_cancel_run` (partial) |-| `check_dialogs` | List every Altium dialog currently open, classified, each with a screenshot (the only way to READ one: Altium paints its dialog text). | `altium_check_dialogs` | `kicad_state / kicad_dismiss_dialogs` (partial) | `fusion_check_dialogs` |+| `check_dialogs` | List every Altium dialog currently open, classified, each with a screenshot (the only way to READ one: Altium paints its dialog text). | `altium_check_dialogs` | `kicad_check_dialogs` | `fusion_check_dialogs` | | `close` | Polite close (releases the licence seat). Frees a script engine parked on a breakpoint first (Altium refuses to close over one). discardChanges:true answers... | `altium_close` | `kicad_close` | `fusion_stop` |-| `close_all_documents` *proposed* | Close every open document without a save dialog. Unsaved work is never lost by default: a document with unsaved changes stays open and is listed, unless... | `altium_close_all_documents` | `kicad_close` (partial) | `fusion_close_all_documents` |-| `close_document` | Close ONE open document by path through its document handle. Never saves. | `altium_close_document` | `kicad_close_symbol_editor / kicad_close_footprint_editor / kicad_close_3d_viewer` (partial) | `fusion_close_document` |+| `close_all_documents` *proposed* | Close every open document without a save dialog. Unsaved work is never lost by default: a document with unsaved changes stays open and is listed, unless... | `altium_close_all_documents` | `kicad_close_all_documents` | `fusion_close_all_documents` |+| `close_document` | Close ONE open document by path through its document handle. Never saves. | `altium_close_document` | `kicad_close_document` | `fusion_close_document` | | `connect_workspace` | Open Altium's workspace picker (the 'Not Connected' menu) and return a screenshot with a coordMap. The list is a custom control with no UIA children, so the... | `altium_connect_workspace` | unsupported | unsupported | | `cross_probe` *proposed* | From a schematic part to the board part linked to it, and back, by designator, the schematic symbol's id or its sheet path; optionally select them in the tool. | `altium_cross_probe` | `kicad_cross_probe` | `fusion_cross_probe` | | `demo` | The tour. Default: one background beat per call with a screenshot. live:true = the narrated FOREGROUND show: ab caption + document + in-bridge camera... | `altium_demo` | `kicad_demo` | `fusion_demo` |@@ -252,7 +252,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `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... | `altium_dialog_log` | `kicad_dialog_log` | `fusion_dialog_log` | | `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... | `altium_dismiss_dialogs` | `kicad_dismiss_dialogs` | `fusion_dismiss_dialogs` | | `document_info` *proposed* | The active document: its name, what kind it is, whether it has unsaved changes, where it is saved and which version it is. Read only; opens nothing. | `altium_document_info` | `kicad_document_info` | `fusion_document_info` |-| `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... | `altium_ensure_licensed` | `kicad_readiness` (partial) | `fusion_signin` (partial) |+| `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... | `altium_ensure_licensed` | `kicad_ensure_licensed` | `fusion_signin` (partial) | | `eval` | Run a DelphiScript snippet inside Altium (optional Var block, then Begin ... End;) on the CURRENT document, or on filePath opened first. | `altium_eval` | `kicad_eval` | `fusion_run_modeling_script` (partial) | | `export_spice` *proposed* | Write the design's SPICE netlist with the tool's own exporter, and say what it holds. | `altium_export_spice` | `kicad_export_spice` | `fusion_export_spice` | | `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. | `altium_extension_ping` | unsupported | `fusion_addin_status` (partial) |@@ -261,7 +261,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `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... | `altium_install` | `kicad_upgrade` (partial) | `fusion_install` | | `install_extension` | Install, update or remove the AdomBridge .NET extension (the PowerShell installer shipped beside the bridge). Altium must be CLOSED. | `altium_install_extension` | unsupported | unsupported | | `install_receipt` | The last bundle install's full receipt (proof frame included), for a client whose install call outlived ab's budget. | `altium_install_receipt` | unsupported | unsupported |-| `instances` | Every running Altium (Designer + Designer Develop can run together). | `altium_instances` | `kicad_state` (partial) | `fusion_instances` (partial) |+| `instances` | Every running Altium (Designer + Designer Develop can run together). | `altium_instances` | `kicad_instances` | `fusion_instances` (partial) | | `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... | `altium_launch` | `kicad_launch` | `fusion_launch` | | `library_views` *proposed* | Pictures of library parts for review, each as an image file: the schematic symbol, the footprint (pads and layers), the 3D body seated on the footprint, and... | `altium_library_views` | `kicad_library_views` | `fusion_library_views` | | `license` | Drive the License Management page (UIA first - no cursor, no foreground). | `altium_license` | unsupported | `fusion_account` (partial) |@@ -277,14 +277,14 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `readiness` | The one-call gate: is Altium installed, running, licensed, and is the resident agent alive? Answers with Altium closed and never touches the script engine. | `altium_readiness` | `kicad_readiness` | `fusion_readiness` | | `run_command` | Run an Altium process (Server:Command) through the agent, on the CURRENT document or on filePath opened first. | `altium_run_command` | `kicad_send_key` (partial) | `fusion_run_command` | | `run_script` | One shot: run a procedure of YOUR OWN .PrjScr through Altium's -R command line. Only for when the agent is NOT resident. | `altium_run_script` | `kicad_run_script` | `fusion_run_script` |-| `save` | Save the focused document, or the document at filePath (opened first if need be, saved by its path, never whatever happens to have focus). | `altium_save` | `kicad_save` (partial) | `fusion_save` |+| `save` | Save the focused document, or the document at filePath (opened first if need be, saved by its path, never whatever happens to have focus). | `altium_save` | `kicad_save` | `fusion_save` | | `sch_zoom` | Find parts on a sheet: select them (everything else deselected), frame the view on them and return a proof frame. The schematic half of cross-probing (the... | `altium_sch_zoom` | `kicad_sch_zoom` (partial) | `fusion_sch_zoom` | | `select_items` *proposed* | Select parts by designator on the board or the sheet, or clear the selection. A bridge that cannot select on one of them refuses it by name. verified says... |  | `kicad_select_items` | `fusion_select_items` (partial) | | `select_net` | Select one net as a whole on the current board (tracks, arcs, vias, pads, pours) and nothing else, optionally framing it; no net clears the selection. | `altium_select_net` | `kicad_select_net` | `fusion_select_net` | | `selection` | What the user has selected in the current board (components with position mm, rotation, side, footprint, size) or sheet (components with location mils and... | `altium_selection` | `kicad_selection` (partial) | unsupported | | `selftest_script_error` | Regression test for the script-error safety net (from 0.2.23): makes the agent raise a REAL DelphiScript runtime error on purpose and checks that the bridge... | `altium_selftest_script_error` | unsupported | unsupported | | `set_layer_visibility` | Show or hide one layer of the current board (by layer id) and refresh the view and the layer tabs. | `altium_set_layer_visibility` | `kicad_set_layer_visibility` | `fusion_set_layer_visibility` |-| `setup_trial` | Onboarding state machine: from nothing to a working trial. Each call reports the stage it found (install / launch / signin / done) and the ONE next action;... | `altium_setup_trial` | `kicad_upgrade` (partial) | `fusion_install_fusion` (partial) |+| `setup_trial` | Onboarding state machine: from nothing to a working trial. Each call reports the stage it found (install / launch / signin / done) and the ONE next action;... | `altium_setup_trial` | `kicad_setup_trial` | `fusion_install_fusion` (partial) | | `show_2d_board` | Open a .PcbDoc, switch to 2D, zoom to fit, and return a proof frame. With no filePath it opens the bundled Bluetooth Sentinel board. | `altium_show_2d_board` | `kicad_show_2d_board` | `fusion_show_2d_board` | | `show_3d_board` | Open a .PcbDoc, switch to 3D, zoom to fit, and return a proof frame. With no filePath it opens the bundled Bluetooth Sentinel board. | `altium_show_3d_board` | `kicad_show_3d_board` | `fusion_show_3d_board` | | `show_3d_chip` | Open a PcbLib member in the footprint editor in 3D, zoom to fit, and capture a proof frame of the part's 3D body. | `altium_show_3d_chip` | `kicad_show_3d_chip` | `fusion_show_3d_chip` |@@ -294,7 +294,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `show_schematic` | Open a .SchDoc, zoom to fit, and return a proof frame. With no filePath it opens the bundled Bluetooth Sentinel top sheet. | `altium_show_schematic` | `kicad_show_schematic` | `fusion_show_schematic` | | `show_symbol` | Open a SchLib member in the Symbol editor and capture a background proof. | `altium_show_symbol` | `kicad_show_symbol` | `fusion_show_symbol` | | `signin` | Report-only alias of altium_signin_status: it does NOT sign anyone in. Signing in to Altium is a browser flow only the human can complete. | `altium_signin` | unsupported | `fusion_signin` |-| `signin_status` | Account and Altium 365 workspace connection as Altium's own UI reports it: licence state from the title, and whether the workspace menu reads 'Not Connected'. | `altium_signin_status` | `kicad_license_status` (partial) | `fusion_signin_status` |+| `signin_status` | Account and Altium 365 workspace connection as Altium's own UI reports it: licence state from the title, and whether the workspace menu reads 'Not Connected'. | `altium_signin_status` | `kicad_signin_status` | `fusion_signin_status` | | `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` |
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "eda-bridge-standard",-  "version": "0.31.4",+  "version": "0.31.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+34−40
@@ -1,12 +1,12 @@ {- "standard": "0.31.4",+ "standard": "0.31.5",  "reference": {   "bridge": "altium",   "version": "0.2.89"  },  "proposed": 100,  "compared": {-  "kicad": "1.0.98",+  "kicad": "1.0.99",   "fusion360": "1.13.59"  },  "tiers": {@@ -44,8 +44,9 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_footprint_models",-    "match": "partial"+    "verb": "kicad_add_models",+    "match": "partial",+    "note": "KiCad has one Footprint field: the first model goes there when it is empty, and every model joins the symbol's footprint filters, which KiCad offers but a part doesn't switch between"    },    "fusion360": {     "verb": "fusion_add_models",@@ -756,8 +757,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_board_summary",-    "match": "partial"+    "verb": "kicad_read_board",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_read_board",@@ -807,8 +808,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_sch_components",-    "match": "partial"+    "verb": "kicad_read_schematic",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_read_schematic",@@ -1509,8 +1510,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_sch_components",-    "match": "partial"+    "verb": "kicad_schematic_data",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_schematic_data",@@ -1544,8 +1545,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_footprint_models",-    "match": "partial"+    "verb": "kicad_set_models",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_set_models",@@ -2314,8 +2315,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_errors",-    "match": "partial"+    "verb": "kicad_pcb_report",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_pcb_report",@@ -2621,7 +2622,7 @@    "kicad": {     "verb": "kicad_teardrops",     "match": "partial",-    "note": "the board's default teardrop shapes (Board Setup > Teardrops); no per-call shape settings"+    "note": "the board's default teardrop shapes (Board Setup > Teardrops), and tracks and tJunctions share KiCad's one Track to track box; force:true is refused, because KiCad has no such mode"    },    "fusion360": {     "verb": "fusion_teardrops",@@ -2656,9 +2657,9 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_update_pcb",+    "verb": "kicad_update_pcb_from_schematic",     "match": "partial",-    "note": "compares the schematic with any board (kicad_update_pcb_from_schematic) but applies the changes to a closed board file only; KiCad's API has no Update PCB from Schematic"+    "note": "applies to a closed board file only; a board open in KiCad is refused, because KiCad's API has no Update PCB from Schematic and a standalone PCB editor can't run it"    },    "fusion360": {     "verb": "fusion_update_pcb",@@ -3486,9 +3487,9 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_state / kicad_dismiss_dialogs",-    "match": "partial",-    "note": "state lists every KiCad window, dialogs included, each as a PNG; dismiss_dialogs clears the benign ones, or all"+    "verb": "kicad_check_dialogs",+    "match": "exact",+    "note": "shot is the path of the saved picture, not base64"    },    "fusion360": {     "verb": "fusion_check_dialogs",@@ -3521,9 +3522,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_close",-    "match": "partial",-    "note": "closes KiCad, editors first, then the project manager; force:true discards unsaved work"+    "verb": "kicad_close_all_documents",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_close_all_documents",@@ -3539,9 +3539,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_close_symbol_editor / kicad_close_footprint_editor / kicad_close_3d_viewer",-    "match": "partial",-    "note": "closes one editor window; KiCad holds one board and one schematic per project, so there is no per-document close"+    "verb": "kicad_close_document",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_close_document",@@ -3696,9 +3695,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_readiness",-    "match": "partial",-    "note": "KiCad needs no licence or seat: kicad_readiness says it is installed and usable, kicad_launch starts it"+    "verb": "kicad_ensure_licensed",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_signin",@@ -3859,9 +3857,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_state",-    "match": "partial",-    "note": "KiCad runs one project manager; state lists every window it owns"+    "verb": "kicad_instances",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_instances",@@ -4136,8 +4133,7 @@    },    "kicad": {     "verb": "kicad_save",-    "match": "partial",-    "note": "the board open in the PCB editor (kicad_save_board); a schematic is saved from the Schematic Editor, which has no API"+    "match": "exact"    },    "fusion360": {     "verb": "fusion_save",@@ -4258,9 +4254,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_upgrade",-    "match": "partial",-    "note": "KiCad is free with no trial or sign-in: kicad_upgrade installs it with the official installer, kicad_readiness reports whether it is ready"+    "verb": "kicad_setup_trial",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_install_fusion",@@ -4431,9 +4426,8 @@     "match": "exact"    },    "kicad": {-    "verb": "kicad_license_status",-    "match": "partial",-    "note": "KiCad has no account or cloud workspace: kicad_license_status says so, with the installed version"+    "verb": "kicad_signin_status",+    "match": "exact"    },    "fusion360": {     "verb": "fusion_signin_status",
verbs/standard.json+2−2
@@ -1,12 +1,12 @@ {- "standard": "0.31.4",+ "standard": "0.31.5",  "reference": {   "bridge": "altium",   "version": "0.2.89"  },  "proposed": 100,  "compared": {-  "kicad": "1.0.98",+  "kicad": "1.0.99",   "fusion360": "1.13.59"  },  "tiers": {