@specpow/framework 0.5.10 → 0.5.11
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/CHANGELOG.md +623 -623
- package/LICENSE +21 -21
- package/bin/specpow.js +9 -9
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +12 -11
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +6 -3
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +29 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +5 -2
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/explore.d.ts.map +1 -1
- package/dist/commands/explore.js +8 -10
- package/dist/commands/explore.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/propose.d.ts.map +1 -1
- package/dist/commands/propose.js +4 -3
- package/dist/commands/propose.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +5 -2
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +5 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/store.d.ts.map +1 -1
- package/dist/commands/store.js +8 -6
- package/dist/commands/store.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +3 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate-specs.d.ts.map +1 -1
- package/dist/commands/validate-specs.js +8 -5
- package/dist/commands/validate-specs.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +5 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workflow/index.d.ts.map +1 -1
- package/dist/commands/workflow/index.js +13 -8
- package/dist/commands/workflow/index.js.map +1 -1
- package/dist/core/archive/engine.d.ts.map +1 -1
- package/dist/core/archive/engine.js +10 -6
- package/dist/core/archive/engine.js.map +1 -1
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +5 -2
- package/dist/core/artifact-graph/resolver.js.map +1 -1
- package/dist/core/config/config-schema.d.ts +104 -0
- package/dist/core/config/config-schema.d.ts.map +1 -1
- package/dist/core/config/config-schema.js +15 -1
- package/dist/core/config/config-schema.js.map +1 -1
- package/dist/core/hooks/session-start-hook.d.ts.map +1 -1
- package/dist/core/hooks/session-start-hook.js +50 -45
- package/dist/core/hooks/session-start-hook.js.map +1 -1
- package/dist/core/hooks/workflow-state-hook.d.ts.map +1 -1
- package/dist/core/hooks/workflow-state-hook.js +3 -1
- package/dist/core/hooks/workflow-state-hook.js.map +1 -1
- package/dist/core/init/engine.d.ts.map +1 -1
- package/dist/core/init/engine.js +15 -12
- package/dist/core/init/engine.js.map +1 -1
- package/dist/core/memory/adapters/sqlite-adapter.js +55 -55
- package/dist/core/migration/index.d.ts.map +1 -1
- package/dist/core/migration/index.js +128 -4
- package/dist/core/migration/index.js.map +1 -1
- package/dist/core/store/index.d.ts +4 -3
- package/dist/core/store/index.d.ts.map +1 -1
- package/dist/core/store/index.js +7 -7
- package/dist/core/store/index.js.map +1 -1
- package/dist/core/templates/index.d.ts +1 -1
- package/dist/core/templates/index.d.ts.map +1 -1
- package/dist/core/templates/index.js +11 -6
- package/dist/core/templates/index.js.map +1 -1
- package/dist/core/workflow-state.d.ts +1 -1
- package/dist/core/workflow-state.d.ts.map +1 -1
- package/dist/core/workflow-state.js +10 -5
- package/dist/core/workflow-state.js.map +1 -1
- package/dist/templates/claude-commands/specpow-apply.md +23 -23
- package/dist/templates/claude-commands/specpow-archive.md +22 -22
- package/dist/templates/claude-commands/specpow-propose.md +27 -27
- package/dist/templates/claude-commands/specpow-status.md +22 -22
- package/dist/templates/claude-commands/specpow-validate-specs.md +28 -28
- package/dist/templates/claude-commands/specpow-verify.md +21 -21
- package/dist/templates/claude-commands/specpow.md +34 -34
- package/package.json +121 -122
- package/.specpow/skills/business-code-review/SKILL.md +0 -78
- package/.specpow/skills/business-db-design/SKILL.md +0 -74
- package/.specpow/skills/business-deploy-check/SKILL.md +0 -72
- package/.specpow/skills/business-doc-sync/SKILL.md +0 -72
- package/.specpow/skills/business-java-codegen/SKILL.md +0 -97
- package/.specpow/skills/business-menu-register/SKILL.md +0 -63
- package/.specpow/skills/business-prd-writer/SKILL.md +0 -80
- package/.specpow/skills/business-test-gen/SKILL.md +0 -82
- package/.specpow/skills/business-ui-codegen/SKILL.md +0 -104
- package/.specpow/skills/cli-router/SKILL.md +0 -107
- package/.specpow/skills/execution-finish-branch/SKILL.md +0 -58
- package/.specpow/skills/execution-git-worktrees/SKILL.md +0 -48
- package/.specpow/skills/execution-parallel-agents/SKILL.md +0 -46
- package/.specpow/skills/execution-receiving-review/SKILL.md +0 -47
- package/.specpow/skills/execution-requesting-review/SKILL.md +0 -51
- package/.specpow/skills/execution-sdd-orchestrator/SKILL.md +0 -366
- package/.specpow/skills/execution-subagent-dispatch/SKILL.md +0 -295
- package/.specpow/skills/execution-subagent-driven-dev/SKILL.md +0 -143
- package/.specpow/skills/execution-systematic-debugging/SKILL.md +0 -95
- package/.specpow/skills/execution-tdd/SKILL.md +0 -74
- package/.specpow/skills/execution-verification-before-completion/SKILL.md +0 -75
- package/.specpow/skills/meta-create-skill/SKILL.md +0 -374
- package/.specpow/skills/meta-using-skills/SKILL.md +0 -97
- package/.specpow/skills/meta-writing-skills/SKILL.md +0 -66
- package/.specpow/skills/planning-apply-change/SKILL.md +0 -194
- package/.specpow/skills/planning-archive-change/SKILL.md +0 -53
- package/.specpow/skills/planning-explore/SKILL.md +0 -99
- package/.specpow/skills/planning-onboard/SKILL.md +0 -60
- package/.specpow/skills/planning-propose/SKILL.md +0 -156
- package/.specpow/skills/planning-update-change/SKILL.md +0 -45
- package/.specpow/skills/planning-verify-change/SKILL.md +0 -72
- package/.specpow/skills/planning-write-design/SKILL.md +0 -59
- package/.specpow/skills/planning-write-plans/SKILL.md +0 -55
- package/.specpow/skills/planning-write-specs/SKILL.md +0 -73
- package/.specpow/skills/using-specpow/SKILL.md +0 -232
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-apply-change
|
|
3
|
-
description: 执行变更实现。融合 OpenSpec apply + Superpowers SDD 引擎。这是最关键的融合点 — 用 SDD 子代理驱动方式执行 OpenSpec 定义的任务。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 应用变更 (Apply Change)
|
|
7
|
-
|
|
8
|
-
使用 SDD (子代理驱动开发) 引擎执行 OpenSpec 变更中的任务。
|
|
9
|
-
|
|
10
|
-
**这是 SpecPow 的核心融合点:**
|
|
11
|
-
- OpenSpec 提供任务定义和规范约束
|
|
12
|
-
- Superpowers SDD 提供高质量的执行引擎
|
|
13
|
-
|
|
14
|
-
## 输入
|
|
15
|
-
|
|
16
|
-
可选指定变更名称(如 `/apply-change add-auth`)。如果省略,从对话上下文推断或提示选择。
|
|
17
|
-
|
|
18
|
-
## 流程
|
|
19
|
-
|
|
20
|
-
### 1. 选择变更
|
|
21
|
-
|
|
22
|
-
如果提供了名称,使用它。否则:
|
|
23
|
-
- 从对话上下文推断
|
|
24
|
-
- 如果只有一个活跃变更,自动选择
|
|
25
|
-
- 如果有歧义,运行 `specpow list --json` 让用户选择
|
|
26
|
-
|
|
27
|
-
总是宣布:"使用变更: <name>"
|
|
28
|
-
|
|
29
|
-
### 2. 检查状态并理解 Schema
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
specpow status --change <name> --json
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
理解:
|
|
36
|
-
- `schemaName`: 使用的工作流
|
|
37
|
-
- `changeRoot`: 变更目录
|
|
38
|
-
- 哪个工件包含任务(通常是 "tasks")
|
|
39
|
-
|
|
40
|
-
### 3. 获取应用指令
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
specpow instructions apply --change <name> --json
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
返回:
|
|
47
|
-
- `contextFiles`: 工件 ID 或文件路径数组
|
|
48
|
-
- 进度(总数、完成、剩余)
|
|
49
|
-
- 任务列表及状态
|
|
50
|
-
- `context`: 项目约束(必须考虑但不复制到文件)
|
|
51
|
-
|
|
52
|
-
### 4. 读取上下文文件
|
|
53
|
-
读取 `contextFiles` 中列出的所有文件:
|
|
54
|
-
- proposal.md — 理解为什么做
|
|
55
|
-
- specs/ — 理解行为契约(审查时会验证)
|
|
56
|
-
- design.md — 理解技术方案
|
|
57
|
-
- tasks.md — 理解要做什么
|
|
58
|
-
|
|
59
|
-
### 5. 初始化 SDD 引擎
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
使用 SDD 引擎执行计划。
|
|
63
|
-
[设置: 工作区已验证]
|
|
64
|
-
[读取计划文件: tasks.md]
|
|
65
|
-
[创建工作区 .specpow/sdd/<plan-name>/]
|
|
66
|
-
[初始化账本]
|
|
67
|
-
[为所有任务创建 todo]
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### 6. 执行任务循环(SDD 驱动)
|
|
71
|
-
对每个待处理任务:
|
|
72
|
-
|
|
73
|
-
#### a. 提取任务简报
|
|
74
|
-
```bash
|
|
75
|
-
# 提取任务的完整文本到独立文件
|
|
76
|
-
scripts/task-brief tasks.md <N>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
#### b. 分发实现者子代理
|
|
80
|
-
|
|
81
|
-
构建分发 prompt,包含:
|
|
82
|
-
1. 一行项目背景
|
|
83
|
-
2. 简报路径("先读这个 — 它是你的需求")
|
|
84
|
-
3. 来自前置任务的接口信息
|
|
85
|
-
4. OpenSpec 规范约束(从 specs/ 中提取)
|
|
86
|
-
5. 报告文件路径
|
|
87
|
-
|
|
88
|
-
**关键:不粘贴历史任务的累积摘要。每个子代理只需要自己的任务简报。**
|
|
89
|
-
|
|
90
|
-
#### c. 实现者执行
|
|
91
|
-
实现者子代理:
|
|
92
|
-
1. 读取简报
|
|
93
|
-
2. 实现代码
|
|
94
|
-
3. 编写测试(TDD)
|
|
95
|
-
4. 提交
|
|
96
|
-
5. 自审
|
|
97
|
-
6. 写入报告文件
|
|
98
|
-
|
|
99
|
-
#### d. 生成审查包并分发审查者
|
|
100
|
-
```bash
|
|
101
|
-
# 生成审查包(diff 文件)
|
|
102
|
-
scripts/review-package PLAN_FILE BASE HEAD
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
分发任务审查子代理,提供:
|
|
106
|
-
- 简报路径
|
|
107
|
-
- 报告路径
|
|
108
|
-
- 审查包路径
|
|
109
|
-
- OpenSpec 规范约束(用于验证合规性)
|
|
110
|
-
|
|
111
|
-
#### e. 处理审查结果
|
|
112
|
-
|
|
113
|
-
- **通过**: 记录到账本,继续下一任务
|
|
114
|
-
- **不通过**: 进入修复循环
|
|
115
|
-
|
|
116
|
-
#### f. 修复循环(最多 5 轮)
|
|
117
|
-
|
|
118
|
-
- **Rounds 1-3**: 恢复原始实现者
|
|
119
|
-
- **Rounds 4-5**: 分发全新实现者,使用更强模型
|
|
120
|
-
|
|
121
|
-
每轮:
|
|
122
|
-
1. 实现者修复
|
|
123
|
-
2. 重新运行测试
|
|
124
|
-
3. 范围限定的重新审查
|
|
125
|
-
4. 记录到账本
|
|
126
|
-
|
|
127
|
-
#### g. 断路器(5 轮后)
|
|
128
|
-
如果仍有开放发现:
|
|
129
|
-
- 审查者误报 → 停放(代码保留)
|
|
130
|
-
- 真实但无下游依赖 → 停放(延迟修复)
|
|
131
|
-
- 真实且承载依赖 → STOP,报告 BLOCKED
|
|
132
|
-
|
|
133
|
-
### 7. 最终审查
|
|
134
|
-
所有任务完成后:
|
|
135
|
-
```bash
|
|
136
|
-
scripts/review-package PLAN_FILE MERGE_BASE HEAD
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
分发最终审查(使用最强模型),审查整个分支。
|
|
140
|
-
|
|
141
|
-
### 8. 完成
|
|
142
|
-
|
|
143
|
-
- 更新 tasks.md 中的任务状态(YAML 格式:`status: done`;Checkbox 格式:`- [x]`)
|
|
144
|
-
- 删除 SDD 工作区
|
|
145
|
-
- 提示使用 `finish-branch` 技能
|
|
146
|
-
|
|
147
|
-
## 输出格式
|
|
148
|
-
|
|
149
|
-
```
|
|
150
|
-
## 实现 <change-name> (schema: <schema-name>)
|
|
151
|
-
|
|
152
|
-
正在处理任务 3/7: <任务描述>
|
|
153
|
-
[...实现中...]
|
|
154
|
-
✓ 任务完成
|
|
155
|
-
|
|
156
|
-
正在处理任务 4/7: <任务描述>
|
|
157
|
-
[...实现中...]
|
|
158
|
-
✓ 任务完成
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## 护栏
|
|
162
|
-
|
|
163
|
-
- 持续推进直到完成或被阻塞
|
|
164
|
-
- 开始前总是读取上下文文件
|
|
165
|
-
- 任务不明确时暂停询问
|
|
166
|
-
- 实现发现问题时暂停建议更新工件
|
|
167
|
-
- 保持代码变更最小化和聚焦
|
|
168
|
-
- 完成后立即更新任务勾选状态
|
|
169
|
-
- 遇到错误或阻塞时暂停 — 不要猜测
|
|
170
|
-
|
|
171
|
-
## 关键融合点
|
|
172
|
-
|
|
173
|
-
**OpenSpec 规范约束注入到 SDD 子代理:**
|
|
174
|
-
|
|
175
|
-
实现者的 prompt 中包含:
|
|
176
|
-
```
|
|
177
|
-
规范约束(来自 specs/<capability>/spec.md):
|
|
178
|
-
- REQ-001: 系统必须 <行为>
|
|
179
|
-
- REQ-002: 系统必须 <行为>
|
|
180
|
-
|
|
181
|
-
审查时将验证这些约束是否被满足。
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
这确保实现不仅代码正确,还符合规范定义的行为契约。
|
|
185
|
-
|
|
186
|
-
## 合理化防御表
|
|
187
|
-
|
|
188
|
-
| 借口 | 现实 |
|
|
189
|
-
|------|------|
|
|
190
|
-
| "我可以直接在主会话中实现" | 主会话上下文会被污染。用子代理。 |
|
|
191
|
-
| "审查太慢了" | 没有审查的循环只是未验证的折腾。 |
|
|
192
|
-
| "账本记录是多余的" | 账本是压缩后存活的东西。没有它你会重复已完成的任务。 |
|
|
193
|
-
| "修复很小,跳过重新审查" | 未审查的修复是回归的方式。每轮都以重新审查结束。 |
|
|
194
|
-
| "规范约束不重要" | 规范是行为契约。审查会验证。 |
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-archive-change
|
|
3
|
-
description: SpecPow planning-archive-change skill
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 归档变更
|
|
7
|
-
|
|
8
|
-
> 将已完成的变更归档到主规范中
|
|
9
|
-
|
|
10
|
-
## 触发条件
|
|
11
|
-
|
|
12
|
-
- 变更所有任务已完成
|
|
13
|
-
- 用户提到"归档"/"archive"
|
|
14
|
-
- 分支合并后
|
|
15
|
-
|
|
16
|
-
## 铁律
|
|
17
|
-
|
|
18
|
-
1. **验证先行** — 所有任务必须已完成
|
|
19
|
-
2. **合并规范** — Delta 规范合并到主规范
|
|
20
|
-
3. **保留记录** — 归档文件保留完整工件
|
|
21
|
-
|
|
22
|
-
## 工作流
|
|
23
|
-
|
|
24
|
-
### 1. 检查完成度
|
|
25
|
-
```bash
|
|
26
|
-
# 单变更时自动检测
|
|
27
|
-
specpow status
|
|
28
|
-
|
|
29
|
-
# 多变更时指定名称
|
|
30
|
-
specpow status --change <change-name>
|
|
31
|
-
```
|
|
32
|
-
确认所有任务已完成:
|
|
33
|
-
- YAML Frontmatter 格式:`status: done` 或 `status: completed`
|
|
34
|
-
- Markdown Checkbox 格式:`- [x]`
|
|
35
|
-
|
|
36
|
-
### 2. 执行归档
|
|
37
|
-
```bash
|
|
38
|
-
# 单变更时自动检测,无需指定名称
|
|
39
|
-
specpow archive
|
|
40
|
-
|
|
41
|
-
# 多变更时指定名称
|
|
42
|
-
specpow archive --change <change-name>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 3. 验证归档
|
|
46
|
-
- 确认变更目录已移入 archive/
|
|
47
|
-
- 确认主规范已更新
|
|
48
|
-
- 确认归档报告已生成
|
|
49
|
-
|
|
50
|
-
## 红旗
|
|
51
|
-
|
|
52
|
-
- 任务未完成 → 先完成所有任务
|
|
53
|
-
- 验证未通过 → 先通过 verify
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-explore
|
|
3
|
-
description: 苏格拉底式需求探索。在任何编码之前激活。探索上下文、提问、提出方案、但不产生承诺。融合 Superpowers brainstorming + OpenSpec explore。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 需求探索(Explore)
|
|
7
|
-
|
|
8
|
-
在任何编码之前激活此技能。通过苏格拉底式设计精炼,帮助你和用户就要构建什么达成一致。
|
|
9
|
-
|
|
10
|
-
## 铁律
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
没有完成探索就开始编码 = 在错误方向上高速前进。
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## 何时使用
|
|
17
|
-
|
|
18
|
-
- 用户说"让我们构建 X"/"我需要一个 Y"/"帮我做 Z"
|
|
19
|
-
- 任何涉及新功能、修改、修复的请求
|
|
20
|
-
- 你不确定完整范围时
|
|
21
|
-
|
|
22
|
-
## 流程
|
|
23
|
-
|
|
24
|
-
### 阶段 1: 探索上下文
|
|
25
|
-
1. 读取相关代码文件、文档、现有规范
|
|
26
|
-
2. 理解当前架构和约束
|
|
27
|
-
3. 识别影响范围
|
|
28
|
-
|
|
29
|
-
### 阶段 2: 苏格拉底式提问
|
|
30
|
-
逐个提问(不要一次问多个):
|
|
31
|
-
|
|
32
|
-
- "这个功能的核心用户场景是什么?"
|
|
33
|
-
- "现有的 X 模块会受到影响吗?"
|
|
34
|
-
- "你期望的数据流是什么样的?"
|
|
35
|
-
- "有没有性能/安全方面的约束?"
|
|
36
|
-
- "这个功能的边界在哪里?什么不做?"
|
|
37
|
-
|
|
38
|
-
### 阶段 3: 提出方案
|
|
39
|
-
|
|
40
|
-
提出 2-3 种方案,每种包含:
|
|
41
|
-
- 方案描述
|
|
42
|
-
- 优点
|
|
43
|
-
- 缺点
|
|
44
|
-
- 预估工作量
|
|
45
|
-
|
|
46
|
-
### 阶段 4: 分段展示设计
|
|
47
|
-
|
|
48
|
-
将设计分段展示给用户:
|
|
49
|
-
1. 数据模型
|
|
50
|
-
2. 接口设计
|
|
51
|
-
3. 模块划分
|
|
52
|
-
4. 关键实现路径
|
|
53
|
-
|
|
54
|
-
每段获得用户确认后再继续。
|
|
55
|
-
|
|
56
|
-
### 阶段 5: 写设计文档
|
|
57
|
-
将确认的设计写入文档:
|
|
58
|
-
```
|
|
59
|
-
.specpow/openspec/changes/<change-name>/exploration.md
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### 阶段 6: 自审
|
|
63
|
-
|
|
64
|
-
检查设计文档:
|
|
65
|
-
- [ ] 是否覆盖了所有用户场景?
|
|
66
|
-
- [ ] 是否与现有架构一致?
|
|
67
|
-
- [ ] 是否有遗漏的边界情况?
|
|
68
|
-
- [ ] 是否明确了非目标?
|
|
69
|
-
|
|
70
|
-
### 阶段 7: 用户审核
|
|
71
|
-
|
|
72
|
-
将设计文档展示给用户最终审核。
|
|
73
|
-
|
|
74
|
-
### 阶段 8: 转入 propose
|
|
75
|
-
|
|
76
|
-
用户确认后,提示使用 `propose` 技能创建正式的变更提案。
|
|
77
|
-
|
|
78
|
-
## 视觉伴侣(计划中)
|
|
79
|
-
|
|
80
|
-
对于复杂或 UI 相关设计,未来将支持启动视觉伴侣服务,在浏览器中展示 HTML mockup 和图表。
|
|
81
|
-
|
|
82
|
-
> 此功能尚未实现,当前请使用文字描述和 ASCII 图表辅助设计沟通。
|
|
83
|
-
|
|
84
|
-
## 合理化防御表
|
|
85
|
-
|
|
86
|
-
| 借口 | 现实 |
|
|
87
|
-
|------|------|
|
|
88
|
-
| "这个很简单,不需要探索" | 简单的事经常隐藏复杂性。探索它。 |
|
|
89
|
-
| "用户已经说得很清楚了" | 用户说的和他们想要的经常不同。提问验证。 |
|
|
90
|
-
| "我可以直接开始编码" | 编码是最后一步,不是第一步。 |
|
|
91
|
-
| "探索太慢了" | 返工更慢。 |
|
|
92
|
-
| "我知道该怎么做" | 知道 ≠ 验证过。走流程。 |
|
|
93
|
-
|
|
94
|
-
## 红旗
|
|
95
|
-
|
|
96
|
-
如果你有以下想法,STOP:
|
|
97
|
-
- "我应该直接开始写代码" → 还没探索
|
|
98
|
-
- "这个需求很清楚" → 你确定吗?提问验证
|
|
99
|
-
- "用户会不耐烦" → 5 分钟的探索节省 5 小时的返工
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-onboard
|
|
3
|
-
description: SpecPow planning-onboard skill
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 项目入门
|
|
7
|
-
|
|
8
|
-
> 新成员加入项目时的引导流程
|
|
9
|
-
|
|
10
|
-
## 触发条件
|
|
11
|
-
|
|
12
|
-
- 新成员首次使用项目
|
|
13
|
-
- 用户提到"入门"/"onboard"/"新手"
|
|
14
|
-
|
|
15
|
-
## 工作流
|
|
16
|
-
|
|
17
|
-
### 1. 环境检查
|
|
18
|
-
```bash
|
|
19
|
-
specpow doctor
|
|
20
|
-
```
|
|
21
|
-
确保所有检查通过。
|
|
22
|
-
|
|
23
|
-
### 2. 了解项目结构
|
|
24
|
-
- 阅读 README.md
|
|
25
|
-
- 浏览 schemas/ 了解工作流
|
|
26
|
-
- 浏览 skills/ 了解可用技能
|
|
27
|
-
|
|
28
|
-
### 3. 第一个变更
|
|
29
|
-
```bash
|
|
30
|
-
# 探索项目
|
|
31
|
-
specpow explore
|
|
32
|
-
|
|
33
|
-
# 创建一个小变更
|
|
34
|
-
specpow propose "修复xxx问题"
|
|
35
|
-
|
|
36
|
-
# 查看状态
|
|
37
|
-
specpow status
|
|
38
|
-
|
|
39
|
-
# 执行变更
|
|
40
|
-
specpow apply
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 4. 常用命令速查
|
|
44
|
-
| 命令 | 用途 |
|
|
45
|
-
|------|------|
|
|
46
|
-
| `specpow explore` | 探索项目上下文 |
|
|
47
|
-
| `specpow propose` | 创建变更提案 |
|
|
48
|
-
| `specpow status` | 查看变更状态 |
|
|
49
|
-
| `specpow apply` | 执行变更 |
|
|
50
|
-
| `specpow verify` | 验证变更 |
|
|
51
|
-
| `specpow archive` | 归档变更 |
|
|
52
|
-
| `specpow doctor` | 健康检查 |
|
|
53
|
-
|
|
54
|
-
## 关键概念
|
|
55
|
-
|
|
56
|
-
1. **变更(Change)** — 一次完整的功能开发/修复
|
|
57
|
-
2. **工件(Artifact)** — proposal/spec/design/tasks 四件套
|
|
58
|
-
3. **Schema** — 定义工件流和模板
|
|
59
|
-
4. **技能(Skill)** — AI 的行为指南
|
|
60
|
-
5. **SDD** — 子代理驱动开发
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-propose
|
|
3
|
-
description: 创建变更提案。生成 proposal + specs + design + tasks 全套工件。融合 OpenSpec propose + brainstorming 前置验证。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 变更提案 (Propose)
|
|
7
|
-
|
|
8
|
-
创建完整的变更提案,包含所有规划工件。
|
|
9
|
-
|
|
10
|
-
**规划边界**: 此工作流只创建规划工件。即使用户要求构建,也不要在此阶段开始实现。等工件完成后,等待新的用户请求来启动 apply 工作流。
|
|
11
|
-
|
|
12
|
-
## 前置条件
|
|
13
|
-
|
|
14
|
-
- 已完成 `explore` 技能(或已有明确的需求描述)
|
|
15
|
-
|
|
16
|
-
## 输入
|
|
17
|
-
|
|
18
|
-
用户的请求应包含:变更名称(kebab-case)或要构建的内容描述。
|
|
19
|
-
|
|
20
|
-
## 流程
|
|
21
|
-
|
|
22
|
-
### 1. 理解请求并澄清歧义
|
|
23
|
-
如果未提供明确输入,询问用户:
|
|
24
|
-
> "你想要做什么变更?描述你想要构建或修复的内容。"
|
|
25
|
-
|
|
26
|
-
从描述中派生 kebab-case 名称(如 "add user authentication" → `add-user-auth`)。
|
|
27
|
-
|
|
28
|
-
**重要**: 不要在理解用户想要什么之前继续。
|
|
29
|
-
如果请求包含会实质性影响范围的歧义,先询问用户。
|
|
30
|
-
|
|
31
|
-
### 2. 确定工作流 Schema
|
|
32
|
-
|
|
33
|
-
使用配置的默认 Schema(spec-driven),除非用户明确要求不同的工作流。
|
|
34
|
-
|
|
35
|
-
### 3. 创建变更目录
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
specpow propose <name>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
或手动创建:
|
|
42
|
-
```
|
|
43
|
-
openspec/changes/<name>/
|
|
44
|
-
├── proposal.md
|
|
45
|
-
├── specs/
|
|
46
|
-
│ └── <capability>/spec.md
|
|
47
|
-
├── design.md (可选,小变更可跳过)
|
|
48
|
-
└── tasks.md
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### 4. 获取工件构建顺序
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
specpow status --change <name> --json
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
解析 JSON 获取:
|
|
58
|
-
- `applyRequires`: 实施前需要的工件 ID 数组
|
|
59
|
-
- `artifacts`: 所有工件列表,含状态和依赖关系
|
|
60
|
-
|
|
61
|
-
### 5. 按依赖顺序创建每个工件
|
|
62
|
-
使用 todo 列表跟踪进度。
|
|
63
|
-
按依赖顺序循环(无待处理依赖的工件优先)。
|
|
64
|
-
|
|
65
|
-
#### a. 对于每个 `ready` 状态的工件:
|
|
66
|
-
1. 获取指令:
|
|
67
|
-
```bash
|
|
68
|
-
specpow instructions <artifact-id> --change <name> --json
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
2. 指令 JSON 包含:
|
|
72
|
-
- `context`: 项目背景(约束,不要复制到输出中)
|
|
73
|
-
- `rules`: 工件特定规则(约束,不要复制到输出中)
|
|
74
|
-
- `template`: 输出文件的结构
|
|
75
|
-
- `instruction`: Schema 特定指导
|
|
76
|
-
- `resolvedOutputPath`: 输出路径
|
|
77
|
-
|
|
78
|
-
3. 读取已完成的依赖文件获取上下文(总是从磁盘重新读取)
|
|
79
|
-
|
|
80
|
-
4. 使用 `template` 作为结构创建工件文件
|
|
81
|
-
|
|
82
|
-
5. 应用 `context` 和 `rules` 作为约束 — 但不要复制到文件中
|
|
83
|
-
|
|
84
|
-
#### b. 继续直到所有必需工件都存在:
|
|
85
|
-
- 创建每个工件后,重新运行 `specpow status`
|
|
86
|
-
- 必需集合 = `applyRequires` 加上所有传递依赖
|
|
87
|
-
- 跳过仅在 `status` 报告为 `skipped` 时的工件
|
|
88
|
-
|
|
89
|
-
### 6. 显示最终状态
|
|
90
|
-
```bash
|
|
91
|
-
specpow status --change <name>
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## 工件创建指南
|
|
95
|
-
|
|
96
|
-
### proposal.md
|
|
97
|
-
- 回答:为什么做?解决什么?成功标准?
|
|
98
|
-
- 包含影响范围和非目标
|
|
99
|
-
|
|
100
|
-
### specs/<capability>/spec.md
|
|
101
|
-
- 使用 Delta 格式:ADDED/MODIFIED/REMOVED/RENAMED
|
|
102
|
-
- 规范是行为契约,不是实现计划
|
|
103
|
-
- 每个需求必须可验证(Given/When/Then)
|
|
104
|
-
|
|
105
|
-
### design.md
|
|
106
|
-
- 架构决策(ADR 格式)
|
|
107
|
-
- 模块划分和接口定义
|
|
108
|
-
- 数据模型
|
|
109
|
-
- 小变更可跳过
|
|
110
|
-
|
|
111
|
-
### tasks.md
|
|
112
|
-
- 每个任务 2-5 分钟
|
|
113
|
-
- 包含精确文件路径
|
|
114
|
-
- 包含完整代码或明确修改指令
|
|
115
|
-
- 包含验证步骤
|
|
116
|
-
- 任务之间尽量独立
|
|
117
|
-
- 使用 YAML Frontmatter 格式(推荐):
|
|
118
|
-
|
|
119
|
-
```yaml
|
|
120
|
-
---
|
|
121
|
-
tasks:
|
|
122
|
-
- number: 1
|
|
123
|
-
title: <任务标题>
|
|
124
|
-
files:
|
|
125
|
-
- path/to/file.ts
|
|
126
|
-
description: |
|
|
127
|
-
<精确的实现指令>
|
|
128
|
-
verification: <验证步骤>
|
|
129
|
-
dependsOn: []
|
|
130
|
-
estimatedEffort: S # S | M | L
|
|
131
|
-
---
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## 输出
|
|
135
|
-
|
|
136
|
-
完成后总结:
|
|
137
|
-
- 变更名称和位置
|
|
138
|
-
- 创建的工件列表
|
|
139
|
-
- "实施所需的所有工件已就绪。"
|
|
140
|
-
- 提示:"工件已准备好审核。准备好后,运行 `/apply-change` 或让我应用此变更。"
|
|
141
|
-
|
|
142
|
-
## 护栏
|
|
143
|
-
|
|
144
|
-
- 此工作流只授权规划。不要实现变更
|
|
145
|
-
- 创建工件前总是读取依赖工件
|
|
146
|
-
- 询问会实质性改变范围的歧义
|
|
147
|
-
- 验证每个工件文件存在后再继续
|
|
148
|
-
|
|
149
|
-
## 合理化防御表
|
|
150
|
-
|
|
151
|
-
| 借口 | 现实 |
|
|
152
|
-
|------|------|
|
|
153
|
-
| "我可以直接开始编码" | 没有规划就编码 = 返工 |
|
|
154
|
-
| "规范太正式了" | 规范是对齐工具,不是官僚主义 |
|
|
155
|
-
| "任务列表没必要" | SDD 引擎需要精确的任务定义 |
|
|
156
|
-
| "设计文档太重量级" | 小变更可以跳过,大变更不行 |
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-update-change
|
|
3
|
-
description: SpecPow planning-update-change skill
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 更新变更
|
|
7
|
-
|
|
8
|
-
> 对已有变更进行范围调整或工件更新
|
|
9
|
-
|
|
10
|
-
## 触发条件
|
|
11
|
-
|
|
12
|
-
- 需求发生变化
|
|
13
|
-
- 设计需要调整
|
|
14
|
-
- 用户提到"更新变更"/"修改提案"
|
|
15
|
-
|
|
16
|
-
## 铁律
|
|
17
|
-
|
|
18
|
-
1. **记录原因** — 每次更新必须说明原因
|
|
19
|
-
2. **影响分析** — 评估更新对下游工件的影响
|
|
20
|
-
3. **版本标记** — 更新后的工件标注版本
|
|
21
|
-
|
|
22
|
-
## 工作流
|
|
23
|
-
|
|
24
|
-
### 1. 识别影响范围
|
|
25
|
-
- 修改 proposal → 可能影响 specs/design/tasks
|
|
26
|
-
- 修改 specs → 可能影响 design/tasks
|
|
27
|
-
- 修改 design → 可能影响 tasks
|
|
28
|
-
- 修改 tasks → 仅影响 tasks
|
|
29
|
-
|
|
30
|
-
### 2. 级联更新
|
|
31
|
-
按依赖顺序更新受影响的工件。
|
|
32
|
-
|
|
33
|
-
### 3. 记录变更日志
|
|
34
|
-
```markdown
|
|
35
|
-
## 更新记录
|
|
36
|
-
- 2026-08-10: 新增需求 REQ-005(用户要求增加导出功能)
|
|
37
|
-
- 更新 specs/spec.md: 新增 ADDED REQ-005
|
|
38
|
-
- 更新 design.md: 新增导出接口设计
|
|
39
|
-
- 更新 tasks.md: 新增 Task-006~008
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## 红旗
|
|
43
|
-
|
|
44
|
-
- 更新导致范围大幅扩大 → 重新评估可行性
|
|
45
|
-
- 已部分实现 → 确认已完成部分不受影响
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planning-verify-change
|
|
3
|
-
description: SpecPow planning-verify-change skill
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 验证变更
|
|
7
|
-
|
|
8
|
-
> 验证已实现的变更是否满足规范要求
|
|
9
|
-
|
|
10
|
-
## 触发条件
|
|
11
|
-
|
|
12
|
-
- 任务实现完成后
|
|
13
|
-
- 用户提到"验证"/"verify"/"检查"
|
|
14
|
-
- apply 完成后
|
|
15
|
-
|
|
16
|
-
## 铁律
|
|
17
|
-
|
|
18
|
-
1. **证据驱动** — 每个检查项必须有实际证据
|
|
19
|
-
2. **不自我评估** — 不能自己说"我觉得没问题"
|
|
20
|
-
3. **可复现** — 验证步骤必须可复现
|
|
21
|
-
|
|
22
|
-
## 验证维度
|
|
23
|
-
|
|
24
|
-
### 1. 规范合规性
|
|
25
|
-
- spec.md 中每个需求是否都有对应实现
|
|
26
|
-
- 验收标准是否都满足
|
|
27
|
-
|
|
28
|
-
### 2. 设计一致性
|
|
29
|
-
- 实现是否符合 design.md 中的架构决策
|
|
30
|
-
- 接口定义是否一致
|
|
31
|
-
|
|
32
|
-
### 3. 任务完成度
|
|
33
|
-
- tasks.md 中所有任务是否标记完成
|
|
34
|
-
- 引用的文件是否都存在
|
|
35
|
-
|
|
36
|
-
### 4. 测试覆盖
|
|
37
|
-
- 新增代码是否有测试
|
|
38
|
-
- 测试是否通过
|
|
39
|
-
|
|
40
|
-
### 5. 代码质量
|
|
41
|
-
- 编译通过
|
|
42
|
-
- Lint 通过
|
|
43
|
-
- 无安全漏洞
|
|
44
|
-
|
|
45
|
-
## 使用方式
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# 单变更时自动检测,无需指定名称
|
|
49
|
-
specpow verify
|
|
50
|
-
|
|
51
|
-
# 多变更时指定名称
|
|
52
|
-
specpow verify --change <change-name>
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## 任务格式
|
|
56
|
-
|
|
57
|
-
tasks.md 支持两种格式,verify 均能正确解析:
|
|
58
|
-
- **YAML Frontmatter(推荐)**:通过 `status: done` / `status: completed` / `completed: true` 判断完成
|
|
59
|
-
- **Markdown Checkbox**:通过 `- [x]` 判断完成
|
|
60
|
-
|
|
61
|
-
## 规范解析
|
|
62
|
-
|
|
63
|
-
使用 `parseDelta` 状态机解析 spec.md,识别 ADDED / MODIFIED / REMOVED / RENAMED 四种需求操作。
|
|
64
|
-
|
|
65
|
-
## 输出
|
|
66
|
-
|
|
67
|
-
验证报告,包含每项检查的通过/失败状态和详细信息。
|
|
68
|
-
|
|
69
|
-
## 红旗
|
|
70
|
-
|
|
71
|
-
- 任何 Critical 级别失败 → 必须修复
|
|
72
|
-
- 测试未通过 → 阻止归档
|