reference-design
Component Package Design
Grow component packages beyond a generated wrapper when the part benefits from reusable surrounding circuitry. A good component package captures the support circuitry, default mode, key equations, layout-sensitive notes, and evidence needed to use the part confidently.
Hard Rules
- Reuse before create. Search existing registry/workspace packages first.
- New work lives in
components/<NAME>/, never in a separatereference/tree. Legacyreference/packages in the registry are read-only examples — inspect them for structure and API shape, but don't copy their placement. - The
.kicad_symfile is the source of truth for the primitive component interface and pin structure. Keep the.zenAPI aligned to it. - The
.zendocstring is the canonical design document. The README is for usage examples only. - Review
pcb buildwarnings, especially BOM/sourceability warnings such asbom.match_generic. - Don't guess ambiguous passives, straps, sequencing, or oscillator details. Get evidence or stop and ask.
- Imitate only strong exemplars. Weak/generated packages are useful for pin lookup and starting structure, not authoring style.
- Preserve
# pcb:sch ...comments (tool-managed schematic layout metadata). When renaming a referenced component, module instance, or net, update the matching# pcb:schnames. - If an existing registry example conflicts with this skill, this skill wins.
Reuse Before Create
- Search registry modules and component packages with
component-search.
More from diodeinc/pcb
datasheet-reader
Read datasheets and technical PDF documents with `pcb scan`. Use when the user gives a local PDF path or an `http(s)` datasheet/document URL, when a task requires reading, summarizing, extracting information from, or answering questions about a datasheet or technical PDF, or when a KiCad symbol / `.kicad_sym` provides a `Datasheet` property to resolve. Run `pcb scan <input>` in bash, treat stdout as the generated `.md` path, then read that markdown file.
868zener-language
Canonical Zener HDL guidance. Use for any non-trivial `.zen` work or whenever syntax, `Module()`, `io()`, `config()`, imports, `pcb.toml`, stdlib APIs, package APIs, source lookup, generics, DNP patterns, or validation are uncertain.
833component-search
Search for and add electronic components and reusable subcircuits to a Zener PCB project. Use when designing a board, module, or subsystem and you need a part package, a reusable module, or a component package that may already include application circuitry. Covers `pcb search` (registry:modules, registry:components, web:components) and `pcb new component` for importing web components into a workspace.
787idiomatic-zener
Style rules and idioms for writing high-quality Zener HDL code. Use when writing, reviewing, or refactoring `.zen` files — modules, reference designs, or board files. Covers DNP patterns, typed configs, voltage checks, component naming, computation style, and common gotchas.
724spice-sim
Adds an ngspice-backed simulation testbench to a Zener `.zen` design. Use when the user asks to simulate a circuit, validate behavior in SPICE, or wire a `spice_model=SpiceModel(...)` into a leaf component. Covers `pcb sim`, `Simulation` property, and ngspice `.control` blocks with `tran`/`PULSE`/`PWL` sources and SVG `hardcopy` output.
346git-hunk
Non-interactive hunk and line-range staging with the `git-hunk` CLI. Use when a user wants atomic commits, selective staging, partial hunk staging, or an agent-safe replacement for `git add -p` or `git commit -p`, especially when `git-hunk` is available in the current repo or on `PATH`.
106