sillyspec 3.28.0 → 3.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/.claude/skills/sillyspec-auto/SKILL.md +54 -93
  2. package/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -114
  3. package/.claude/skills/sillyspec-continue/SKILL.md +17 -47
  4. package/.claude/skills/sillyspec-execute/SKILL.md +222 -214
  5. package/.claude/skills/sillyspec-knowledge/SKILL.md +40 -270
  6. package/.claude/skills/sillyspec-plan/SKILL.md +156 -156
  7. package/.claude/skills/sillyspec-propose/SKILL.md +16 -87
  8. package/.claude/skills/sillyspec-resume/SKILL.md +21 -70
  9. package/.claude/skills/sillyspec-state/SKILL.md +25 -64
  10. package/.claude/skills/sillyspec-workspace/SKILL.md +33 -175
  11. package/package.json +1 -1
  12. package/src/archive-delta.js +462 -0
  13. package/src/constants.js +6 -0
  14. package/src/design-facts.js +418 -0
  15. package/src/dispatch/backends/sillyhub-mcp.js +17 -5
  16. package/src/docs-check.js +197 -34
  17. package/src/docs-migrate.js +124 -0
  18. package/src/doctor-diagnostics.js +11 -2
  19. package/src/endpoint-baseline.js +109 -0
  20. package/src/git-helper.js +31 -0
  21. package/src/index.js +381 -22
  22. package/src/modules.js +41 -12
  23. package/src/progress/change-registry.js +39 -0
  24. package/src/progress/consistency-doctor.js +124 -5
  25. package/src/progress/stage-machine.js +13 -2
  26. package/src/progress.js +5 -0
  27. package/src/quicklog.js +51 -0
  28. package/src/run/command.js +199 -5
  29. package/src/run/complete-handlers.js +60 -4
  30. package/src/run/complete.js +105 -6
  31. package/src/run/gates.js +353 -2
  32. package/src/run/progress-confirm.js +66 -0
  33. package/src/run/prompt.js +193 -15
  34. package/src/run/quick-audit.js +12 -5
  35. package/src/run/scan-profile.js +117 -7
  36. package/src/run/shared.js +22 -6
  37. package/src/run/stage.js +14 -1
  38. package/src/scan-diff.js +54 -1
  39. package/src/scan-facts.js +173 -0
  40. package/src/scan-postcheck.js +114 -3
  41. package/src/spec-sync.js +19 -2
  42. package/src/stage-review.js +62 -3
  43. package/src/stages/archive.js +5 -5
  44. package/src/stages/brainstorm-auto.js +2 -1
  45. package/src/stages/brainstorm.js +12 -20
  46. package/src/stages/execute.js +19 -21
  47. package/src/stages/plan-postcheck.js +194 -1
  48. package/src/stages/plan.js +8 -3
  49. package/src/stages/quick.js +4 -2
  50. package/src/stages/scan.js +44 -102
  51. package/src/stages/verify.js +18 -18
  52. package/src/task-review.js +200 -0
  53. package/src/taskcard.js +8 -1
  54. package/src/verify-postcheck.js +771 -29
  55. package/src/verify-probes.js +89 -10
  56. package/src/workflow.js +30 -0
  57. package/templates/agents-instruction.md +1 -1
  58. package/templates/prompts/taskcard-rules.md +5 -0
  59. package/templates/workflows/scan-docs.yaml +6 -0
  60. package/.claude/skills/verify-per-user/SKILL.md +0 -6
@@ -1,93 +1,54 @@
1
- ---
2
- name: sillyspec:auto
3
- description: 自动模式 — 全流程自动推进(通用版)
4
- argument-hint: "<需求描述>"
5
- ---
6
-
7
- ## 交互规范
8
-
9
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。
10
-
11
- ## 用法
12
-
13
- - `/sillyspec:auto 实现用户登录功能`
14
- - `/sillyspec:auto 修复搜索结果的排序问题`
15
-
16
- ## 任务
17
- $ARGUMENTS
18
-
19
- ---
20
-
21
- ## 执行流程
22
-
23
- 你是全流程编排器,按 brainstorm → plan → execute → verify 顺序自动推进。
24
-
25
- ### 启动
26
-
27
- ```bash
28
- sillyspec run auto --input "<用户需求>" [--mode <模式>]
29
- ```
30
-
31
- 2. 读取 CLI 输出的 step prompt(含角色描述)
32
- 3. 执行 prompt 中的操作
33
- 4. **记录 CLI 输出中显示的 Change 名称**(如 `Change: 2026-06-02-xxx`)
34
-
35
- ### 步骤循环
36
-
37
- 重复以下循环直到 CLI 输出"全部流程已完成":
38
-
39
- 1. **读取 CLI 输出的 step prompt**
40
- 2. **判断是否需要用户确认:**
41
- - prompt 含"请用户选择 / 等待用户回答 / 展示给用户 / 用户确认" → **暂停,等用户回复**
42
- - 纯内部操作 → **直接执行**
43
- 3. **执行 prompt 要求的操作**
44
- 4. **完成后运行:**
45
- ```bash
46
- sillyspec run auto --done --change <变更名> --output "<你的摘要>"
47
- ```
48
- - ⚠️ **必须携带 `--change <变更名>`**,变更名来自启动时 CLI 输出的 `Change:` 字段
49
- - **绝不使用 `--change default`**,除非 CLI 启动时明确显示的 Change 名称就是 `default`
50
- 5. **读取 CLI 输出的下一步 prompt**,回到步骤 1
51
-
52
- ### auto 参数
53
-
54
- | 参数 | 说明 |
55
- |---|---|
56
- | `--input "<需求>"` | 启动时传入用户需求 |
57
- | `--mode <模式>` | 显式指定流程模式(默认按复杂度自动分类) |
58
- | `--done --change <名> --output "..."` | 完成当前步骤(必带 --change) |
59
- | `--spec-dir <path>` | 指定规范目录 |
60
- | `--non-interactive` | CI/脚本下禁用交互 |
61
-
62
- ## 阶段审核门控(Stage Review Gate)
63
-
64
- 审核发生在 brainstorm / plan / execute 各阶段的 review 步骤,**分级由 CLI 按变更规模自动判定**(不是 agent 凭关键词或复杂度启发式判断):
65
-
66
- - **tier=self**(变更 ≤3 文件):当前 agent 自审,直接产 review.json。
67
- - **tier=independent**(变更 >3 文件):必须派发**独立 QA 子代理**(独立上下文,不共享实现者分析)产 review.json。
68
-
69
- CLI 会在 review 步骤注入:完整 JSON schema 表 + 示例 + docHash 算法 + 自动决策 checklist(AC-001 起,逐条核验公共 API / schema / 鉴权 / 文件边界 / 依赖 / 核心模块 / 兼容性 / 业务等维度)。你按**实际注入的契约与 tier 指令**执行:
70
-
71
- - checklist 全 ✅ 且方案唯一合理 → AUTO_DECIDED,推进下一阶段
72
- - checklist 有 ❌(影响架构/数据/接口/权限/兼容性/业务)→ 暂停,用 AskUserQuestion 让用户选择
73
-
74
- **不要**自行编造"简单/中等/复杂 → N 个审核子代理"规则——审核子代理数量由 tier 决定(self=0 额外子代理,independent=1 个独立 QA),不是复杂度启发式;以 CLI 实际注入的 tier 与 checklist 为准。
75
-
76
- ## 关键规则
77
-
78
- - 不要跳过任何步骤
79
- - 不要手动修改进度数据(SQLite 数据库)
80
- - 不要自动 commit,只 `git add`
81
- - 不要使用 npx
82
- - 不要编造不存在的 CLI 子命令
83
- - 遇到命令报错 → 展示错误,暂停等用户介入
84
- - **每次 `sillyspec run auto --done` 都必须携带 `--change <变更名>`**(= CLI 首次输出的 Change 名)
85
-
86
- ## 异常处理
87
-
88
- - 命令执行失败 → 展示错误信息,暂停等待用户指示
89
- - 用户说"停止"/"暂停" → 立即停止,报告当前进度
90
-
91
- ## 完成条件
92
-
93
- CLI 输出"全部流程已完成"后,输出完整流程总结,提示用户提交改动(`/sillyspec:commit`)。
1
+ ---
2
+ name: sillyspec:auto
3
+ description: 自动模式 — 全流程自动推进(通用版)
4
+ argument-hint: "<需求描述>"
5
+ ---
6
+
7
+ ## 交互规范
8
+
9
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。
10
+
11
+ ## 用法
12
+
13
+ - `/sillyspec:auto 实现用户登录功能`
14
+ - `/sillyspec:auto 修复搜索结果的排序问题`
15
+
16
+ ## 任务
17
+ $ARGUMENTS
18
+
19
+ ---
20
+
21
+ ## 执行流程
22
+
23
+ 按 brainstorm → plan → execute → verify 顺序自动推进;**编排由 CLI driver 承担,你只执行判断步**。
24
+
25
+ ### 启动
26
+
27
+ ```bash
28
+ sillyspec run auto --input "<用户需求>" [--mode <模式>]
29
+ ```
30
+
31
+ 零活跃变更时 CLI 自动创建(也可 `--change <名>` 指定);多活跃变更 CLI 会列出候选要求显式指定。单活跃自动选中并回显,无需记忆/传递变更名。
32
+
33
+ ### 每步循环(唯一纪律)
34
+
35
+ 1. 跑 CLI 给出的命令(启动时是上面的 run auto;此后每步读上一步输出尾部的 **SS-META 块**)。
36
+ 2. 读 prompt 尾部机器可读元数据块:
37
+
38
+ ```
39
+ <!--SS-META:{"stage":...,"requiresUser":true|false,"doneCommand":"...","waitHint":"..."}-->
40
+ ```
41
+
42
+ 3. 按块驱动:
43
+ - `requiresUser=true` → 本步需要用户输入:按 prompt 的 wait 指令先展示选项,取得用户回答后走 `--continue --answer`,再 `--done`(用户在终端且带 `--wait-interactive` 时 CLI 会直接 readline 收,无需转抄)。
44
+ - `requiresUser=false` → 执行本步任务(设计/实现/审查等判断工作),完成后**逐字执行 `doneCommand`**(`--output "你的摘要"` 换成真实一句话摘要)。
45
+ 4. CLI 会在阶段边界自动流转(gate 不过会给出修复指引——修完重跑,进度不丢)。
46
+
47
+ ### 终止
48
+
49
+ **CLI 打印「流程收尾总结」分隔线块(变更/阶段/任务勾选/产物清单)即全流程完成**——不要自行判断完成、不要自撰总结。CLI 若提示「全部流程已完成」(All auto flow stages are complete)同义。
50
+
51
+ ### 边界
52
+
53
+ - 中断恢复:直接重跑 `sillyspec run auto`(进度已落盘,从断点续)。
54
+ - 分类为 quick 的小变更:CLI 会提示改跑 `sillyspec run quick`,照提示执行。
@@ -1,114 +1,114 @@
1
- ---
2
- name: sillyspec:brainstorm
3
- description: 用于正式开始开发前的需求澄清和技术方案设计。适合用户提出新功能、新模块、架构调整、复杂改造,或说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"。产出结构化方案(design/proposal/requirements/tasks 四件套),但不直接写代码。
4
- ---
5
-
6
- ## 交互规范
7
-
8
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。
9
-
10
- ## 何时使用
11
-
12
- - 用户提出新功能、新模块、架构调整、复杂改造
13
- - 用户说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"
14
- - 产出:`design.md` + `proposal.md` + `requirements.md` + `tasks.md`(四件套),不写代码
15
-
16
- ## 多变更说明
17
-
18
- 项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录)时,所有 `sillyspec run` 命令需加 `--change <变更名>` 指定操作目标;只有一个变更时可省略(CLI 自动检测)。建议变更名格式:`YYYY-MM-DD-<简短描述>`。
19
-
20
- ## 步骤生命周期(所有阶段通用)
21
-
22
- > `sillyspec brainstorm` 是 `sillyspec run brainstorm` 的顶层别名,两者等价。
23
-
24
- ```bash
25
- sillyspec run brainstorm # 输出当前步骤 prompt
26
- sillyspec run brainstorm --done --output "摘要" # 完成当前步骤(--input "用户原话" 记录输入)
27
- sillyspec run brainstorm --status # 查看阶段进度
28
- sillyspec run brainstorm --skip # 跳过可选步骤
29
- sillyspec run brainstorm --reset # 重置阶段(从头开始)
30
- sillyspec run brainstorm --reopen --from-step N # 重新打开已完成阶段修订(N=序号或名称)
31
- sillyspec run brainstorm --wait --reason "..." --options "A,B" # 暂停等用户决策
32
- sillyspec run brainstorm --continue --answer "..." # 恢复等待中的步骤
33
- sillyspec run brainstorm --done --answer "..." --output "..." # 一步完成 wait+done
34
- ```
35
-
36
- ## 通用参数(所有阶段适用)
37
-
38
- | 参数 | 说明 |
39
- |---|---|
40
- | `--change <名>` | 指定变更名(多活跃变更必填,单变更可省略自动检测) |
41
- | `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
42
- | `--non-interactive` | CI/脚本下禁用交互式 prompt |
43
- | `--interactive` | 强制交互(即便 stdin 非 TTY) |
44
- | `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
45
-
46
- ## brainstorm 特有:requiresWait 步骤
47
-
48
- 某些步骤(如"对话式探索与需求澄清")需要用户输入。两种方式:
49
-
50
- > 自动去重:若前置 step 已对同一问题(waitReason 归一化后相同)确认过,后续重复 wait 会自动跳过,无需再 `--wait`。
51
-
52
- - **方式一(推荐)**:分步——先 `--wait` 记录等待,让用户亲眼看到 CLI 打出的选项再作答,再 `--continue --answer`,最后 `--done`:
53
- ```bash
54
- sillyspec run brainstorm --wait --change <名> --reason "等待用户回答" --output "探索问题"
55
- sillyspec run brainstorm --continue --answer "用户回答" --change <名>
56
- sillyspec run brainstorm --done --change <名> --output "需求已澄清"
57
- ```
58
- - **方式二**:AI 自行与用户交互后,一步完成(仅在用户已在对话中明确给出答案、无需再走 CLI 等待展示时用):
59
- ```bash
60
- sillyspec run brainstorm --done --change <名> --answer "用户回答" --output "需求已澄清"
61
- ```
62
-
63
- > ⚠️ 两种方式都要求 `--answer` 是**用户真实的回答**,不是你替用户编的回答。`requiresWait` 门只校验 `--answer` 非空,挡不住「AI 伪造用户回答」——所以对方案选择/设计确认这类关键决策,优先用方式一让用户亲手作答,而不是 AI 中继一句话带过。
64
-
65
- ## 阶段流转
66
-
67
- ```
68
- ┌─ scale=large → plan(四件套齐)
69
- scan → brainstorm ┤
70
- └─ scale=small → quick --linked-changes(仅 design.md)
71
- ```
72
-
73
- brainstorm 完成时按 design.md frontmatter 的 `scale` 分叉:
74
- - **large**(多文件/跨模块/有状态机或 schema 变更):四件套齐 + Design Grill 审查通过(tier=independent 时由独立审查子代理产出 stage review.json)→ `sillyspec run plan --change <变更名>`
75
- - **small**(≤2 文件、单模块、无跨模块依赖):仅生成 design.md → `sillyspec run quick --linked-changes <变更名>`
76
-
77
- > 规模由 AI 在 brainstorm 最后一步评估并写入 design.md frontmatter。判错可手动改 `scale` 后再跑相应阶段。
78
-
79
- ### Stage Review Gate(brainstorm 末尾的 design review.json)
80
-
81
- brainstorm 在 `tier=independent` 规模下除 design.md 等四件套外,还需产出一个 stage 级 `review.json`,CLI `Stage Review Gate` 硬校验其 schema 与 `docHash` 真实性。
82
-
83
- - 路径:`.sillyspec/.runtime/stage-reviews/brainstorm-review-<stage-review-run-id>/review.json`(目录可能不存在需手建;run-id 由该步 `--done` prompt 输出指定)。marker 文件 `.runtime/current-stage-review-run-id-brainstorm-<变更名>`。
84
- - **run-id / marker 由 CLI 自动生成注入**(review step prompt 渲染时 echo 完整目录路径 + 写 marker;撞 gate 报缺 review.json 时 gate 也 echo 完整路径 + 写 marker)。直接用 CLI 给的路径写 review.json,**勿手算 run-id(必须 `review-` 前缀)、勿手写 marker**。卡住时用 `sillyspec register-stage-review --change <名> --stage brainstorm` 一步生成。
85
- - 字段(`schemaVersion:1`,`reviewType=design` —— 区别于 execute 的 `acceptance`):
86
-
87
- ```json
88
- {
89
- "schemaVersion": 1,
90
- "reviewType": "design",
91
- "reviewedFiles": ["changes/<变更名>/design.md"], // [0] 为主文档
92
- "docHash": "<sha256(reviewedFiles[0] 文件内容,hex)>",
93
- "specVerdict": "pass", // pass | fail | cannot_verify
94
- "qualityVerdict": "pass", // pass | fail | cannot_verify
95
- "checklist": [ // 扁平数组,逐条对照 design 章节核验
96
- { "item": "背景与目标", "result": "pass", "note": "..." } // result: pass | gap | fail
97
- ],
98
- "requiredEvidence": [], // cannot_verify 时必填非空
99
- "reviewerNotes": "..."
100
- }
101
- ```
102
-
103
- - `docHash` = `sha256(主审查文档内容)`(hex)—— brainstorm 主文档是 `design.md`(即 `reviewedFiles[0]`)。CLI 重算 sha256 比对,不符判伪造(fail-closed)。docHash 可先占位(如 "TODO");改 design.md 后勿手算 sha256——跑 `sillyspec register-stage-review --change <变更名> --stage brainstorm --refresh-hash` 一键重算代填(verdict 保留;design 改版多阶段联动加 --all)。`tier=self`(≤3 文件)降级为当前 agent 自审,不强制独立子代理。
104
- - 运行时 CLI 会把精确 schema 表 + 完整 JSON 示例 + docHash 算法注入到该步 prompt,以你实际收到的注入版契约为权威逐字模板。
105
-
106
- ## 铁律
107
-
108
- - **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
109
- - 只做当前步骤 prompt 描述的操作,不跳过、不自行扩展
110
- - 产物写入 CLI 输出的 `changeDir` 目录(如 `<changeDir>/design.md`),不要自己拼路径
111
- - 完成后立即 `--done`,不跳过
112
-
113
- ## 用户指令
114
- $ARGUMENTS
1
+ ---
2
+ name: sillyspec:brainstorm
3
+ description: 用于正式开始开发前的需求澄清和技术方案设计。适合用户提出新功能、新模块、架构调整、复杂改造,或说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"。产出结构化方案(design/proposal/requirements/tasks 四件套),但不直接写代码。
4
+ ---
5
+
6
+ ## 交互规范
7
+
8
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。
9
+
10
+ ## 何时使用
11
+
12
+ - 用户提出新功能、新模块、架构调整、复杂改造
13
+ - 用户说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"
14
+ - 产出:`design.md` + `proposal.md` + `requirements.md` + `tasks.md`(四件套),不写代码
15
+
16
+ ## 多变更说明
17
+
18
+ 项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录)时,所有 `sillyspec run` 命令需加 `--change <变更名>` 指定操作目标;只有一个变更时可省略(CLI 自动检测)。建议变更名格式:`YYYY-MM-DD-<简短描述>`。
19
+
20
+ ## 步骤生命周期(所有阶段通用)
21
+
22
+ > `sillyspec brainstorm` 是 `sillyspec run brainstorm` 的顶层别名,两者等价。
23
+
24
+ ```bash
25
+ sillyspec run brainstorm # 输出当前步骤 prompt
26
+ sillyspec run brainstorm --done --output "摘要" # 完成当前步骤(--input "用户原话" 记录输入)
27
+ sillyspec run brainstorm --status # 查看阶段进度
28
+ sillyspec run brainstorm --skip # 跳过可选步骤
29
+ sillyspec run brainstorm --reset # 重置阶段(从头开始)
30
+ sillyspec run brainstorm --reopen --from-step N # 重新打开已完成阶段修订(N=序号或名称)
31
+ sillyspec run brainstorm --wait --reason "..." --options "A,B" # 暂停等用户决策
32
+ sillyspec run brainstorm --continue --answer "..." # 恢复等待中的步骤
33
+ sillyspec run brainstorm --done --answer "..." --output "..." # 一步完成 wait+done
34
+ ```
35
+
36
+ ## 通用参数(所有阶段适用)
37
+
38
+ | 参数 | 说明 |
39
+ |---|---|
40
+ | `--change <名>` | 指定变更名(多活跃变更必填,单变更可省略自动检测) |
41
+ | `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
42
+ | `--non-interactive` | CI/脚本下禁用交互式 prompt |
43
+ | `--interactive` | 强制交互(即便 stdin 非 TTY) |
44
+ | `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
45
+
46
+ ## brainstorm 特有:requiresWait 步骤
47
+
48
+ 某些步骤(如"对话式探索与需求澄清")需要用户输入。两种方式:
49
+
50
+ > 自动去重:若前置 step 已对同一问题(waitReason 归一化后相同)确认过,后续重复 wait 会自动跳过,无需再 `--wait`。
51
+
52
+ - **方式一(推荐)**:分步——先 `--wait` 记录等待,让用户亲眼看到 CLI 打出的选项再作答,再 `--continue --answer`,最后 `--done`:
53
+ ```bash
54
+ sillyspec run brainstorm --wait --change <名> --reason "等待用户回答" --output "探索问题"
55
+ sillyspec run brainstorm --continue --answer "用户回答" --change <名>
56
+ sillyspec run brainstorm --done --change <名> --output "需求已澄清"
57
+ ```
58
+ - **方式二**:AI 自行与用户交互后,一步完成(仅在用户已在对话中明确给出答案、无需再走 CLI 等待展示时用):
59
+ ```bash
60
+ sillyspec run brainstorm --done --change <名> --answer "用户回答" --output "需求已澄清"
61
+ ```
62
+
63
+ > ⚠️ 两种方式都要求 `--answer` 是**用户真实的回答**,不是你替用户编的回答。`requiresWait` 门只校验 `--answer` 非空,挡不住「AI 伪造用户回答」——所以对方案选择/设计确认这类关键决策,优先用方式一让用户亲手作答,而不是 AI 中继一句话带过。
64
+
65
+ ## 阶段流转
66
+
67
+ ```
68
+ ┌─ scale=large → plan(四件套齐)
69
+ scan → brainstorm ┤
70
+ └─ scale=small → quick --linked-changes(仅 design.md)
71
+ ```
72
+
73
+ brainstorm 完成时按 design.md frontmatter 的 `scale` 分叉:
74
+ - **large**(多文件/跨模块/有状态机或 schema 变更):四件套齐 + Design Grill 审查通过(tier=independent 时由独立审查子代理产出 stage review.json)→ `sillyspec run plan --change <变更名>`
75
+ - **small**(≤2 文件、单模块、无跨模块依赖):仅生成 design.md → `sillyspec run quick --linked-changes <变更名>`
76
+
77
+ > 规模由 AI 在 brainstorm 最后一步评估并写入 design.md frontmatter。判错可手动改 `scale` 后再跑相应阶段。
78
+
79
+ ### Stage Review Gate(brainstorm 末尾的 design review.json)
80
+
81
+ brainstorm 在 `tier=independent` 规模下除 design.md 等四件套外,还需产出一个 stage 级 `review.json`,CLI `Stage Review Gate` 硬校验其 schema 与 `docHash` 真实性。
82
+
83
+ - 路径:`.sillyspec/.runtime/stage-reviews/brainstorm-review-<stage-review-run-id>/review.json`(目录可能不存在需手建;run-id 由该步 `--done` prompt 输出指定)。marker 文件 `.runtime/current-stage-review-run-id-brainstorm-<变更名>`。
84
+ - **run-id / marker 由 CLI 自动生成注入**(review step prompt 渲染时 echo 完整目录路径 + 写 marker;撞 gate 报缺 review.json 时 gate 也 echo 完整路径 + 写 marker)。直接用 CLI 给的路径写 review.json,**勿手算 run-id(必须 `review-` 前缀)、勿手写 marker**。卡住时用 `sillyspec register-stage-review --change <名> --stage brainstorm` 一步生成。
85
+ - 字段(`schemaVersion:1`,`reviewType=design` —— 区别于 execute 的 `acceptance`):
86
+
87
+ ```json
88
+ {
89
+ "schemaVersion": 1,
90
+ "reviewType": "design",
91
+ "reviewedFiles": ["changes/<变更名>/design.md"], // [0] 为主文档
92
+ "docHash": "<sha256(reviewedFiles[0] 文件内容,hex)>",
93
+ "specVerdict": "pass", // pass | fail | cannot_verify
94
+ "qualityVerdict": "pass", // pass | fail | cannot_verify
95
+ "checklist": [ // 扁平数组,逐条对照 design 章节核验
96
+ { "item": "背景与目标", "result": "pass", "note": "..." } // result: pass | gap | fail
97
+ ],
98
+ "requiredEvidence": [], // cannot_verify 时必填非空
99
+ "reviewerNotes": "..."
100
+ }
101
+ ```
102
+
103
+ - `docHash` = `sha256(主审查文档内容)`(hex)—— brainstorm 主文档是 `design.md`(即 `reviewedFiles[0]`)。CLI 重算 sha256 比对,不符判伪造(fail-closed)。docHash 可先占位(如 "TODO");改 design.md 后勿手算 sha256——跑 `sillyspec register-stage-review --change <变更名> --stage brainstorm --refresh-hash` 一键重算代填(verdict 保留;design 改版多阶段联动加 --all)。忘跑也不会被拦:gate 检测到「仅 docHash 失配」时自动机械重算放行(verdict 保留 + 审计行留痕);schema/verdict 错误照常 fail-closed。`tier=self`(≤3 文件)降级为当前 agent 自审,不强制独立子代理。
104
+ - 运行时 CLI 会把精确 schema 表 + 完整 JSON 示例 + docHash 算法注入到该步 prompt,以你实际收到的注入版契约为权威逐字模板。
105
+
106
+ ## 铁律
107
+
108
+ - **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
109
+ - 只做当前步骤 prompt 描述的操作,不跳过、不自行扩展
110
+ - 产物写入 CLI 输出的 `changeDir` 目录(如 `<changeDir>/design.md`),不要自己拼路径
111
+ - 完成后立即 `--done`,不跳过
112
+
113
+ ## 用户指令
114
+ $ARGUMENTS
@@ -1,47 +1,17 @@
1
- ---
2
- name: sillyspec:continue
3
- description: 自动判断并执行下一步
4
- ---
5
-
6
- ---
7
-
8
- 你现在是 SillySpec 的自动推进器。
9
-
10
- ## 判断逻辑
11
-
12
- > 🔧 **先跑 `sillyspec next`**——CLI 已内置下方探测表(含活跃变更逐个推断 + task 勾选进度),输出「状态 + 下一步命令 + 依据」。直接按输出的建议命令执行;CLI 异常/输出与实际不符时才按下方手工表兜底。
13
-
14
- 按顺序检查,第一个未完成的就执行:
15
-
16
- ```
17
- 1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
18
-
19
- 2. .sillyspec/changes/ 有进行中的变更?
20
- 2a. 没有任何文件 → 提示检查 proposal 是否需要完善
21
- 2b. 没有 design.md → 提示补充 design(运行 /sillyspec:brainstorm 推进到设计产物步)
22
- 2c. 没有 tasks.md → 执行 /sillyspec:brainstorm(规范文件 proposal/requirements/tasks 由 brainstorm 末步生成)
23
- 2d. 有 tasks.md 但没有 plan.md → 执行 /sillyspec:plan
24
- 2e. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
25
- 2f. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
26
- 2g. 已验证通过 → 执行 /sillyspec:archive
27
-
28
- 3. 有设计文档但没有对应变更?
29
- → 提示运行 /sillyspec:brainstorm(基于设计文档建立变更并生成规范文件)
30
-
31
- 4. 有 .sillyspec/docs/*/scan/ 但没有进行中的工作?
32
- → 提示运行 /sillyspec:brainstorm "你的想法"
33
-
34
- 5. 什么都没有?
35
- → 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
36
- ```
37
-
38
- ## 输出
39
-
40
- 先报告检测结果,再执行:
41
-
42
- > 🤖 SillySpec 自动检测
43
- >
44
- > 当前状态:[描述]
45
- > 下一步:[执行的命令]
46
- >
47
- > [开始执行...]
1
+ ---
2
+ name: sillyspec:continue
3
+ description: 自动判断并执行下一步
4
+ ---
5
+
6
+ ## 流程
7
+
8
+ **先跑 `sillyspec next`**——CLI 已内置全套探测(HANDOFF / 活跃变更逐个产物推断 / task 勾选进度 / scan 文档 / 绿地棕地判定),直接输出「状态 + 下一步命令 + 依据」。
9
+
10
+ 1. 把探测结果转述给用户(状态 / 下一步 / 依据三行)。
11
+ 2. 按输出的建议命令直接执行对应 skill(如 `sillyspec run brainstorm` / `plan` / `execute` / `verify` / `archive`)。
12
+ 3. 仅当 CLI 异常或输出与实际明显不符时,才手工核对 `.sillyspec/` 下的产物文件后重新判断。
13
+
14
+ 勿自行 ls/cat 重算探测表——那就是 `next` 命令本体。
15
+
16
+ ## 用户指令
17
+ $ARGUMENTS