speccore 6.76.1 → 6.77.1
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/.agents/skills/spec-analyze/SKILL.md +174 -4
- package/.agents/skills/spec-change/SKILL.md +156 -20
- package/.agents/skills/spec-doc2spec/SKILL.md +121 -4
- package/.agents/skills/spec-done/SKILL.md +214 -0
- package/.agents/skills/spec-execute/SKILL.md +148 -5
- package/.agents/skills/spec-iteration-create/SKILL.md +128 -9
- package/.agents/skills/spec-plan/SKILL.md +123 -4
- package/.agents/skills/spec-pr/SKILL.md +214 -0
- package/.agents/skills/spec-spec2doc/SKILL.md +126 -4
- package/.agents/skills/spec-split/SKILL.md +214 -4
- package/.agents/skills/spec-task-create/SKILL.md +156 -9
- package/.agents/skills/speccore-router/SKILL.md +21 -1
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +2 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +198 -14
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/clarify.d.ts +11 -0
- package/dist/commands/clarify.d.ts.map +1 -0
- package/dist/commands/clarify.js +138 -0
- package/dist/commands/clarify.js.map +1 -0
- package/dist/commands/execute.d.ts +1 -0
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +15 -0
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/init.js +6 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/split.d.ts +3 -1
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +125 -153
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/commands/update.js +0 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +3 -2
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/change-detector.d.ts +25 -0
- package/dist/core/change-detector.d.ts.map +1 -0
- package/dist/core/change-detector.js +170 -0
- package/dist/core/change-detector.js.map +1 -0
- package/dist/core/requirement-clarifier.d.ts +41 -0
- package/dist/core/requirement-clarifier.d.ts.map +1 -0
- package/dist/core/requirement-clarifier.js +181 -0
- package/dist/core/requirement-clarifier.js.map +1 -0
- package/package.json +1 -1
- package/.agents/skills/spec-dev/SKILL.md +0 -10
- package/.agents/skills/spec-synthesize/SKILL.md +0 -10
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-done
|
|
3
|
+
description: >
|
|
4
|
+
任务归档收尾专属 Skill。在调用 speccore ask 之前,执行参数提取、
|
|
5
|
+
前置校验(Task 状态检查、依赖完成性检查、feature 分支合并检查),
|
|
6
|
+
参数缺失时输出交互式提示。不影响 speccore ask 的意图识别能力。
|
|
7
|
+
allowed-tools: ["Bash", "Read"]
|
|
8
|
+
disable-model-invocation: false
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# spec-done — 任务归档收尾(专属逻辑)
|
|
12
|
+
|
|
13
|
+
> **定位**:`/done` 快捷入口的专属预处理层
|
|
14
|
+
> **原则**:不影响 `speccore ask` 的意图识别能力
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 调用方式
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/done [参数]
|
|
22
|
+
/done --task Task-001
|
|
23
|
+
/done --all -I Iteration-001
|
|
24
|
+
/done --task Task-001 --interactive
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 执行流程
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
用户输入 /done [参数]
|
|
33
|
+
│
|
|
34
|
+
▼
|
|
35
|
+
┌───────────────────────────────────────┐
|
|
36
|
+
│ Step 1: 参数提取 │
|
|
37
|
+
│ 从用户输入提取 task/iteration/all 等 │
|
|
38
|
+
└───────────────┬───────────────────────┘
|
|
39
|
+
│
|
|
40
|
+
参数缺失?
|
|
41
|
+
│
|
|
42
|
+
是 ──► 输出交互式提示
|
|
43
|
+
│
|
|
44
|
+
否 ──► 继续
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
┌───────────────────────────────────────┐
|
|
48
|
+
│ Step 2: 前置校验 │
|
|
49
|
+
│ - Task 是否存在? │
|
|
50
|
+
│ - 依赖任务是否已完成? │
|
|
51
|
+
│ - feature 分支是否已合并? │
|
|
52
|
+
│ - 代码是否已提交? │
|
|
53
|
+
└───────────────┬───────────────────────┘
|
|
54
|
+
│
|
|
55
|
+
校验失败?
|
|
56
|
+
│
|
|
57
|
+
是 ──► 输出问题 + 修复建议
|
|
58
|
+
│
|
|
59
|
+
否 ──► 继续
|
|
60
|
+
│
|
|
61
|
+
▼
|
|
62
|
+
┌───────────────────────────────────────┐
|
|
63
|
+
│ Step 3: 调用 speccore ask │
|
|
64
|
+
└───────────────────────────────────────┘
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Step 1: 参数提取
|
|
70
|
+
|
|
71
|
+
| 参数 | 短名 | 长名 | 必填 | 说明 |
|
|
72
|
+
|:---|:---|:---|:---|:---|
|
|
73
|
+
| task | -t | --task | 否 | 目标 Task(支持逗号分隔批量)|
|
|
74
|
+
| iteration | -i | --iteration | 否 | 目标迭代名 |
|
|
75
|
+
| all | -a | --all | 否 | 自动扫描已完成任务批量归档 |
|
|
76
|
+
| skipValidate | - | --skip-validate | 否 | 跳过校验 |
|
|
77
|
+
| skipSync | - | --skip-sync | 否 | 跳过全局同步 |
|
|
78
|
+
| interactive | - | --interactive | 否 | 交互式确认 |
|
|
79
|
+
| prompt | -p | --prompt | 否 | 输出验收总结 Prompt |
|
|
80
|
+
| response | -r | --response | 否 | 接收 AI 验收总结 |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Step 2: 参数缺失 → 交互式提示
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
✅ speccore done — 任务归档收尾
|
|
88
|
+
|
|
89
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
90
|
+
📋 当前环境
|
|
91
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
92
|
+
迭代: Iteration-001-meeting-system(从 context.json 读取)
|
|
93
|
+
已完成任务: 2 个(Task-001, Task-002)
|
|
94
|
+
待归档任务: 1 个(Task-003)
|
|
95
|
+
|
|
96
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
97
|
+
📖 可用参数
|
|
98
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
99
|
+
-t, --task <id> 目标 Task(支持逗号分隔批量)
|
|
100
|
+
-i, --iteration <name> 目标迭代(默认: 当前迭代)
|
|
101
|
+
-a, --all 自动扫描已完成任务批量归档
|
|
102
|
+
--skip-validate 跳过校验
|
|
103
|
+
--skip-sync 跳过全局同步
|
|
104
|
+
--interactive 交互式确认(推荐首次使用)
|
|
105
|
+
-p, --prompt 输出验收总结 Prompt
|
|
106
|
+
-r, --response <json> 接收 AI 验收总结
|
|
107
|
+
|
|
108
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
109
|
+
💡 使用示例
|
|
110
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
111
|
+
/done -t Task-001 # 归档单个任务
|
|
112
|
+
/done -t Task-001,Task-002 # 批量归档
|
|
113
|
+
/done --all # 归档所有已完成任务
|
|
114
|
+
/done --all --interactive # 交互式确认
|
|
115
|
+
/done -t Task-001 --skip-validate # 跳过校验直接归档
|
|
116
|
+
|
|
117
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
118
|
+
🔄 执行流程
|
|
119
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
120
|
+
1. validate — 规范合规校验
|
|
121
|
+
2. archive — 任务归档
|
|
122
|
+
3. merge — 新增需求合并回原文档
|
|
123
|
+
4. sync — 同步到全局层
|
|
124
|
+
5. audit — 生成审计摘要
|
|
125
|
+
|
|
126
|
+
请补充参数后重新调用。
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Step 3: 前置校验
|
|
132
|
+
|
|
133
|
+
### 3.1 Task 存在性检查
|
|
134
|
+
```bash
|
|
135
|
+
# 检查 030-tasks/ 下是否存在该 Task
|
|
136
|
+
# 如果不存在 → 提示可用 Task 列表
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 3.2 依赖任务完成性检查
|
|
140
|
+
```bash
|
|
141
|
+
# 读取 Task/.meta/dependencies
|
|
142
|
+
# 检查依赖的 Task 是否已完成(status=done)
|
|
143
|
+
# 如果有未完成依赖 → 提示用户先完成依赖任务
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 3.3 feature 分支合并检查
|
|
147
|
+
```bash
|
|
148
|
+
# 检查 feature/Task-XXX 分支是否已合并到 main
|
|
149
|
+
# 如果未合并 → 提示用户先合并或创建 PR
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 3.4 代码提交检查
|
|
153
|
+
```bash
|
|
154
|
+
# 检查 Task 对应的 feature 分支是否有未提交代码
|
|
155
|
+
# 如果有 → 提示用户先提交代码(speccore pr)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 3.5 扫描已完成任务(--all 模式)
|
|
159
|
+
```bash
|
|
160
|
+
# 扫描 030-tasks/ 下 status=done 的任务
|
|
161
|
+
# 列出可归档的任务清单
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Step 4: 调用 speccore ask
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
execute_command("speccore ask '归档 Task-XXX...'")
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
> ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 核心流程(保留)
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
用户说 "归档 Task-001"
|
|
180
|
+
│
|
|
181
|
+
▼
|
|
182
|
+
┌─ 1. 前置校验 ────────────────────────────────┐
|
|
183
|
+
│ - Task 存在? │
|
|
184
|
+
│ - 依赖任务已完成? │
|
|
185
|
+
│ - feature 分支已合并? │
|
|
186
|
+
│ - 代码已提交? │
|
|
187
|
+
└───────────────┬────────────────────────────────┘
|
|
188
|
+
│
|
|
189
|
+
▼
|
|
190
|
+
┌─ 2. 执行收尾(5 步)─────────────────────────┐
|
|
191
|
+
│ 1. validate — 规范合规校验 │
|
|
192
|
+
│ → 发现问题?warn 并继续(可 --strict 阻断)│
|
|
193
|
+
│ 2. archive — 任务归档 │
|
|
194
|
+
│ → 移动 Task 到归档目录 │
|
|
195
|
+
│ 3. merge — 新增需求合并回原文档 │
|
|
196
|
+
│ → 更新 REQUIREMENT.md │
|
|
197
|
+
│ 4. sync — 同步到全局层 │
|
|
198
|
+
│ → 更新 GLOBAL/INDEX.md │
|
|
199
|
+
│ 5. audit — 生成审计摘要 │
|
|
200
|
+
│ → 生成 RETRO.md │
|
|
201
|
+
└───────────────┬────────────────────────────────┘
|
|
202
|
+
│
|
|
203
|
+
▼
|
|
204
|
+
┌─ 3. 后续引导 ────────────────────────────────┐
|
|
205
|
+
│ 归档完成 → 引导用户 "可以开始 retro 复盘" │
|
|
206
|
+
│ 或 "开始下一个 Task" │
|
|
207
|
+
└───────────────────────────────────────────────┘
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## 铁律
|
|
211
|
+
|
|
212
|
+
1. **依赖任务必须先完成** — 不允许跳过依赖直接归档
|
|
213
|
+
2. **feature 分支必须先合并** — 防止代码丢失
|
|
214
|
+
3. **validate 发现问题要提示** — 即使不阻断也要明确告知
|
|
@@ -1,13 +1,156 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-execute
|
|
3
|
-
description:
|
|
4
|
-
|
|
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
|
-
|
|
12
|
+
# spec-execute — 执行开发(专属逻辑)
|
|
9
13
|
|
|
10
|
-
|
|
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
|
-
> 💡
|
|
184
|
+
> 💡 "文件即记忆"机制:每个任务完成后,CLI 自动将进度、产出摘要、依赖关系写入摘要文件。
|
|
42
185
|
> 新会话只需读取这个文件(~1K tokens)就能恢复全局视角,无需重新扫描全部文件。
|
|
43
186
|
|
|
44
187
|
### 为什么需要批次执行?
|
|
@@ -1,15 +1,134 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-iteration-create
|
|
3
|
-
description:
|
|
4
|
-
|
|
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
|
-
|
|
9
|
-
1. 从用户原话提取英文主题词(从中文名/AI 自己总结,如"会议系统"→"meeting-system")
|
|
10
|
-
2. execute_command("speccore iteration create -n '<名称>' --topic '<英文主题词>' --owner '<owner>'")
|
|
11
|
+
# spec-iteration-create — 创建迭代(专属逻辑)
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
> **定位**:`/iteration-create` 快捷入口的专属预处理层
|
|
14
|
+
> **原则**:不影响 `speccore ask` 的意图识别能力
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 调用方式
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/iteration-create [参数]
|
|
22
|
+
/iteration-create -n Q2 --topic meeting-system --owner luzhaosheng
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 执行流程
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
用户输入 /iteration-create [参数]
|
|
31
|
+
│
|
|
32
|
+
▼
|
|
33
|
+
┌───────────────────────────────────────┐
|
|
34
|
+
│ Step 1: 参数提取 │
|
|
35
|
+
│ 从用户输入提取 name/topic/owner 等 │
|
|
36
|
+
└───────────────┬───────────────────────┘
|
|
37
|
+
│
|
|
38
|
+
参数缺失?
|
|
39
|
+
│
|
|
40
|
+
是 ──► 输出交互式提示
|
|
41
|
+
│
|
|
42
|
+
否 ──► 继续
|
|
43
|
+
│
|
|
44
|
+
▼
|
|
45
|
+
┌───────────────────────────────────────┐
|
|
46
|
+
│ Step 2: 参数补全 │
|
|
47
|
+
│ topic 缺失 → AI 从中文名提取英文主题词 │
|
|
48
|
+
│ owner 缺失 → 读 git config user.name │
|
|
49
|
+
└───────────────┬───────────────────────┘
|
|
50
|
+
│
|
|
51
|
+
▼
|
|
52
|
+
┌───────────────────────────────────────┐
|
|
53
|
+
│ Step 3: 前置校验 │
|
|
54
|
+
│ - 迭代名是否已存在? │
|
|
55
|
+
│ - 主题词是否有效? │
|
|
56
|
+
└───────────────┬───────────────────────┘
|
|
57
|
+
│
|
|
58
|
+
▼
|
|
59
|
+
┌───────────────────────────────────────┐
|
|
60
|
+
│ Step 4: 调用 speccore ask │
|
|
61
|
+
└───────────────────────────────────────┘
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Step 1: 参数提取
|
|
67
|
+
|
|
68
|
+
| 参数 | 短名 | 长名 | 必填 | 说明 |
|
|
69
|
+
|:---|:---|:---|:---|:---|
|
|
70
|
+
| name | -n | --name | 是 | 迭代名称(如 Q1, V2.0, Sprint-3)|
|
|
71
|
+
| topic | - | --topic | 否 | 英文主题词(用于目录命名)|
|
|
72
|
+
| owner | -o | --owner | 否 | 迭代负责人 |
|
|
73
|
+
| template | -t | --template | 否 | 模板名称(默认 standard)|
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Step 2: 参数缺失 → 交互式提示
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
📁 speccore iteration-create — 创建迭代
|
|
81
|
+
|
|
82
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
83
|
+
📖 可用参数
|
|
84
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
85
|
+
-n, --name <name> 迭代名称(必填)
|
|
86
|
+
如: Q1, V2.0, Sprint-3, 会议系统
|
|
87
|
+
--topic <topic> 英文主题词(如 meeting-system, payment)
|
|
88
|
+
用于生成目录名,缺失时 AI 自动提取
|
|
89
|
+
-o, --owner <name> 迭代负责人(默认: git config user.name)
|
|
90
|
+
-t, --template <name> 模板名称(默认: standard)
|
|
91
|
+
|
|
92
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
93
|
+
💡 使用示例
|
|
94
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
95
|
+
/iteration-create -n Q1 --topic meeting-system # 创建 Q1 迭代
|
|
96
|
+
/iteration-create -n "支付模块" # AI 自动提取主题词
|
|
97
|
+
/iteration-create -n V2.0 --owner luzhaosheng # 指定负责人
|
|
98
|
+
|
|
99
|
+
请补充 --name 参数后重新调用。
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Step 3: 前置校验
|
|
105
|
+
|
|
106
|
+
### 3.1 检查迭代名是否已存在
|
|
107
|
+
```bash
|
|
108
|
+
# 检查 .speccore/ITERATIONS/ 或项目根目录下是否已有同名迭代
|
|
109
|
+
# 如果已存在 → 提示用户是否覆盖或改名
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 3.2 提取英文主题词
|
|
113
|
+
```bash
|
|
114
|
+
# 如果用户未提供 --topic,从 --name 提取英文主题词
|
|
115
|
+
# "会议系统" → "meeting-system"
|
|
116
|
+
# "Q1" → "q1"
|
|
117
|
+
# "支付模块" → "payment"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 3.3 检查 owner
|
|
121
|
+
```bash
|
|
122
|
+
# 如果未提供 --owner,读取 git config user.name
|
|
123
|
+
# 如果 git 未配置 → 提示用户提供
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Step 4: 调用 speccore ask
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
execute_command("speccore ask '创建 Iteration-XXX 迭代...'")
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
> ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
|
|
@@ -1,10 +1,129 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-plan
|
|
3
|
-
description:
|
|
4
|
-
|
|
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
|
-
|
|
12
|
+
# spec-plan — 执行计划(专属逻辑)
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
> **定位**:`/plan` 快捷入口的专属预处理层
|
|
15
|
+
> **原则**:不影响 `speccore ask` 的意图识别能力,只在调用 ask 之前做参数校验和上下文准备
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 调用方式
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
/plan [参数]
|
|
23
|
+
/plan -I Iteration-001 --task Task-001
|
|
24
|
+
/plan -I Iteration-001 --all
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 执行流程
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
用户输入 /plan [参数]
|
|
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
|
+
│ - 执行顺序是否合理? │
|
|
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
|
+
| batch-size | -b | --batch-size | 否 | 每批任务数(默认 3)|
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Step 2: 参数缺失 → 交互式提示
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
📋 speccore plan — 执行计划
|
|
77
|
+
|
|
78
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
79
|
+
📖 可用参数
|
|
80
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
81
|
+
-I, --iteration <name> 目标迭代(默认: 当前迭代)
|
|
82
|
+
-t, --task <id> 指定任务(如 Task-001)
|
|
83
|
+
-a, --all 全部任务
|
|
84
|
+
--batch-size <n> 每批任务数(默认 3)
|
|
85
|
+
|
|
86
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
87
|
+
💡 使用示例
|
|
88
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
89
|
+
/plan # 计划当前迭代全部任务
|
|
90
|
+
/plan -I Q1 # 计划指定迭代
|
|
91
|
+
/plan -t Task-001 # 计划单个任务
|
|
92
|
+
/plan --all --batch-size 5 # 全部任务,每批 5 个
|
|
93
|
+
|
|
94
|
+
请补充参数后重新调用,或直接调用 /plan 使用默认设置。
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Step 3: 前置校验
|
|
100
|
+
|
|
101
|
+
### 3.1 检查任务是否已拆分
|
|
102
|
+
```bash
|
|
103
|
+
# 扫描 030-tasks/ 目录
|
|
104
|
+
# 如果没有 Task 目录 → 提示用户先执行 split
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 3.2 检查依赖关系
|
|
108
|
+
```bash
|
|
109
|
+
# 读取各 Task 的 dependencies
|
|
110
|
+
# 检测循环依赖
|
|
111
|
+
# 检测缺失的依赖任务
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 3.3 执行顺序优化
|
|
115
|
+
```bash
|
|
116
|
+
# 拓扑排序
|
|
117
|
+
# 高优先级任务排在前面
|
|
118
|
+
# 基础模块优先
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Step 4: 调用 speccore ask
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
execute_command("speccore ask '生成 Iteration-XXX 的执行计划...'")
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
> ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
|