speccore 6.76.0 → 6.77.0

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 (52) hide show
  1. package/.agents/skills/spec-analyze/SKILL.md +174 -4
  2. package/.agents/skills/spec-change/SKILL.md +156 -20
  3. package/.agents/skills/spec-doc2spec/SKILL.md +121 -4
  4. package/.agents/skills/spec-execute/SKILL.md +148 -5
  5. package/.agents/skills/spec-iteration-create/SKILL.md +128 -9
  6. package/.agents/skills/spec-plan/SKILL.md +123 -4
  7. package/.agents/skills/spec-spec2doc/SKILL.md +126 -4
  8. package/.agents/skills/spec-split/SKILL.md +214 -4
  9. package/.agents/skills/spec-task-create/SKILL.md +156 -9
  10. package/.agents/skills/speccore-router/SKILL.md +21 -1
  11. package/dist/cli.js +22 -0
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/analyze.d.ts +2 -0
  14. package/dist/commands/analyze.d.ts.map +1 -1
  15. package/dist/commands/analyze.js +241 -14
  16. package/dist/commands/analyze.js.map +1 -1
  17. package/dist/commands/clarify.d.ts +11 -0
  18. package/dist/commands/clarify.d.ts.map +1 -0
  19. package/dist/commands/clarify.js +138 -0
  20. package/dist/commands/clarify.js.map +1 -0
  21. package/dist/commands/execute.d.ts +1 -0
  22. package/dist/commands/execute.d.ts.map +1 -1
  23. package/dist/commands/execute.js +15 -0
  24. package/dist/commands/execute.js.map +1 -1
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +4 -8
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/iteration/split.d.ts +3 -1
  29. package/dist/commands/iteration/split.d.ts.map +1 -1
  30. package/dist/commands/iteration/split.js +125 -153
  31. package/dist/commands/iteration/split.js.map +1 -1
  32. package/dist/commands/update.js +0 -1
  33. package/dist/commands/update.js.map +1 -1
  34. package/dist/core/analyze-context-guard.js +2 -2
  35. package/dist/core/analyze-context-guard.js.map +1 -1
  36. package/dist/core/ask-engine.d.ts.map +1 -1
  37. package/dist/core/ask-engine.js +3 -2
  38. package/dist/core/ask-engine.js.map +1 -1
  39. package/dist/core/change-detector.d.ts +25 -0
  40. package/dist/core/change-detector.d.ts.map +1 -0
  41. package/dist/core/change-detector.js +170 -0
  42. package/dist/core/change-detector.js.map +1 -0
  43. package/dist/core/requirement-clarifier.d.ts +41 -0
  44. package/dist/core/requirement-clarifier.d.ts.map +1 -0
  45. package/dist/core/requirement-clarifier.js +181 -0
  46. package/dist/core/requirement-clarifier.js.map +1 -0
  47. package/dist/core/streaming-analyzer.d.ts.map +1 -1
  48. package/dist/core/streaming-analyzer.js +17 -4
  49. package/dist/core/streaming-analyzer.js.map +1 -1
  50. package/package.json +1 -1
  51. package/.agents/skills/spec-dev/SKILL.md +0 -10
  52. package/.agents/skills/spec-synthesize/SKILL.md +0 -10
@@ -1,10 +1,180 @@
1
1
  ---
2
2
  name: spec-analyze
3
- description: 路由到 speccore ask 引擎
4
- allowed-tools: ["Bash"]
3
+ description: >
4
+ 需求分析专属 Skill。在调用 speccore ask 之前,执行参数提取、
5
+ 前置校验(迭代存在性、需求文档检测、专业度评估、端列表读取),
6
+ 参数缺失时输出交互式提示。不影响 speccore ask 的意图识别能力。
7
+ allowed-tools: ["Bash", "Read"]
5
8
  disable-model-invocation: false
6
9
  ---
7
10
 
8
- 直接执行: execute_command("speccore ask '用户原话'")
11
+ # spec-analyze 需求分析(专属逻辑)
9
12
 
10
- 不要输出命令文本,不要分析意图,一切交给 speccore ask。
13
+ > **定位**:`/analyze` 快捷入口的专属预处理层
14
+ > **原则**:不影响 `speccore ask` 的意图识别能力
15
+
16
+ ---
17
+
18
+ ## 调用方式
19
+
20
+ ```
21
+ /analyze [参数]
22
+ /analyze -I Iteration-001 --auto
23
+ /analyze -I Iteration-001 --scope global --with-code
24
+ /analyze -I Iteration-001 --clarify
25
+ ```
26
+
27
+ ---
28
+
29
+ ## 执行流程
30
+
31
+ ```
32
+ 用户输入 /analyze [参数]
33
+
34
+
35
+ ┌───────────────────────────────────────┐
36
+ │ Step 1: 参数提取 │
37
+ │ 从用户输入提取 iteration/scope/auto 等 │
38
+ └───────────────┬───────────────────────┘
39
+
40
+ 参数缺失?
41
+
42
+ 是 ──► 输出交互式提示
43
+
44
+ 否 ──► 继续
45
+
46
+
47
+ ┌───────────────────────────────────────┐
48
+ │ Step 2: 参数补全 │
49
+ │ iteration 缺失 → 读 context.json │
50
+ │ scope 缺失 → 根据上下文推断 │
51
+ └───────────────┬───────────────────────┘
52
+
53
+
54
+ ┌───────────────────────────────────────┐
55
+ │ Step 3: 前置校验 │
56
+ │ - 迭代是否存在? │
57
+ │ - 需求文档是否存在? │
58
+ │ - 需求专业度评估(clarify) │
59
+ │ - CONSTITUTION 端列表读取 │
60
+ └───────────────┬───────────────────────┘
61
+
62
+
63
+ ┌───────────────────────────────────────┐
64
+ │ Step 4: 调用 speccore ask │
65
+ └───────────────────────────────────────┘
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Step 1: 参数提取
71
+
72
+ | 参数 | 短名 | 长名 | 必填 | 说明 |
73
+ |:---|:---|:---|:---|:---|
74
+ | iteration | -i | --iteration | 否 | 目标迭代名 |
75
+ | scope | -s | --scope | 否 | 分析范围: global / iteration / task |
76
+ | auto | -a | --auto | 否 | 全自动模式(不交互)|
77
+ | with-code | -c | --with-code | 否 | 结合源码分析 |
78
+ | full | -f | --full | 否 | 全自动三阶段合成(原 synthesize)|
79
+ | phase | -p | --phase | 否 | 单阶段执行 1/2/3 |
80
+ | clarify | - | --clarify | 否 | 需求专业度检测,口语化时触发 clarify |
81
+ | dev-guide | - | --dev-guide | 否 | 生成 DEV_GUIDE.md 实现指南 |
82
+ | platforms | - | --platforms | 否 | 只分析指定端 |
83
+ | prompt | - | --prompt | 否 | 只输出 Prompt,不执行 |
84
+ | apply | - | --apply | 否 | 应用 AI 分析结果(支持 @file.json)|
85
+
86
+ ---
87
+
88
+ ## Step 2: 参数缺失 → 交互式提示
89
+
90
+ ```
91
+ 🔍 speccore analyze — 需求分析
92
+
93
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
94
+ 📋 当前环境
95
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+ 迭代: Iteration-001-meeting-system(从 context.json 读取)
97
+ 端列表: api, h5-mobile, admin-web(从 CONSTITUTION.md 读取)
98
+
99
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
100
+ 📖 可用参数
101
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102
+ -I, --iteration <name> 目标迭代(默认: 当前迭代)
103
+ -s, --scope <scope> 分析范围:
104
+ global — 全局层分析(项目级,跨端)
105
+ iteration — 迭代级分析(默认)
106
+ task — 任务级分析
107
+ -a, --auto 全自动模式(不交互,直接输出)
108
+ -c, --with-code 结合源码分析(扫描各端源码)
109
+ --full 全自动三阶段合成(原 synthesize --full)
110
+ --phase <N> 单阶段执行: 1(逐端) | 2(跨端) | 3(索引)
111
+ --clarify 需求专业度检测,口语化时自动触发澄清
112
+ --dev-guide 同时生成 DEV_GUIDE.md 开发者实现指南
113
+ --platforms <list> 只分析指定端(如 api,h5)
114
+ --prompt 只输出 Prompt,不执行分析
115
+ --apply <json|@file> 应用 AI 分析结果(支持 @file.json 文件方式)
116
+
117
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
+ 💡 使用示例
119
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
120
+ /analyze -I Q1 --auto # 全自动分析迭代
121
+ /analyze --scope global --with-code # 全局层 + 源码分析
122
+ /analyze --full # 三阶段全量合成
123
+ /analyze --clarify # 检测需求专业度
124
+ /analyze --dev-guide # 分析 + 生成实现指南
125
+ /analyze --platforms api,h5 # 只分析 api 和 h5 端
126
+ /analyze --prompt # 只输出 Prompt
127
+
128
+ 请补充参数后重新调用,或直接调用 /analyze 使用默认设置。
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Step 3: 前置校验
134
+
135
+ ### 3.1 检查迭代是否存在
136
+ ```bash
137
+ # 检查迭代目录是否存在
138
+ # 如果不存在 → 提示用户先创建迭代
139
+ ```
140
+
141
+ ### 3.2 检查需求文档
142
+ ```bash
143
+ # 检查 010-requirements/REQUIREMENT.md 或 converted/*.md 是否存在
144
+ # 如果不存在 → 提示用户先准备需求文档
145
+ ```
146
+
147
+ ### 3.3 需求专业度检测(--clarify)
148
+ ```bash
149
+ # 读取 REQUIREMENT.md 或用户输入
150
+ # 检测指标:
151
+ # - 口语化表达("我要/我想/能不能")
152
+ # - 缺少结构化标题(## / ###)
153
+ # - 缺少验收标准
154
+ # - 缺少技术约束
155
+ # - 缺少错误处理
156
+ # - 缺少数据模型
157
+ # 如果专业度低 → 提示用户先执行 clarify
158
+ ```
159
+
160
+ ### 3.4 读取端列表
161
+ ```bash
162
+ # 从 CONSTITUTION.md 读取项目配置的端列表
163
+ # 如果 --platforms 指定了不存在的端 → 提示可用端
164
+ ```
165
+
166
+ ### 3.5 检查 --apply 文件
167
+ ```bash
168
+ # 如果 --apply 以 @ 开头,从文件读取 JSON
169
+ # 检查文件是否存在
170
+ ```
171
+
172
+ ---
173
+
174
+ ## Step 4: 调用 speccore ask
175
+
176
+ ```bash
177
+ execute_command("speccore ask '分析 Iteration-XXX...'")
178
+ ```
179
+
180
+ > ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
@@ -1,13 +1,166 @@
1
1
  ---
2
2
  name: spec-change
3
- description: 需求变更/新增 — AI 澄清 → 用户确认 → 持久化
3
+ description: >
4
+ 需求变更专属 Skill。在调用 speccore ask 之前,执行参数提取、
5
+ 前置校验(当前迭代、已有 Task 列表、变更类型判断),
6
+ 参数缺失时输出交互式提示。不影响 speccore ask 的意图识别能力。
4
7
  allowed-tools: ["Bash", "Read"]
5
8
  disable-model-invocation: false
6
9
  ---
7
10
 
8
- # spec-change — 需求变更与新增
11
+ # spec-change — 需求变更与新增(专属逻辑)
9
12
 
10
- ## 核心流程
13
+ > **定位**:`/change` 快捷入口的专属预处理层
14
+ > **原则**:不影响 `speccore ask` 的意图识别能力
15
+
16
+ ---
17
+
18
+ ## 调用方式
19
+
20
+ ```
21
+ /change [参数]
22
+ /change --prompt "新增一个通知功能"
23
+ /change --prompt "订单模块加个退款接口" -I Iteration-001
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 执行流程
29
+
30
+ ```
31
+ 用户输入 /change [参数]
32
+
33
+
34
+ ┌───────────────────────────────────────┐
35
+ │ Step 1: 参数提取 │
36
+ │ 从用户输入提取 iteration/prompt/response │
37
+ └───────────────┬───────────────────────┘
38
+
39
+ 参数缺失?
40
+
41
+ 是 ──► 输出交互式提示
42
+
43
+ 否 ──► 继续
44
+
45
+
46
+ ┌───────────────────────────────────────┐
47
+ │ Step 2: 参数补全 │
48
+ │ iteration 缺失 → 读 context.json │
49
+ │ intent 推断 → 新增 or 变更 │
50
+ └───────────────┬───────────────────────┘
51
+
52
+
53
+ ┌───────────────────────────────────────┐
54
+ │ Step 3: 前置校验 │
55
+ │ - 当前迭代是否存在? │
56
+ │ - 已有 Task 列表扫描 │
57
+ │ - 变更类型判断(新增/变更) │
58
+ │ - 附件检测(inbox/ 目录) │
59
+ └───────────────┬───────────────────────┘
60
+
61
+
62
+ ┌───────────────────────────────────────┐
63
+ │ Step 4: 调用 speccore ask │
64
+ └───────────────────────────────────────┘
65
+ ```
66
+
67
+ ---
68
+
69
+ ## Step 1: 参数提取
70
+
71
+ | 参数 | 短名 | 长名 | 必填 | 说明 |
72
+ |:---|:---|:---|:---|:---|
73
+ | iteration | -i | --iteration | 否 | 目标迭代名 |
74
+ | prompt | -p | --prompt | 否 | 生成澄清 Prompt(传入用户原话)|
75
+ | response | -r | --response | 否 | 应用 AI 澄清结果(JSON)|
76
+ | file | -f | --file | 否 | 附件文件路径 |
77
+ | task | -t | --task | 否 | 指定受影响的 Task |
78
+
79
+ ---
80
+
81
+ ## Step 2: 参数缺失 → 交互式提示
82
+
83
+ ```
84
+ 🔄 speccore change — 需求变更与新增
85
+
86
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
87
+ 📋 当前环境
88
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
89
+ 迭代: Iteration-001-meeting-system(从 context.json 读取)
90
+ 已有任务: 3 个(Task-001, Task-002, Task-003)
91
+
92
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
93
+ 📖 可用参数
94
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
95
+ -I, --iteration <name> 目标迭代(默认: 当前迭代)
96
+ -p, --prompt <text> 用户原始需求描述(用于生成澄清 Prompt)
97
+ -r, --response <json> AI 澄清后的结构化结果(JSON)
98
+ -f, --file <path> 附件文件路径
99
+ -t, --task <id> 指定受影响的 Task(可选)
100
+
101
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102
+ 💡 使用示例
103
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
104
+ /change --prompt "新增一个通知功能" # 生成澄清 Prompt
105
+ /change --prompt "订单模块加个退款接口" # 变更现有功能
106
+ /change --response '{...json...}' # 应用澄清结果
107
+ /change --prompt "新增功能" -f ./PRD.pdf # 带附件的变更
108
+
109
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
+ 🔄 核心流程
111
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
112
+ 1. /change --prompt "你的需求描述" → 生成澄清 Prompt
113
+ 2. AI 根据 Prompt 生成结构化 JSON → 展示给用户确认
114
+ 3. 用户确认后 → /change --response '{JSON}'
115
+ 4. CLI 解析 JSON 并写入文件 → 完成变更/新增
116
+
117
+ 请补充 --prompt 参数后重新调用。
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Step 3: 前置校验
123
+
124
+ ### 3.1 检查迭代是否存在
125
+ ```bash
126
+ # 检查迭代目录是否存在
127
+ # 如果不存在 → 提示用户先创建迭代
128
+ ```
129
+
130
+ ### 3.2 扫描已有 Task
131
+ ```bash
132
+ # 读取 030-tasks/ 下的 Task 列表
133
+ # 用于判断变更影响范围(直接/间接/无影响)
134
+ ```
135
+
136
+ ### 3.3 变更类型判断
137
+ ```bash
138
+ # 根据用户输入判断意图:
139
+ # "新增/加/创建/实现 + 描述" → 🆕 新增需求
140
+ # "{task} 需求变了/要改/修改" → 🔄 需求变更
141
+ # 模糊描述 → AI 判断并询问用户
142
+ ```
143
+
144
+ ### 3.4 附件检测
145
+ ```bash
146
+ # 检查 .speccore/inbox/ 目录是否有文件
147
+ # 检查用户是否通过 --file 指定了附件
148
+ # 有附件时,澄清 Prompt 自动包含附件内容
149
+ ```
150
+
151
+ ---
152
+
153
+ ## Step 4: 调用 speccore ask
154
+
155
+ ```bash
156
+ execute_command("speccore ask '处理需求变更...'")
157
+ ```
158
+
159
+ > ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
160
+
161
+ ---
162
+
163
+ ## 核心流程(保留)
11
164
 
12
165
  ```
13
166
  用户自然语言输入(如 "新增一个通知功能" 或 "订单模块加个退款接口")
@@ -70,20 +223,3 @@ disable-model-invocation: false
70
223
  2. **用户不满意就反复澄清** — 直到用户说"可以"为止
71
224
  3. **澄清 = 需求分析** — 结果必须持久化到 REQ.md,不是临时判断
72
225
  4. **不要输出命令文本** — 用 execute_command 执行
73
-
74
- ## 附件支持
75
-
76
- 用户可能通过以下方式提供附件:
77
- - 拖入文件(图片/文档)
78
- - 放到 `.speccore/inbox/` 目录
79
- - 用 `--file` 参数指定
80
-
81
- 有附件时,澄清 Prompt 会自动包含附件内容。
82
-
83
- ## 意图检测
84
-
85
- | 用户说法 | 意图 |
86
- |:---|:---|
87
- | "新增/加/创建/实现 + 描述" | 🆕 新增需求 |
88
- | "{task} 需求变了/要改/修改" | 🔄 需求变更 |
89
- | 模糊描述 | AI 判断并询问用户 |
@@ -1,10 +1,127 @@
1
1
  ---
2
2
  name: spec-doc2spec
3
- description: 路由到 speccore ask 引擎
4
- allowed-tools: ["Bash"]
3
+ description: >
4
+ 文档转规格专属 Skill。在调用 speccore ask 之前,执行参数提取、
5
+ 前置校验(文件存在性、格式检测),参数缺失时输出交互式提示。
6
+ 不影响 speccore ask 的意图识别能力。
7
+ allowed-tools: ["Bash", "Read"]
5
8
  disable-model-invocation: false
6
9
  ---
7
10
 
8
- 直接执行: execute_command("speccore ask '用户原话'")
11
+ # spec-doc2spec 文档转规格(专属逻辑)
9
12
 
10
- 不要输出命令文本,不要分析意图,一切交给 speccore ask。
13
+ > **定位**:`/doc2spec` 快捷入口的专属预处理层
14
+ > **原则**:不影响 `speccore ask` 的意图识别能力
15
+
16
+ ---
17
+
18
+ ## 调用方式
19
+
20
+ ```
21
+ /doc2spec [参数]
22
+ /doc2spec --file PRD.pdf -I Iteration-001
23
+ /doc2spec --file requirements.docx --output 010-requirements/converted/
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 执行流程
29
+
30
+ ```
31
+ 用户输入 /doc2spec [参数]
32
+
33
+
34
+ ┌───────────────────────────────────────┐
35
+ │ Step 1: 参数提取 │
36
+ │ 从用户输入提取 file/iteration/output 等 │
37
+ └───────────────┬───────────────────────┘
38
+
39
+ 参数缺失?
40
+
41
+ 是 ──► 输出交互式提示
42
+
43
+ 否 ──► 继续
44
+
45
+
46
+ ┌───────────────────────────────────────┐
47
+ │ Step 2: 前置校验 │
48
+ │ - 文件是否存在? │
49
+ │ - 格式是否支持? │
50
+ │ - 迭代是否存在? │
51
+ └───────────────┬───────────────────────┘
52
+
53
+
54
+ ┌───────────────────────────────────────┐
55
+ │ Step 3: 调用 speccore ask │
56
+ └───────────────────────────────────────┘
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Step 1: 参数提取
62
+
63
+ | 参数 | 短名 | 长名 | 必填 | 说明 |
64
+ |:---|:---|:---|:---|:---|
65
+ | file | -f | --file | 是 | 源文档路径(PDF/DOCX/MD/HTML)|
66
+ | iteration | -i | --iteration | 否 | 目标迭代名 |
67
+ | output | -o | --output | 否 | 输出目录 |
68
+ | prompt | - | --prompt | 否 | 只输出 Prompt,不执行 |
69
+
70
+ ---
71
+
72
+ ## Step 2: 参数缺失 → 交互式提示
73
+
74
+ ```
75
+ 📄 speccore doc2spec — 文档转规格
76
+
77
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
78
+ 📖 可用参数
79
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
80
+ -f, --file <path> 源文档路径(必填)
81
+ 支持: .pdf, .docx, .md, .html, .txt
82
+ -I, --iteration <name> 目标迭代(默认: 当前迭代)
83
+ -o, --output <dir> 输出目录(默认: 010-requirements/converted/)
84
+ --prompt 只输出 Prompt,不执行转换
85
+
86
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
87
+ 💡 使用示例
88
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
89
+ /doc2spec -f PRD.pdf # 转换 PDF 到当前迭代
90
+ /doc2spec -f requirements.docx -I Q1 # 转换到指定迭代
91
+ /doc2spec -f design.md -o ./output/ # 指定输出目录
92
+ /doc2spec -f PRD.pdf --prompt # 只生成 Prompt
93
+
94
+ 请补充 --file 参数后重新调用。
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Step 3: 前置校验
100
+
101
+ ### 3.1 检查文件是否存在
102
+ ```bash
103
+ # 检查 --file 指定的路径
104
+ # 如果不存在 → 提示用户确认路径
105
+ ```
106
+
107
+ ### 3.2 检查文件格式
108
+ ```bash
109
+ # 支持的格式: .pdf, .docx, .md, .html, .txt
110
+ # 如果格式不支持 → 提示用户
111
+ ```
112
+
113
+ ### 3.3 检查迭代是否存在
114
+ ```bash
115
+ # 如果指定了 -I,检查迭代目录是否存在
116
+ # 如果不存在 → 提示用户先创建迭代
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Step 4: 调用 speccore ask
122
+
123
+ ```bash
124
+ execute_command("speccore ask '将文档转为规格...'")
125
+ ```
126
+
127
+ > ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
@@ -1,13 +1,156 @@
1
1
  ---
2
2
  name: spec-execute
3
- description: 路由到 speccore ask 引擎
4
- allowed-tools: ["Bash"]
3
+ description: >
4
+ 执行开发专属 Skill。在调用 speccore ask 之前,执行参数提取、
5
+ 前置校验(任务状态检查、代码模式读取、上下文准备),
6
+ 参数缺失时输出交互式提示(参数说明 + 使用示例)。
7
+ 不影响 speccore ask 的意图识别能力。
8
+ allowed-tools: ["Bash", "Read"]
5
9
  disable-model-invocation: false
6
10
  ---
7
11
 
8
- 直接执行: execute_command("speccore ask '用户原话'")
12
+ # spec-execute 执行开发(专属逻辑)
9
13
 
10
- 不要输出命令文本,不要分析意图,一切交给 speccore ask。
14
+ > **定位**:`/execute` 快捷入口的专属预处理层
15
+ > **原则**:不影响 `speccore ask` 的意图识别能力,只在调用 ask 之前做参数校验和上下文准备
16
+
17
+ ---
18
+
19
+ ## 调用方式
20
+
21
+ ```
22
+ /execute [参数]
23
+ /execute -t Task-001
24
+ /execute -I Iteration-001 --all
25
+ ```
26
+
27
+ ---
28
+
29
+ ## 执行流程
30
+
31
+ ```
32
+ 用户输入 /execute [参数]
33
+
34
+
35
+ ┌───────────────────────────────────────┐
36
+ │ Step 1: 参数提取 │
37
+ │ 从用户输入提取 iteration/task/all 等 │
38
+ └───────────────┬───────────────────────┘
39
+
40
+ 参数缺失?
41
+
42
+ 是 ──► 输出交互式提示
43
+
44
+ 否 ──► 继续
45
+
46
+
47
+ ┌───────────────────────────────────────┐
48
+ │ Step 2: 前置校验 │
49
+ │ - 任务是否存在? │
50
+ │ - 上游文档是否有更新? │
51
+ │ - 代码模式读取(.speccore/PATTERNS/) │
52
+ └───────────────┬───────────────────────┘
53
+
54
+
55
+ ┌───────────────────────────────────────┐
56
+ │ Step 3: 调用 speccore ask │
57
+ └───────────────────────────────────────┘
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Step 1: 参数提取
63
+
64
+ | 参数 | 短名 | 长名 | 必填 | 说明 |
65
+ |:---|:---|:---|:---|:---|
66
+ | iteration | -i | --iteration | 否 | 目标迭代名 |
67
+ | task | -t | --task | 否 | 指定任务(与 --all 互斥)|
68
+ | all | -a | --all | 否 | 全部待执行任务 |
69
+ | force | -f | --force | 否 | 跳过确认直接执行 |
70
+ | resume | -r | --resume | 否 | 断点续跑 |
71
+ | batch-size | -b | --batch-size | 否 | 每批任务数(默认 3)|
72
+ | verify | -v | --verify | 否 | 执行后自动验证 |
73
+ | agent | - | --agent | 否 | 外部 AI 工具 |
74
+
75
+ ---
76
+
77
+ ## Step 2: 参数缺失 → 交互式提示
78
+
79
+ ```
80
+ 🔨 speccore execute — 执行开发
81
+
82
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
83
+ 📋 当前环境
84
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
85
+ 迭代: Iteration-001-meeting-system(从 context.json 读取)
86
+ 待执行任务: 3 个(Task-001, Task-002, Task-003)
87
+
88
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
89
+ 📖 可用参数
90
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
91
+ -I, --iteration <name> 目标迭代(默认: 当前迭代)
92
+ -t, --task <id> 指定任务(如 Task-001)
93
+ -a, --all 全部待执行任务
94
+ -f, --force 跳过确认直接执行
95
+ -r, --resume 断点续跑(从上次中断处继续)
96
+ --batch-size <n> 每批任务数(默认 3)
97
+ --verify 执行后自动运行测试验证
98
+ --agent <tool> 外部 AI 工具(copilot/claude/cursor/trae/qoder)
99
+ --ignore-upstream-update 跳过上游变更检测
100
+
101
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102
+ 💡 使用示例
103
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
104
+ /execute -t Task-001 # 执行单个任务
105
+ /execute --all # 执行全部待完成任务
106
+ /execute --all --force # 全部执行,跳过确认
107
+ /execute --resume # 断点续跑
108
+ /execute --all --batch-size 5 # 每批 5 个任务
109
+ /execute -t Task-001 --verify # 执行后自动验证
110
+
111
+ 请补充参数后重新调用。
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Step 3: 前置校验
117
+
118
+ ### 3.1 检查任务是否存在
119
+ ```bash
120
+ # 扫描 030-tasks/ 目录
121
+ # 如果 Task 不存在 → 提示用户
122
+ ```
123
+
124
+ ### 3.2 检查任务状态
125
+ ```bash
126
+ # 读取 Task/.meta/status
127
+ # 如果状态为 done → 提示用户是否重新执行
128
+ # 如果状态为 pending → 正常执行
129
+ ```
130
+
131
+ ### 3.3 上游变更检测
132
+ ```bash
133
+ # 比较 020-specs/ 和 Task/00-specs/ 的 mtime
134
+ # 如果有更新 → 提示用户建议重新拆分
135
+ ```
136
+
137
+ ### 3.4 读取代码模式
138
+ ```bash
139
+ # 读取 .speccore/PATTERNS/ 中匹配的代码模式
140
+ # 为 AI 提供参考代码片段
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Step 4: 调用 speccore ask
146
+
147
+ ```bash
148
+ execute_command("speccore ask '执行 Task-XXX 的开发...'")
149
+ ```
150
+
151
+ > ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
152
+
153
+ ---
11
154
 
12
155
  ## 📦 批次执行模式(防止上下文溢出)
13
156
 
@@ -38,7 +181,7 @@ speccore execute --response '<代码JSON>' --task=<任务ID> -i <迭代名>
38
181
  3. 在新对话中,先读取 `<path>` 文件恢复上下文(约 1K tokens,包含已完成任务摘要、待执行任务、依赖关系)
39
182
  4. 然后执行提示的命令继续下一批次
40
183
 
41
- > 💡 “文件即记忆”机制:每个任务完成后,CLI 自动将进度、产出摘要、依赖关系写入摘要文件。
184
+ > 💡 "文件即记忆"机制:每个任务完成后,CLI 自动将进度、产出摘要、依赖关系写入摘要文件。
42
185
  > 新会话只需读取这个文件(~1K tokens)就能恢复全局视角,无需重新扫描全部文件。
43
186
 
44
187
  ### 为什么需要批次执行?