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
kicad-lane: #29 blank cells: 19 Altium-only verbs mapped or unsupported with reasons
1 file changed
+227−132
tools/equivalents/kicad.json+227−132@@ -1,16 +1,127 @@ {+ "add_body": [+ "add_body",+ "partial",+ "a model file only; no box without one"+ ],+ "add_models": [+ "footprint_models",+ "partial"+ ],+ "add_symbol_art": [+ "add_symbol_art",+ "unsupported",+ "the chip outline is baked into the KiCad symbol itself by adom-symbol: KiCad shows it with no second copy to draw (Altium needs this because its symbol is rebuilt from KiCad's)"+ ],+ "agent_recover": [+ "agent_recover",+ "unsupported",+ "KiCad has no resident script agent to manage: the bridge reaches KiCad through kicad-cli, its built-in IPC API and KiCad's own Python per call (kicad_eval), so there is nothing to start, stop, check or recover"+ ],+ "agent_start": [+ "agent_start",+ "unsupported",+ "KiCad has no resident script agent to manage: the bridge reaches KiCad through kicad-cli, its built-in IPC API and KiCad's own Python per call (kicad_eval), so there is nothing to start, stop, check or recover"+ ],+ "agent_status": [+ "agent_status",+ "unsupported",+ "KiCad has no resident script agent to manage: the bridge reaches KiCad through kicad-cli, its built-in IPC API and KiCad's own Python per call (kicad_eval), so there is nothing to start, stop, check or recover"+ ],+ "agent_stop": [+ "agent_stop",+ "unsupported",+ "KiCad has no resident script agent to manage: the bridge reaches KiCad through kicad-cli, its built-in IPC API and KiCad's own Python per call (kicad_eval), so there is nothing to start, stop, check or recover"+ ], "apply_pours": [ "add_zone / apply_zone_plan", "exact" ],+ "apply_silkscreen": [+ "silk_fields_batch / silk_text_batch / silk_graphics_batch",+ "exact"+ ],+ "board_features": [+ "add_mounting_hole",+ "partial"+ ],+ "board_shape": [+ "board_outline",+ "exact"+ ],+ "build_footprint": [+ "fp_create",+ "partial",+ "from arguments (pads, graphics, courtyard, model) instead of a kicad2altium spec file; kicad_footprint_from_land_pattern builds one from a datasheet's numbers"+ ],+ "build_symbol_modes": [+ "build_symbol_modes",+ "unsupported",+ "KiCad symbols have two body styles (standard and De Morgan), not N display modes, and nothing reads Altium's symbol_modes spec; kicad_sym_create builds the standard body, kicad_symbol_mode shows either style"+ ],+ "check_dialogs": [+ "state / dismiss_dialogs",+ "partial",+ "state lists every KiCad window, dialogs included, each as a PNG; dismiss_dialogs clears the benign ones, or all"+ ],+ "cleanup_libs": [+ "cleanup_libs",+ "unsupported",+ "a new KiCad library starts empty (kicad_sym_create, kicad_fp_create), so there is no factory-default stray to remove"+ ], "close": [ "close", "exact" ],+ "close_all_documents": [+ "close",+ "partial",+ "closes KiCad, editors first, then the project manager; force:true discards unsaved work"+ ],+ "close_document": [+ "close_symbol_editor / close_footprint_editor / close_3d_viewer",+ "partial",+ "closes one editor window; KiCad holds one board and one schematic per project, so there is no per-document close"+ ],+ "connect_workspace": [+ "connect_workspace",+ "unsupported",+ "KiCad has no cloud workspace to connect to"+ ],+ "create_part_project": [+ "create_part_project",+ "partial",+ "around a part already installed in the Adom library (kicad_make_part_project; install_symbol and install_footprint first), one part per project"+ ], "cross_check": [ "analyze_connections", "partial" ],+ "diff_pairs": [+ "diff_pairs",+ "partial",+ "a pair is two nets named <base>+ and <base>-, <base>_P and <base>_N, or <base>P and <base>N, defined through a net class; other net names cannot be paired"+ ],+ "doc_params": [+ "doc_params",+ "partial",+ "stores only KiCad's title block fields; the rest are listed in notStored"+ ],+ "document_info": [+ "state",+ "partial",+ "every open KiCad window with the file it holds; unsaved changes show as the title's leading '*'"+ ],+ "edit_footprint": [+ "fp_edit",+ "exact",+ "a library footprint (.kicad_mod); kicad_edit_footprint is another job: it edits footprints placed on a board (fields, attributes, lock)"+ ],+ "ensure_licensed": [+ "readiness",+ "partial",+ "KiCad needs no licence or seat: kicad_readiness says it is installed and usable, kicad_launch starts it"+ ], "export_bom": [ "export_bom_csv", "partial"@@ -19,6 +130,50 @@ "export_pdf", "exact" ],+ "extension_ping": [+ "extension_ping",+ "unsupported",+ "KiCad needs no extension installed inside it: its IPC API is built in (kicad_readiness reports ipcApi), so there is nothing to install, ping or keep a receipt for"+ ],+ "footprint_primitives": [+ "footprint_graphics",+ "partial"+ ],+ "import_part": [+ "install_footprint + install_symbol",+ "partial",+ "two calls: the footprint (with its STEP wired as the 3D model) into Adom.pretty, the symbol into Adom.kicad_sym, both registered in KiCad's tables; no spec files or symbol modes"+ ],+ "install": [+ "upgrade",+ "partial",+ "KiCad's official installer in one call, not staged; refused while KiCad runs"+ ],+ "install_extension": [+ "install_extension",+ "unsupported",+ "KiCad needs no extension installed inside it: its IPC API is built in (kicad_readiness reports ipcApi), so there is nothing to install, ping or keep a receipt for"+ ],+ "install_receipt": [+ "install_receipt",+ "unsupported",+ "KiCad needs no extension installed inside it: its IPC API is built in (kicad_readiness reports ipcApi), so there is nothing to install, ping or keep a receipt for"+ ],+ "instances": [+ "state",+ "partial",+ "KiCad runs one project manager; state lists every window it owns"+ ],+ "license": [+ "license",+ "unsupported",+ "KiCad is GPL-3.0-or-later and has no licence page to drive; kicad_license_status reports that"+ ],+ "list_commands": [+ "menu_items",+ "partial",+ "a window's menu bar items (path, id, accelerator), not a command catalog"+ ], "list_library": [ "list_footprints / list_symbols", "partial"@@ -31,6 +186,20 @@ "trace_net / find_connections", "partial" ],+ "open_document": [+ "open_board / open_schematic",+ "partial"+ ],+ "open_project": [+ "open_board / open_schematic",+ "partial",+ "opens the project's board or schematic in its editor"+ ],+ "panelize": [+ "panelize",+ "partial",+ "rectangular boards only (V-score or mouse-bite tabs); a shaped board is refused"+ ], "pcb_report": [ "errors", "partial"@@ -43,10 +212,18 @@ "add_via", "exact" ],+ "read_board": [+ "board_summary",+ "partial"+ ], "read_rules": [ "list_design_rules", "exact" ],+ "read_schematic": [+ "sch_components",+ "partial"+ ], "remove_items": [ "remove_route", "partial"@@ -55,10 +232,28 @@ "remove_zone", "exact" ],+ "render_board_layers": [+ "export_svg",+ "partial"+ ], "routing_drc": [ "routing_validate", "partial" ],+ "rules_by_kind": [+ "board_rules",+ "partial"+ ],+ "run_command": [+ "send_key",+ "partial",+ "fires a menu item by its label, or a hotkey; no command parameters"+ ],+ "save": [+ "save",+ "partial",+ "the board open in the PCB editor (kicad_save_board); a schematic is saved from the Schematic Editor, which has no API"+ ], "sch_connect": [ "sch_connect_to_net / sch_no_connect / sch_wire / sch_label", "exact"@@ -71,41 +266,22 @@ "sch_place_symbol", "exact" ],+ "sch_sheet_symbol": [+ "sch_sheet_symbol",+ "partial",+ "adds the sheet and creates its child file (kicad_sch_sheet); importPins adds a pin per hierarchical label the child already has, but no labels are made on the child and the pins are not wired to the parent's nets"+ ], "sch_swap_part": [ "sch_replace_symbol", "partial" ],- "schematic_data": [- "sch_components",- "partial"- ],- "rules_by_kind": [- "board_rules",- "partial"- ],- "set_track_width": [- "modify_track",- "partial"- ],- "board_features": [- "add_mounting_hole",- "partial"- ],- "update_pcb": [- "update_pcb",+ "sch_zoom": [+ "sch_zoom", "partial",- "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"- ],- "set_outline": [- "board_outline",- "exact"- ],- "board_shape": [- "board_outline",- "exact"+ "finds the parts and returns KiCad's plot of the saved sheet cropped to them, each outlined; KiCad 10's Schematic Editor has no API, so its selection and view are not changed" ],- "footprint_primitives": [- "footprint_graphics",+ "schematic_data": [+ "sch_components", "partial" ], "selection": [@@ -113,127 +289,46 @@ "partial", "the PCB editor's selection only (kicad_get_selection); the Schematic Editor has no API for its selection" ],- "save": [- "save",- "partial",- "the board open in the PCB editor (kicad_save_board); a schematic is saved from the Schematic Editor, which has no API"- ],- "sch_sheet_symbol": [- "sch_sheet_symbol",- "partial",- "adds the sheet and creates its child file (kicad_sch_sheet); importPins adds a pin per hierarchical label the child already has, but no labels are made on the child and the pins are not wired to the parent's nets"- ],- "read_schematic": [- "sch_components",- "partial"- ],- "read_board": [- "board_summary",- "partial"- ],- "apply_silkscreen": [- "silk_fields_batch / silk_text_batch / silk_graphics_batch",- "exact"- ],- "open_document": [- "open_board / open_schematic",- "partial"+ "selftest_script_error": [+ "selftest_script_error",+ "unsupported",+ "KiCad runs no resident script engine to test: a failing kicad_eval snippet already comes back as eval_failed with its traceback" ], "set_models": [ "footprint_models", "partial" ],- "add_models": [- "footprint_models",- "partial"+ "set_outline": [+ "board_outline",+ "exact" ],- "render_board_layers": [- "export_svg",+ "set_track_width": [+ "modify_track", "partial" ],- "edit_footprint": [- "fp_edit",- "exact",- "a library footprint (.kicad_mod); kicad_edit_footprint is another job: it edits footprints placed on a board (fields, attributes, lock)"- ],- "create_part_project": [- "create_part_project",- "partial",- "around a part already installed in the Adom library (kicad_make_part_project; install_symbol and install_footprint first), one part per project"- ],- "add_body": [- "add_body",+ "setup_trial": [+ "upgrade", "partial",- "a model file only; no box without one"+ "KiCad is free with no trial or sign-in: kicad_upgrade installs it with the official installer, kicad_readiness reports whether it is ready" ],- "doc_params": [- "doc_params",- "partial",- "stores only KiCad's title block fields; the rest are listed in notStored"+ "signin": [+ "signin",+ "unsupported",+ "KiCad has no account to sign in to" ],- "diff_pairs": [- "diff_pairs",+ "signin_status": [+ "license_status", "partial",- "a pair is two nets named <base>+ and <base>-, <base>_P and <base>_N, or <base>P and <base>N, defined through a net class; other net names cannot be paired"+ "KiCad has no account or cloud workspace: kicad_license_status says so, with the installed version" ], "teardrops": [ "teardrops", "partial", "the board's default teardrop shapes (Board Setup > Teardrops); no per-call shape settings" ],- "panelize": [- "panelize",- "partial",- "rectangular boards only (V-score or mouse-bite tabs); a shaped board is refused"- ],- "check_dialogs": [- "state / dismiss_dialogs",- "partial",- "state lists every KiCad window, dialogs included, each as a PNG; dismiss_dialogs clears the benign ones, or all"- ],- "close_document": [- "close_symbol_editor / close_footprint_editor / close_3d_viewer",- "partial",- "closes one editor window; KiCad holds one board and one schematic per project, so there is no per-document close"- ],- "close_all_documents": [- "close",- "partial",- "closes KiCad, editors first, then the project manager; force:true discards unsaved work"- ],- "document_info": [- "state",- "partial",- "every open KiCad window with the file it holds; unsaved changes show as the title's leading '*'"- ],- "install": [- "upgrade",- "partial",- "KiCad's official installer in one call, not staged; refused while KiCad runs"- ],- "instances": [- "state",- "partial",- "KiCad runs one project manager; state lists every window it owns"- ],- "list_commands": [- "menu_items",- "partial",- "a window's menu bar items (path, id, accelerator), not a command catalog"- ],- "run_command": [- "send_key",- "partial",- "fires a menu item by its label, or a hotkey; no command parameters"- ],- "open_project": [- "open_board / open_schematic",- "partial",- "opens the project's board or schematic in its editor"- ],- "sch_zoom": [- "sch_zoom",+ "update_pcb": [+ "update_pcb", "partial",- "finds the parts and returns KiCad's plot of the saved sheet cropped to them, each outlined; KiCad 10's Schematic Editor has no API, so its selection and view are not changed"+ "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" ] }