specforge-draftlisted
Install: claude install-skill WangLiquan/specforge
# SpecForge Draft
把一个模糊 idea 变成「人能最小成本拍板、机器能消费」的 spec.html。
## 流程
1. **发散**:一次一个问题,挖目标 / 非目标 / 约束 / 成功标准。必要时提 2-3 方案带取舍与推荐。
2. **收敛拷问**:对每个决策分支穷追到底,把模糊点逼成明确选择,直到没有悬而未决项。**这是硬要求**——渲染脚本会拒绝带 `open` 决策生成 spec(见 step 4),别把没问清的甩成「待拍板」糊弄过去。每个决策分支带 `options[]`,**优先用 `AskUserQuestion` 逐条弹结构化选项**让 user 当场拍板,而不是默认标 `open`。
3. **结构化**:把结论写成符合 `references/spec.schema.json` 的 JSON 对象(字段见该 schema)。
**spec.html 是给人 review/拍板看的**——优先沉淀人最该看的三类(渲染时置顶展开):
- `decisions[]` **决策点**:拷问中每个有取舍的分支都显式记一条。ID 用 `D-1 / D-2 …`;`question`=决策项、`options`=候选、`resolution`=当前拍板、`rationale`=为什么。默认都应拷问到 `status:"decided"`。`status:"open"`(待拍板)是**逃生舱、不是常态**——只在 **user 明确说「先跳过 / 这条以后再定」** 时才允许保留,且渲染必须显式 `--allow-open`(见 step 4)。别把决策只留在对话里。
- `awareness[]` **知情项**:用户该知道的影响 / 边界 / 不改动承诺 / 风险。ID 用 `A-1 / A-2 …`;破坏性或风险类写 `severity:"warning"`(标红),其余 `info`。
- 整体流程用 `sections[]` 里的 `type:"flow"`(默认展开)。
其余为次要内容(渲染时默认折叠,按需展开):
- `summary`、背景 / 口径 / 表格类 `prose`/`table` section 默认折叠;要强制展开某节设 `collapsed:false`,要强制折叠某流程设 `collapsed:true`。
- `criteria[]` 是验收点,**给 `specforge-verify` 消费的机器契约、默认折叠**;不是人 review 的重点,但仍要写全。ID 用 `AC-1 / AC-2 …`,**一旦分配不要因排序/增删而重排或复用**。
- 每个待拍板的 `decisions` 与 `criteria` 应能对应:决策落地后才好定验收点。
- `assumptionReview` + `assumptions[]` **现状假设**(涉及现有代码/系统时必写):spec 但凡对「现有代码/系统的真实行为」下断言——「复用 X 现有能力」「X 现在的行为是 Y」——就**必须**把每条断言记进 `assumptions[]`,带 `id`(`ASM-1 / ASM-2 …`,唯一)、`claim`(断言)、`evidence`(`file:line` 锚点,**逼你去读代码而非凭记忆猜**)、`verified:null`、`verifiedDigest:null`,并在顶层声明 `assumptionRevie