Vibe-code real hardware. From a plain-language idea to working firmware + PCB + enclosure and a fab order — as a beginner — by driving an AI coding agent, not years of EDA/CAD muscle memory.
Getting started · Architecture · Roadmap · Examples · Contributing
Each skill encodes the method and the hard-won gotchas for one slice of a small embedded product — plus ready-to-run scripts and an interactive in-browser review, so you never open a heavyweight GUI just to look.
Sister project to
earthtojake/text-to-cad(whosecad/cad-viewer/step-partsskills these build on). vibe-hardware adds the firmware → PCB → fab half and a unified, beginner-first workflow.
| Skill | From a spec, get… | Highlights |
|---|---|---|
| vibe-plm | one manifest + interface contracts that keep the three domains in sync | product.yaml (identity + revision), the shared fit-number contracts, a plm_check.py gate, the cross-domain release checklist |
| vibe-firmware | a reproducible firmware build that flashes + runs | pinned-toolchain (Docker) builds, config-as-code, OTA, the "test on real hardware before release" rule (framework — fill in your platform) |
| vibe-pcb | an ERC/DRC-clean KiCad board + a JLCPCB/LCEDA order | generate KiCad by script (never the GUI files), severity-aware DRC gate, module-belly keep-out, interactive web viewer (2D layers + 3D, one page) |
| vibe-cad | a parametric build123d enclosure + STEP/STL | one parametric file, CAD Viewer review, board↔shell interference check (0 mm³), printability lessons |
The three domains (firmware · PCB · CAD) share one set of fit numbers (board outline, stack height, mount holes, connector exits) — vibe-plm owns the contracts that hold them: change a number once and firmware pins, board, and shell stay in sync.
npx skills install luckiday/vibe-hardwareInstalls the skills into your agent (Claude Code, Codex, …). Then just ask your agent
to design the thing; it loads the relevant skill and runs the scripts. The skills also
work standalone — the scripts/ are plain bash/python.
The interactive viewers pull in the upstream CAD bundle:
npx skills install earthtojake/text-to-cad.
idea ─► spec (prose) ─► firmware + PCB + enclosure ─► fabricate
one brief vibe- vibe-pcb vibe-cad order board,
per part firmware (KiCad, DRC) (build123d) print/mould shell
│ │
└─ shared fit numbers ─┘
interactive browser review at every step (no GUI)
Start at docs/getting-started.md.
Worked, end-to-end builds live in examples/. Flagship:
- pager-buddy — a desk "pager" that lights up and buzzes on Claude Code session status / notifications (task done, waiting on input, build failed) and can answer prompts from the device. The firmware (LVGL UI + NimBLE on an M5StickC S3) and the Mac bridge (Claude Code hooks → BLE) work today; the custom carrier PCB and 3D-printed shell are still stubs — the in-progress target for vibe-pcb / vibe-cad.
Add your own build as examples/<name>/ and point the skills' "worked reference" at it.
- Beginner-first. You bring the intent and physical constraints; the agent brings the EDA/CAD execution. The skills exist so a newcomer can ship a board.
- Generate by script, review in the browser. Sources of truth are small
parametric/generator files (diffable, reproducible), not opaque GUI binaries — and
you review the result interactively on
localhost, never by booting the GUI. - Encode the gotchas, not just the happy path. Every skill carries the failures that cost a debugging session (belly shorts, power-default-open, GLB sidecars, …).
- Living docs. When a real build teaches you something new, fold it back into the skill and commit it — compound the experience.
Early — this is the framework. The skills' methods, scripts, and lessons are real
and battle-tested. The flagship pager-buddy example has working
firmware + a Mac bridge (on an M5StickC S3); its custom PCB/enclosure are still stubs.
Contributions and new examples welcome (see CONTRIBUTING.md).
MIT.