app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
← Commit history
dev skill: late-bind + win32-tier doctrine (issues 20-24 arc); suite fp test e2e
1 file changed
+22
skills/kicad-bridge-dev/SKILL.md+22@@ -344,3 +344,25 @@ box and crash KiCad). v0.9.59 guards this, but always pass fractions or `{"relat container-local path in `localFullPath` (already pulled) — Read it directly, no `pull_file` needed. It's also background-safe (PrintWindow), unlike `kicad_screenshot_all` which can time out capturing every window.+++## Editor Python binds LATE — the win32 tier is the workhorse (2026-08-14, issues #20-#24)++- KiCad 10 EDITORS (eeschema/pcbnew) initialize their embedded Python MINUTES after+ launch; kicad.exe (PM) binds within seconds. Never design a verb that waits on an+ editor plugin. The in-process canvas-load RPC is an optimization only.+- The workhorse for "load symbol/footprint X" is the plugin-free win32 tier+ (open_symbol_editor/_background_navigate_win32 + the fp twin): WM_SETTEXT into the+ LIB_TREE filter ("Lib Part" qualified), Down THROUGH the filter box (selects the+ match), Enter posted to tree candidates + PostMessage dblclick fallback,+ title-verified. Zero focus theft.+- Window identity: title keywords are a PREFILTER only — every finder must confirm+ the owning process (win_focus.is_kicad_window). A Chrome tab titled "KiCad ..."+ once got WM_COMMAND'd as the app (#23).+- Cold Footprint Editor = a NEW pcbnew + full fp-lib-table load: with stock libs+ present that's 15-30s before the window exists. Wait accordingly (0.9.91).+- Progress dialogs ("Load PCB", body "Elapsed time") have ONE button and it is+ CANCEL — the dialog sweeps must never click them (0.9.80).+- Lib-table self-heal (0.9.84): early bootstraps left users with ZERO stock+ libraries; boot now merges missing stock-template rows. If a part won't load,+ check the sym/fp-lib-table row count FIRST.