importing-kicad-projec…
Imports KiCad projects and schematics into the current repository. Use when asked to import or convert an existing KiCad design.
Create or repair reusable component and module packages in a PCB registry.
$ npx -y skills add diodeinc/pcb --skill librarian --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/librarianContext preview
The summary Claude sees to decide when to auto-load this skill.
Create or repair reusable component and module packages in a PCB registry.
name: librarian description: Create or repair reusable component and module packages in a PCB registry.
Create sourceable, evidence-backed packages that board designers can search and instantiate. Work in the current registry; dispatch another librarian only when the user asks. Use the artifact skills as needed: `kicad-symbol`, `kicad-footprint`, `zener-language`, and `module-layout`.
Search the registry before creating a package.
Inspect and extend a suitable existing package, including published results. Group a family when it shares footprint, pinout, feature set, and fundamental schematic topology. Use separate packages when those contracts differ. For a new package, establish its final directory and `pcb.toml` before authoring so its evolving content is discoverable.
Keep simple parts such as connectors and passives primitive unless user requirements or manufacturer guidance establish an application circuit. An unspecified request for a reference design does not justify inventing board wiring, protection, passive values, or a layout. Include datasheet-required or strongly recommended support circuitry when warranted by the requested package; respect a primitive-only request.
Curate the relevant symbols, footprints, and pin maps before building circuitry on them. Do not invent datasheet facts, limits, or sourcing claims. Focused repairs need only the relevant curation stages. Keep the datasheet URL in metadata; do not check downloaded PDFs into the package.
such as tape/reel, temperature grade, or RoHS suffixes do not.
footprint correctness. Requested creation or repair includes replacing an incorrect candidate or generating one from authoritative evidence; ask only if required geometry remains unresolved. Review-only work produces findings.
source and `Description` to its package and evidence basis.
explicit. A known-wrong model is not an acceptable substitute.
`pcb embed-step` rewrites every model reference in the footprint, so settle one verified model transform before embedding. Inspect the embedded result and do not commit the standalone STEP.
Component packages belong under `components/<Manufacturer>/<NAME>/` with `pcb.toml`, `.zen` entrypoints, curated symbol/footprint files, and `README.md`. Use `modules/` for higher-level functional blocks; do not add to the legacy `reference/` or `connectors/` trees.
Each top-level `.zen` beside `pcb.toml` is a public entrypoint. Represent one coherent primitive or application circuit per entrypoint; instantiate `Component()` and its support circuitry directly instead of adding a thin primitive-only wrapper. Additional application circuits can use separate entrypoints. Follow `zener-language` for stable topology and layout declarations.
Expose application-level IO and configs. Keep implementation nodes internal unless access is necessary. Include only reusable support circuitry: decoupling, feedback, compensation, bootstrap, bias, reset, straps, or a supported application topology. Leave board-specific, underspecified, already-provided, or unverified circuitry to the integrator.
Choose decoupling from the datasheet, effective capacitance, ESL, placement, inrush, and regulator stability. Prefer one compact low-ESL MLCC per supply pin when valid; do not add a 100 nF/bulk pair by habit. A larger capacitor in the same package may suffice, but account for DC bias and resonance.
Put usage examples and concise integration notes in `README.md`. Put design evidence in the `.zen` docstring: application mode, exact package/family, operating envelope, IO/config assumptions, included versus integrator-owned circuitry, physical constraints, and the datasheet equations or tables behind important choices. If consumers must change code, layout, or assumptions to adopt an update, document the migration and mark it breaking.
Derive package names from the functional MPN pattern, dropping ordering-only suffixes and using lowercase `x` for meaningful family differences. Excessive masking indicates an overbroad family. A selector can use a compact table of MPNs, symbols, limits, and properties filtered by `config()`.
Use the first match as `part=` and put remaining drop-in equivalents of that selection in `properties={"alternatives": ...}`. Alternatives must be freely swappable without changing electrical behavior, footprint, or fit; mutually exclusive functional or mechanical configurations are not alternatives.
For otherwise equivalent MPNs, prefer automated-assembly packaging: tape/reel or cut tape, then tray, tube, and bulk. Prefer manufacturer pickup aids for non-flat parts; flag an unavoidable pickup limitation.
Express requirements through stdlib generic parameters; set `mpn` or `manufacturer` only when those parameters cannot represent the design. Use `pcb bom <entrypoint>.zen -f json` when checking changed part selection or sourceability.
Report verified results, public API or layout effects, sourcing compromises, and any remaining evidence or model gaps. A focused repair does not require re-curating an unchanged package.
pcb is a command-line tool for circuit board projects written in Zener. Zener is a Starlark-based language for describing PCB schematics; pcb builds those designs, manages dependencies, and generates KiCad layout files.
Imports KiCad projects and schematics into the current repository. Use when asked to import or convert an existing KiCad design.
Find reusable registry modules and component packages for a board or specification.
Add or run an ngspice-backed Zener testbench with `pcb sim`.
Read or edit Zener HDL, package APIs, and tool-managed dependencies.