
Zener Language
If you're working with Zener HDL files, load this before touching any `.zen` code. It covers the full language semantics: module loading and instantiation, the `io()` and `config()` API patterns, net types and power domains, component sourcing with proper symbol metadata, physical units and E-series snapping, and the critical DNP workflow where you instantiate everything and toggle population state instead of conditionally adding circuits. The authoring guidance is opinionated and practical, things like keeping power rails explicit, exposing meaningful configs rather than implementation details, and avoiding decorative comments. It also reminds you to preserve those trailing `# pcb:sch` annotations and check the pcb CLI changelog for recent changes.
- skills.sh installs
- 1.8K
- GitHub stars
- 482
- last updated
- Aug 21, 2026
Install
$ npx -y skills add diodeinc/pcb --skill zener-language --agent claude-codeInstalls into .claude/skills of the current project.
Files
Zener Language
Zener is Starlark plus PCB-specific modules, typed electrical connections, physical parts, sourcing, layout, and diagnostics.
Discover Before Authoring
Use pcb list -m -json @stdlib or pcb list -m -json <package>[@<version>] to find a package's local source directory, then read its .zen files for the public API and exact behavior.
For CLI behavior, use the installed command's --help; do not invent or infer subcommands or flags. When version history matters, inspect the installed version and nearby entries in the pcb changelog instead of relying on old examples.
Modules and Components
A .zen file can be:
- a normal Starlark module imported with
load(); or - an instantiable schematic module imported with
Module().
Relative paths stay within the current package. Cross-package imports use full package URLs:
load("./helpers.zen", "helper")
LocalBlock = Module("./LocalBlock.zen")
RemoteBlock = Module("github.com/org/repo/modules/RemoteBlock.zen")
An instantiation passes name=..., its public io() and config() inputs, and optional dnp and properties arguments.
Sponsors
Details
- Repository
- github.com/diodeinc/pcb
- Category
- Automation & Workflows
- First seen
- Apr 16, 2026