Skip to main content

design-review

Run a finished board past a panel of expert reviewers before anyone pays a fab. Use after circuitcode reports a clean build and before ordering — "is this ready to make", "review the board", "design review", "can we order these", "check it before I spend money" — or whenever a board is about to be handed to a human as orderable. Scores seven engineering lenses, routes must-fix notes back to circuitcode, and holds the ship bar until the board earns it.

跳到安装

来源信息

仓库
autonomous-ai/autonomous-circuit
最近来源活动
2026年9月15日 18:58
检测到的 SKILL.md 语言
英语
星标
1
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
design-review
description
Run a finished board past a panel of expert reviewers before anyone pays a fab. Use after circuitcode reports a clean build and before ordering — "is this ready to make", "review the board", "design review", "can we order these", "check it before I spend money" — or whenever a board is about to be handed to a human as orderable. Scores seven engineering lenses, routes must-fix notes back to circuitcode, and holds the ship bar until the board earns it.
# design-review — the panel that stands between a board and a fab bill ## Purpose `circuitcode` closes the *pipeline* loop: does it compile, does it pass the gauntlet, do the pictures look right. This skill closes the *engineering* loop: **would a competent team sign this off?** The difference matters because the gauntlet is blind to whole classes of mistake — it cannot tell you the regulator will cook, that there is nowhere to put a scope probe when the board arrives dead, that the one part you cannot buy is the one holding the design together, or that the connector is on the wrong edge for the enclosure. Those are review findings, not check failures. A wrong board costs about $85 and two weeks. A review round costs minutes. The arithmetic is not close. ## When to use **Not optional. The panel is the last stage of every board, not a service someone remembers to call.** The flow is fixed: ``` circuitcode builds → fab.ready: true → design-review panel → verdict │ iterate ────────┘ (back to circuitcode) ``` Any board that reaches `fab.ready: true` goes through the panel before the word "done" is said to a user. There is no path from a green build to a finished board that skips this — a packet that never met the panel is an unreviewed packet, and circuitcode's own non-negotiables send it here. `circuitcode` finishing without a panel verdict is itself a defect. Also re-run it whenever a board changed materially — new block, new MCU, a size change, a part swap. Do not use it to fix a build that is still failing; that is circuitcode's loop. The panel reviews boards that already pass, because a board that fails the gauntlet has not earned the panel's time. `fab.ready: false` is not a board the panel reviews; it is an unfinished board, and it goes back. ## The panel Seven lenses. Each is a separate pass with a separate question — **do not merge them**, because a single reviewer looking for everything finds the first thing and stops. Each returns a score 1–10 and a list of notes. | # | Lens | The question it alone asks | |---|---|---| | 1 | **Power integrity** | Do the rails hold up? Budget vs source, regulator dropout and heat, decoupling placement and count, bulk capacitance, inrush, brown-out on the MCU. | | 2 | **Manufacturability** | Will the fab build this right the first time? DFM margins, part availability and Basic/extended mix, rotation-prone packages, assembly side, panelization, silkscreen legibility. | | 3 | **Layout & signal** | Is the physical design sound? Placement logic, return paths and ground, trace widths for current, connector access, antenna and mounting keep-outs, thermal spreading. | | 4 | **Testability & bring-up** | When it arrives dead, how do we find out why? Test points on every rail, boot/reset access, an LED that proves power, probe-able signals, a written bring-up order. | | 5 | **Cost & sourcing** | What does it really cost, and what breaks the BOM? Unit cost at 5 and at 100, extended-part fees, single-source risk, stock depth, named alternates. | | 6 | **Safety** | Envelope compliance (no mains, sealed battery blocks, certified radio only), ESD on exposed connectors, thermal limits, sharp mechanical edges, failure modes. | | 7 | **Product fit** | Does this board make the *product* work? Enclosure interface, connector positions vs the case, user-facing indicators, the actual job the object does. | ## The loop ``` build clean → bundle evidence → 7 lenses score independently ↑ ↓ └── circuitcode fixes ← route must-fix notes ← panel verdict ``` Repeat until the bar is met. Cap at **4 panel rounds** — past that the design has a problem the panel cannot fix by iterating, and the honest move is to take the disagreement to the user with options. ### 1. Bundle the evidence Before scoring, gather what the panel judges: ```bash python "${CIRCUIT_SKILLS_DIR:-$HOME/.claude/skills}/circuitcode/scripts/review" /abs/project ``` Then `Read` **both** `_review/_schematic.png` and `_review/_pcb.png`, and read `<stem>.board.json` (warnings, BOM summary, fab state), `product.json`, `parts.json`, and the board source. A reviewer who has not looked at the pictures is guessing. ### 1b. Do the arithmetic — do not eyeball it Three lenses have real maths available. Run it; a number beats an impression, and these are exactly the failure classes the gauntlet is blind to: ```python from circuitlib.helpers import ( regulator_thermal, led_current, pullup_warnings, power_budget, trace_width_for, ) from circuitlib.parts import cheaper_basic_part # power lens — will the regulator cook? regulator_thermal(vin=5.0, vout=3.3, current_a=0.18, package="SOT-223") # power lens — is every indicator's series resistor sane? led_current(rail_v=3.3, resistance_ohms=1000) # layout lens — is the power trace wide enough for the current it carries? trace_width_for(current_a=0.5) # cost lens — is an extended part costing ~$3/line for nothing? cheaper_basic_part("C25100") ``` A board passes every structural check with a 10-ohm LED resistor or an LDO dissipating a watt in a SOT-23. If you score the power lens without running these, you have scored a guess. ### 2. Score each lens For each of the seven, in order, produce: a score 1–10, and notes. Every note carries a **severity** and a **target**: - `must-fix` — the board should not be made like this. - `should-fix` — real, worth a round, not fatal. - `consider` — a judgement call, state the trade-off and move on. A note without a specific location (`U2`, `net.V3_3`, "the USB connector", "top-left corner") is not a note; it is an opinion. Make it specific or drop it. ### 3. The ship bar A board is **ready to make** when all of: - `fab.ready` is `true` in the sidecar (which already implies zero `error`-severity warnings and kicad-cli-verified gerbers). This is the entry condition, not a scoring line: `false` means the board never reaches the panel. - **every lens scores ≥ 7**; - **zero `must-fix` notes** open; - power integrity and safety score **≥ 8** (these two get a higher bar — the failure modes are fire and a dead board, not disappointment); - someone can state, in one sentence, how to bring the board up when it arrives; - **every block the project carries that the golden library does not** grades `ok` under `python3 "${CIRCUIT_SKILLS_DIR:-$HOME/.claude/skills}/block-source/scripts/grade-block.py" blocks/<id>/BLOCK.md`, and the safety lens has read its `certification` row with its own eyes. A sourced block is the one part of the board no committed library ever reviewed: `blocklib.drift_warnings` reports `changed` and `missing` and is silent about `extra`, so nothing upstream of this panel will mention that the block is there at all. An `interconnect` needs the land pattern to be the supplier's; a `certified-module` needs an identifier a lab issued, and "the datasheet says it is certified" is not one; an `integrated-module` needs its `integration` row to actually name the parts it carries, and the safety lens must check the claim against the schematic — **if this board adds any active part to make that module work, the class is wrong and the block should never have graded.** Miss any of those and the verdict is `iterate`, not `ready`. ### 4. Route the notes back Hand `must-fix` and `should-fix` notes to `circuitcode` as concrete edits — "move C2 within 2mm of U2 pin 3", not "improve decoupling". Then rebuild and re-run the panel. Only the lenses whose inputs changed need a full re-score; say which ones you re-ran. ## Output format Exactly one fenced ```design-review JSON block, then a 2–3 sentence summary in plain words: ```json { "board": "boards/main.tsx", "round": 1, "verdict": "iterate", "ready_to_make": false, "lenses": [ {"lens": "power", "score": 6, "notes": [ {"severity": "must-fix", "target": "U2", "detail": "AMS1117 drops 1.7V at 180mA = 0.31W in SOT-223 with no copper pour; add a 10x10mm pour on the tab or move to a buck.", "fix": "add pour under U2 tab"} ]}, {"lens": "manufacturability", "score": 8, "notes": []}, {"lens": "layout", "score": 7, "notes": []}, {"lens": "testability", "score": 4, "notes": [ {"severity": "must-fix", "target": "board", "detail": "no test point on V3_3 — if the board arrives dead there is nothing to measure.", "fix": "add TP on V3_3 and GND"} ]}, {"lens": "cost", "score": 8, "notes": []}, {"lens": "safety", "score": 9, "notes": []}, {"lens": "product-fit", "score": 7, "notes": []} ], "must_fix_count": 2, "bring_up": "plug USB-C, expect the power LED lit and 3.30V +/-3% on TP1", "blocking_warnings": 0 } ``` ## Non-negotiables 1. **Never score a lens you did not actually examine.** A 10 you did not earn is worse than a 5 you did — it launders an unchecked board into a signed-off one. 2. **Never declare `ready_to_make` with `fab.ready: false`.** Unverified gerbers are not a shippable packet, whatever the board looks like. 3. **Read the images every round.** The layout changes between rounds; a score carried over from the previous picture is fiction. 4. **Be specific or say nothing.** Every note names a part, a net, or a place. 5. **Do not iterate past 4 rounds.** Take it to the user with the trade-off. 6. **Say what you could not check.** Thermal behaviour, EMI, signal integrity, and real-world part fit are outside every deterministic tool we have — the panel's judgement on them is judgement, and should be labelled as such. 7. **The panel does not edit the board.** It reviews and routes. circuitcode makes changes; keeping those roles apart is what keeps the review honest. ## Required final response 1. **Verdict in one line** — ready to make, or iterating and why. 2. **The scores** — seven numbers, lowest first. 3. **What changed this round** — if this is round 2+. 4. **What you could not check** — the honest limits. 5. **The bring-up sentence** — how the user knows it works when it arrives.
在 GitHub 查看