diodeinc avatar

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-code

Installs 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

More from diodeinc/pcb

All 6
1anthropics avatarlead-triageanthropics/knowledge-work-pluginsScores inbound HubSpot leads by engagement signals, company fit, and urgency markers to produce a "call these 5 today" list with talking points, drafts the foll1.7Kskills.sh installs
2jezweb avatarwordpress-contentjezweb/claude-skillsCreate and manage WordPress posts, pages, media, categories, tags, and menus via WP-CLI or the REST API. Use whenever the user wants to publish a blog post on W1.7Kskills.sh installs
3anthropics avatarmonday-briefanthropics/knowledge-work-pluginsGenerates a one-page Monday morning briefing — cash, sales, pipeline, week ahead, top three to-dos. Accepts optional post destination and save-to arguments.1.7Kskills.sh installs
4pydantic avatarlogfire-uipydantic/skillsOpen or return Logfire project pages, live views, trace links, and Explore pages in the Codex browser without querying telemetry first. Use this skill when the 1.7Kskills.sh installs
5civitai avatarquick-mockupscivitai/civitaiCreate multiple UI design mockups in parallel. Use when asked to create mockups, wireframes, or design variations for a feature. Creates HTML files using Mantin1.7Kskills.sh installs
6hoodini avatarmongodbhoodini/ai-agents-skillsWork with MongoDB databases using best practices. Use when designing schemas, writing queries, building aggregation pipelines, or optimizing performance. Trigge1.7Kskills.sh installs