sillyspec 3.20.2 → 3.20.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.
- package/.claude/skills/sillyspec-archive/SKILL.md +1 -5
- package/.claude/skills/sillyspec-auto/SKILL.md +2 -8
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +1 -28
- package/.claude/skills/sillyspec-commit/SKILL.md +3 -4
- package/.claude/skills/sillyspec-continue/SKILL.md +4 -5
- package/.claude/skills/sillyspec-doctor/SKILL.md +3 -12
- package/.claude/skills/sillyspec-execute/SKILL.md +2 -15
- package/.claude/skills/sillyspec-explore/SKILL.md +1 -14
- package/.claude/skills/sillyspec-plan/SKILL.md +36 -5
- package/.claude/skills/sillyspec-propose/SKILL.md +0 -4
- package/.claude/skills/sillyspec-quick/SKILL.md +1 -5
- package/.claude/skills/sillyspec-resume/SKILL.md +66 -23
- package/.claude/skills/sillyspec-scan/SKILL.md +1 -5
- package/.claude/skills/sillyspec-state/SKILL.md +8 -8
- package/.claude/skills/sillyspec-status/SKILL.md +1 -5
- package/.claude/skills/sillyspec-verify/SKILL.md +1 -5
- package/.claude/skills/sillyspec-workspace/SKILL.md +3 -11
- package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +97 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +51 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +29 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +34 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +13 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +43 -0
- package/.sillyspec/changes/auto-mode/design.md +50 -0
- package/.sillyspec/changes/auto-mode/proposal.md +19 -0
- package/.sillyspec/changes/auto-mode/requirements.md +21 -0
- package/.sillyspec/changes/auto-mode/tasks.md +7 -0
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-dashboard-design.md +206 -0
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +199 -0
- package/.sillyspec/changes/dashboard/design.md +219 -0
- package/.sillyspec/changes/dashboard/design.md.braindraft +206 -0
- package/.sillyspec/changes/run-command-design/design.md +1230 -0
- package/.sillyspec/changes/unified-docs-design/design.md +199 -0
- package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
- package/.sillyspec/knowledge/INDEX.md +8 -0
- package/.sillyspec/knowledge/uncategorized.md +3 -0
- package/.sillyspec/plans/2026-04-05-dashboard.md +737 -0
- package/.sillyspec/projects/sillyspec.yaml +3 -0
- package/README.md +11 -13
- package/SKILL.md +40 -44
- package/dist/steps/brainstorm/01-load-context.md +30 -0
- package/dist/steps/brainstorm/02-reuse-check.md +6 -0
- package/dist/steps/brainstorm/03-prototype-analysis.md +11 -0
- package/dist/steps/brainstorm/04-module-split.md +23 -0
- package/dist/steps/brainstorm/05-dialog-explore.md +8 -0
- package/dist/steps/brainstorm/06-propose-approaches.md +3 -0
- package/dist/steps/brainstorm/07-present-design.md +3 -0
- package/dist/steps/brainstorm/08-write-design.md +21 -0
- package/dist/steps/brainstorm/09-self-review.md +15 -0
- package/dist/steps/brainstorm/10-user-confirm.md +3 -0
- package/dist/steps/brainstorm/11-output-spec.md +7 -0
- package/dist/steps/brainstorm/manifest.yaml +26 -0
- package/dist/steps/execute/01-load-context.md +41 -0
- package/dist/steps/execute/02-scan-conventions.md +47 -0
- package/dist/steps/execute/03-skill-mcp.md +19 -0
- package/dist/steps/execute/04-assign-task.md +22 -0
- package/dist/steps/execute/04b-prompt-template.md +54 -0
- package/dist/steps/execute/05-write-test.md +7 -0
- package/dist/steps/execute/06-write-code.md +8 -0
- package/dist/steps/execute/07-run-test.md +26 -0
- package/dist/steps/execute/08-fix-issues.md +28 -0
- package/dist/steps/execute/09-next-task.md +33 -0
- package/dist/steps/execute/manifest.yaml +28 -0
- package/dist/steps/plan/01-load-context.md +22 -0
- package/dist/steps/plan/02-anchor-confirm.md +1 -0
- package/dist/steps/plan/03-expand-tasks.md +33 -0
- package/dist/steps/plan/04-mark-order.md +15 -0
- package/dist/steps/plan/05-e2e-planning.md +17 -0
- package/dist/steps/plan/06-self-check.md +16 -0
- package/dist/steps/plan/07-save.md +1 -0
- package/dist/steps/plan/manifest.yaml +18 -0
- package/dist/steps/scan/01-env-detect.md +51 -0
- package/dist/steps/scan/02-tech-stack.md +16 -0
- package/dist/steps/scan/03-conventions.md +16 -0
- package/dist/steps/scan/04-structure.md +19 -0
- package/dist/steps/scan/05-quality.md +18 -0
- package/dist/steps/scan/06-complete.md +49 -0
- package/dist/steps/scan/manifest.yaml +16 -0
- package/dist/steps/verify/01-load-specs.md +28 -0
- package/dist/steps/verify/02-check-tasks.md +1 -0
- package/dist/steps/verify/03-check-design.md +6 -0
- package/dist/steps/verify/04-run-tests.md +7 -0
- package/dist/steps/verify/05-e2e-tests.md +27 -0
- package/dist/steps/verify/05b-e2e-fix.md +33 -0
- package/dist/steps/verify/06-code-quality.md +25 -0
- package/dist/steps/verify/07-lint-check.md +27 -0
- package/dist/steps/verify/08-output-report.md +14 -0
- package/dist/steps/verify/manifest.yaml +22 -0
- package/package.json +1 -7
- package/packages/dashboard/dist/assets/{index-Bq_Z2hne.js → index-D1EVTLmc.js} +1264 -1264
- package/packages/dashboard/dist/assets/index-DGe8CqeP.css +1 -0
- package/packages/dashboard/dist/index.html +2 -2
- package/packages/dashboard/package-lock.json +6 -6
- package/packages/dashboard/server/executor.js +1 -1
- package/packages/dashboard/server/index.js +18 -98
- package/packages/dashboard/server/parser.js +71 -139
- package/packages/dashboard/server/watcher.js +6 -14
- package/packages/dashboard/src/App.vue +185 -418
- package/packages/dashboard/src/components/ActionBar.vue +1 -10
- package/packages/dashboard/src/components/CommandPalette.vue +1 -5
- package/packages/dashboard/src/components/DocPreview.vue +8 -105
- package/packages/dashboard/src/components/DocTree.vue +19 -75
- package/packages/dashboard/src/components/PipelineStage.vue +2 -22
- package/packages/dashboard/src/components/PipelineView.vue +5 -32
- package/packages/dashboard/src/components/ProjectOverview.vue +139 -113
- package/packages/dashboard/src/components/StageBadge.vue +3 -17
- package/packages/dashboard/src/components/StepCard.vue +2 -7
- package/packages/dashboard/src/composables/useDashboard.js +0 -28
- package/src/derive.js +147 -0
- package/src/index.js +40 -688
- package/src/init.js +63 -119
- package/src/migrate.js +7 -7
- package/src/progress.js +248 -1474
- package/src/run.js +302 -3008
- package/src/setup.js +64 -2
- package/src/stages/archive.js +17 -123
- package/src/stages/brainstorm.js +48 -454
- package/src/stages/doctor.js +46 -99
- package/src/stages/execute.js +59 -420
- package/src/stages/index.js +18 -12
- package/src/stages/plan.js +189 -492
- package/src/stages/propose.js +11 -70
- package/src/stages/quick.js +13 -52
- package/src/stages/scan.js +68 -485
- package/src/stages/status.js +1 -1
- package/src/stages/verify.js +16 -203
- package/src/step.js +543 -0
- package/.claude/skills/sillyspec-knowledge/SKILL.md +0 -270
- package/.husky/pre-push +0 -13
- package/CLAUDE.md +0 -18
- package/docs/brainstorm-plan-contract.md +0 -64
- package/docs/plan-execute-contract.md +0 -123
- package/docs/platform-scan-protocol.md +0 -298
- package/docs/revision-mode.md +0 -115
- package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +0 -99
- package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +0 -218
- package/docs/sillyspec/file-lifecycle/stage-artifacts.md +0 -167
- package/docs/sillyspec/file-lifecycle/storage-and-state.md +0 -148
- package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +0 -193
- package/docs/sillyspec/file-lifecycle.md +0 -125
- package/docs/workflow-contract-regression.md +0 -106
- package/docs/worktree-isolation.md +0 -252
- package/packages/dashboard/dist/assets/index-O2W5RV4z.css +0 -1
- package/packages/dashboard/dist/prototype-dashboard.html +0 -836
- package/packages/dashboard/dist/prototype-overview.html +0 -256
- package/packages/dashboard/public/prototype-dashboard.html +0 -836
- package/packages/dashboard/public/prototype-overview.html +0 -256
- package/packages/dashboard/src/components/HResizeHandle.vue +0 -48
- package/packages/dashboard/src/components/ProjectCard.vue +0 -187
- package/packages/dashboard/src/components/VResizeHandle.vue +0 -61
- package/packages/dashboard/src/composables/useLayout.js +0 -131
- package/src/brainstorm-postcheck.js +0 -158
- package/src/change-list.js +0 -52
- package/src/change-risk-profile.js +0 -352
- package/src/classify-change.js +0 -73
- package/src/constants.js +0 -70
- package/src/contract-matrix.js +0 -278
- package/src/db.js +0 -201
- package/src/endpoint-extractor.js +0 -315
- package/src/hooks/claude-pre-tool-use.cjs +0 -125
- package/src/hooks/worktree-guard.js +0 -761
- package/src/knowledge-match.js +0 -130
- package/src/modules.js +0 -482
- package/src/scan-postcheck.js +0 -383
- package/src/stage-contract.js +0 -700
- package/src/stages/brainstorm-auto.js +0 -229
- package/src/stages/explore.js +0 -34
- package/src/stages/knowledge.js +0 -498
- package/src/stages/plan-postcheck.js +0 -513
- package/src/sync.js +0 -497
- package/src/task-review.js +0 -346
- package/src/workflow.js +0 -785
- package/src/worktree-apply.js +0 -549
- package/src/worktree.js +0 -932
- package/templates/workflows/archive-impact.yaml +0 -79
- package/templates/workflows/scan-docs.yaml +0 -132
- package/test/brainstorm-plan-contract.test.mjs +0 -273
- package/test/check-syntax.mjs +0 -26
- package/test/cli-top-level-aliases.test.mjs +0 -174
- package/test/contract-artifacts.test.mjs +0 -323
- package/test/decision-supersede.test.mjs +0 -277
- package/test/knowledge-match.test.mjs +0 -231
- package/test/plan-execute-contract.test.mjs +0 -330
- package/test/plan-optimization.test.mjs +0 -572
- package/test/platform-artifacts.test.mjs +0 -190
- package/test/platform-failure-samples.test.mjs +0 -199
- package/test/platform-recovery-chain.test.mjs +0 -179
- package/test/platform-recovery.test.mjs +0 -167
- package/test/platform-scan-p0.test.mjs +0 -175
- package/test/revision-v1.test.mjs +0 -1145
- package/test/run-sanitize-project-name.test.mjs +0 -51
- package/test/run-scan-postcheck-fail.test.mjs +0 -64
- package/test/run-scan-project-parse.test.mjs +0 -200
- package/test/run-tests.mjs +0 -48
- package/test/scan-docs-yaml-placeholders.test.mjs +0 -84
- package/test/scan-knowledge.test.mjs +0 -175
- package/test/scan-paths.test.mjs +0 -68
- package/test/scan-postcheck-project-priority.test.mjs +0 -85
- package/test/scan-postcheck.test.mjs +0 -197
- package/test/scan-workflow-anyfailed-block.test.mjs +0 -52
- package/test/spec-dir.test.mjs +0 -206
- package/test/stage-contract-failed-post-check.test.mjs +0 -102
- package/test/stage-contract.test.mjs +0 -299
- package/test/stage-definitions.test.mjs +0 -39
- package/test/wait-gates.test.mjs +0 -501
- package/test/workflow-spec-base.test.mjs +0 -142
- package/test/worktree-guard.test.mjs +0 -136
- package/test/worktree-native-overlay.test.mjs +0 -188
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<img src="logo.jpg" width="80" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
# SillySpec v3.
|
|
5
|
+
# SillySpec v3.0 — 规范驱动开发工具包
|
|
6
6
|
|
|
7
7
|
> 融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
|
|
8
8
|
> Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
npx sillyspec init
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
> 📦 首次运行自动安装 CLI,之后 `sillyspec
|
|
22
|
+
> 📦 首次运行自动安装 CLI,之后 `sillyspec status`/`sillyspec next` 等命令也可直接使用。
|
|
23
23
|
|
|
24
24
|
**指定工具:**
|
|
25
25
|
```bash
|
|
@@ -42,8 +42,10 @@ npx sillyspec init --dir /path/to/project
|
|
|
42
42
|
|
|
43
43
|
| 工具 | `--tool` 参数 | 输出目录 | 格式 |
|
|
44
44
|
|---|---|---|---|
|
|
45
|
-
| Claude Code | `claude` | `.claude/
|
|
46
|
-
|
|
|
45
|
+
| Claude Code (commands) | `claude` | `.claude/commands/sillyspec/` | slash commands |
|
|
46
|
+
| Claude Code (skills) | `claude_skills` | `.claude/skills/sillyspec-<name>/` | SKILL.md |
|
|
47
|
+
| Cursor | `cursor` | `.cursor/commands/` | custom commands |
|
|
48
|
+
| Codex | `codex` | `~/.agents/skills/sillyspec-<name>/` | SKILL.md |
|
|
47
49
|
| OpenCode | `opencode` | `.opencode/skills/sillyspec-<name>/` | SKILL.md |
|
|
48
50
|
| OpenClaw | `openclaw` | `.openclaw/skills/sillyspec-<name>/` | SKILL.md |
|
|
49
51
|
|
|
@@ -68,7 +70,7 @@ claude --dangerously-skip-permissions
|
|
|
68
70
|
|
|
69
71
|
```
|
|
70
72
|
绿地:init → brainstorm → plan → execute → [verify] → archive
|
|
71
|
-
棕地:scan → brainstorm → plan → execute → verify → archive
|
|
73
|
+
棕地:scan → brainstorm → plan → execute → [verify] → archive
|
|
72
74
|
大模块:brainstorm(多图) → 拆分 → MASTER.md → stage-1 全流程 → stage-2 全流程 → ... → archive
|
|
73
75
|
```
|
|
74
76
|
|
|
@@ -110,13 +112,9 @@ claude --dangerously-skip-permissions
|
|
|
110
112
|
## CLI 命令
|
|
111
113
|
|
|
112
114
|
```bash
|
|
113
|
-
sillyspec
|
|
114
|
-
sillyspec
|
|
115
|
-
sillyspec
|
|
116
|
-
sillyspec run explore 自由探索
|
|
117
|
-
sillyspec run <stage> --done 完成当前步骤并输出下一步
|
|
118
|
-
sillyspec run <stage> --status 查看阶段进度
|
|
119
|
-
sillyspec progress show 显示当前项目状态
|
|
115
|
+
sillyspec status [--json] 显示当前项目状态
|
|
116
|
+
sillyspec next [--json] 显示下一步命令
|
|
117
|
+
sillyspec check [--json] 检查文档完整性
|
|
120
118
|
sillyspec setup 安装推荐 MCP 工具(交互式)
|
|
121
119
|
sillyspec setup --list 查看已安装 MCP 状态
|
|
122
120
|
sillyspec init 初始化(零交互,自动检测工具)
|
|
@@ -169,7 +167,7 @@ SillySpec 不仅仅是 prompt,还有硬校验:
|
|
|
169
167
|
sillyspec/
|
|
170
168
|
├── bin/sillyspec.js # CLI 入口
|
|
171
169
|
├── src/
|
|
172
|
-
│ ├── index.js #
|
|
170
|
+
│ ├── index.js # status/next/check 命令
|
|
173
171
|
│ ├── init.js # init 逻辑 + 工具适配器
|
|
174
172
|
│ └── setup.js # MCP 工具安装
|
|
175
173
|
├── templates/ # 命令模板(19 个)
|
package/SKILL.md
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sillyspec
|
|
3
|
-
description: "
|
|
4
|
-
version: "3.
|
|
3
|
+
description: "规范驱动开发工具包 v3.6。绿地项目用 /sillyspec:init,棕地项目用 /sillyspec:scan。可用命令:init、scan、scan-quick、explore、brainstorm、plan、execute、verify、archive、commit、export、status、resume、continue、quick、state、workspace、workspace-sync。"
|
|
4
|
+
version: "3.6.1"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# SillySpec
|
|
7
|
+
# SillySpec v3.6
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
Claude Code / Cursor / Codex / OpenCode / OpenClaw
|
|
9
|
+
融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
|
|
10
|
+
Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 入口选择
|
|
13
13
|
|
|
14
|
-
|
|
|
14
|
+
| 项目类型 | 首选命令 |
|
|
15
15
|
|---|---|
|
|
16
|
-
| 全自动流程 | `/sillyspec:auto <需求描述>` |
|
|
17
16
|
| 全新项目(空目录) | `/sillyspec:init` |
|
|
18
17
|
| 已有代码的项目 | `/sillyspec:scan` |
|
|
19
18
|
| 多项目工作区 | `/sillyspec:workspace` |
|
|
20
|
-
|
|
|
19
|
+
| 随时自由思考 | `/sillyspec:explore` |
|
|
21
20
|
|
|
22
21
|
## 完整工作流
|
|
23
22
|
|
|
24
23
|
```
|
|
25
|
-
绿地:init → brainstorm → plan → execute → verify → archive
|
|
26
|
-
棕地:scan → brainstorm → plan → execute → verify → archive
|
|
27
|
-
|
|
24
|
+
绿地:init → brainstorm → plan → execute → [verify] → archive
|
|
25
|
+
棕地:scan → brainstorm → plan → execute → [verify] → archive
|
|
26
|
+
工作区:workspace → (init/scan per project) → brainstorm → ...
|
|
28
27
|
```
|
|
29
28
|
|
|
30
|
-
##
|
|
29
|
+
## 19 个命令
|
|
30
|
+
|
|
31
|
+
### 核心流程
|
|
31
32
|
|
|
32
33
|
| 命令 | 用途 |
|
|
33
34
|
|---|---|
|
|
34
|
-
| `/sillyspec:auto` | 全自动推进全部流程 |
|
|
35
35
|
| `/sillyspec:init` | 绿地项目初始化 |
|
|
36
|
-
| `/sillyspec:scan` |
|
|
36
|
+
| `/sillyspec:scan` | 棕地项目扫描(7 份文档) |
|
|
37
37
|
| `/sillyspec:brainstorm` | 需求探索 + 生成设计文档 |
|
|
38
|
-
| `/sillyspec:plan` | 编写实现计划(Wave
|
|
38
|
+
| `/sillyspec:plan` | 编写实现计划(Wave 分组) |
|
|
39
39
|
| `/sillyspec:execute` | TDD 执行 + 子代理并行 |
|
|
40
40
|
| `/sillyspec:verify` | 验证(测试 + 代码审查 + E2E) |
|
|
41
41
|
| `/sillyspec:archive` | 归档变更 |
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
### 辅助工具
|
|
44
44
|
|
|
45
45
|
| 命令 | 用途 |
|
|
46
46
|
|---|---|
|
|
@@ -49,43 +49,39 @@ Claude Code / Cursor / Codex / OpenCode / OpenClaw 通用。
|
|
|
49
49
|
| `/sillyspec:explore` | 自由思考模式 |
|
|
50
50
|
| `/sillyspec:quick` | 快速任务,跳过完整流程 |
|
|
51
51
|
| `/sillyspec:resume` | 恢复工作 |
|
|
52
|
-
| `/sillyspec:
|
|
52
|
+
| `/sillyspec:state` | 查看当前工作状态 |
|
|
53
53
|
| `/sillyspec:commit` | 智能提交 |
|
|
54
54
|
| `/sillyspec:export` | 导出成功方案为可复用模板 |
|
|
55
|
+
| `/sillyspec:scan-quick` | 快速扫描(STACK + STRUCTURE) |
|
|
55
56
|
| `/sillyspec:workspace` | 多项目工作区管理 |
|
|
57
|
+
| `/sillyspec:workspace-sync` | 同步工作区子项目状态 |
|
|
56
58
|
|
|
57
59
|
## CLI 命令
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
|
-
sillyspec
|
|
61
|
-
sillyspec
|
|
62
|
-
sillyspec
|
|
63
|
-
sillyspec
|
|
64
|
-
sillyspec
|
|
65
|
-
sillyspec
|
|
66
|
-
sillyspec
|
|
67
|
-
sillyspec
|
|
68
|
-
sillyspec
|
|
69
|
-
sillyspec progress show 显示当前项目状态
|
|
70
|
-
sillyspec setup 安装推荐 MCP 工具
|
|
71
|
-
sillyspec init 初始化(零交互,自动检测工具)
|
|
62
|
+
sillyspec status [--json] 显示当前项目状态
|
|
63
|
+
sillyspec next [--json] 显示下一步命令
|
|
64
|
+
sillyspec check [--json] 检查文档完整性
|
|
65
|
+
sillyspec setup 安装推荐 MCP 工具
|
|
66
|
+
sillyspec setup --list 查看已安装 MCP 状态
|
|
67
|
+
sillyspec init 初始化(零交互,自动检测工具)
|
|
68
|
+
sillyspec init --tool <name> 指定工具安装
|
|
69
|
+
sillyspec init --workspace 工作区模式
|
|
70
|
+
sillyspec init --interactive 交互式引导
|
|
72
71
|
```
|
|
73
72
|
|
|
74
|
-
##
|
|
73
|
+
## MCP 增强
|
|
75
74
|
|
|
76
|
-
|
|
77
|
-
- **TDD 强制** — execute 阶段强制先写测试再写实现
|
|
78
|
-
- **子代理并行** — 同一 Wave 内任务并行执行,加快交付
|
|
79
|
-
- **Worktree 隔离** — execute 在独立 worktree 中工作,不污染主分支
|
|
80
|
-
- **拓扑排序 Wave** — plan 阶段根据蓝图依赖关系自动重排 Wave 分组
|
|
81
|
-
- **E2E 验证** — 内置 E2E 测试流程,支持 Playwright / 浏览器 MCP
|
|
82
|
-
- **模块文档** — 支持模块级知识库,AI 执行时按需加载相关模块上下文
|
|
83
|
-
- **进度管理** — SQLite 持久化进度,断点恢复
|
|
84
|
-
- **MCP 增强** — 一键安装 Context7、grep.app、Chrome DevTools
|
|
75
|
+
通过 `sillyspec setup` 安装 MCP 工具增强 AI 能力:
|
|
85
76
|
|
|
86
|
-
|
|
77
|
+
- **Context7** — 查询最新库文档和 API 参考
|
|
78
|
+
- **grep.app** — 搜索开源代码实现
|
|
79
|
+
- **Chrome DevTools** — 浏览器自动化,支持 E2E 验证
|
|
87
80
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
## E2E 测试流程
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
plan: 识别 UI 功能 → 检测测试框架/浏览器 MCP → 添加 E2E 任务
|
|
85
|
+
execute: 编码完成后编写 E2E 测试(测试文件或 e2e-steps.md)
|
|
86
|
+
verify: 按优先级执行(E2E框架 > 通用测试 > 浏览器MCP)→ 自动修复循环
|
|
91
87
|
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
2
|
+
|
|
3
|
+
## 核心约束(必须遵守)
|
|
4
|
+
- ❌ 写实现代码(任何语言)
|
|
5
|
+
- ❌ 修改任何源代码文件
|
|
6
|
+
- ❌ 安装依赖或执行构建命令
|
|
7
|
+
- ❌ 创建数据库迁移脚本
|
|
8
|
+
- ❌ 跳过 brainstorm 直接进入 execute/plan
|
|
9
|
+
- ❌ 在 checklist 未完成前开始写设计文档
|
|
10
|
+
- ❌ 编造不存在的表名、字段名、API 端点
|
|
11
|
+
- ❌ 一次性抛出多个问题(必须逐个等待回答)
|
|
12
|
+
- ❌ 用户确认前自行推进到 plan 或任何后续阶段
|
|
13
|
+
|
|
14
|
+
**终态:** brainstorm 完成后唯一出口是 plan 阶段。不允许直接进入 execute 或任何代码操作。
|
|
15
|
+
|
|
16
|
+
## 加载项目上下文
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**工作区模式:** AskUserQuestion 选子项目,**cd 到子项目目录执行**,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/docs/<project>/changes/`。修改在子项目目录中暂存。
|
|
23
|
+
|
|
24
|
+
**单项目模式:**
|
|
25
|
+
```bash
|
|
26
|
+
cat .sillyspec/{PROJECT,REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
27
|
+
cat .sillyspec/docs/<project>/scan/{STRUCTURE,CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
28
|
+
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
29
|
+
ls .sillyspec/knowledge/ 2>/dev/null
|
|
30
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
评估需求范围,复杂需求拆分子项目/阶段。
|
|
2
|
+
|
|
3
|
+
**满足以下任意 2 条就建议拆分:**
|
|
4
|
+
- 3+ 个可独立交付的功能模块
|
|
5
|
+
- 3+ 种角色有不同权限和视图
|
|
6
|
+
- 跨页面状态流转(审批流、多步表单)
|
|
7
|
+
- brainstorm 提问发现需求范围过大
|
|
8
|
+
|
|
9
|
+
确认拆分后生成 MASTER.md:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
mkdir -p .sillyspec/changes/<变更名>/stages
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`MASTER.md` 内容:概述、拆分计划表(阶段/范围/状态)、整体技术方向、阶段间依赖、原型分析摘要、经验记录。
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
git add .sillyspec/changes/<变更名>/MASTER.md
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
提示用户:对子阶段执行 brainstorm,读取 MASTER.md + 前序阶段经验 + 对应原型,设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`。
|
|
22
|
+
|
|
23
|
+
不需要拆分则跳过此步骤。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
写设计文档并保存到 `.sillyspec/changes/<变更名>/design.md`:
|
|
2
|
+
|
|
3
|
+
```markdown
|
|
4
|
+
# [Feature Name] 设计
|
|
5
|
+
|
|
6
|
+
## 动机与范围
|
|
7
|
+
(为什么做、范围边界、成功标准)
|
|
8
|
+
|
|
9
|
+
## 功能需求
|
|
10
|
+
(需求场景、验收标准)
|
|
11
|
+
- [ ] 标准 1
|
|
12
|
+
|
|
13
|
+
## 技术方案
|
|
14
|
+
## 约束和假设
|
|
15
|
+
## 不在范围内
|
|
16
|
+
## 文件变更
|
|
17
|
+
## 代码风格参照
|
|
18
|
+
(参考已有源文件,标注返回值类型、异常类型、注解风格)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**注意:** 引用的表名必须来自 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md` 数据模型或明确标注"新增"。必须先读取该文件。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
AI 自审(必须执行)。
|
|
2
|
+
|
|
3
|
+
对照 `.sillyspec/changes/<变更名>/design.md` 检查:
|
|
4
|
+
|
|
5
|
+
- 需求覆盖:是否完整覆盖对话式探索确认的需求点?
|
|
6
|
+
- 约束一致性:技术方案是否与 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md`、`.sillyspec/docs/<project>/scan/CONVENTIONS.md` 一致?
|
|
7
|
+
- 表名/字段真实性:是否来自真实 schema?
|
|
8
|
+
- 范围控制:是否包含不必要功能(YAGNI)?
|
|
9
|
+
- 验收标准:是否具体、可测试?
|
|
10
|
+
- 变更冲突:是否与复用检查阶段检测到的已有变更冲突?
|
|
11
|
+
- 缺口:模糊表述("适当的"/"必要时"等)是否已明确化
|
|
12
|
+
- 缺口:隐含假设(登录态、数据量、并发预期)是否已显式写出
|
|
13
|
+
- 缺口:边界场景(空数据、并发、服务不可用)是否已考虑
|
|
14
|
+
|
|
15
|
+
发现问题 → 修改文档,重新自审。不确定的标注「⚠️ 自审存疑」让用户判断。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
phase: brainstorm
|
|
2
|
+
description: 需求探索与方案设计
|
|
3
|
+
requires: [scan]
|
|
4
|
+
steps:
|
|
5
|
+
- file: 01-load-context.md
|
|
6
|
+
name: 加载项目上下文
|
|
7
|
+
- file: 02-reuse-check.md
|
|
8
|
+
name: 协作与复用检查
|
|
9
|
+
- file: 03-prototype-analysis.md
|
|
10
|
+
name: 原型/设计图分析
|
|
11
|
+
- file: 04-module-split.md
|
|
12
|
+
name: 大模块拆分
|
|
13
|
+
- file: 05-dialog-explore.md
|
|
14
|
+
name: 对话式探索
|
|
15
|
+
- file: 06-propose-approaches.md
|
|
16
|
+
name: 提出方案
|
|
17
|
+
- file: 07-present-design.md
|
|
18
|
+
name: 分段展示设计
|
|
19
|
+
- file: 08-write-design.md
|
|
20
|
+
name: 写设计文档
|
|
21
|
+
- file: 09-self-review.md
|
|
22
|
+
name: AI 自审
|
|
23
|
+
- file: 10-user-confirm.md
|
|
24
|
+
name: 用户确认
|
|
25
|
+
- file: 11-output-spec.md
|
|
26
|
+
name: 输出技术方案
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
2
|
+
|
|
3
|
+
## 核心约束(必须遵守)
|
|
4
|
+
- ❌ 跳步执行(不允许跳过 plan 直接 execute)
|
|
5
|
+
- ❌ 先写代码后补测试
|
|
6
|
+
- ❌ 编造不存在的方法/注解/路径/类/字段
|
|
7
|
+
- ❌ 自行补全缺失的接口/方法(应报告 BLOCKED)
|
|
8
|
+
- ❌ 意外修改了计划外的文件却不报告
|
|
9
|
+
|
|
10
|
+
**所有任务通过子代理执行,主代理负责调度和记录。**
|
|
11
|
+
|
|
12
|
+
## 加载上下文
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**工作区模式:** 根据计划 Task 标注确定子项目,额外加载共享规范 + `.sillyspec/workspace/CODEBASE-OVERVIEW.md`。所有代码修改、测试运行在子项目目录中执行。
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
PLAN=$(ls -t .sillyspec/changes/*/tasks.md 2>/dev/null | head -1); cat "$PLAN"
|
|
22
|
+
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
23
|
+
cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
24
|
+
cat .sillyspec/docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
25
|
+
cat .sillyspec/local.yaml 2>/dev/null
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**知识库查询(强制步骤):**
|
|
29
|
+
```bash
|
|
30
|
+
cat .sillyspec/knowledge/INDEX.md 2>/dev/null
|
|
31
|
+
```
|
|
32
|
+
根据当前 task 描述中的关键词匹配 INDEX.md 条目。命中时读取对应 knowledge 文件,注入子代理 prompt。未命中则跳过。
|
|
33
|
+
|
|
34
|
+
## 确认频率
|
|
35
|
+
|
|
36
|
+
用 AskUserQuestion 询问用户选择:
|
|
37
|
+
- **每个 Wave 确认** — 每个 Wave 完成后展示结果,等用户确认后继续下一 Wave
|
|
38
|
+
- **AI 自主判断** — AI 在遇到 BLOCKED 或计划外变更时才询问,其余自动推进
|
|
39
|
+
- **全自动** — 全部自动执行,不在中途打断用户
|
|
40
|
+
|
|
41
|
+
如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
主代理在 dispatch 子代理前执行以下扫描。
|
|
2
|
+
|
|
3
|
+
## 编码规范扫描
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
for f in .eslintrc .eslintrc.js .eslintrc.cjs .eslintrc.json .eslintrc.yml \
|
|
7
|
+
.prettierrc .prettierrc.js .prettierrc.json .prettierrc.yml \
|
|
8
|
+
tsconfig.json tsconfig.base.json \
|
|
9
|
+
.editorconfig \
|
|
10
|
+
.tailwind.config.js .tailwind.config.ts \
|
|
11
|
+
.stylelintrc .stylelintrc.js .stylelintrc.json \
|
|
12
|
+
CONTRIBUTING.md CODE_STYLE.md; do
|
|
13
|
+
[ -f "$f" ] && echo "=== $f ===" && cat "$f"
|
|
14
|
+
done
|
|
15
|
+
cat package.json 2>/dev/null | grep -A5 '"lint\|"format\|"typecheck\|"type-check'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
扫描后生成**编码规范摘要**(提炼关键约束,非原文粘贴),格式:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
## 编码规范约束(自动扫描)
|
|
22
|
+
### ESLint
|
|
23
|
+
{关键规则}
|
|
24
|
+
### Prettier
|
|
25
|
+
{格式化规则}
|
|
26
|
+
### TypeScript
|
|
27
|
+
{严格模式设置}
|
|
28
|
+
### Import / 命名约定
|
|
29
|
+
{导入排序、命名风格}
|
|
30
|
+
### 框架约定
|
|
31
|
+
{框架特定约定}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
注入到子代理 prompt,追加铁律:**遵守编码规范:如规范与任务描述冲突,优先遵守规范并报告。**
|
|
35
|
+
|
|
36
|
+
## 测试模式扫描(E2E/测试任务时执行)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cat package.json 2>/dev/null | grep -E "playwright|cypress|jest|vitest|mocha"
|
|
40
|
+
find . -name "*.spec.ts" -o -name "*.test.ts" -o -name "*.spec.tsx" -o -name "*.spec.js" \
|
|
41
|
+
-o -name "playwright.config.*" -o -name "vitest.config.*" -o -name "jest.config.*" \
|
|
42
|
+
2>/dev/null | grep -v node_modules | head -10
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
读取 1-2 个已有测试文件作为风格参考,生成测试模式摘要(框架、断言风格、Fixtures、文件组织、配置要点),注入到 E2E/测试子代理 prompt。
|
|
46
|
+
|
|
47
|
+
追加铁律:**参照已有测试风格编写新测试,不要凭记忆写测试。**
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Skill 扫描
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
for skill_dir in .claude/skills/*/SKILL.md .cursor/skills/*/SKILL.md .opencode/skills/*/SKILL.md; do
|
|
5
|
+
[ -f "$skill_dir" ] && echo "=== $skill_dir ===" && cat "$skill_dir"
|
|
6
|
+
done
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
根据任务关键词匹配 skill,匹配到的 SKILL.md 全文注入子代理 prompt。
|
|
10
|
+
|
|
11
|
+
## MCP 能力检测
|
|
12
|
+
|
|
13
|
+
检查当前可用工具列表中是否存在以下 MCP 工具:
|
|
14
|
+
- Context7 / 文档查询工具
|
|
15
|
+
- 数据库工具(postgres/sqlite/mysql/redis)
|
|
16
|
+
- 浏览器工具(browser/chrome/playwright/devtools)
|
|
17
|
+
|
|
18
|
+
有 Context7 → 提示子代理用 MCP 查文档;无 → 提示用 web search。
|
|
19
|
+
有数据库 MCP → 在子代理 prompt 注入数据操作可用。
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## 执行流程
|
|
2
|
+
|
|
3
|
+
1. 解析 tasks.md,按 Wave 分组
|
|
4
|
+
2. 同一 Wave 内的任务**并行启动**子代理,不同 Wave **串行等待**
|
|
5
|
+
3. 每个 Wave 完成后,根据用户选择的确认频率决定是否暂停
|
|
6
|
+
4. 子代理返回结果后,主代理勾选 tasks.md、更新 STATE.md
|
|
7
|
+
|
|
8
|
+
## 子代理 Prompt 模板
|
|
9
|
+
|
|
10
|
+
主代理 dispatch 子代理前,必须准备以下 prompt(所有内容**内联**,不让子代理自己读文件)。prompt 格式见 `04b-prompt-template.md`。
|
|
11
|
+
|
|
12
|
+
需要注入的变量:
|
|
13
|
+
- `{任务描述}` — tasks.md 中当前 task 的完整内容(包括步骤字段)
|
|
14
|
+
- `{CONVENTIONS.md 全文}` — 来自 `.sillyspec/docs/<project>/scan/CONVENTIONS.md`
|
|
15
|
+
- `{编码规范约束}` — 02-scan-conventions 步骤生成的规范摘要
|
|
16
|
+
- `{测试模式参考}` — 仅 E2E/测试任务注入,02-scan-conventions 步骤生成
|
|
17
|
+
- `{ARCHITECTURE.md 全文}` — 来自 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md`
|
|
18
|
+
- `{构建命令}` — `.sillyspec/local.yaml` 中的 build 命令
|
|
19
|
+
- `{工作目录}` — 子项目目录路径
|
|
20
|
+
- `{相关知识}` — knowledge/ 中匹配到的内容,未命中则删除此段
|
|
21
|
+
- `{文档查询指引}` — MCP 检测结果动态注入
|
|
22
|
+
- `{本地 Skills}` — 匹配到的 SKILL.md 全文,无匹配则省略
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
子代理 Prompt 模板(供 04-assign-task.md 引用,dispatch 时所有变量需内联):
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
你正在执行任务:
|
|
5
|
+
|
|
6
|
+
## 任务描述
|
|
7
|
+
{任务描述}
|
|
8
|
+
|
|
9
|
+
## 项目约定
|
|
10
|
+
{CONVENTIONS.md 全文}
|
|
11
|
+
|
|
12
|
+
## 编码规范约束(自动扫描)
|
|
13
|
+
{编码规范约束}
|
|
14
|
+
|
|
15
|
+
## 测试模式参考(仅 E2E/测试任务注入)
|
|
16
|
+
{测试模式参考}
|
|
17
|
+
|
|
18
|
+
## 项目架构
|
|
19
|
+
{ARCHITECTURE.md 全文}
|
|
20
|
+
|
|
21
|
+
## 构建命令 / 工作目录
|
|
22
|
+
{构建命令}
|
|
23
|
+
{工作目录}
|
|
24
|
+
|
|
25
|
+
## 相关知识 / 文档查询指引 / 本地 Skills
|
|
26
|
+
{相关知识}
|
|
27
|
+
{文档查询指引}
|
|
28
|
+
{本地 Skills}
|
|
29
|
+
|
|
30
|
+
## 数据操作
|
|
31
|
+
⛔ 任何 DML/DDL 操作必须暂停并报告给用户确认。新建表不受此限制。
|
|
32
|
+
|
|
33
|
+
## 铁律
|
|
34
|
+
1. **先读后写:** 先 cat 要修改的文件和参考文件,确认风格后再写
|
|
35
|
+
2. **grep 确认:** 调用已有方法前必须 grep 确认存在,grep 不到 → BLOCKED
|
|
36
|
+
3. **不编造:** 不编造不存在的方法/注解/类/字段
|
|
37
|
+
4. **不自行补全:** 缺失接口/方法 → BLOCKED
|
|
38
|
+
5. **TDD 不跳步:** 按任务步骤逐步执行,每步必须运行测试并确认结果
|
|
39
|
+
6. **测试直接通过 = 测了已有行为,重写测试**
|
|
40
|
+
7. **E2E 任务:** 先 cat 相关代码,参考测试模式,查阅用法文档,写完立即跑确认通过
|
|
41
|
+
8. **Lint 校验:** 完成后运行 lint,自动修复可修复的问题
|
|
42
|
+
9. **暂存:** lint 通过后 git add -A(不要 commit)
|
|
43
|
+
10. **遵守编码规范:** 规范与任务描述冲突时,优先遵守规范并报告
|
|
44
|
+
11. **参照已有测试风格,不要凭记忆写测试**
|
|
45
|
+
12. **先 grep 项目中类似功能的已有代码,照着现有模式写**
|
|
46
|
+
|
|
47
|
+
## 完成后报告(严格格式)
|
|
48
|
+
- **Status:** DONE / DONE_WITH_CONCERNS / BLOCKED
|
|
49
|
+
- **改动文件:** {列表}
|
|
50
|
+
- **测试结果:** {通过/失败/跳过及原因}
|
|
51
|
+
- **Commit:** {hash 或 "无"}
|
|
52
|
+
- **问题:** {BLOCKED 原因 / DONE_WITH_CONCERNS 描述 / 无}
|
|
53
|
+
- **发现的坑:** {项目特有规律/陷阱/约定,无则写"无"}
|
|
54
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
子代理执行任务的验证步骤:运行测试。
|
|
2
|
+
|
|
3
|
+
按 tasks.md 中当前 task 的「步骤」字段第 4 步执行:运行测试确认通过。
|
|
4
|
+
|
|
5
|
+
- 运行全部测试,确认通过
|
|
6
|
+
- 运行 lint,自动修复可修复的问题
|
|
7
|
+
- lint 通过后 git add -A
|
|
8
|
+
|
|
9
|
+
## 子代理结果处理
|
|
10
|
+
|
|
11
|
+
子代理返回后,主代理:
|
|
12
|
+
|
|
13
|
+
1. **DONE** → 勾选 tasks.md,记录精确到秒的时间戳
|
|
14
|
+
2. **DONE_WITH_CONCERNS** → 勾选 tasks.md,记录问题到报告
|
|
15
|
+
3. **BLOCKED** → 不勾选,报告给用户,AskUserQuestion 三选一:
|
|
16
|
+
- 重试(重新 dispatch 同一任务)
|
|
17
|
+
- 跳过(勾选并标注 SKIPPED)
|
|
18
|
+
- 停止(暂停执行,用户处理后继续)
|
|
19
|
+
|
|
20
|
+
**知识库写入:** 如果子代理报告中「发现的坑」不为"无",追加到 `.sillyspec/knowledge/uncategorized.md`:
|
|
21
|
+
```markdown
|
|
22
|
+
### [待确认] {简短标题}
|
|
23
|
+
> 来源:{变更名} / {task 编号} | {时间戳}
|
|
24
|
+
|
|
25
|
+
{坑的具体描述}
|
|
26
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
如果测试失败或子代理返回 BLOCKED,主代理处理修复。
|
|
2
|
+
|
|
3
|
+
**测试失败修复循环:**
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
ROUND = 1
|
|
7
|
+
MAX_ROUNDS = 5
|
|
8
|
+
|
|
9
|
+
while ROUND <= MAX_ROUNDS:
|
|
10
|
+
1. 运行失败测试,捕获完整输出
|
|
11
|
+
2. 全部通过 → 跳出循环,标记 ✅
|
|
12
|
+
3. 对每个失败测试:
|
|
13
|
+
a. 读取 .sillyspec/local.yaml 中当前变更的 fixAttempts
|
|
14
|
+
b. fixAttempts >= MAX_ROUNDS → 跳过,标记 ❌ MAX_REACHED
|
|
15
|
+
c. 否则 → 重新 dispatch 子代理修复,prompt 包含:
|
|
16
|
+
- 失败的测试文件路径和测试名
|
|
17
|
+
- 完整错误信息(含期望值 vs 实际值)
|
|
18
|
+
- 相关源文件路径
|
|
19
|
+
- "只修复这个测试失败,不要改其他代码"
|
|
20
|
+
d. 修复后重跑确认
|
|
21
|
+
e. 通过 → fixAttempts 不变;仍失败 → fixAttempts + 1
|
|
22
|
+
4. 写入 .sillyspec/local.yaml
|
|
23
|
+
5. ROUND++
|
|
24
|
+
6. 本轮无任何修复 → 跳出循环
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**BLOCKED 处理:**
|
|
28
|
+
- AskUserQuestion 三选一:重试 / 跳过 / 停止
|