Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/luckiday/vibe-hardwarenpx agentmods add skills/luckiday/vibe-hardware/vibe-pcbWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/luckiday/vibe-hardware/vibe-pcb)<a href="https://agentmods.dev/skills/luckiday/vibe-hardware/vibe-pcb"><img src="https://agentmods.dev/badge/skills/luckiday/vibe-hardware/vibe-pcb/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/luckiday/vibe-hardware/vibe-pcb"><img src="https://agentmods.dev/badge/skills/luckiday/vibe-hardware/vibe-pcb.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00409 | $0.03912 |
| Opus 5.5 | $0.00164 | $0.01565 |
| Sonnet 5.5 | $0.00082 | $0.00782 |
| Haiku 4.5 | $0.00041 | $0.00391 |
Grade A, and why
vibe-pcb scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 243 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Text → PCB (beginner + Claude Code → fab order)
A reproducible pipeline for small boards (module-carriers, audio boards, sensor tiles). You write the intent in prose; Claude Code emits KiCad by script, drives ERC/DRC to clean, reviews it, fits it in 3D, and packages the fab order. You never hand-place a track in a GUI.
Proven on a 70×70 mm ESP32-S3 + dual-codec speaker board, generated end to end with the method below (contracts → relations → gates → scripted route → DRC 0/0). The war stories throughout are from that build.
Why "by script", not the KiCad GUI
The .kicad_sch / .kicad_pcb are outputs (gitignored, regenerated). The
sources of truth are data files + two small generators:
| Source | Owns | Consumed by |
|---|---|---|
../cad/constraints.yaml |
outline, mount holes, port/window positions, keepouts | pcblib.Board draws them; the enclosure model reads the same file |
pinmap.yaml |
signal ↔ GPIO (the pcb→firmware contract) | firmware header; plm_check.py cross-checks |
parts.yaml |
ref → footprint/value/pad→net map/cluster/DNP/LCSC | both generators — sch and pcb cannot drift |
gen_sch.py |
symbol grid + labels (via pcblib.sch) |
.kicad_sch |
gen_pcb.py |
placement relations + routing (via pcblib) |
.kicad_pcb, placement.json, board.step |
The representation rule: relations in, coordinates out. A language model is
worst at one-shot absolute geometry and best at relations ("the cap hugs the
codec's supply pins", "USB-C sits at the contract's port"). scripts/pcblib/
keeps the relations as code and computes the millimetres:
from pcblib import (load_constraints, load_parts, Board, Cluster, place,
beside, align_pads, row, at_edge, scorecard,
export_placement, wire, via, gnd_pours)
C, P = load_constraints("../../cad/constraints.yaml"), load_parts("../parts.yaml")
brd = Board(pcb, C) # outline/holes/keepouts FROM the contract
PWR = Cluster(brd, "PWR", (55, 25)) # cluster origins: the only tuned numbers
u5 = PWR.place("Package_TO_SOT_SMD", "SOT-223-3_TabPin2", "U5",
value=P["U5"].value, nets=P.netmap("U5"))
beside(u5, c4, side="right", gap=0.7) # positions computed off real courtyards
at_edge(brd, j1, "usb_c") # x/y comes from constraints.yaml, not a literal
fails = scorecard(brd, budgets={"hpwl_mm": 2000}) # hard gates BEFORE copper
export_placement(brd, "../placement.json", kinds={...}) # evidence for plm/cad
What ships with it
25 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/autorouting.md 23 KB
- references/design-rules.md 21 KB
- references/fab-and-3d.md 7.3 KB
- references/gated-workflow.md 6.8 KB
- references/pcb-viewing.md 3.0 KB
- references/professional-standards.md 8.8 KB
- references/spec-template.md 3.8 KB
- scripts/_kicad_env.sh 2.6 KB runs code
- scripts/autoroute.sh 6.2 KB runs code
- scripts/belly_check.py 2.1 KB runs code
- scripts/drc_report.py 1.6 KB runs code
- scripts/export_dsn.py 4.3 KB runs code
- scripts/fab_export.sh 5.2 KB runs code
- scripts/import_ses.py 3.1 KB runs code
- scripts/pcb_check.sh 3.9 KB runs code
- scripts/pcb_skeleton.sh 2.3 KB runs code
- scripts/pcb_view.sh 5.3 KB runs code
- scripts/pcblib/__init__.py 2.0 KB runs code
- scripts/pcblib/contract.py 11 KB runs code
- scripts/pcblib/gates.py 8.4 KB runs code
- scripts/pcblib/layout.py 17 KB runs code
- scripts/pcblib/route.py 5.6 KB runs code
- scripts/pcblib/sch.py 11 KB runs code
- scripts/power_check.py 8.2 KB runs code
- scripts/zone_islands.py 5.7 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +17 lines · +56 tokens per session 698fd3599bf8
- 2mo ago First seen · 226 lines · 353 tokens per session scan A 5d82c457aa55
vibe-pcb is a skill published in the GitHub repository luckiday/vibe-hardware (7 stars, last pushed 1mo ago), licensed MIT. It adds 409 tokens to every session and 3,912 once invoked, about $0.0016 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
cadquery-modeling
Generate CAD models with CadQuery using an adaptive CAD Compiler workflow: plan-mode skill constraint handoff, focused iteration scopes, fail-first challenge review, compact review packets, real-product reference fidelity, visual/functional audits, source-first repair, and STEP/STL export. Use for CadQuery, CQ, 建模…
m5stack-cap-lora-1262
Hardware reference and firmware helper for the M5Stack Cap LoRa-1262 (SKU U214) — a snap-on cap for the Cardputer Adv (K132-Adv) and CardputerZero that carries a Semtech SX1262 sub-GHz LoRa radio (868–923 MHz, +22 dBm TX, external RP-SMA antenna) and an ATGM336H-6N GNSS receiver (GPS/QZSS/BeiDou/Galileo/GLONASS, UART…
new-device-skill
Build or update an M5Stack hardware skill in this marketplace — a Controller (a board that runs firmware, like Core2 or AtomS3), a Unit (a peripheral you drive from a Controller, like a ToF sensor or a relay), or a Chip (an Espressif SoC capability layer, like esp32-c6). Use whenever adding a new board/unit/chip to…
m5stack-tab5
Hardware reference and development helper for the M5Stack Tab5 (product code C145) — an ESP32-P4-based 5" touchscreen IoT/industrial terminal with an ESP32-C6 wireless co-processor, MIPI-DSI display, MIPI-CSI camera, ES8388 audio codec, BMI270 IMU, RX8130CE RTC, RS485, and a removable NP-F550 battery. Use this skill…
m5stack-core2
Hardware reference and development helper for the M5Stack Core2 family — a 2.0" touchscreen ESP32 (classic, Xtensa LX6) Controller built around an AXP192 power management IC, ILI9342C display, FT6336U capacitive touch, BM8563 RTC, and (on original/1.1/1.3 revisions) an MPU6886 or BMI270 IMU. Covers the plain Core2…
esp32-c6
Chip-level ESP-IDF capability reference for the ESP32-C6 SoC (single-core RISC-V HP core + RISC-V LP core, WiFi 6 + BLE 5.3 + Thread/Zigbee) — what the chip can do, distinct from any board's wiring. Use when a user wants to exploit ESP32-C6 hardware — WiFi 6/BLE/802.15.4 radio coexistence (Thread Border Router, Zigbee…