← Commit history

1.0.99: 1.0.99: fourteen more of the standard's verbs under their own names, and update_pcb and teardrops in the standard's shape.

Colby Knox ·54eb46ab1e ·8d ago ·parent 6f4dd3e
- **kicad_read_board:** the whole board in one read: components, nets, layers, copper, rules, occupancy, outline. sections picks some, limit caps each list and truncated names the capped ones. - **kicad_read_schematic and kicad_schematic_data:** one sheet, for filePath or the sheet open in the Schematic Editor. - Positions are mils from the sheet's lower-left grid point, y up. - schematic_data adds each pin's number, name, electrical ordinal (with KiCad's own type name beside it), position, orientation and length. - **kicad_pcb_report:** numbers instead of pixels, for a board, a .pretty library or one .kicad_mod. - **kicad_instances:** every running KiCad process. - **kicad_check_dialogs:** every open dialog with its buttons, category, safe action, meaning and a screenshot. It answers nothing. - **kicad_save:** saves a board through KiCad's API and a schematic through the Schematic Editor's File > Save, so schematics can now be saved. It replaces the alias to kicad_save_board, which stays as it was. - **kicad_close_document:** closes one board or schematic by path and never saves. Unsaved edits are discarded, as the standard says. - **kicad_close_all_documents:** closes every editor. Unsaved work stays open and is listed unless save or discardUnsaved says otherwise. KiCad's project manager stays up. - **kicad_ensure_licensed, kicad_signin_status, kicad_setup_trial:** the standard's onboarding answers. KiCad needs no licence or account, and ensure_licensed starts it if it is not running. - **kicad_set_models and kicad_add_models:** a library symbol's footprint link, filters, parameters, comment and description. KiCad has one Footprint field, so add_models puts further footprints in the symbol's footprint filters. - **kicad_update_pcb (kicad_update_pcb_from_schematic):** takes execute, allowRemovals and keepBoardOnly, and projectPath alone names the board. The reply adds preview, changeOrder, executed, afterExecute, board, dialogs and steps. execute:true refuses while removeParts is not empty unless allowRemovals or keepBoardOnly says what to do. apply:true is unchanged. A board open in KiCad is still refused: use KiCad's own Update PCB from Schematic there. - **kicad_teardrops takes the standard's arguments and defaults:** - Behaviour changes: Track to track is now on by default, and the board is now saved by default (save:false leaves it unsaved). - tracks and tJunctions both answer KiCad's one Track to track box. vias also covers through-hole pads unless pthPads says otherwise. - filePath is optional. force:true is refused, because KiCad has no such mode. - The reply adds teardropsBefore, teardropsAfter, steps and dialogsLeft. Tested on KiCad 10.0.8 (battery 370/0/1 pass/fail/skip on DESKTOP-BAR6S0F).
1 file changed +16−3
README.md+16−3
@@ -257,7 +257,7 @@ viewer. This is how every 3D shot above exists.  <!-- verbs:start (tools/readme_verbs.py writes this) --> -Every verb of this build (342, `kicad_describe` is the live catalog with inputs, hints and pitfalls). A name marked *standard* is the EDA Bridge Standard's name for the verb after the arrow.+Every verb of this build (355, `kicad_describe` is the live catalog with inputs, hints and pitfalls). A name marked *standard* is the EDA Bridge Standard's name for the verb after the arrow.  **Board model and reads (EDA Bridge Standard)** (12) @@ -388,7 +388,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_place_decoupling` | Plan positions for decoupling capacitors beside an IC's power pins (each cap just outside the courtyard, power pad facing its pin), dryRun by default; apply moves them through kicad_move_footprint's live commit as one Undo step. | | `kicad_placement_state` | Every footprint with its courtyard box, side, pose, pads and nets, the board outline, the nets each footprint touches and a ratsnest estimate: the input an AI needs to place a board. | | `kicad_placement_validate` | Check the placement: courtyard overlaps between every footprint pair, footprints outside the outline or parked, the ratsnest total, and KiCad DRC filtered to placement-class violations. |-| `kicad_save` | *standard* → `kicad_save_board` |+| `kicad_save` | Save the document at filePath, or the topmost open board or sheet (the standard's save): a board through KiCad's API, a schematic through the Schematic Editor's own File > Save. | | `kicad_save_board` | Save the board open in the PCB editor (File > Save through the IPC API) and confirm the file on disk matches the editor. | | `kicad_score_placement` | Score a placement 0 to 100 with named deductions: courtyard overlaps, parts off the board, connectors away from the edge, decoupling caps far from their IC's power pin, and ratsnest length. | | `kicad_select_clear` | Clear the live PCB editor's selection. |@@ -477,7 +477,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_project_rename` | Rename a project: the .kicad_pro, root .kicad_sch, .kicad_pcb, .kicad_prl (and .kicad_dru, backups folder), with the references inside updated (project file entries, every schematic's instance headers, the board's sheet references and title). Refused while KiCad has the project open. | | `kicad_project_snapshot` | Timestamped copy of the project's files into <project>/snapshots/<stamp>[-label]/, plus schematic and board PDFs made with kicad-cli. | -**Windows, editors, install and the bridge** (159)+**Windows, editors, install and the bridge** (172)  | Verb | What it does | |---|---|@@ -485,6 +485,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_3d_viewer_settings` | Read or set the 3D viewer's model-visibility toggles (SMD, through-hole, virtual, not-in-POS, DNP) that can hide every chip body. | | `kicad_activate_document` | Make a board or schematic the current one, in the background (the standard's activate_document): KiCad's verbs take the file's path, and a board opened here is the one the PCB editor's API serves. | | `kicad_add_body` | Put a 3D body (a STEP or VRML model) on a library footprint. It REPLACES the footprint's models unless keepExisting:true, so a re-import never stacks a second body. |+| `kicad_add_models` | Attach footprints, parameters, comment and description to a library symbol (the standard's add_models). KiCad has one Footprint field: the first model goes there when it is empty, and every model joins the symbol's footprint filters. | | `kicad_add_symbol_art` | Draw artwork (polylines: a chip outline, a logo) inside a library symbol's body rectangle, scaled to fit with a margin and centred, keeping its aspect; the art comes as point lists or from another symbol's polylines (adom-symbol's baked chip outline). | | `kicad_agent_recover` | Recover a halted script agent (the standard's agent_recover). Not in KiCad: 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, so there is nothing to start, stop, check or recover. | | `kicad_agent_start` | Start the tool's resident script agent (the standard's agent_start). Not in KiCad: 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, so there is nothing to start, stop, check or recover. |@@ -502,6 +503,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_build_board` | Build a NEW board from a parts list and a netlist: the outline (a rectangle with rounded corners allowed, or a polygon), every footprint from its library placed by its own origin, pad nets assigned, saved; then read back pin by pin. | | `kicad_build_schematic` | Draw a design's schematic from its netlist with library symbols, as a new sheet (and project): one column per block, every part placed, a wire stub and a net label on every connected pin, the title block filled; then KiCad's netlist of it checked against the nets given, pin by pin, and ERC run. | | `kicad_build_symbol_modes` | Give a library symbol its De Morgan alternate body (KiCad's second display mode): the alternate drawing for every unit, the standard body's pins copied with any pin shapes changed (inverted inputs), and the symbol marked as having two body styles. |+| `kicad_check_dialogs` | List every KiCad dialog open right now, classified, each with its buttons, what it means and what is safe to do, and a screenshot (the standard's check_dialogs). Answers nothing, closes nothing. | | `kicad_check_for_updates` | Read-only: installed KiCad vs latest stable. | | `kicad_check_orientation` | Advisory: two-pad parts whose rotation could be better. Each part is scored at 0, 90, 180 and 270 degrees by airline length (a net's spanning tree, or for a plane-like net the distance to its nearest pad); parts whose best turn saves minImprovementMm are listed. Nothing is moved. | | `kicad_cleanup_libs` | Clean a symbol or footprint library: the parts no given project uses, and parts that repeat another part under a different name (same pins and graphics, or same pads and graphics). A plan by default; apply removes the names you list. |@@ -509,6 +511,8 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_clone_symbol` | Copy a symbol inside a .kicad_sym under a new name, every unit and body style included. | | `kicad_close` | Close KiCad (editors first, then the project manager). | | `kicad_close_3d_viewer` | Close the 3D viewer window. |+| `kicad_close_all_documents` | Close every open board, schematic and library editor without a save dialog (the standard's close_all_documents); unsaved work stays open and is listed unless save or discardUnsaved says what to do. |+| `kicad_close_document` | Close ONE open board or schematic by its path, never saving (the standard's close_document): the editor window goes, KiCad and the project stay. | | `kicad_close_footprint_editor` | Close the Footprint Editor window. | | `kicad_close_symbol_editor` | Close the Symbol Editor window. | | `kicad_compile` | Check a project's schematic the way a compile does: KiCad's ERC on the root sheet (hierarchy followed) and the netlist, with the messages counted by class and the net and part counts. |@@ -530,6 +534,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_edit_parts` | *standard* → `kicad_edit_footprint` | | `kicad_edit_pours` | Change existing copper pours (zones) in place without redrawing them: clearance, minimum width, thermal reliefs (on/off, spoke width, gap) or the pad connection, priority, the net, and whether islands are kept; then refill (the standard's edit_pours). | | `kicad_enable_software_opengl` | LAST-RESORT fallback: deploy Mesa llvmpipe software OpenGL into KiCad's bin so it renders on a GPU-less host (Hyper-V/RDP/headless). SLOW (CPU). Never suggest proactively. |+| `kicad_ensure_licensed` | One call to a usable KiCad (the standard's ensure_licensed): KiCad needs no seat or sign-in, so this says it is free and starts it if it is not running. | | `kicad_eval` | Run a Python snippet with KiCad's pcbnew module, headless: with filePath the board is loaded as `board`; set `result` to return a value as JSON. | | `kicad_extension_ping` | Ping the bridge's extension inside the tool (the standard's extension_ping). Not in KiCad: KiCad needs no extension installed inside it: its IPC API is built in, so there is nothing to install, ping or keep a receipt for. | | `kicad_extract_netlist` | Extract the full netlist from a schematic: every component and every net with its nodes (read-only, via kicad-cli). |@@ -545,6 +550,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_impedance` | The track width for a target impedance (and the pair width and gap for a differential target) on each copper layer, from the board's own stack-up; optionally the width or pair rules for kicad_custom_rules. | | `kicad_import_design` | Bring a board from another tool into a NEW KiCad project through kicad-cli's importer: eagle, altium, pads, cadstar, fabmaster, pcad or solidworks (the standard's import_design). The source files are never changed. | | `kicad_import_step` | Place a STEP as free 3D geometry with the board (the standard's import_step). Not in KiCad: KiCad places 3D models only as a footprint's own model. |+| `kicad_instances` | Every running KiCad process (the standard's instances): the project manager and any standalone editors, with pid and version. | | `kicad_ipc_api` | Read or flip KiCad's IPC API server switch (Preferences > Plugins) that live routing needs. | | `kicad_jlcpcb_order` | A JLCPCB order in one call: the board checked against JLCPCB's fab limits, the Gerbers and drill zipped the way JLCPCB's order page takes them, the JLCPCB BOM and pick-and-place (CPL), the assembly-tier check and the order-form values, in one folder with every issue in one list. | | `kicad_launch` | Cold-start KiCad (project manager) when nothing is running. |@@ -571,6 +577,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_open_symbol_editor` | Open the Symbol Editor (optionally at a symbol). | | `kicad_panelize` | Step a rectangular board into a manufacturing panel: rows x cols copies, each copy's nets renamed B<n>-<net>, rails, three tooling holes and three fiducials; separated by V-score (copies abutting, V-cut lines on Cmts.User) or mouse-bite tabs (copies a gap apart, the rout path on Edge.Cuts broken at the tabs, five 0.6 mm holes a tab), with JLCPCB's panel rules checked; written as a new board and checked with KiCad's DRC. | | `kicad_part_parameters` | The parameter (field) names a project's placed parts carry, with how many parts carry each; or, with name, that parameter's value on every part. Read only. |+| `kicad_pcb_report` | Numbers instead of pixels (the standard's pcb_report): for a footprint library, every footprint's pads, pad box, primitive census and 3D bodies; for a board, outline, parts with nets and bodies, census and tracks. | | `kicad_pin_pad_check` | Do the footprints fit their symbols? Part by part, the symbol's pin numbers (every pin, from the schematic's netlist) against the footprint's pad numbers on the board: pins with no pad, pads with no pin, and parts only on the sheets or only on the board. | | `kicad_place_footprint` | Deterministically place a footprint into a board preview. | | `kicad_place_on_sch` | Place one symbol or a ';' list of symbols from a .kicad_sym on ONE new sheet, sized from the measured parts (12.7 mm gaps, 15.24 mm margins, A4 at least), each with the next free designator and its name as the value; fills the title block. |@@ -580,7 +587,9 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_plugin_diagnose` | Retired: reports that no plugin is expected and whether a leftover Python plugin payload is still on disk. | | `kicad_prewarm` | Get this machine ready for a fast first KiCad call: detect KiCad, seed its first-run config, mark its setup wizard done, repair its taskbar shortcuts. Idempotent. | | `kicad_progress` | What this bridge is doing RIGHT NOW: one progress block per in-flight phase for THIS caller (stepLabel, percent, etaSec, confidence, blockedBy, stepShot), plus the machine's timing history. |+| `kicad_read_board` | The whole board in one read (the standard's read_board): components, nets, layers, copper, rules, occupancy and outline, from the open PCB editor when it serves the board, else the file. | | `kicad_read_footprint` | *standard* → `kicad_fp_info` |+| `kicad_read_schematic` | The parts on one schematic sheet (the standard's read_schematic): designator, library reference, comment, position and parameters, for filePath or the sheet open in the Schematic Editor. | | `kicad_read_sheet_file` | Read a schematic sheet straight from its .kicad_sch file, with no KiCad running: every placed part unit with its designator, library symbol, value, description, uuid, unit and unit count, position, rotation, flags, and optionally its fields and pins. | | `kicad_readiness` | Is KiCad installed and usable here; if not, the three alternatives (service-kicad, kicad-cli in your container, another box). | | `kicad_refresh_board_views` | Refresh the exact PCB editor and its already-open linked 3D viewer without focus or mouse. |@@ -598,15 +607,18 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_ripup_nets` | Delete every unlocked track, arc and via of the named nets live, as one Undo step (pads, pours and locked copper stay). | | `kicad_routing_drc` | KiCad's DRC on the board as the PCB editor holds it (unsaved edits included; the file when no editor serves it), with the project's rules and zones refilled: one clean or not-clean answer with every violation's place (the standard's routing_drc). | | `kicad_rules_by_kind` | Every design rule the board answers to, grouped by kind (Clearance, Width, RoutingVias, HoleSize, ...) and sorted by priority (1 wins), from the project's custom rules (.kicad_dru), net classes and Board Setup minimums (the standard's rules_by_kind). |+| `kicad_schematic_data` | The parts on one schematic sheet with their pins (the standard's schematic_data): number, name, electrical type, position, orientation and length of each pin; designator filters to one part. | | `kicad_schematic_review` | Review the schematic before updating the board: every pin (with its electrical type) against KiCad's own netlist of the design. Errors: power pins on no net, outputs driving each other. Warnings: pins on no net, one-pin nets, inputs nothing drives, IC supplies with no decoupling capacitor to ground. | | `kicad_screenshot_all` | Screenshot every open KiCad window. | | `kicad_selftest_script_error` | Self-test the script-error safety net (the standard's selftest_script_error). Not in KiCad: KiCad runs no resident script engine to test: a failing kicad_eval snippet already comes back as eval_failed with its traceback. | | `kicad_send_key` | Send a key to KiCad, or fire a menu item by label; chords and menu labels resolve to menu commands (background) | | `kicad_set_layer_visibility` | Show or hide one layer in the open PCB editor (KiCad's own layer visibility, through its API), read back. |+| `kicad_set_models` | Set a library symbol's one footprint link (the standard's set_models): replaces the Footprint field of a symbol in a .kicad_sym and says whether another was there. | | `kicad_set_params` | Set parameters on a library symbol (fields; a missing one is added hidden), optionally its value (the standard's comment) and its footprint link. | | `kicad_set_settings` | Change bridge settings; applies immediately (e.g. overlay badges stamped/cleared on live windows). | | `kicad_set_track_width` | Set the width of the EXISTING tracks and arcs on nets or a net class, optionally on one layer (the standard's set_track_width): widen power nets after routing, or thin a net that fails clearance. Net-class rules only steer new routing. | | `kicad_set_visibility` | Show or hide one field of a library symbol. |+| `kicad_setup_trial` | From nothing to a working KiCad, one step per call (the standard's setup_trial): reports stage install, launch or done and the one next action. KiCad has no trial or sign-in, so no person is needed. | | `kicad_sheet_params` | Write parameters onto PLACED parts on the schematic sheets (the BOM write-back: MPN, Manufacturer, Mouser/DigiKey/LCSC numbers, anything): every unit of each designator, on whichever sheet of the project holds it. A missing parameter is added hidden. | | `kicad_show_2d_board` | Show the 2D board layout in the PCB Editor. | | `kicad_show_3d_board` | Show the whole board in 3D (the board's 3D viewer). |@@ -617,6 +629,7 @@ Every verb of this build (342, `kicad_describe` is the live catalog with inputs, | `kicad_show_schematic` | Show a schematic (2D) in the Schematic Editor. | | `kicad_show_symbol` | Show a schematic symbol in the Symbol Editor (design/library surface). | | `kicad_signin` | Sign in to the tool's account (the standard's signin). Not in KiCad: KiCad has no account to sign in to. |+| `kicad_signin_status` | Account and workspace state (the standard's signin_status): KiCad has neither, so licensed is true, workspaceConnected false, and running says whether it is up. | | `kicad_silk_designators` | Place every reference designator the way assembly houses want: one size, upright, beside its own part, clear of every pad (JLCPCB: 0.15 mm), every other part's body and the other designators, inside the board, then read back from KiCad. Parts with no clear spot are reported, not forced onto pads. | | `kicad_silk_state` | The silkscreen as it stands: every part's body box, its designator and value as placed (text, position, size, rotation, shown), and the free texts and graphics on both silkscreen layers. | | `kicad_silkscreen_prep` | Get the silkscreen off the copper for fab: the Gerbers set to subtract the solder mask from the silkscreen (KiCad's own clipping), silkscreen lying outside the board deleted, designators that sit on pads moved beside their parts, and KiCad's silkscreen DRC findings counted before and after. |