sillyspec 3.20.2 → 3.20.4
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 +21 -21
- package/.claude/skills/sillyspec-auto/SKILL.md +83 -83
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +44 -44
- package/.claude/skills/sillyspec-commit/SKILL.md +106 -106
- package/.claude/skills/sillyspec-continue/SKILL.md +45 -45
- package/.claude/skills/sillyspec-doctor/SKILL.md +31 -31
- package/.claude/skills/sillyspec-execute/SKILL.md +30 -30
- package/.claude/skills/sillyspec-explore/SKILL.md +109 -109
- package/.claude/skills/sillyspec-knowledge/SKILL.md +269 -269
- package/.claude/skills/sillyspec-plan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-propose/SKILL.md +21 -21
- package/.claude/skills/sillyspec-quick/SKILL.md +21 -21
- package/.claude/skills/sillyspec-resume/SKILL.md +68 -68
- package/.claude/skills/sillyspec-scan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-state/SKILL.md +54 -54
- package/.claude/skills/sillyspec-status/SKILL.md +21 -21
- package/.claude/skills/sillyspec-verify/SKILL.md +21 -21
- package/.claude/skills/sillyspec-workspace/SKILL.md +157 -157
- package/.husky/pre-push +13 -13
- package/CLAUDE.md +18 -18
- package/README.md +198 -188
- package/SKILL.md +90 -91
- package/bin/sillyspec.js +2 -2
- package/docs/brainstorm-plan-contract.md +64 -64
- package/docs/plan-execute-contract.md +123 -123
- package/docs/platform-scan-protocol.md +298 -298
- package/docs/revision-mode.md +115 -115
- package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +99 -99
- package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +218 -218
- package/docs/sillyspec/file-lifecycle/stage-artifacts.md +167 -167
- package/docs/sillyspec/file-lifecycle/storage-and-state.md +148 -148
- package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +211 -193
- package/docs/sillyspec/file-lifecycle.md +125 -125
- package/docs/workflow-contract-regression.md +106 -106
- package/docs/worktree-isolation.md +252 -252
- package/package.json +40 -40
- package/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -7446
- package/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -1
- package/packages/dashboard/dist/index.html +16 -16
- package/packages/dashboard/index.html +15 -15
- package/packages/dashboard/package-lock.json +2384 -2384
- package/packages/dashboard/package.json +25 -25
- package/packages/dashboard/server/executor.js +86 -86
- package/packages/dashboard/server/index.js +588 -588
- package/packages/dashboard/server/parser.js +526 -526
- package/packages/dashboard/server/watcher.js +344 -344
- package/packages/dashboard/src/App.vue +558 -558
- package/packages/dashboard/src/components/ActionBar.vue +93 -93
- package/packages/dashboard/src/components/CommandPalette.vue +96 -96
- package/packages/dashboard/src/components/DetailPanel.vue +137 -137
- package/packages/dashboard/src/components/LogStream.vue +65 -65
- package/packages/dashboard/src/components/PipelineStage.vue +95 -95
- package/packages/dashboard/src/components/PipelineView.vue +156 -156
- package/packages/dashboard/src/components/ProjectList.vue +210 -210
- package/packages/dashboard/src/components/StageBadge.vue +67 -67
- package/packages/dashboard/src/components/StepCard.vue +94 -94
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -48
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -61
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -43
- package/packages/dashboard/src/composables/useDashboard.js +170 -170
- package/packages/dashboard/src/composables/useKeyboard.js +119 -119
- package/packages/dashboard/src/composables/useWebSocket.js +129 -129
- package/packages/dashboard/src/main.js +8 -8
- package/packages/dashboard/src/style.css +132 -132
- package/packages/dashboard/vite.config.js +18 -18
- package/src/brainstorm-postcheck.js +158 -158
- package/src/change-list.js +52 -52
- package/src/change-risk-profile.js +352 -352
- package/src/classify-change.js +73 -73
- package/src/constants.js +70 -70
- package/src/contract-matrix.js +278 -278
- package/src/db.js +201 -201
- package/src/endpoint-extractor.js +315 -315
- package/src/hooks/claude-pre-tool-use.cjs +125 -125
- package/src/hooks/worktree-guard.js +653 -653
- package/src/index.js +922 -900
- package/src/init.js +431 -431
- package/src/knowledge-match.js +130 -130
- package/src/migrate.js +117 -117
- package/src/modules.js +482 -482
- package/src/progress.js +1734 -1734
- package/src/run.js +3465 -3358
- package/src/scan-postcheck.js +387 -383
- package/src/setup.js +398 -398
- package/src/stage-contract.js +700 -700
- package/src/stages/archive.js +160 -160
- package/src/stages/brainstorm-auto.js +229 -229
- package/src/stages/brainstorm.js +645 -645
- package/src/stages/doctor.js +365 -365
- package/src/stages/execute.js +625 -625
- package/src/stages/explore.js +34 -34
- package/src/stages/index.js +29 -29
- package/src/stages/knowledge.js +498 -498
- package/src/stages/plan-postcheck.js +511 -513
- package/src/stages/plan.js +582 -582
- package/src/stages/propose.js +174 -174
- package/src/stages/quick.js +82 -82
- package/src/stages/scan.js +558 -558
- package/src/stages/status.js +65 -65
- package/src/stages/verify.js +322 -322
- package/src/sync.js +497 -497
- package/src/task-review.js +346 -346
- package/src/workflow.js +785 -785
- package/src/worktree-apply.js +549 -549
- package/src/worktree-deps.js +185 -0
- package/src/worktree.js +982 -932
- package/templates/workflows/archive-impact.yaml +79 -79
- package/templates/workflows/scan-docs.yaml +132 -132
- package/test/brainstorm-plan-contract.test.mjs +273 -273
- package/test/check-syntax.mjs +26 -26
- package/test/contract-artifacts.test.mjs +323 -323
- package/test/decision-supersede.test.mjs +277 -277
- package/test/knowledge-match.test.mjs +231 -231
- package/test/plan-execute-contract.test.mjs +330 -330
- package/test/plan-optimization.test.mjs +572 -572
- package/test/platform-artifacts.test.mjs +166 -166
- package/test/platform-failure-samples.test.mjs +199 -199
- package/test/platform-recovery-chain.test.mjs +167 -167
- package/test/platform-recovery.test.mjs +136 -136
- package/test/platform-scan-p0.test.mjs +168 -168
- package/test/revision-v1.test.mjs +1145 -1145
- package/test/run-scan-project-parse.test.mjs +200 -200
- package/test/run-tests.mjs +48 -48
- package/test/scan-knowledge.test.mjs +175 -175
- package/test/scan-paths.test.mjs +68 -68
- package/test/scan-postcheck.test.mjs +197 -197
- package/test/spec-dir.test.mjs +206 -206
- package/test/stage-contract.test.mjs +299 -299
- package/test/stage-definitions.test.mjs +39 -39
- package/test/wait-gates.test.mjs +496 -496
- package/test/worktree-deps-provision.test.mjs +148 -0
- package/test/worktree-guard.test.mjs +71 -71
- package/test/worktree-native-overlay.test.mjs +188 -188
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sillyspec:archive
|
|
3
|
-
description: 用于归档已验证完成的变更。适合用户说"归档、archive、收尾这个变更"。执行模块影响分析 + 同步模块文档 + 移动到 archive 目录 + 更新 ROADMAP。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## 多变更说明
|
|
7
|
-
|
|
8
|
-
如果项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录),所有 `sillyspec run` 命令需要加 `--change <变更名>`。只有一个变更时可省略(CLI 自动检测)。
|
|
9
|
-
|
|
10
|
-
## 执行
|
|
11
|
-
|
|
12
|
-
**你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
|
|
13
|
-
|
|
14
|
-
1. 运行 `sillyspec run archive` — 读取输出的步骤 prompt
|
|
15
|
-
2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
|
|
16
|
-
3. 步骤完成后,运行 `sillyspec run archive --done --output "你的摘要"`
|
|
17
|
-
4. 重复 2-3 直到阶段完成
|
|
18
|
-
5. **禁止**在没有运行 CLI 的情况下自行决定流程
|
|
19
|
-
|
|
20
|
-
## 用户指令
|
|
21
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:archive
|
|
3
|
+
description: 用于归档已验证完成的变更。适合用户说"归档、archive、收尾这个变更"。执行模块影响分析 + 同步模块文档 + 移动到 archive 目录 + 更新 ROADMAP。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 多变更说明
|
|
7
|
+
|
|
8
|
+
如果项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录),所有 `sillyspec run` 命令需要加 `--change <变更名>`。只有一个变更时可省略(CLI 自动检测)。
|
|
9
|
+
|
|
10
|
+
## 执行
|
|
11
|
+
|
|
12
|
+
**你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
|
|
13
|
+
|
|
14
|
+
1. 运行 `sillyspec run archive` — 读取输出的步骤 prompt
|
|
15
|
+
2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
|
|
16
|
+
3. 步骤完成后,运行 `sillyspec run archive --done --output "你的摘要"`
|
|
17
|
+
4. 重复 2-3 直到阶段完成
|
|
18
|
+
5. **禁止**在没有运行 CLI 的情况下自行决定流程
|
|
19
|
+
|
|
20
|
+
## 用户指令
|
|
21
|
+
$ARGUMENTS
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sillyspec:auto
|
|
3
|
-
description: 自动模式 — 全流程自动推进(通用版)
|
|
4
|
-
argument-hint: "<需求描述>"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 用法
|
|
8
|
-
- /sillyspec:auto 实现用户登录功能
|
|
9
|
-
- /sillyspec:auto 修复搜索结果的排序问题
|
|
10
|
-
|
|
11
|
-
## 任务
|
|
12
|
-
$ARGUMENTS
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## 执行流程
|
|
17
|
-
|
|
18
|
-
你是全流程编排器,按 brainstorm → plan → execute → verify 顺序自动推进。
|
|
19
|
-
|
|
20
|
-
### 启动
|
|
21
|
-
1. 运行 `sillyspec run auto --input "<用户需求>"`
|
|
22
|
-
2. 读取 CLI 输出的 step prompt(包含你的角色描述)
|
|
23
|
-
3. 执行 prompt 中的操作
|
|
24
|
-
4. **记录 CLI 输出中显示的 Change 名称**(如 `Change: 2026-06-02-xxx`)
|
|
25
|
-
|
|
26
|
-
### 步骤循环
|
|
27
|
-
重复以下循环直到 CLI 输出"全部流程已完成":
|
|
28
|
-
|
|
29
|
-
1. **读取 CLI 输出的 step prompt**
|
|
30
|
-
2. **判断是否需要用户确认:**
|
|
31
|
-
- prompt 中包含"请用户选择""等待用户回答""展示给用户""用户确认" → **暂停,等用户回复**
|
|
32
|
-
- 纯内部操作 → **直接执行**
|
|
33
|
-
3. **执行 prompt 要求的操作**
|
|
34
|
-
4. **完成后运行** `sillyspec run auto --done --output "<你的摘要>"`
|
|
35
|
-
- ⚠️ **必须携带 --change <变更名>**,变更名来自启动时 CLI 输出的 `Change:` 字段
|
|
36
|
-
- 示例:`sillyspec run auto --done --change 2026-06-02-spec-bootstrap-agent-stream-interaction --output "摘要"`
|
|
37
|
-
- **绝不使用 `--change default`**,除非 CLI 启动时明确显示的 Change 名称就是 `default`
|
|
38
|
-
5. **读取 CLI 输出的下一步 prompt**,回到步骤 1
|
|
39
|
-
|
|
40
|
-
### 阶段审核门控
|
|
41
|
-
|
|
42
|
-
**brainstorm 完成后:**
|
|
43
|
-
评估需求复杂度(基于 design.md 中的模块拆分、批量操作、多角色交互等特征),根据复杂度决定:
|
|
44
|
-
|
|
45
|
-
| 复杂度 | 审核策略 |
|
|
46
|
-
|--------|---------|
|
|
47
|
-
| 简单(无拆分、无批量) | 不审核,直接进入 plan |
|
|
48
|
-
| 中等(有拆分或批量) | 启动 1 个审核子代理(QA 视角)审查 design.md |
|
|
49
|
-
| 复杂(拆分 + 批量/多角色) | 启动 2-3 个审核子代理多角度审查 |
|
|
50
|
-
|
|
51
|
-
多角度审核子代理分工:
|
|
52
|
-
- **架构师** — 审查设计合理性、技术选型 trade-off、模块划分
|
|
53
|
-
- **安全专家** — 审查安全隐患、权限设计、数据校验
|
|
54
|
-
- **QA 专家** — 审查需求覆盖率、边界场景遗漏、验收标准
|
|
55
|
-
|
|
56
|
-
审核流程:
|
|
57
|
-
1. 暂停,提示用户当前复杂度等级和建议审核策略
|
|
58
|
-
2. 用户确认后,启动审核子代理(读取 design.md + requirements.md + tasks.md)
|
|
59
|
-
3. 子代理输出问题清单
|
|
60
|
-
4. 汇总问题,询问用户"是否需要修改后再继续"
|
|
61
|
-
5. 需要修改 → 修复后重新审核;不需要 → 进入下一阶段
|
|
62
|
-
|
|
63
|
-
**plan 完成后:**
|
|
64
|
-
同样评估复杂度,启动审核子代理审查 plan.md:
|
|
65
|
-
- **项目经理** — 审查任务拆解粒度、依赖关系、优先级
|
|
66
|
-
- **工程师** — 审查任务可行性、工作量评估是否合理
|
|
67
|
-
- **QA** — 审查验收标准是否具体可测试
|
|
68
|
-
|
|
69
|
-
### 关键规则
|
|
70
|
-
- 不要跳过任何步骤
|
|
71
|
-
- 不要手动修改进度数据(SQLite 数据库)
|
|
72
|
-
- 不要自动 commit,只 git add
|
|
73
|
-
- 不要使用 npx
|
|
74
|
-
- 不要编造不存在的 CLI 子命令
|
|
75
|
-
- 遇到命令报错 → 展示错误,暂停等用户介入
|
|
76
|
-
- **每次调用 `sillyspec run auto --done` 都必须携带 `--change <变更名>`**,变更名 = CLI 首次输出中显示的 Change 名称。如果 CLI 首次运行没有显示 Change 名称,从 progress 或用户输入中确认变更名后再调用
|
|
77
|
-
|
|
78
|
-
### 异常处理
|
|
79
|
-
- 命令执行失败 → 展示错误信息,暂停等待用户指示
|
|
80
|
-
- 用户说"停止"或"暂停" → 立即停止,报告当前进度
|
|
81
|
-
|
|
82
|
-
### 完成条件
|
|
83
|
-
CLI 输出"全部流程已完成"后,输出完整流程总结,提示用户提交改动。
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:auto
|
|
3
|
+
description: 自动模式 — 全流程自动推进(通用版)
|
|
4
|
+
argument-hint: "<需求描述>"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 用法
|
|
8
|
+
- /sillyspec:auto 实现用户登录功能
|
|
9
|
+
- /sillyspec:auto 修复搜索结果的排序问题
|
|
10
|
+
|
|
11
|
+
## 任务
|
|
12
|
+
$ARGUMENTS
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 执行流程
|
|
17
|
+
|
|
18
|
+
你是全流程编排器,按 brainstorm → plan → execute → verify 顺序自动推进。
|
|
19
|
+
|
|
20
|
+
### 启动
|
|
21
|
+
1. 运行 `sillyspec run auto --input "<用户需求>"`
|
|
22
|
+
2. 读取 CLI 输出的 step prompt(包含你的角色描述)
|
|
23
|
+
3. 执行 prompt 中的操作
|
|
24
|
+
4. **记录 CLI 输出中显示的 Change 名称**(如 `Change: 2026-06-02-xxx`)
|
|
25
|
+
|
|
26
|
+
### 步骤循环
|
|
27
|
+
重复以下循环直到 CLI 输出"全部流程已完成":
|
|
28
|
+
|
|
29
|
+
1. **读取 CLI 输出的 step prompt**
|
|
30
|
+
2. **判断是否需要用户确认:**
|
|
31
|
+
- prompt 中包含"请用户选择""等待用户回答""展示给用户""用户确认" → **暂停,等用户回复**
|
|
32
|
+
- 纯内部操作 → **直接执行**
|
|
33
|
+
3. **执行 prompt 要求的操作**
|
|
34
|
+
4. **完成后运行** `sillyspec run auto --done --output "<你的摘要>"`
|
|
35
|
+
- ⚠️ **必须携带 --change <变更名>**,变更名来自启动时 CLI 输出的 `Change:` 字段
|
|
36
|
+
- 示例:`sillyspec run auto --done --change 2026-06-02-spec-bootstrap-agent-stream-interaction --output "摘要"`
|
|
37
|
+
- **绝不使用 `--change default`**,除非 CLI 启动时明确显示的 Change 名称就是 `default`
|
|
38
|
+
5. **读取 CLI 输出的下一步 prompt**,回到步骤 1
|
|
39
|
+
|
|
40
|
+
### 阶段审核门控
|
|
41
|
+
|
|
42
|
+
**brainstorm 完成后:**
|
|
43
|
+
评估需求复杂度(基于 design.md 中的模块拆分、批量操作、多角色交互等特征),根据复杂度决定:
|
|
44
|
+
|
|
45
|
+
| 复杂度 | 审核策略 |
|
|
46
|
+
|--------|---------|
|
|
47
|
+
| 简单(无拆分、无批量) | 不审核,直接进入 plan |
|
|
48
|
+
| 中等(有拆分或批量) | 启动 1 个审核子代理(QA 视角)审查 design.md |
|
|
49
|
+
| 复杂(拆分 + 批量/多角色) | 启动 2-3 个审核子代理多角度审查 |
|
|
50
|
+
|
|
51
|
+
多角度审核子代理分工:
|
|
52
|
+
- **架构师** — 审查设计合理性、技术选型 trade-off、模块划分
|
|
53
|
+
- **安全专家** — 审查安全隐患、权限设计、数据校验
|
|
54
|
+
- **QA 专家** — 审查需求覆盖率、边界场景遗漏、验收标准
|
|
55
|
+
|
|
56
|
+
审核流程:
|
|
57
|
+
1. 暂停,提示用户当前复杂度等级和建议审核策略
|
|
58
|
+
2. 用户确认后,启动审核子代理(读取 design.md + requirements.md + tasks.md)
|
|
59
|
+
3. 子代理输出问题清单
|
|
60
|
+
4. 汇总问题,询问用户"是否需要修改后再继续"
|
|
61
|
+
5. 需要修改 → 修复后重新审核;不需要 → 进入下一阶段
|
|
62
|
+
|
|
63
|
+
**plan 完成后:**
|
|
64
|
+
同样评估复杂度,启动审核子代理审查 plan.md:
|
|
65
|
+
- **项目经理** — 审查任务拆解粒度、依赖关系、优先级
|
|
66
|
+
- **工程师** — 审查任务可行性、工作量评估是否合理
|
|
67
|
+
- **QA** — 审查验收标准是否具体可测试
|
|
68
|
+
|
|
69
|
+
### 关键规则
|
|
70
|
+
- 不要跳过任何步骤
|
|
71
|
+
- 不要手动修改进度数据(SQLite 数据库)
|
|
72
|
+
- 不要自动 commit,只 git add
|
|
73
|
+
- 不要使用 npx
|
|
74
|
+
- 不要编造不存在的 CLI 子命令
|
|
75
|
+
- 遇到命令报错 → 展示错误,暂停等用户介入
|
|
76
|
+
- **每次调用 `sillyspec run auto --done` 都必须携带 `--change <变更名>`**,变更名 = CLI 首次输出中显示的 Change 名称。如果 CLI 首次运行没有显示 Change 名称,从 progress 或用户输入中确认变更名后再调用
|
|
77
|
+
|
|
78
|
+
### 异常处理
|
|
79
|
+
- 命令执行失败 → 展示错误信息,暂停等待用户指示
|
|
80
|
+
- 用户说"停止"或"暂停" → 立即停止,报告当前进度
|
|
81
|
+
|
|
82
|
+
### 完成条件
|
|
83
|
+
CLI 输出"全部流程已完成"后,输出完整流程总结,提示用户提交改动。
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sillyspec:brainstorm
|
|
3
|
-
description: 用于正式开始开发前的需求澄清和技术方案设计。适合用户提出新功能、新模块、架构调整、复杂改造,或说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"。产出结构化方案,但不直接写代码。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## 多变更说明
|
|
7
|
-
|
|
8
|
-
如果项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录),所有 `sillyspec run` 命令需要加 `--change <变更名>`。只有一个变更时可省略(CLI 自动检测)。
|
|
9
|
-
|
|
10
|
-
## 执行
|
|
11
|
-
|
|
12
|
-
**你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
|
|
13
|
-
|
|
14
|
-
1. 运行 `sillyspec run brainstorm` — 读取输出的步骤 prompt
|
|
15
|
-
2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
|
|
16
|
-
3. 步骤完成后,运行 `sillyspec run brainstorm --done --output "你的摘要"`
|
|
17
|
-
4. 重复 2-3 直到阶段完成
|
|
18
|
-
5. **禁止**在没有运行 CLI 的情况下自行决定流程
|
|
19
|
-
|
|
20
|
-
## 特殊步骤:requiresWait
|
|
21
|
-
|
|
22
|
-
某些步骤(如"对话式探索")需要等待用户输入。AI agent 可以:
|
|
23
|
-
|
|
24
|
-
- **方式一(推荐)**:通过自己的对话工具与用户交互,完成后直接 `--done --answer "用户回答"` 一步完成
|
|
25
|
-
- **方式二**:先 `--wait` 记录等待状态,再 `--continue --answer "用户回答"`,最后 `--done`
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# 一步完成 wait + done(AI agent 已自行与用户交互)
|
|
29
|
-
sillyspec run brainstorm --done --change <变更名> --answer "信息够了,进入方案讨论" --output "需求已澄清"
|
|
30
|
-
|
|
31
|
-
# 分步完成
|
|
32
|
-
sillyspec run brainstorm --wait --change <变更名> --reason "等待用户回答" --output "探索问题"
|
|
33
|
-
sillyspec run brainstorm --continue --answer "用户回答" --change <变更名>
|
|
34
|
-
sillyspec run brainstorm --done --change <变更名> --output "需求已澄清"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## 注意
|
|
38
|
-
- 推荐指定 `--change <变更名>`(格式:`YYYY-MM-DD-<简短描述>`),不指定时自动生成
|
|
39
|
-
- 步骤 prompt 由 CLI 管理,不需要手动读取
|
|
40
|
-
- 依赖 scan 阶段完成,CLI 会自动提醒
|
|
41
|
-
- brainstorm 完成后,运行 `sillyspec run plan --change <变更名>` 进入实现计划
|
|
42
|
-
|
|
43
|
-
## 用户指令
|
|
44
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:brainstorm
|
|
3
|
+
description: 用于正式开始开发前的需求澄清和技术方案设计。适合用户提出新功能、新模块、架构调整、复杂改造,或说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"。产出结构化方案,但不直接写代码。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 多变更说明
|
|
7
|
+
|
|
8
|
+
如果项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录),所有 `sillyspec run` 命令需要加 `--change <变更名>`。只有一个变更时可省略(CLI 自动检测)。
|
|
9
|
+
|
|
10
|
+
## 执行
|
|
11
|
+
|
|
12
|
+
**你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
|
|
13
|
+
|
|
14
|
+
1. 运行 `sillyspec run brainstorm` — 读取输出的步骤 prompt
|
|
15
|
+
2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
|
|
16
|
+
3. 步骤完成后,运行 `sillyspec run brainstorm --done --output "你的摘要"`
|
|
17
|
+
4. 重复 2-3 直到阶段完成
|
|
18
|
+
5. **禁止**在没有运行 CLI 的情况下自行决定流程
|
|
19
|
+
|
|
20
|
+
## 特殊步骤:requiresWait
|
|
21
|
+
|
|
22
|
+
某些步骤(如"对话式探索")需要等待用户输入。AI agent 可以:
|
|
23
|
+
|
|
24
|
+
- **方式一(推荐)**:通过自己的对话工具与用户交互,完成后直接 `--done --answer "用户回答"` 一步完成
|
|
25
|
+
- **方式二**:先 `--wait` 记录等待状态,再 `--continue --answer "用户回答"`,最后 `--done`
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 一步完成 wait + done(AI agent 已自行与用户交互)
|
|
29
|
+
sillyspec run brainstorm --done --change <变更名> --answer "信息够了,进入方案讨论" --output "需求已澄清"
|
|
30
|
+
|
|
31
|
+
# 分步完成
|
|
32
|
+
sillyspec run brainstorm --wait --change <变更名> --reason "等待用户回答" --output "探索问题"
|
|
33
|
+
sillyspec run brainstorm --continue --answer "用户回答" --change <变更名>
|
|
34
|
+
sillyspec run brainstorm --done --change <变更名> --output "需求已澄清"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 注意
|
|
38
|
+
- 推荐指定 `--change <变更名>`(格式:`YYYY-MM-DD-<简短描述>`),不指定时自动生成
|
|
39
|
+
- 步骤 prompt 由 CLI 管理,不需要手动读取
|
|
40
|
+
- 依赖 scan 阶段完成,CLI 会自动提醒
|
|
41
|
+
- brainstorm 完成后,运行 `sillyspec run plan --change <变更名>` 进入实现计划
|
|
42
|
+
|
|
43
|
+
## 用户指令
|
|
44
|
+
$ARGUMENTS
|
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sillyspec:commit
|
|
3
|
-
description: 智能提交 — 自动收集变更信息,生成 commit message
|
|
4
|
-
argument-hint: "[可选:自定义 commit message]"
|
|
5
|
-
version: "3.7.32"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 交互规范
|
|
9
|
-
当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。
|
|
10
|
-
|
|
11
|
-
## 用法
|
|
12
|
-
- /sillyspec:commit — 智能提交:自动收集变更信息,生成 commit message
|
|
13
|
-
- /sillyspec:commit "自定义 message" — 使用指定 message 直接提交
|
|
14
|
-
|
|
15
|
-
## 任务
|
|
16
|
-
$ARGUMENTS
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 流程
|
|
21
|
-
|
|
22
|
-
### 1. 检查是否有未提交的修改
|
|
23
|
-
git diff --quiet 2>/dev/null; UNSTAGED=$?
|
|
24
|
-
git diff --cached --quiet 2>/dev/null; STAGED=$?
|
|
25
|
-
|
|
26
|
-
两者都为 0(无修改)→ 提示"没有需要提交的修改",结束。
|
|
27
|
-
|
|
28
|
-
### 2. 暂存所有修改
|
|
29
|
-
git add -A
|
|
30
|
-
|
|
31
|
-
### 3. 收集变更语义信息
|
|
32
|
-
# 上次 commit 时间
|
|
33
|
-
LAST_COMMIT_TIME=$(git log -1 --format=%ci 2>/dev/null)
|
|
34
|
-
|
|
35
|
-
# 修改的文件列表
|
|
36
|
-
git diff --cached --stat
|
|
37
|
-
|
|
38
|
-
从以下来源收集语义信息(筛选时间戳 > LAST_COMMIT_TIME 的条目):
|
|
39
|
-
|
|
40
|
-
来源 A — QUICKLOG(quick 产生的修改):
|
|
41
|
-
USER=$(git config user.name 2>/dev/null || echo "default")
|
|
42
|
-
cat .sillyspec/quicklog/QUICKLOG-${USER}.md 2>/dev/null
|
|
43
|
-
# 同时扫描活跃变更目录下的归属 quicklog
|
|
44
|
-
for dir in .sillyspec/changes/*/quicklog/*.md; do [ -f "$dir" ] && cat "$dir"; done 2>/dev/null
|
|
45
|
-
|
|
46
|
-
来源 B — tasks.md(execute 产生的修改):
|
|
47
|
-
LATEST=$(ls -d .sillyspec/changes/*/ 2>/dev/null | grep -v archive | tail -1)
|
|
48
|
-
cat "$LATEST/tasks.md" 2>/dev/null
|
|
49
|
-
筛选时间戳 > LAST_COMMIT_TIME 的已勾选 task。
|
|
50
|
-
|
|
51
|
-
来源 C — 阶段产出(scan/brainstorm/plan/archive 等):
|
|
52
|
-
检查 .sillyspec/ 下新增或修改的文件,根据路径识别来源阶段:
|
|
53
|
-
- .sillyspec/docs/<project>/scan/*.md → scan 产出
|
|
54
|
-
- changes/<name>/design.md → brainstorm 产出
|
|
55
|
-
- changes/<name>/proposal.md → brainstorm 产出
|
|
56
|
-
- changes/<name>/tasks.md → plan 产出
|
|
57
|
-
- changes/<name>/plan.md → plan 产出
|
|
58
|
-
- changes/archive/ → archive 产出
|
|
59
|
-
- knowledge/*.md → 知识库更新
|
|
60
|
-
|
|
61
|
-
### 4. 自动生成 commit message
|
|
62
|
-
|
|
63
|
-
按 conventional commits 格式,根据来源生成 message:
|
|
64
|
-
|
|
65
|
-
| 来源 | type | 示例 |
|
|
66
|
-
|---|---|---|
|
|
67
|
-
| 只有 quick 条目 | fix/refactor | fix: 手机号校验修复(含正则修正) |
|
|
68
|
-
| 只有 execute 条目 | feat | feat(user): 用户模块 task 1~3 |
|
|
69
|
-
| 只有阶段产出 | docs | docs: sillyspec scan 完成 |
|
|
70
|
-
| 混合来源 | 取最主要的 type | body 里列出所有条目 |
|
|
71
|
-
| 无匹配来源 | — | 展示 diff stat,让用户自己写 |
|
|
72
|
-
|
|
73
|
-
**如果 $ARGUMENTS 非空**,直接使用用户指定的 message,跳过自动生成,但仍展示 diff stat。
|
|
74
|
-
|
|
75
|
-
多条 quick 合并规则:
|
|
76
|
-
- 2 条以内 → 逐条列出
|
|
77
|
-
- 3 条以上 → 摘要 + body 详情
|
|
78
|
-
|
|
79
|
-
### 5. 展示确认
|
|
80
|
-
|
|
81
|
-
用 AskUserQuestion 展示:
|
|
82
|
-
📝 建议的 commit message:
|
|
83
|
-
fix: 手机号校验修复(含正则修正)
|
|
84
|
-
|
|
85
|
-
📁 修改文件(N 个):
|
|
86
|
-
src/UserService.java (+15 -3)
|
|
87
|
-
src/PhoneValidator.java (+28 -0)
|
|
88
|
-
|
|
89
|
-
选择:确认提交 / 编辑 message / 取消
|
|
90
|
-
|
|
91
|
-
用户选择编辑 → 让用户输入新 message → 再次确认。
|
|
92
|
-
|
|
93
|
-
### 6. 执行提交
|
|
94
|
-
git commit -m "{确认后的 message}"
|
|
95
|
-
|
|
96
|
-
提交成功后展示 commit hash + 文件数 + 行数统计。
|
|
97
|
-
|
|
98
|
-
## 多项目
|
|
99
|
-
检查修改的文件分别属于哪个子项目:
|
|
100
|
-
- 修改集中在一个子项目 → 在该子项目目录中 commit
|
|
101
|
-
- 修改跨多个子项目 → 用 AskUserQuestion 让用户选择:分开提交(每个子项目一个 commit)/ 合并提交
|
|
102
|
-
|
|
103
|
-
## 绝对规则
|
|
104
|
-
- ❌ 不要自动提交,必须展示 message 让用户确认
|
|
105
|
-
- ❌ 不要丢弃用户的修改
|
|
106
|
-
- ✅ $ARGUMENTS 非空时展示 diff stat 后直接提交(不需手动确认)
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:commit
|
|
3
|
+
description: 智能提交 — 自动收集变更信息,生成 commit message
|
|
4
|
+
argument-hint: "[可选:自定义 commit message]"
|
|
5
|
+
version: "3.7.32"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 交互规范
|
|
9
|
+
当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。
|
|
10
|
+
|
|
11
|
+
## 用法
|
|
12
|
+
- /sillyspec:commit — 智能提交:自动收集变更信息,生成 commit message
|
|
13
|
+
- /sillyspec:commit "自定义 message" — 使用指定 message 直接提交
|
|
14
|
+
|
|
15
|
+
## 任务
|
|
16
|
+
$ARGUMENTS
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 流程
|
|
21
|
+
|
|
22
|
+
### 1. 检查是否有未提交的修改
|
|
23
|
+
git diff --quiet 2>/dev/null; UNSTAGED=$?
|
|
24
|
+
git diff --cached --quiet 2>/dev/null; STAGED=$?
|
|
25
|
+
|
|
26
|
+
两者都为 0(无修改)→ 提示"没有需要提交的修改",结束。
|
|
27
|
+
|
|
28
|
+
### 2. 暂存所有修改
|
|
29
|
+
git add -A
|
|
30
|
+
|
|
31
|
+
### 3. 收集变更语义信息
|
|
32
|
+
# 上次 commit 时间
|
|
33
|
+
LAST_COMMIT_TIME=$(git log -1 --format=%ci 2>/dev/null)
|
|
34
|
+
|
|
35
|
+
# 修改的文件列表
|
|
36
|
+
git diff --cached --stat
|
|
37
|
+
|
|
38
|
+
从以下来源收集语义信息(筛选时间戳 > LAST_COMMIT_TIME 的条目):
|
|
39
|
+
|
|
40
|
+
来源 A — QUICKLOG(quick 产生的修改):
|
|
41
|
+
USER=$(git config user.name 2>/dev/null || echo "default")
|
|
42
|
+
cat .sillyspec/quicklog/QUICKLOG-${USER}.md 2>/dev/null
|
|
43
|
+
# 同时扫描活跃变更目录下的归属 quicklog
|
|
44
|
+
for dir in .sillyspec/changes/*/quicklog/*.md; do [ -f "$dir" ] && cat "$dir"; done 2>/dev/null
|
|
45
|
+
|
|
46
|
+
来源 B — tasks.md(execute 产生的修改):
|
|
47
|
+
LATEST=$(ls -d .sillyspec/changes/*/ 2>/dev/null | grep -v archive | tail -1)
|
|
48
|
+
cat "$LATEST/tasks.md" 2>/dev/null
|
|
49
|
+
筛选时间戳 > LAST_COMMIT_TIME 的已勾选 task。
|
|
50
|
+
|
|
51
|
+
来源 C — 阶段产出(scan/brainstorm/plan/archive 等):
|
|
52
|
+
检查 .sillyspec/ 下新增或修改的文件,根据路径识别来源阶段:
|
|
53
|
+
- .sillyspec/docs/<project>/scan/*.md → scan 产出
|
|
54
|
+
- changes/<name>/design.md → brainstorm 产出
|
|
55
|
+
- changes/<name>/proposal.md → brainstorm 产出
|
|
56
|
+
- changes/<name>/tasks.md → plan 产出
|
|
57
|
+
- changes/<name>/plan.md → plan 产出
|
|
58
|
+
- changes/archive/ → archive 产出
|
|
59
|
+
- knowledge/*.md → 知识库更新
|
|
60
|
+
|
|
61
|
+
### 4. 自动生成 commit message
|
|
62
|
+
|
|
63
|
+
按 conventional commits 格式,根据来源生成 message:
|
|
64
|
+
|
|
65
|
+
| 来源 | type | 示例 |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| 只有 quick 条目 | fix/refactor | fix: 手机号校验修复(含正则修正) |
|
|
68
|
+
| 只有 execute 条目 | feat | feat(user): 用户模块 task 1~3 |
|
|
69
|
+
| 只有阶段产出 | docs | docs: sillyspec scan 完成 |
|
|
70
|
+
| 混合来源 | 取最主要的 type | body 里列出所有条目 |
|
|
71
|
+
| 无匹配来源 | — | 展示 diff stat,让用户自己写 |
|
|
72
|
+
|
|
73
|
+
**如果 $ARGUMENTS 非空**,直接使用用户指定的 message,跳过自动生成,但仍展示 diff stat。
|
|
74
|
+
|
|
75
|
+
多条 quick 合并规则:
|
|
76
|
+
- 2 条以内 → 逐条列出
|
|
77
|
+
- 3 条以上 → 摘要 + body 详情
|
|
78
|
+
|
|
79
|
+
### 5. 展示确认
|
|
80
|
+
|
|
81
|
+
用 AskUserQuestion 展示:
|
|
82
|
+
📝 建议的 commit message:
|
|
83
|
+
fix: 手机号校验修复(含正则修正)
|
|
84
|
+
|
|
85
|
+
📁 修改文件(N 个):
|
|
86
|
+
src/UserService.java (+15 -3)
|
|
87
|
+
src/PhoneValidator.java (+28 -0)
|
|
88
|
+
|
|
89
|
+
选择:确认提交 / 编辑 message / 取消
|
|
90
|
+
|
|
91
|
+
用户选择编辑 → 让用户输入新 message → 再次确认。
|
|
92
|
+
|
|
93
|
+
### 6. 执行提交
|
|
94
|
+
git commit -m "{确认后的 message}"
|
|
95
|
+
|
|
96
|
+
提交成功后展示 commit hash + 文件数 + 行数统计。
|
|
97
|
+
|
|
98
|
+
## 多项目
|
|
99
|
+
检查修改的文件分别属于哪个子项目:
|
|
100
|
+
- 修改集中在一个子项目 → 在该子项目目录中 commit
|
|
101
|
+
- 修改跨多个子项目 → 用 AskUserQuestion 让用户选择:分开提交(每个子项目一个 commit)/ 合并提交
|
|
102
|
+
|
|
103
|
+
## 绝对规则
|
|
104
|
+
- ❌ 不要自动提交,必须展示 message 让用户确认
|
|
105
|
+
- ❌ 不要丢弃用户的修改
|
|
106
|
+
- ✅ $ARGUMENTS 非空时展示 diff stat 后直接提交(不需手动确认)
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sillyspec:continue
|
|
3
|
-
description: 自动判断并执行下一步
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
你现在是 SillySpec 的自动推进器。
|
|
9
|
-
|
|
10
|
-
## 判断逻辑
|
|
11
|
-
|
|
12
|
-
按顺序检查,第一个未完成的就执行:
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
|
|
16
|
-
|
|
17
|
-
2. .sillyspec/changes/ 有进行中的变更?
|
|
18
|
-
2a. 没有任何文件 → 提示检查 proposal 是否需要完善
|
|
19
|
-
2b. 没有 design.md → 提示补充 design
|
|
20
|
-
2c. 没有 tasks.md → 执行 /sillyspec:propose(补全规范)
|
|
21
|
-
2d. 有 tasks.md 但没有 plan.md → 执行 /sillyspec:plan
|
|
22
|
-
2e. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
|
|
23
|
-
2f. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
|
|
24
|
-
2g. 已验证通过 → 执行 /sillyspec:archive
|
|
25
|
-
|
|
26
|
-
3. 有设计文档但没有对应变更?
|
|
27
|
-
→ 提示运行 /sillyspec:propose <name>
|
|
28
|
-
|
|
29
|
-
4. 有 .sillyspec/docs/*/scan/ 但没有进行中的工作?
|
|
30
|
-
→ 提示运行 /sillyspec:brainstorm "你的想法"
|
|
31
|
-
|
|
32
|
-
5. 什么都没有?
|
|
33
|
-
→ 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## 输出
|
|
37
|
-
|
|
38
|
-
先报告检测结果,再执行:
|
|
39
|
-
|
|
40
|
-
> 🤖 SillySpec 自动检测
|
|
41
|
-
>
|
|
42
|
-
> 当前状态:[描述]
|
|
43
|
-
> 下一步:[执行的命令]
|
|
44
|
-
>
|
|
45
|
-
> [开始执行...]
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:continue
|
|
3
|
+
description: 自动判断并执行下一步
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你现在是 SillySpec 的自动推进器。
|
|
9
|
+
|
|
10
|
+
## 判断逻辑
|
|
11
|
+
|
|
12
|
+
按顺序检查,第一个未完成的就执行:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
|
|
16
|
+
|
|
17
|
+
2. .sillyspec/changes/ 有进行中的变更?
|
|
18
|
+
2a. 没有任何文件 → 提示检查 proposal 是否需要完善
|
|
19
|
+
2b. 没有 design.md → 提示补充 design
|
|
20
|
+
2c. 没有 tasks.md → 执行 /sillyspec:propose(补全规范)
|
|
21
|
+
2d. 有 tasks.md 但没有 plan.md → 执行 /sillyspec:plan
|
|
22
|
+
2e. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
|
|
23
|
+
2f. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
|
|
24
|
+
2g. 已验证通过 → 执行 /sillyspec:archive
|
|
25
|
+
|
|
26
|
+
3. 有设计文档但没有对应变更?
|
|
27
|
+
→ 提示运行 /sillyspec:propose <name>
|
|
28
|
+
|
|
29
|
+
4. 有 .sillyspec/docs/*/scan/ 但没有进行中的工作?
|
|
30
|
+
→ 提示运行 /sillyspec:brainstorm "你的想法"
|
|
31
|
+
|
|
32
|
+
5. 什么都没有?
|
|
33
|
+
→ 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 输出
|
|
37
|
+
|
|
38
|
+
先报告检测结果,再执行:
|
|
39
|
+
|
|
40
|
+
> 🤖 SillySpec 自动检测
|
|
41
|
+
>
|
|
42
|
+
> 当前状态:[描述]
|
|
43
|
+
> 下一步:[执行的命令]
|
|
44
|
+
>
|
|
45
|
+
> [开始执行...]
|