Component sourcing & indexing
Local search order
- Project libs (sym-lib-table next to .kicad_pro,
${KIPRJMOD}URIs). - Official flatpak libs:
~/.local/share/flatpak/runtime/org.kicad.KiCad.Library.Symbols/x86_64/stable/active/files/symbols/*.kicad_sym(footprints idem,.../Library.Footprints/.../footprints/*.pretty). Grep symbol names:grep -l '(symbol "NAME' *.kicad_symthen extract the balanced block withkicad_lib.sexp. - Index (implemented):
kx find dual comparator→ ranked lib_id hits with description/keywords/pins. First runkx index [PROJECT_LIB_DIR](22k official symbols ≈ 20 s once; mtime-incremental ≈ 0.1 s after). DB: ~/.cache/kx_scratch/symbols.sqlite;extendschildren inherit base description/keywords so families are searchable.
Internet fetch
- LCSC/JLC part known (implemented, preferred):
kx fetch C25804 /path/to/project→ symbol + footprint + 3D (wrl+step) in PROJECT/libs/ AND both lib tables registered (${KIPRJMOD} URIs), idempotent. Binary lives in the repo .venv (PEP 668 box); fetch needs real network (sandbox blocks DNS — run unsandboxed). v1.0.1 quirk handled: --project-relative resolves against CWD, so kx runs it from the project dir. - SnapEDA/UltraLibrarian zip (implemented; user downloads, no open
API):
kx import-zip part.zip /path/to/project→ libs/.kicad_sym + .pretty + tables; legacy .lib auto-upgraded via kicad-cli sym upgrade. - Always sanity-check fetched footprints visually: render via
kicad-cli pcb export svgon a scratch board, compare against the datasheet land pattern. Internet footprints are guilty until proven.
Registration
Append to project sym-lib-table: (lib (name "x")(type "KiCad") (uri "${KIPRJMOD}/x.kicad_sym")(options "")(descr "")) — same shape for
fp-lib-table with a .pretty dir URI. Missing tables: create them.