Nine components九个组件
Every row defends a weakness.
每一行都挡一个弱点。
The only legitimate reason for a harness component to exist is that a specific model weakness makes it necessary. If a reader can argue this weakness isn't real
and we can't produce evidence, we remove the component.
一个 harness 组件能存在的唯一理由,是有一条具体的模型弱点要求它存在。如果有人说"这条弱点不成立",而我们拿不出证据,就把这个组件删掉。
Done · contract + JSON output已完成 · 合同 + JSON 输出
01
design-planner
skills/design-review/scripts/sprint-contract.mjs + bin/design-review --plan + skills/design-planner/SKILL.md
Model weakness对应弱点
Faced with a vague brief, the model fills in training-data medians. Scope drifts. A planner expands the brief into a sprint contract — section list, must-include content, hard constraints — before the generator runs.
面对模糊需求,模型会用训练数据的中位数填空,scope 失控。planner 在生成器动手前,把需求展开成 sprint contract —— 必含 section、必含内容、硬指标。
Done · 59/59 matrix已完成 · 59/59 铺满
02
reference library参考库
skills/<style>-design/references/canonical/
Model weakness对应弱点
Without reference, output regresses to the most average web design.
A per-style canonical library of 10 page-types (pricing / landing / docs-home / blog / product / team / comparison / FAQ / changelog / feature-deep) anchors quality at each style's own best — not an industry average.
没有参考,输出就向"最平均的 web 设计"收敛。每个 style 自己的 10 个 page-type canonical 库(pricing / landing / docs / blog / product / team / comparison / FAQ / changelog / feature-deep),把品质锚定在该 style 自己的最好,不是行业平均。
Done · 2026-04-24已完成 · 2026-04-24
03
generator + self-diff生成器 + 自评差异
skills/{apple,anthropic,ember,sage}-design/
Model weakness对应弱点
Models don't naturally articulate their design decisions after writing. Without a required self-diff note, the critic has no concrete target — just vibes. Enforced 2026-04-24 via cross-skill-rules §M + verify.py canonical-self-diff check: every canonical HTML must embed a design-review:self-diff v1 comment block (5+ decisions × [id] chose A over B + known trade-offs). All 14 existing canonicals back-filled from their .md files.
模型写完 HTML 不会自然记录设计决策。没有强制的 self-diff note,critic 没有具体靶子,只能凭感觉评。2026-04-24 正式强制:cross-skill-rules §M + verify.py 的 canonical-self-diff check:每张 canonical 必须 embed design-review:self-diff v1 注释块(5+ 条 [id] chose A over B 决策 + known trade-offs)。14 张现有 canonical 从各自 .md 全部回补完毕。
Done · 38 checks已完成 · 38 项 check
04
mechanical-review
skills/design-review/
Model weakness对应弱点
Models don't self-check runtime behavior — multi-viewport rendering, keyboard navigation, color contrast, LCP/CLS, SEO meta. A mechanical gate catches the class of bugs source-scanning and model self-review both miss.
runtime 行为(多视口渲染、键盘可达性、对比度、LCP/CLS、SEO meta)模型自己不会检查。mechanical 检查抓的正是源码扫描和模型自评都抓不到的那一类 bug。
Done · 2026-04-22已完成 · 2026-04-22
05
multi-critic多位专家评审员
.claude/agents/design-{composition,copy,illustration,brand}-critic.md
Model weakness对应弱点
Evaluating one's own work tends to produce uniform praise. Even a fresh-context critic has a limited attention budget — one reviewer can't divide it evenly across four orthogonal axes: composition, copy, illustration, brand. Four specialists (weights 25/25/20/30) in fresh contexts + an aggregator. First live run on this page: solo-critic 93, multi-critic 88 — the 5-point gap was the illustration specialist catching a 6th-hue leak inside an SVG the generalist missed.
评审自己的作品会整体说好话。即便 fresh context 的 critic,注意力预算也有限,一个人很难把它均匀分给四个正交维度:版式、copy、插画、品牌。四位专家(权重 25/25/20/30)各自 fresh context + 一位汇总。本页首次实战:单 critic 93,多 critic 88 —— 差的 5 分是插画专家在 SVG 里抓到了通才漏掉的 6 色偷渡。
Done · first run shipped (critic 92)已完成 · 首跑通过(critic 92)
06
/design-loop
.claude/commands/design-loop.md
Model weakness对应弱点
Models default to ship the first-pass output.
Without orchestration, actual iteration ends after 1–2 rounds. A loop controller forces the planner → generator → review → critic cycle for up to 5 rounds, or escalates to a human.
模型默认"第一版够用就发"。没有外部编排,实际只跑 1-2 轮。loop controller 强制 planner → generator → review → critic 最多 5 轮,超过还过不去就交还给人。
Done · 2026-04-22已完成 · 2026-04-22
07
learning-loop
.claude/agents/design-learner.md + scripts/learning-loop.mjs
Model weakness对应弱点
Models don't automatically archive "the new issue the critic caught today." Without this loop, the same bug class keeps being caught by humans. design-learner reads critic verdicts (solo or multi) and proposes three codifications: new rows in known-bugs.md, new mechanical checks in visual-audit.mjs, per-skill dos-and-donts entries. First live run 2026-04-22: 13 raw verdict issues → 5 unique bug classes → 3 new known-bugs (1.17/1.18/1.19) + 1 new visual-audit check (figure-no-caption) + 8 dos-and-donts rows. Human-in-the-loop — agent proposes; human applies.
模型不会自动归档"critic 今天新抓到的问题"。没有这个环节,同一类 bug 会反复被人抓到。design-learner 读 critic 的 verdict(单/多),提三件事:known-bugs.md 新行、visual-audit.mjs 新机器 check、每 skill 的 dos-and-donts。首次实战 2026-04-22:13 条原始 issue → 5 类 bug → 新 3 行 known-bugs(1.17/1.18/1.19)+ 1 个新机器 check(figure-no-caption)+ 8 条 dos-and-donts。human-in-the-loop —— agent 提,人审完 apply。
Built · awaiting corpus data已建 · 等 corpus 数据
08
library-grower
skills/design-review/scripts/library-grower.mjs
Model weakness对应弱点
Models can't self-organize yesterday's good output
into tomorrow's reference. Without this, the canonical library stays fixed and becomes stale over 6 months. Five successful outputs of a page-type → auto-distilled into a new canonical (candidate.html + diffs.md), reviewed by a human, merged. /design-loop deposits each ≥88 ship into the corpus via --deposit.
模型没有"把昨天的好产物整理成明天参考"的能力。没有它,canonical library 会固定,6 个月后就开始过期。同一 page-type 攒 5 次优秀产物 → 自动蒸馏成新 canonical(candidate.html + diffs.md),人审核通过后并入。/design-loop 每次 ≥88 上线都用 --deposit 把页喂进 corpus。
Built · no round yet机制已建 · 未跑
09
design-evolve
skills/design-evolve/SKILL.md
Model weakness对应弱点
Models repeat the same taste mistakes and can't tell which of their own rules actually help. A Darwin / autoresearch ratchet: mutate one generator rule, regenerate, score with the frozen evaluator, keep it only if it strictly beats the baseline with no held-out canonical regressing. Selection, not authorship — the system improves its own rules without being able to cheat the test. EvolveR scoring prunes dead rules; a held-out regression gate blocks overfit.
模型会重复同样的审美错误,也分不清自己哪条规则真有用。一个 Darwin / autoresearch 式爬坡:改一条生成器规则、重新生成、用冻结的评审器打分,只有严格超过基线且无 held-out canonical 变差才保留。由选择而非作者决定 —— 系统能改进自己的规则,又没法在测试上作弊。EvolveR 成功率裁剪失效规则;held-out 回退门挡过拟合。