بنقرة واحدة
release
Prepare a complete JLCPCB release package with version notes
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Prepare a complete JLCPCB release package with version notes
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Full PCB verification loop using local kicad-cli (DRC + 3D render + gerbers)
Create a new Claude Code skill for this project. Use when you need to add a new skill, improve an existing skill, or convert a workflow into a reusable skill.
Verifies that every PCB pad-to-net assignment matches the manufacturer datasheet pin specifications. Use when changing board.py/routing.py/footprints.py, after GPIO remapping, before releases, or when adding new components. Automated guard against wiring errors like unconnected VBUS, wrong pin assignments, or missing GND connections.
Design intent adversary — cross-checks GPIO, nets, power chains, signal paths across firmware/schematic/PCB/datasheet sources to find lost connections and inconsistencies
Analyze a DFM report and fix all issues in the PCB generation scripts
Run DFM guard tests and add new regression tests after fixing PCB issues
| name | release |
| model | claude-opus-4-7 |
| description | Prepare a complete JLCPCB release package with version notes |
| disable-model-invocation | true |
| allowed-tools | Bash, Read, Write, Edit, Grep, Glob |
| argument-hint | <version> (e.g. v1.9) |
Create a production-ready release package for JLCPCB manufacturing.
Argument: Version tag (e.g., v1.9).
cd /Users/pierrejonnycau/Documents/WORKS/esp32-emu-turbo
python3 -m scripts.generate_pcb hardware/kicad
./scripts/export-gerbers-fast.sh
Or via full Docker:
docker compose run --rm --entrypoint python3 kicad-pcb /scripts/kicad_fill_zones.py "/project/esp32-emu-turbo.kicad_pcb"
docker compose run --rm kicad-pcb pcb export gerbers --output /gerbers/ --layers "F.Cu,In1.Cu,In2.Cu,B.Cu,F.Paste,B.Paste,F.SilkS,B.SilkS,F.Mask,B.Mask,Edge.Cuts" --subtract-soldermask --use-drill-file-origin "/project/esp32-emu-turbo.kicad_pcb"
docker compose run --rm kicad-pcb pcb export drill --output /gerbers/ --format excellon --drill-origin plot --excellon-units mm --generate-map --map-format gerberx2 "/project/esp32-emu-turbo.kicad_pcb"
# ── BLOCKING: fab-short gate ─────────────────────────────────────
# Catches netted traces physically crossing unnetted pads.
# Missing this check caused the v3.3 regression (commit 775e9fd)
# where _PAD_NETS assignments for U2/U6/SW_PWR were removed,
# leaving 6 real shorts in the fabricated board.
python3 scripts/verify_trace_through_pad.py # MUST be 0 failures
# ── BLOCKING: net connectivity gate ─────────────────────────────
# Walks the union-find over pads ∪ vias ∪ segments per net and
# asserts every net forms a single connected component. Missing
# this check left R5-CRIT-1..6 bugs shipped in v3.3 — BAT+ inductor
# isolated (no battery boot), VBUS decoupling floating, buttons
# with disconnected pull-ups, SW_BOOT non-functional, etc.
python3 scripts/verify_net_connectivity.py # MUST be 0 failures
# Manufacturing (must all pass)
python3 scripts/verify_dfm_v2.py
python3 scripts/verify_dfa.py
python3 scripts/validate_jlcpcb.py
python3 scripts/verify_bom_cpl_pcb.py
python3 scripts/verify_polarity.py
# Datasheet + design intent
python3 scripts/verify_datasheet_nets.py
python3 scripts/verify_datasheet.py
python3 scripts/verify_design_intent.py
# Electrical review
python3 scripts/verify_strapping_pins.py
python3 scripts/verify_decoupling_adequacy.py
python3 scripts/verify_power_sequence.py
# Adversarial
python3 scripts/verify_component_connectivity.py
python3 scripts/verify_signal_chain_complete.py
# Power simulation
python3 scripts/spice_power_check.py
ALL tests must pass before proceeding. If any fail, fix the issues first.
Hard gate: if verify_trace_through_pad.py reports any failure, STOP
and fix the underlying _PAD_NETS assignment in
scripts/generate_pcb/routing.py. Never copy gerbers to release_jlcpcb/
with trace-through-pad overlaps — they are real shorts on the fabricated
board regardless of DFM/DFA passing.
cp hardware/kicad/jlcpcb/bom.csv release_jlcpcb/bom.csv
cp hardware/kicad/jlcpcb/cpl.csv release_jlcpcb/cpl.csv
rm -rf release_jlcpcb/gerbers
cp -r hardware/kicad/gerbers release_jlcpcb/gerbers
cd hardware/kicad/gerbers && zip -j ../../release_jlcpcb/gerbers.zip *.gtl *.g1 *.g2 *.gbl *.gto *.gbo *.gts *.gbs *.gtp *.gbp *.gm1 *.drl *.gbrjob 2>/dev/null
/pcba-render)Inject 3D models and render all 13 views (top/bottom/iso/detail):
python3 scripts/inject-3d-models.py \
hardware/kicad/esp32-emu-turbo.kicad_pcb \
/tmp/pcba-render.kicad_pcb
OUT="website/static/img/renders/pcba"
PCB="/tmp/pcba-render.kicad_pcb"
# Top views (5)
kicad-cli pcb render -o "$OUT/pcba-top.png" --width 1920 --height 1080 --side top --quality high --floor --background opaque "$PCB"
kicad-cli pcb render -o "$OUT/pcba-iso-front.png" --width 1920 --height 1080 --rotate "-45,0,30" --quality high --perspective --floor --background opaque --zoom 0.7 "$PCB"
kicad-cli pcb render -o "$OUT/pcba-iso-back.png" --width 1920 --height 1080 --rotate "-45,0,210" --quality high --perspective --floor --background opaque --zoom 0.7 "$PCB"
# Bottom views (6)
kicad-cli pcb render -o "$OUT/pcba-bottom.png" --width 1920 --height 1080 --side bottom --quality high --floor --background opaque "$PCB"
kicad-cli pcb render -o "$OUT/pcba-bottom-iso-front.png" --width 1920 --height 1080 --side bottom --rotate "-45,0,30" --quality high --perspective --floor --background opaque --zoom 0.7 "$PCB"
kicad-cli pcb render -o "$OUT/pcba-bottom-detail-mcu.png" --width 1920 --height 1080 --side bottom --rotate "-40,0,15" --quality high --perspective --background opaque --zoom 2.0 --pan "2,1,0" "$PCB"
rm /tmp/pcba-render.kicad_pcb
See .claude/skills/pcba-render/SKILL.md for full 13-view camera presets.
/doc)Audit and update all docs to match current PCB state:
# Regenerate schematics from config
python3 -m scripts.generate_schematics hardware/kicad
# Key values to sync:
# - Via count, segment count, pad count (from .pcb_cache.json)
# - DFM/DFA test counts (from script output)
# - Component count (from BOM)
# - Skills count (from .claude/skills/)
# - Board dimensions (from board.py)
Cross-check these docs against source-of-truth files:
website/docs/design/pcb.md — trace counts, via countswebsite/docs/manufacturing/verification.md — test counts, drill opswebsite/docs/manufacturing/manufacturing.md — component counts, costswebsite/docs/tooling/claude-agents.md — skills countsSee .claude/skills/doc/SKILL.md for full audit checklist.
Edit release_jlcpcb/README.md:
Stage and commit all release files:
git add release_jlcpcb/ hardware/kicad/esp32-emu-turbo.kicad_pcb
git commit -m "Update release_jlcpcb/ to $VERSION with [summary of changes]"
After release is ready, print:
release_jlcpcb/gerbers.zipbom.csv and cpl.csvrelease_jlcpcb/README.md — Release notesrelease_jlcpcb/gerbers.zip — Gerber packagerelease_jlcpcb/bom.csv — Bill of Materialsrelease_jlcpcb/cpl.csv — Component Placement Listrelease_jlcpcb/gerbers/ — Individual gerber files