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.
main
Colby Knox
fusion-lane: reference fusion360-1.13.64; apply_pours, edit_pours and edit_tracks notes updated, each run live
4b3c786
7d ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
{
"add_body": [
"attach_3d_package",
"partial"
],
"apply_pours": [
"fusion_apply_pours",
"partial",
"pours on any copper layer with their isolate, rank, thermals and orphans, and Fusion's own fill per pour; cutouts are drawn on the top and bottom restrict layers and refused on an inner layer, as Fusion has no restrict layer there (shape that pour's outline instead); connect is direct or relief, as a Fusion pour always joins pads of its own net; relief spoke size is not settable"
],
"build_schematic": [
"schematic_plan + schematic_run",
"partial"
],
"close": [
"stop",
"exact"
],
"close_document": [
"close_document",
"exact"
],
"edit_parts": [
"edit_parts",
"exact",
"value, designator, fields and lock; dnp, excludeFromBom, excludeFromPos and mount are attributes on the part (DNP, EXCLUDE_FROM_BOM, EXCLUDE_FROM_POS, MOUNT), honoured by fusion_board_bom, fusion_bom and fusion_export_pos; Fusion's own assembly variants and CAM outputs do not read them (its VARIANT command does nothing on 2706)"
],
"sch_create": [
"sch_create",
"partial",
"adds the next sheet; page arguments (paper, title block) and child sheets (project, sheetName, at) refused"
],
"sch_hierarchy": [
"sch_hierarchy",
"partial",
"no renumber (Fusion numbers sheets by their order)"
],
"sch_page": [
"sch_page",
"partial",
"reads the page; setting it is refused (a frame part and design attributes Fusion commands do not reach)"
],
"sch_sheet_pins": [
"sch_sheet_pins",
"partial",
"lists and validates; add, edit and delete refused: a sheet symbol's pins are the module's ports"
],
"sch_split_wire": [
"sch_split_wire",
"partial",
"junction:false refused (Fusion splits a wire by placing a junction on it)"
],
"sch_update_from_library": [
"fusion_sch_update_from_library",
"partial",
"the plan: each placed part against the same-named deviceset in the .lbr files named (gates, pins, symbol drawing, attributes) and the wired pins a new symbol would drop; apply is refused because Fusion's UPDATE asks about each part in a dialog"
],
"export_ipc2581": [
"fusion_export_ipc2581",
"partial",
"IPC-2581 revision C in mode ASSEMBLY (valid against the C schema): stack-up, outline, packages, components, BOM, nets, pads, traces, vias, poured copper and drills. Solder mask, paste and silkscreen are not written; Fusion has no IPC-2581 writer of its own, so fabrication goes through export_odb."
],
"import_svg": [
"fusion_import_svg",
"partial",
"silkscreen, mask, paste and documentation layers; filled shapes are drawn as rectangles row by row, since Fusion's POLYGON asks for a signal name in a modal; copper and net refused"
],
"create_part_project": [
"fusion_make_test_project",
"partial",
"the part on a small board in a new, unsaved design; libraryPath is required; Fusion names and places the design, so projectName, outputDir and overwrite do not apply"
],
"export_library_part": [
"fusion_export_library_part",
"partial",
"one .lbr holds the symbol and the footprint (a Fusion library keeps them together); no model file: 3D packages are cloud items, listed by URN"
],
"edit_footprint": [
"fusion_edit_footprint",
"partial",
"models refused (3D packages are cloud links); an EAGLE package has no tags or attributes, so metadata is the description only"
],
"project_create": [
"fusion_project_create",
"partial",
"2, 4, 6 or 8 copper layers; fabRules recorded only; the design opens unsaved (fusion_save_to_cloud saves it)"
],
"project_info": [
"fusion_project_info",
"partial",
"the design must be open; Fusion has no text variables"
],
"project_snapshot": [
"fusion_project_snapshot",
"partial",
"a Fusion design is cloud files, not a folder: the snapshot goes to outputDir (default Documents/Adom Snapshots/<design>)"
],
"project_rename": [
"fusion_project_rename",
"partial",
"a design kept as EAGLE files; a Fusion cloud design is renamed in its data panel"
],
"find_symbol": [
"fusion_find_symbol",
"partial",
"searches the .lbr files or folder named (Fusion keeps no installed-library list a script can read)"
],
"xcopy_footprint": [
"fusion_xcopy_footprint",
"partial",
"toLib is required: an EAGLE library is a file, not a current library in an editor"
],
"set_params": [
"fusion_set_params",
"partial",
"attributes on every device of the component; comment is a COMMENT attribute; footprint joins pins to pads by number"
],
"read_symbol": [
"fusion_read_symbol",
"partial",
"one display mode (an EAGLE symbol has none); pins carry their gate"
],
"clone_symbol": [
"fusion_clone_symbol",
"partial",
"one display mode (an EAGLE symbol has none)"
],
"export_pdf": [
"fusion_export_pdf",
"partial",
"sheets and the board composite; Fusion has no assembly-drawing or fabrication-print output"
],
"doc_params": [
"fusion_doc_params",
"partial",
"the schematic's global attributes (Fusion's title-block values); the sheet is the design's schematic, not a file path"
],
"board_features": [
"fusion_board_features",
"partial",
"a fiducial is a filled copper circle with its mask opening (an EAGLE board places no loose pads); keepouts are Fusion's restrict layers"
],
"schematic_data": [
"fusion_schematic_data",
"partial",
"no ComponentKind, item or vault GUIDs (EAGLE parts have none); pins carry their pad numbers and gate"
],
"compile": [
"run_erc",
"partial",
"Fusion's ERC on the open design's schematic (messages with class, source, sheet; byClass): there is no project file to compile, so projectPath does not apply"
],
"update_pcb": [
"fusion_update_pcb",
"partial",
"the standard's preview shape: Fusion forward-annotates the board as you edit, so there is no change order to run (changeOrder is empty); execute reports executed only when sheet and board agree; removals are refused, as DELETE does nothing on a linked board"
],
"diff_pairs": [
"diff_pairs",
"partial",
"lists pairs by net names (NAME_P/NAME_N, P/N, +/-, DP/DN): Fusion has no pair object, so define and remove are refused with how to rename the nets"
],
"sch_place_part": [
"sch_place_part",
"exact",
"a deviceset from a .lbr on this machine (one file holds symbol and footprint, so pcbLib does not apply); footprint picks the variant by package; partId places that gate; a position past 1950 mm is refused (off_the_sheet); save is false by default (each Fusion save is a cloud version); a variant named with parentheses cannot be added from a text command"
],
"sch_connect": [
"sch_connect",
"partial",
"power is a net label (Fusion power symbols are library parts; nets join by name), port is an XREF label, and noerc is refused (Fusion has no No-ERC or no-connect marker: its text commands were checked on 2706)"
],
"sch_swap_part": [
"sch_swap_part",
"exact",
"REPLACE from a .lbr on this machine; the designator stays; pins are matched by pad number; where a pin ends elsewhere Fusion keeps its net, or a wire joins it (pinsJoined); multi-gate devices refused, as the standard says; without keepComment an EAGLE part keeps its old value (a device has no value of its own)"
],
"animate_view": [
"view",
"partial",
"Fusion's own camera with smooth transitions (fit, home, iso, orbit, zoom, pan) on the 3D view; the 2D board and schematic zoom with fusion_electron_zoom"
],
"license": [
"account",
"partial",
"Fusion is licensed through the Autodesk account: the signed-in account, Autodesk's licence state and whether this machine holds the seat, with use_license and release moving the seat (fusion_claim_seat, fusion_release_seat); there is no licence page to drive"
],
"eval": [
"run_modeling_script",
"partial",
"a Python snippet with Fusion's adsk API in the live session, not DelphiScript"
],
"open_project": [
"open_cloud_file",
"partial",
"opens the electronics design (its project document) from the Fusion hub by name or URN: Fusion has no project files on disk"
],
"test_board": [
"fusion_test_board",
"exact",
"libraryPath is a .lbr and pcbPath an EAGLE .brd, opened as a local design; a plain rectangular outline grows (2 mm margin) to hold appended parts (outlineGrown); any other shape stays and names them in outsideOutline"
],
"build_board": [
"fusion_build_board",
"exact",
"libraryPath is a .lbr and pcbPath an EAGLE .brd, opened as a local design and read back pin by pin from the live board; outline defaults to the parts' box plus 2 mm"
],
"footprint_from_land_pattern": [
"fusion_footprint_from_land_pattern",
"partial",
"the engine's layout written into a .lbr (silk tPlace, fab tDocu, courtyard tKeepout); no 3D body is attached (a 3D package is a Fusion cloud item): fusion_generate_body writes the STEP and fusion_attach_3d_package binds it"
],
"import_part": [
"fusion_import_part",
"partial",
"the footprint and symbol specs Altium's bridge takes, into one .lbr (pcbLib/schLib are one file in Fusion); an EAGLE symbol has one look, so one display mode is drawn (mode, default 0); a repeated pad number becomes N@2 on the same pin; the STEP binds through the component (needs symbolSpec and a signed-in Fusion)"
],
"a365_configure": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_files_upload": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_library_overview": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_library_schema": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_logout": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_oauth_begin": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_oauth_cancel": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_oauth_status": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_query": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_refresh": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"a365_status": [
"fusion_not_supported",
"unsupported",
"Altium 365 is Altium's cloud; Fusion's cloud is the Autodesk hub (fusion_aps_* search and browse, fusion_open_cloud_file, fusion_save_to_cloud)"
],
"workspace_search": [
"fusion_not_supported",
"unsupported",
"the Altium 365 workspace library; Fusion's shared libraries are library.io (fusion_managed_library_*) and hub files (fusion_aps_search)"
],
"workspace_place": [
"fusion_not_supported",
"unsupported",
"the Altium 365 workspace library; place a part from a library the design holds with fusion_sch_place_part"
],
"compile_intlib": [
"fusion_not_supported",
"unsupported",
"a Fusion library is one .lbr holding symbols, footprints and components together: there is nothing to compile"
],
"extract_intlib": [
"fusion_not_supported",
"unsupported",
"a Fusion library is one .lbr holding symbols, footprints and components together: there is nothing to extract"
],
"outjob_info": [
"fusion_not_supported",
"unsupported",
"Fusion has no OutJob: each output is its own verb (fusion_export_gerbers with the JLCPCB CAM job, fusion_export_bom, fusion_export_pdf, fusion_export_odb ...)"
],
"run_outjob": [
"fusion_not_supported",
"unsupported",
"Fusion has no OutJob: each output is its own verb (fusion_export_gerbers with the JLCPCB CAM job, fusion_export_bom, fusion_export_pdf, fusion_export_odb ...)"
],
"agent_start": [
"fusion_not_supported",
"unsupported",
"Fusion has no script agent to start: the bridge's add-in loads with Fusion (fusion_start), and fusion_restart_for_addin reloads it"
],
"agent_stop": [
"fusion_not_supported",
"unsupported",
"Fusion has no script agent: the add-in lives as long as Fusion does"
],
"agent_recover": [
"fusion_not_supported",
"unsupported",
"Fusion has no script engine to halt: a blocking dialog is cleared with fusion_dismiss_blocking_dialogs, and fusion_addin_status says whether the add-in answers"
],
"install_extension": [
"fusion_not_supported",
"unsupported",
"the bridge deploys its Fusion add-in itself on every start"
],
"install_receipt": [
"fusion_not_supported",
"unsupported",
"no installer receipt: fusion_install_library_bundle answers with what it installed"
],
"connect_workspace": [
"fusion_not_supported",
"unsupported",
"Altium's workspace picker; Fusion works in the signed-in Autodesk account's hub (fusion_account)"
],
"selftest_script_error": [
"fusion_not_supported",
"unsupported",
"a test of Altium's DelphiScript agent; Fusion runs none"
],
"symbol_mode": [
"fusion_not_supported",
"unsupported",
"an EAGLE symbol has one look: there are no display modes to show"
],
"cleanup_libs": [
"fusion_cleanup_libs",
"exact",
"a .lbr's empty leftovers removed: components with no device, footprints and symbols with nothing drawn that nothing uses"
],
"plate_vias": [
"fusion_plate_vias",
"exact",
"each unplated hole in a .lbr's footprints becomes a plated pad (EAGLE pads are always plated); one inside an SMD land is named N@k and joined to that land's net"
],
"agent_status": [
"fusion_addin_status",
"partial",
"Fusion has no script agent: the bridge's add-in is its resident code, and this says whether it is loaded and answering"
],
"extension_ping": [
"fusion_addin_status",
"partial",
"the add-in (Fusion's counterpart of the .NET extension) answering or not, with its port and version"
],
"ensure_licensed": [
"fusion_signin",
"partial",
"launches Fusion if needed and signs in; the seat comes with the Autodesk account (fusion_account shows it)"
],
"setup_trial": [
"fusion_install_fusion",
"partial",
"downloads Autodesk's installer and streams the free trial; fusion_signin finishes it"
],
"import_kicad": [
"fusion_create_library",
"partial",
"KiCad parts (footprint + symbol) into a Fusion library; not KiCad boards or schematics"
],
"build_footprint": [
"fusion_import_part",
"partial",
"the same footprint spec, through import_part with footprintSpec only"
],
"build_symbol_modes": [
"fusion_import_part",
"partial",
"the same symbol spec, through import_part; an EAGLE symbol has one look, so one display mode is drawn"
],
"swap_footprint": [
"fusion_swap_footprint",
"exact",
"on a board kept as EAGLE source (.brd); designator picks the part (default: the first)"
],
"set_models": [
"fusion_set_models",
"exact",
"a Fusion component's devices are its footprints: every other device is removed"
],
"add_models": [
"fusion_add_models",
"exact",
"each footprint becomes another device of the component; one already attached is skipped, not stacked"
],
"panelize": [
"fusion_panelize",
"exact",
"a new EAGLE board built from the open board's source (copy k's parts and nets renamed _k), opened as a local design; the board panelized is untouched"
],
"teardrops": [
"fusion_teardrops",
"partial",
"adds teardrops as named solid polygons; removing them is fusion_remove_pours on their nets or UNDO (no remove mode)"
],
"place_on_pcb": [
"fusion_test_board",
"partial",
"one footprint from a .lbr on a new board kept as EAGLE source, opened as a local design and read back; the proof frame is fusion_show_2d_board {capture:true}"
],
"place_on_sch": [
"fusion_make_showcase_project",
"partial",
"a library's components (or the ones named) on a new sheet with a board beside it; Fusion sizes and titles the sheet itself"
],
"component_classes": [
"fusion_not_supported",
"unsupported",
"an EAGLE board has net classes (fusion_net_classes, fusion_add_rule) but no component classes or rooms: group a channel by its designators (fusion_replicate_layout takes them as lists)"
],
"variants": [
"fusion_variants",
"partial",
"lists a design's assembly variants with their not-fitted parts and alternate values; making, changing or removing one is refused (not_supported): Fusion 2706 takes EAGLE's VARIANT from a text command and changes nothing"
],
"silkscreen_prep": [
"fusion_silkscreen_prep",
"partial",
"designators moved off copper where they fit (silk_designators), counted before and after; silk outside the board listed, not deleted; a footprint's own silk lines are library graphics in EAGLE and are clipped at mask openings by the fab's CAM, not on the board"
],
"selection": [
"fusion_not_supported",
"unsupported",
"Fusion does not show the user's board selection to the bridge, checked live on Fusion 2706 (2026-10-30) three ways: a ULP's ingroup() reads no part right after a GROUP, ui.activeSelections reads 0 right after a SELECT, and the electron Board's selectionSets raises InternalValidationError"
],
"diagnostics": [
"fusion_diagnostics",
"exact",
"Fusion's facts: launcher, processes, windows (sign-in, licensing), add-in answering, environment with credential values hidden"
],
"foreground": [
"fusion_foreground",
"exact",
"the user is notified why and given three seconds before Fusion comes forward"
],
"instances": [
"fusion_instances",
"partial",
"Fusion runs one instance per user: its processes, not several editions side by side"
],
"progress": [
"fusion_progress",
"exact",
"the long operation in flight, phase and verb timings, recent runs"
],
"uninstall_library": [
"fusion_not_supported",
"unsupported",
"a library Fusion offers is a file in the Autodesk hub, so taking it out means deleting that file for everyone in the hub, which the standard's uninstall never does (it leaves files alone); a hub file the AI made itself is deleted with fusion_cleanup_cloud_files"
],
"normalize_bodies": [
"fusion_not_supported",
"unsupported",
"a Fusion footprint's 3D model is a cloud 3D package placed when it is made (fusion_make_3d_package and fusion_bind_library_3d orient it on the pads; fusion_show_3d_package places one by hand): a library holds no body offsets to move"
],
"sch_sheet_symbol": [
"fusion_not_supported",
"unsupported",
"Fusion's hierarchy is modules, and a module cannot be made from a text command (EDIT 'name.m' answers nothing and the design gets no module, checked live on Fusion 2706); module instances are placed in Fusion's module dialog. fusion_sch_hierarchy reads an existing hierarchy and fusion_sch_sheet_pins its ports"
],
"list_installed_libraries": [
"fusion_list_installed_libraries",
"partial",
"Fusion's installed libraries are the hub's .flbr files (Library Manager's Hub Libraries): walked through the signed-in session to a folder depth within a time budget, so a big hub may answer complete:false"
],
"install_library": [
"fusion_install_library_bundle",
"partial",
"saves the library to the hub (where Library Manager lists it), after binding each part's 3D model; Fusion has no registry of library files to add one to"
],
"add_symbol_art": [
"fusion_add_symbol_art",
"exact",
"offline in a .lbr: the baked outline as symbol-layer lines fitted to the body box"
],
"lint_library": [
"fusion_lint_library",
"exact",
"a .lbr read offline (packages: pads, tKeepout courtyard, tPlace silk, 3D packages, description; components: pins, footprint, MPN) and judged by the shared engine"
],
"update_footprints_from_library": [
"fusion_update_footprints_from_library",
"partial",
"the plan only, against .lbr files named (a Fusion design's libraries are cloud items); apply is refused with the plan, since Fusion's UPDATE asks about each part in a dialog"
],
"render_board": [
"fusion_render_board_3d",
"exact",
"Fusion's own view of the design's 3D PCB from one side, framed on refs (marginMm), turned by rotate, and quality high through Fusion's local ray-tracer"
],
"import_design": [
"fusion_new_electronics_from_eagle",
"partial",
"format eagle only: an EAGLE .sch and its .brd into a new Fusion electronics design with the parts instantiated (Fusion's own import, run in the background)"
],
"edit_pours": [
"fusion_edit_pours",
"partial",
"minimum width, clearance, thermals on or off, rank and orphans, refilled and read back (net and layer name a pour when it is the only one there); newNet moves a pour by drawing it again with the same outline and settings, as a polygon belongs to its signal; thermal spoke width and gap are not settable"
],
"physical_properties": [
"fusion_physical_properties",
"exact"
],
"preferences": [
"fusion_preferences",
"exact",
"Fusion's appearance and navigation settings, applied live with no restart, so tool_running does not arise"
],
"select_items": [
"fusion_select_items",
"partial",
"parts by designator in the editor in front, and where is refused when the other editor is in front; verified is always false, since Fusion does not report its electronics selection back"
],
"cancel_run": [
"fusion_cancel_run",
"partial",
"library imports (fusion_create_library, fusion_install_library_bundle): the bridge's only long jobs that stop between steps"
],
"sch_no_connect": [
"fusion_not_supported",
"unsupported",
"Fusion has no no-connect marker: its text commands have none (checked live on 2706), and an EAGLE pin is marked unused by its direction in the library. Leave the pin open and approve its ERC message"
],
"sch_label": [
"fusion_sch_label",
"partial",
"a label on an existing wire at a point, and delete one; kind global is an XREF label, and hierarchical is refused (Fusion has no such label); text must name the wire's net, since a label shows its wire's net (renaming is sch_edit_label)"
],
"sch_wire": [
"fusion_sch_wire",
"exact",
"Fusion names a wire's net: net names it, else it takes the net it starts on, else a free name; save is false by default (each Fusion save is a cloud version)"
],
"place_parts": [
"fusion_place_parts",
"partial",
"a board with no schematic, position, rotation and side, read back; nets are not taken; a board linked to a schematic is refused (linked_board), since Fusion takes its parts from the sheet (sch_place_part, then move_parts)"
],
"edit_tracks": [
"fusion_edit_tracks",
"exact",
"width, layer and ends; an end moved at an angle draws the track again and deletes the old one, as Fusion's MOVE would bend it into two segments; a layer and ends change in two calls; ids are the track's net, layer and ends, as Fusion stores none"
],
"model_check": [
"fusion_model_check",
"partial",
"Fusion's models are cloud 3D packages: found means the file opens for this account; hasGeometry is null, as Fusion can't say without opening each one"
],
"extensions": [
"fusion_extensions",
"partial",
"lists the add-ins and scripts installed for this user; install and remove refused, as Fusion has no API; no update feed"
]
}