speccore 6.76.1 → 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 (47) 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 +198 -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/ask-engine.d.ts.map +1 -1
  35. package/dist/core/ask-engine.js +3 -2
  36. package/dist/core/ask-engine.js.map +1 -1
  37. package/dist/core/change-detector.d.ts +25 -0
  38. package/dist/core/change-detector.d.ts.map +1 -0
  39. package/dist/core/change-detector.js +170 -0
  40. package/dist/core/change-detector.js.map +1 -0
  41. package/dist/core/requirement-clarifier.d.ts +41 -0
  42. package/dist/core/requirement-clarifier.d.ts.map +1 -0
  43. package/dist/core/requirement-clarifier.js +181 -0
  44. package/dist/core/requirement-clarifier.js.map +1 -0
  45. package/package.json +1 -1
  46. package/.agents/skills/spec-dev/SKILL.md +0 -10
  47. package/.agents/skills/spec-synthesize/SKILL.md +0 -10
@@ -1,15 +1,134 @@
1
1
  ---
2
2
  name: spec-iteration-create
3
- description: 创建 SpecCore 迭代
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
- 用户说要创建迭代时:
9
- 1. 从用户原话提取英文主题词(从中文名/AI 自己总结,如"会议系统"→"meeting-system")
10
- 2. execute_command("speccore iteration create -n '<名称>' --topic '<英文主题词>' --owner '<owner>'")
11
+ # spec-iteration-create — 创建迭代(专属逻辑)
11
12
 
12
- 示例:
13
- - "创建Q1会议系统迭代" speccore iteration create -n Q1 --topic meeting-system --owner luzhaosheng
14
- - "新建个支付模块迭代" → speccore iteration create -n 支付 --topic payment --owner luzhaosheng
15
- - "创建V2.0" → speccore iteration create -n V2.0 --topic v2 --owner luzhaosheng
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: 路由到 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-plan 执行计划(专属逻辑)
9
13
 
10
- 不要输出命令文本,不要分析意图,一切交给 speccore ask。
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 引擎。
@@ -1,10 +1,132 @@
1
1
  ---
2
2
  name: spec-spec2doc
3
- description: 路由到 speccore ask 引擎
4
- allowed-tools: ["Bash"]
3
+ description: >
4
+ 规格转文档专属 Skill。在调用 speccore ask 之前,执行参数提取、
5
+ 前置校验(迭代/Task 存在性),参数缺失时输出交互式提示。
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-spec2doc 规格转文档(专属逻辑)
9
12
 
10
- 不要输出命令文本,不要分析意图,一切交给 speccore ask。
13
+ > **定位**:`/spec2doc` 快捷入口的专属预处理层
14
+ > **原则**:不影响 `speccore ask` 的意图识别能力
15
+
16
+ ---
17
+
18
+ ## 调用方式
19
+
20
+ ```
21
+ /spec2doc [参数]
22
+ /spec2doc -I Iteration-001 --task Task-001
23
+ /spec2doc -I Iteration-001 --all
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 执行流程
29
+
30
+ ```
31
+ 用户输入 /spec2doc [参数]
32
+
33
+
34
+ ┌───────────────────────────────────────┐
35
+ │ Step 1: 参数提取 │
36
+ │ 从用户输入提取 iteration/task/format 等 │
37
+ └───────────────┬───────────────────────┘
38
+
39
+ 参数缺失?
40
+
41
+ 是 ──► 输出交互式提示
42
+
43
+ 否 ──► 继续
44
+
45
+
46
+ ┌───────────────────────────────────────┐
47
+ │ Step 2: 前置校验 │
48
+ │ - 迭代是否存在? │
49
+ │ - Task 是否存在? │
50
+ └───────────────┬───────────────────────┘
51
+
52
+
53
+ ┌───────────────────────────────────────┐
54
+ │ Step 3: 调用 speccore ask │
55
+ └───────────────────────────────────────┘
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Step 1: 参数提取
61
+
62
+ | 参数 | 短名 | 长名 | 必填 | 说明 |
63
+ |:---|:---|:---|:---|:---|
64
+ | iteration | -i | --iteration | 否 | 目标迭代名 |
65
+ | task | -t | --task | 否 | 指定 Task(与 --all 互斥)|
66
+ | all | -a | --all | 否 | 全部 Task |
67
+ | format | -f | --format | 否 | 输出格式(md/pdf/html,默认 md)|
68
+ | output | -o | --output | 否 | 输出文件路径 |
69
+
70
+ ---
71
+
72
+ ## Step 2: 参数缺失 → 交互式提示
73
+
74
+ ```
75
+ 📄 speccore spec2doc — 规格转文档
76
+
77
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
78
+ 📋 当前环境
79
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
80
+ 迭代: Iteration-001-meeting-system(从 context.json 读取)
81
+
82
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
83
+ 📖 可用参数
84
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
85
+ -I, --iteration <name> 目标迭代(默认: 当前迭代)
86
+ -t, --task <id> 指定 Task(如 Task-001)
87
+ -a, --all 全部 Task
88
+ -f, --format <format> 输出格式: md | pdf | html(默认 md)
89
+ -o, --output <path> 输出文件路径
90
+
91
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
92
+ 💡 使用示例
93
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
94
+ /spec2doc -t Task-001 # 导出单个 Task
95
+ /spec2doc --all # 导出全部 Task
96
+ /spec2doc --all -f pdf # 导出为 PDF
97
+ /spec2doc -t Task-001 -o ./output.md # 指定输出路径
98
+
99
+ 请补充参数后重新调用。
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Step 3: 前置校验
105
+
106
+ ### 3.1 检查迭代是否存在
107
+ ```bash
108
+ # 检查迭代目录是否存在
109
+ # 如果不存在 → 提示用户
110
+ ```
111
+
112
+ ### 3.2 检查 Task 是否存在
113
+ ```bash
114
+ # 如果指定了 -t,检查 Task 目录是否存在
115
+ # 如果不存在 → 列出可用 Task
116
+ ```
117
+
118
+ ### 3.3 检查输出格式
119
+ ```bash
120
+ # 支持的格式: md, pdf, html
121
+ # 如果格式不支持 → 提示可用格式
122
+ ```
123
+
124
+ ---
125
+
126
+ ## Step 4: 调用 speccore ask
127
+
128
+ ```bash
129
+ execute_command("speccore ask '将规格转为文档...'")
130
+ ```
131
+
132
+ > ⚠️ 最终仍然调用 `speccore ask`,不要绕过 ask 引擎。
@@ -1,10 +1,220 @@
1
1
  ---
2
2
  name: spec-split
3
- description: 路由到 speccore ask 引擎
4
- allowed-tools: ["Bash"]
3
+ description: >
4
+ 任务拆分专属 Skill。在调用 speccore ask 之前,执行参数提取、
5
+ 前置校验(analyze 是否完成、端列表提取、变更检测),
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-split 任务拆分(专属逻辑)
9
13
 
10
- 不要输出命令文本,不要分析意图,一切交给 speccore ask。
14
+ > **定位**:`/split` 快捷入口的专属预处理层
15
+ > **原则**:不影响 `speccore ask` 的意图识别能力,只在调用 ask 之前做参数校验和上下文准备
16
+
17
+ ---
18
+
19
+ ## 调用方式
20
+
21
+ ```
22
+ /split [参数]
23
+ /split -I Iteration-001 --platforms api,h5
24
+ /split --modules "购物车,订单" --prune
25
+ ```
26
+
27
+ ---
28
+
29
+ ## 执行流程
30
+
31
+ ```
32
+ 用户输入 /split [参数]
33
+
34
+
35
+ ┌───────────────────────────────────────┐
36
+ │ Step 1: 参数提取 │
37
+ │ 从用户输入提取 iteration/platforms/modules 等 │
38
+ └───────────────┬───────────────────────┘
39
+
40
+ 参数缺失?
41
+
42
+ 是 ──► 输出交互式提示(参数说明 + 示例)
43
+ │ 让用户补充后重新调用
44
+
45
+ 否 ──► 继续
46
+
47
+
48
+ ┌───────────────────────────────────────┐
49
+ │ Step 2: 参数补全 │
50
+ │ iteration 缺失 → 读 context.json │
51
+ │ platforms 缺失 → 从 CONSTITUTION 检测 │
52
+ └───────────────┬───────────────────────┘
53
+
54
+
55
+ ┌───────────────────────────────────────┐
56
+ │ Step 3: 前置校验 │
57
+ │ - analyze 是否完成? │
58
+ │ - 020-specs/ 是否有更新? │
59
+ │ - 已有 Task 结构扫描 │
60
+ └───────────────┬───────────────────────┘
61
+
62
+ 校验失败?
63
+
64
+ 是 ──► 输出问题 + 修复建议
65
+
66
+ 否 ──► 继续
67
+
68
+
69
+ ┌───────────────────────────────────────┐
70
+ │ Step 4: 生成专属 Prompt │
71
+ │ 根据校验结果生成上下文丰富的 Prompt │
72
+ └───────────────┬───────────────────────┘
73
+
74
+
75
+ ┌───────────────────────────────────────┐
76
+ │ Step 5: 调用 speccore ask │
77
+ │ execute_command("speccore ask '...'") │
78
+ └───────────────────────────────────────┘
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Step 1: 参数提取
84
+
85
+ 从用户输入提取以下参数:
86
+
87
+ | 参数 | 短名 | 长名 | 必填 | 说明 |
88
+ |:---|:---|:---|:---|:---|
89
+ | iteration | -i | --iteration | 否 | 目标迭代名 |
90
+ | platforms | -p | --platforms | 否 | 逗号分隔的端列表 |
91
+ | modules | - | --modules | 否 | 逗号分隔的功能模块名 |
92
+ | prune | - | --prune | 否 | 清理旧任务 |
93
+ | dev-guide | - | --dev-guide | 否 | 生成 DEV_GUIDE.md |
94
+ | ignore-specs-update | - | --ignore-specs-update | 否 | 跳过变更检测 |
95
+ | dry-run | - | --dry-run | 否 | 预览不创建 |
96
+
97
+ **提取规则**:
98
+ - 支持 `-I Q1`、`--iteration Sprint-3`、`迭代 Q1` 等多种形式
99
+ - 支持 `--platforms api,h5`、`只拆 api 和 h5` 等自然语言形式
100
+
101
+ ---
102
+
103
+ ## Step 2: 参数缺失 → 交互式提示
104
+
105
+ 当用户调用 `/split` 但没有提供足够参数时,**不要直接报错**,而是输出友好的提示:
106
+
107
+ ```
108
+ 🎯 speccore split — 任务拆分
109
+
110
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
111
+ 📋 当前环境
112
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
113
+ 迭代: Iteration-001-meeting-system(从 context.json 读取)
114
+ 已有任务: 0 个
115
+ 端列表: api, h5-mobile, admin-web(从 CONSTITUTION.md 读取)
116
+
117
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
+ 📖 可用参数
119
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
120
+ -I, --iteration <name> 目标迭代(默认: 当前迭代)
121
+ -p, --platforms <list> 只拆分指定端(如 api,h5)
122
+ --modules <list> 只拆分指定模块(如 "购物车,订单")
123
+ --prune 清理不匹配的旧任务
124
+ --dev-guide 生成任务级 DEV_GUIDE.md
125
+ --ignore-specs-update 跳过变更检测
126
+ --dry-run 预览不创建
127
+
128
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
129
+ 💡 使用示例
130
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
131
+ /split # 拆分当前迭代全部端
132
+ /split -I Q1 # 拆分指定迭代
133
+ /split --platforms api,h5 # 只拆 api 和 h5 端
134
+ /split --modules "购物车,订单" # 只拆购物车和订单模块
135
+ /split --prune # 清理旧任务后重新拆分
136
+ /split --platforms api --dev-guide # 拆 api 端 + 生成实现指南
137
+
138
+ 请补充参数后重新调用,或直接调用 /split 使用默认设置。
139
+ ```
140
+
141
+ ---
142
+
143
+ ## Step 3: 前置校验
144
+
145
+ 参数齐全后,执行以下校验(**不阻断,只提示**):
146
+
147
+ ### 3.1 检查 analyze 是否完成
148
+ ```bash
149
+ # 检查 ANALYSIS.md 是否存在
150
+ if [ ! -f "Iteration-XXX/020-specs/ANALYSIS.md" ]; then
151
+ echo "⚠️ 该迭代尚未分析,建议先执行:"
152
+ echo " speccore analyze --auto -I Iteration-XXX"
153
+ echo ""
154
+ echo " 选项 1: 停止拆分,先执行 analyze"
155
+ echo " 选项 2: 继续拆分(基于 REQUIREMENT.md 直接拆)"
156
+ fi
157
+ ```
158
+
159
+ ### 3.2 检查 020-specs/ 是否有更新(变更检测)
160
+ ```bash
161
+ # 执行 speccore iteration split --dry-run 检测变更
162
+ # 如果 020-specs/ 比 030-tasks/ 新,提示用户
163
+ ```
164
+
165
+ ### 3.3 扫描已有 Task 结构
166
+ ```bash
167
+ # 读取 030-tasks/ 下的 Task 目录
168
+ # 提取每个 Task 已有的端(10-backend/{端}, 20-frontend/{端})
169
+ # 用于增量拆分
170
+ ```
171
+
172
+ ### 3.4 检查端列表有效性
173
+ ```bash
174
+ # 验证用户指定的 platforms 是否在 CONSTITUTION.md 的端列表中
175
+ # 如果无效,提示可用端列表
176
+ ```
177
+
178
+ ---
179
+
180
+ ## Step 4: 生成专属 Prompt
181
+
182
+ 前置校验完成后,生成包含完整上下文的 Prompt:
183
+
184
+ ```
185
+ speccore ask "拆分 Iteration-001 的任务。
186
+
187
+ 上下文信息:
188
+ - 已有 Task: Task-001(已有端: h5), Task-002(已有端: admin-web)
189
+ - 本次拆分端: api
190
+ - 020-specs/ 有更新(晚于上次拆分)
191
+ - 功能模块: 全部
192
+
193
+ 请执行:speccore iteration split -I Iteration-001 --platforms api"
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Step 5: 调用 speccore ask
199
+
200
+ ```bash
201
+ execute_command("speccore ask '上述 Prompt'")
202
+ ```
203
+
204
+ > ⚠️ **核心原则**:最终仍然调用 `speccore ask`,不要绕过 ask 引擎直接执行 CLI 命令。
205
+ > 专属逻辑只做"参数校验 + 上下文准备",真正的意图理解和执行交给 ask。
206
+
207
+ ---
208
+
209
+ ## 与 speccore-router 的关系
210
+
211
+ | 场景 | 入口 | 处理方 |
212
+ |:---|:---|:---|
213
+ | "拆分 Iteration-001 的任务" | 自然语言 | speccore-router → speccore ask |
214
+ | "/split -I Iteration-001" | 快捷命令 | spec-split Skill → 参数校验 → speccore ask |
215
+ | "/split"(无参数) | 快捷命令 | spec-split Skill → 交互式提示 |
216
+
217
+ **两者不冲突**:
218
+ - router 负责自然语言的意图识别和参数提取
219
+ - spec-split 负责快捷命令的参数校验和上下文准备
220
+ - 最终都调用 `speccore ask` 执行核心逻辑