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 proposals sch_batch (core) and log_tail (app), agreed by standard-lane and fusion-lane
1 file changed
+90
tools/proposed/kicad-lane.json+90@@ -2215,5 +2215,95 @@ "altium-lane", "fusion-lane" ]+ },+ {+ "name": "sch_batch",+ "tier": "core",+ "summary": "Apply a list of schematic edits to one sheet in one read and one write, all or nothing: each op is a standard schematic verb with its own arguments, seeing the sheet as the earlier ops left it.",+ "input": {+ "filePath": "the sheet (required)",+ "ops": "[{op: a standard schematic verb's name (sch_place_part, sch_connect_pins, sch_connect, sch_edit, sch_edit_label, sch_junction, sch_bus, sch_bus_entry, sch_text, sch_delete_wire, sch_split_wire, sch_move_region, sch_reset_fields, sch_update_from_library, annotate, ...), ...that verb's arguments}] (required)",+ "dryRun": "bool: report the plan, write nothing"+ },+ "output": {+ "results": "[{op, output, uuid?}] in order",+ "ercBefore": "the sheet's ERC counts before",+ "ercAfter": "and after",+ "failedOp": "the index of the op that failed (nothing is written then)",+ "mutated": "bool"+ },+ "hint": "A part placed in op 0 can be wired in op 1. A failing op aborts the whole batch: failedOp names it and the sheet is unchanged.",+ "pitfalls": [+ "A bridge whose tool cannot undo a partial batch answers partial: it says which ops ran before the failure."+ ],+ "related": [+ "build_schematic",+ "sch_place_part",+ "sch_connect_pins",+ "run_erc"+ ],+ "example": {+ "filePath": "C:/proj/board.kicad_sch",+ "ops": [+ {+ "op": "sch_place_part",+ "libId": "Device:R",+ "reference": "R9",+ "at": [+ 100,+ 80+ ]+ },+ {+ "op": "sch_connect_pins",+ "pairs": [+ [+ "R9.1",+ "U1.3"+ ]+ ]+ }+ ]+ },+ "proposedBy": "kicad-lane",+ "since": "0.26.4",+ "agreedBy": [+ "standard-lane",+ "fusion-lane"+ ]+ },+ {+ "name": "log_tail",+ "tier": "app",+ "summary": "What the tool said about itself since an offset: its own log lines and alerts (warnings and errors), so a verb that looks successful while the tool complains is caught.",+ "input": {+ "sinceOffset": "int, default 0: where the last call stopped (its next)",+ "maxBytes": "int, default 200000",+ "errorsOnly": "bool: only errors and warnings"+ },+ "output": {+ "entries": "[{level, text}] newest last",+ "next": "the offset to pass as sinceOffset next time",+ "truncated": "bool"+ },+ "hint": "Carry next from call to call to see only what is new. Read it after a verb that succeeded but left the tool looking unhappy.",+ "pitfalls": [+ "A tool that writes no log of its own answers what the bridge captured from the instances it launched."+ ],+ "related": [+ "dialog_log",+ "state",+ "diagnostics"+ ],+ "example": {+ "sinceOffset": 0,+ "errorsOnly": true+ },+ "proposedBy": "kicad-lane",+ "since": "0.26.4",+ "agreedBy": [+ "standard-lane",+ "fusion-lane"+ ] } ]