sdd-full 1.0.0 → 1.2.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.
- package/README.md +84 -39
- package/index.js +163 -29
- package/package.json +27 -11
- package/skills/README.md +75 -0
- package/skills/brainstorming/SKILL.md +164 -0
- package/skills/claudeception/SKILL.md +94 -0
- package/skills/competitive-brief/SKILL.md +119 -0
- package/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/market-research/SKILL.md +141 -0
- package/skills/mempalace-auto-saver/SKILL.md +300 -0
- package/skills/prd-write/SKILL.md +109 -0
- package/skills/quality-gate/SKILL.md +348 -0
- package/skills/receiving-code-review/SKILL.md +213 -0
- package/skills/release-flow/SKILL.md +402 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requirement-completion-officer/SKILL.md +122 -0
- package/skills/sdd/SKILL.md +1042 -0
- package/skills/sdd-add/SKILL.md +538 -0
- package/skills/sdd-code/SKILL.md +345 -0
- package/skills/sdd-deploy/SKILL.md +499 -0
- package/skills/sdd-full/SKILL.md +734 -0
- package/skills/sdd-ops/SKILL.md +304 -0
- package/skills/sdd-test/SKILL.md +381 -0
- package/skills/security-audit/SKILL.md +384 -0
- package/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/test-driven-development/SKILL.md +371 -0
- package/skills/ui-sdd/SKILL.md +290 -0
- package/skills/unified-flow/SKILL.md +146 -0
- package/skills/using-superpowers/SKILL.md +115 -0
- package/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/writing-plans/SKILL.md +142 -0
- package/skills//345/256/214/346/225/264/345/274/200/345/217/221/346/265/201/347/250/213/346/211/213/345/206/214.md +349 -0
- package/skills//346/212/200/350/203/275/344/275/223/347/263/273/345/256/214/345/226/204/345/273/272/350/256/256.md +244 -0
- package/skills//346/212/200/350/203/275/344/275/277/347/224/250/346/214/207/345/215/227.md +225 -0
- package/skills//346/212/200/350/203/275/345/206/263/347/255/226/346/240/221.md +235 -0
- package/skills-data.js +0 -107
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
|
|
2
|
+
---
|
|
3
|
+
name: unified-flow
|
|
4
|
+
description: "综合开发流程 - 提供4个流程选项:从零开始新项目、小型功能迭代、Bug处理、代码发布"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 综合开发流程
|
|
8
|
+
|
|
9
|
+
<TRIGGER-WORDS>
|
|
10
|
+
- 从零开始新项目
|
|
11
|
+
- 我现在要做新项目
|
|
12
|
+
- 新项目启动
|
|
13
|
+
- 从零开始
|
|
14
|
+
- 创建新项目
|
|
15
|
+
- 我现在要做小型功能迭代
|
|
16
|
+
- 功能迭代
|
|
17
|
+
- 小型迭代
|
|
18
|
+
- 快速迭代
|
|
19
|
+
- 新增小功能
|
|
20
|
+
- 我现在要处理Bug
|
|
21
|
+
- 处理Bug
|
|
22
|
+
- 修复Bug
|
|
23
|
+
- Bug修复
|
|
24
|
+
- 调试Bug
|
|
25
|
+
- 我现在要发布代码
|
|
26
|
+
- 发布代码
|
|
27
|
+
- 代码发布
|
|
28
|
+
- 部署上线
|
|
29
|
+
- 发布上线
|
|
30
|
+
- 启动开发流程
|
|
31
|
+
- 开始开发
|
|
32
|
+
</TRIGGER-WORDS>
|
|
33
|
+
|
|
34
|
+
## 🎯 流程选项
|
|
35
|
+
|
|
36
|
+
请选择您要使用的流程:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
1. 从零开始新项目
|
|
40
|
+
2. 小型功能迭代
|
|
41
|
+
3. Bug处理
|
|
42
|
+
4. 代码发布
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 1. 从零开始新项目
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
1. 市场调研/头脑风暴(可选,如需要创意/调研)
|
|
51
|
+
↓
|
|
52
|
+
2. PRD编写(可选,写PRD)
|
|
53
|
+
↓
|
|
54
|
+
3. 需求补全(可选,requirement-completion-officer)
|
|
55
|
+
↓
|
|
56
|
+
4. SDD拆分(sdd/sdd-full)
|
|
57
|
+
↓
|
|
58
|
+
5. UI设计(可选,ui-sdd)
|
|
59
|
+
↓
|
|
60
|
+
6. 实现拆分(sdd-code,含代码规范、技术债务、重构计划)
|
|
61
|
+
↓
|
|
62
|
+
7. 测试设计(sdd-test)
|
|
63
|
+
↓
|
|
64
|
+
8. 部署设计(可选,sdd-deploy)
|
|
65
|
+
↓
|
|
66
|
+
9. 制定计划(可选,writing-plans)
|
|
67
|
+
↓
|
|
68
|
+
10. 开始开发(可选,test-driven-development)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 2. 小型功能迭代
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
1. 需求补全(可选,requirement-completion-officer)
|
|
77
|
+
↓
|
|
78
|
+
2. 制定计划(可选,writing-plans)
|
|
79
|
+
↓
|
|
80
|
+
3. sdd-add快速处理
|
|
81
|
+
↓
|
|
82
|
+
4. 如果涉及UI/复杂逻辑,补充调用 ui-sdd/sdd-code
|
|
83
|
+
↓
|
|
84
|
+
5. verification-before-completion验证
|
|
85
|
+
↓
|
|
86
|
+
6. quality-gate质量检查
|
|
87
|
+
↓
|
|
88
|
+
7. finishing-a-development-branch完成分支(可选)
|
|
89
|
+
↓
|
|
90
|
+
8. 简单发布
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 3. Bug处理
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
1. systematic-debugging调试
|
|
99
|
+
↓
|
|
100
|
+
2. sdd-add修复
|
|
101
|
+
↓
|
|
102
|
+
3. verification-before-completion验证
|
|
103
|
+
↓
|
|
104
|
+
4. quality-gate质量检查
|
|
105
|
+
↓
|
|
106
|
+
5. claudeception经验沉淀
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 4. 代码发布
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
1. verification-before-completion验证
|
|
115
|
+
↓
|
|
116
|
+
2. quality-gate质量检查
|
|
117
|
+
↓
|
|
118
|
+
3. finishing-a-development-branch完成分支(可选)
|
|
119
|
+
↓
|
|
120
|
+
4. sdd-deploy部署设计(可选)
|
|
121
|
+
↓
|
|
122
|
+
5. release-flow发布管理
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## ✅ 开始流程
|
|
128
|
+
|
|
129
|
+
### 第一步:询问用户选择
|
|
130
|
+
|
|
131
|
+
首先询问用户:
|
|
132
|
+
```
|
|
133
|
+
综合开发流程已启动!
|
|
134
|
+
请选择您要使用的流程:
|
|
135
|
+
1. 从零开始新项目
|
|
136
|
+
2. 小型功能迭代
|
|
137
|
+
3. Bug处理
|
|
138
|
+
4. 代码发布
|
|
139
|
+
|
|
140
|
+
请输入选项编号(1-4):
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 第二步:按选择的流程执行
|
|
144
|
+
|
|
145
|
+
根据用户选择,执行对应的流程步骤。
|
|
146
|
+
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: using-superpowers
|
|
3
|
+
description: 当开始任何对话时使用 - 建立如何查找和使用技能的方法,要求在包括澄清问题在内的任何响应之前调用Skill工具
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<SUBAGENT-STOP>
|
|
7
|
+
如果您被派作为子代理执行特定任务,请跳过此技能。
|
|
8
|
+
</SUBAGENT-STOP>
|
|
9
|
+
|
|
10
|
+
<EXTREMELY-IMPORTANT>
|
|
11
|
+
如果您认为技能可能适用于您正在做的事情的可能性甚至为1%,您绝对必须调用该技能。
|
|
12
|
+
|
|
13
|
+
如果技能适用于您的任务,您没有选择。您必须使用它。
|
|
14
|
+
|
|
15
|
+
这是不可协商的。这不是可选的。您不能通过理性思考来逃避这一点。
|
|
16
|
+
</EXTREMELY-IMPORTANT>
|
|
17
|
+
|
|
18
|
+
## 指令优先级
|
|
19
|
+
|
|
20
|
+
Superpowers技能会覆盖默认的系统提示行为,但**用户指令始终优先**:
|
|
21
|
+
|
|
22
|
+
1. **用户的明确指令**(CLAUDE.md、GEMINI.md、AGENTS.md、直接请求)— 最高优先级
|
|
23
|
+
2. **Superpowers技能** — 在冲突时覆盖默认系统行为
|
|
24
|
+
3. **默认系统提示** — 最低优先级
|
|
25
|
+
|
|
26
|
+
如果CLAUDE.md、GEMINI.md或AGENTS.md说"不要使用TDD",而技能说"始终使用TDD",请遵循用户的指令。用户是控制者。
|
|
27
|
+
|
|
28
|
+
## 如何访问技能
|
|
29
|
+
|
|
30
|
+
**在Claude Code中:** 使用`Skill`工具。当您调用技能时,其内容会加载并呈现给您——直接遵循它。永远不要在技能文件上使用Read工具。
|
|
31
|
+
|
|
32
|
+
**在Gemini CLI中:** 技能通过`activate_skill`工具激活。Gemini在会话开始时加载技能元数据,并根据需要激活完整内容。
|
|
33
|
+
|
|
34
|
+
**在其他环境中:** 查看您平台的文档,了解如何加载技能。
|
|
35
|
+
|
|
36
|
+
## 平台适应
|
|
37
|
+
|
|
38
|
+
技能使用Claude Code工具名称。非CC平台:请参阅`references/codex-tools.md`(Codex)了解工具等效项。Gemini CLI用户通过GEMINI.md自动加载工具映射。
|
|
39
|
+
|
|
40
|
+
# 使用技能
|
|
41
|
+
|
|
42
|
+
## 规则
|
|
43
|
+
|
|
44
|
+
**在任何响应或操作之前调用相关或请求的技能。** 即使技能可能适用的可能性为1%,也意味着您应该调用技能进行检查。如果调用的技能结果证明不适合该情况,您不需要使用它。
|
|
45
|
+
|
|
46
|
+
```dot
|
|
47
|
+
digraph skill_flow {
|
|
48
|
+
"收到用户消息" [shape=doublecircle];
|
|
49
|
+
"即将进入计划模式?" [shape=doublecircle];
|
|
50
|
+
"已经进行头脑风暴?" [shape=diamond];
|
|
51
|
+
"调用头脑风暴技能" [shape=box];
|
|
52
|
+
"可能适用任何技能?" [shape=diamond];
|
|
53
|
+
"调用Skill工具" [shape=box];
|
|
54
|
+
"宣布:'使用[技能]进行[目的]'" [shape=box];
|
|
55
|
+
"有清单?" [shape=diamond];
|
|
56
|
+
"为每个项目创建TodoWrite待办事项" [shape=box];
|
|
57
|
+
"严格遵循技能" [shape=box];
|
|
58
|
+
"响应(包括澄清)" [shape=doublecircle];
|
|
59
|
+
|
|
60
|
+
"即将进入计划模式?" -> "已经进行头脑风暴?";
|
|
61
|
+
"已经进行头脑风暴?" -> "调用头脑风暴技能" [label="否"];
|
|
62
|
+
"已经进行头脑风暴?" -> "可能适用任何技能?" [label="是"];
|
|
63
|
+
"调用头脑风暴技能" -> "可能适用任何技能?";
|
|
64
|
+
|
|
65
|
+
"收到用户消息" -> "可能适用任何技能?";
|
|
66
|
+
"可能适用任何技能?" -> "调用Skill工具" [label="是,即使1%"];
|
|
67
|
+
"可能适用任何技能?" -> "响应(包括澄清)" [label="绝对不"];
|
|
68
|
+
"调用Skill工具" -> "宣布:'使用[技能]进行[目的]'";
|
|
69
|
+
"宣布:'使用[技能]进行[目的]'" -> "有清单?";
|
|
70
|
+
"有清单?" -> "为每个项目创建TodoWrite待办事项" [label="是"];
|
|
71
|
+
"有清单?" -> "严格遵循技能" [label="否"];
|
|
72
|
+
"为每个项目创建TodoWrite待办事项" -> "严格遵循技能";
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 红旗
|
|
77
|
+
|
|
78
|
+
这些想法意味着停止——您在合理化:
|
|
79
|
+
|
|
80
|
+
| 想法 | 现实 |
|
|
81
|
+
|------|------|
|
|
82
|
+
| "这只是一个简单的问题" | 问题是任务。检查技能。 |
|
|
83
|
+
| "我需要先了解更多上下文" | 技能检查在澄清问题之前进行。 |
|
|
84
|
+
| "让我先探索代码库" | 技能告诉您如何探索。先检查。 |
|
|
85
|
+
| "我可以快速检查git/文件" | 文件缺乏对话上下文。检查技能。 |
|
|
86
|
+
| "让我先收集信息" | 技能告诉您如何收集信息。 |
|
|
87
|
+
| "这不需要正式技能" | 如果技能存在,使用它。 |
|
|
88
|
+
| "我记得这个技能" | 技能会演变。阅读当前版本。 |
|
|
89
|
+
| "这不算任务" | 行动=任务。检查技能。 |
|
|
90
|
+
| "技能过度了" | 简单的事情会变得复杂。使用它。 |
|
|
91
|
+
| "我先做这件事" | 在做任何事情之前检查。 |
|
|
92
|
+
| "这感觉很有成效" | 无纪律的行动浪费时间。技能可以防止这种情况。 |
|
|
93
|
+
| "我知道那是什么意思" | 知道概念≠使用技能。调用它。 |
|
|
94
|
+
|
|
95
|
+
## 技能优先级
|
|
96
|
+
|
|
97
|
+
当多个技能可能适用时,使用此顺序:
|
|
98
|
+
|
|
99
|
+
1. **首先是流程技能**(头脑风暴、调试)- 这些决定如何处理任务
|
|
100
|
+
2. **其次是实现技能**(前端设计、mcp-builder)- 这些指导执行
|
|
101
|
+
|
|
102
|
+
"让我们构建X" → 先头脑风暴,然后是实现技能。
|
|
103
|
+
"修复这个错误" → 先调试,然后是领域特定技能。
|
|
104
|
+
|
|
105
|
+
## 技能类型
|
|
106
|
+
|
|
107
|
+
**严格**(TDD、调试):严格遵循。不要放弃纪律。
|
|
108
|
+
|
|
109
|
+
**灵活**(模式):根据上下文调整原则。
|
|
110
|
+
|
|
111
|
+
技能本身会告诉您是哪一种。
|
|
112
|
+
|
|
113
|
+
## 用户指令
|
|
114
|
+
|
|
115
|
+
指令说明做什么,而不是怎么做。"添加X"或"修复Y"并不意味着跳过工作流程。
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-before-completion
|
|
3
|
+
description: 在声称工作完成、修复或通过之前使用,在提交或创建 PR 之前 - 需要运行验证命令并在做出任何成功声明之前确认输出;始终证据先于断言
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 完成前验证
|
|
7
|
+
|
|
8
|
+
## 概述
|
|
9
|
+
|
|
10
|
+
在没有验证的情况下声称工作完成是不诚实,不是效率。
|
|
11
|
+
|
|
12
|
+
**核心原则:** 始终证据先于声明。
|
|
13
|
+
|
|
14
|
+
**违反此规则的字面意思就是违反此规则的精神。**
|
|
15
|
+
|
|
16
|
+
## 铁律
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
没有新鲜的验证证据,就没有完成声明
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
如果你没有在这条消息中运行验证命令,你不能声称它通过。
|
|
23
|
+
|
|
24
|
+
## 门控函数
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
在声称任何状态或表达满意之前:
|
|
28
|
+
|
|
29
|
+
1. 识别:什么命令证明这个声明?
|
|
30
|
+
2. 运行:执行完整命令(新鲜,完整)
|
|
31
|
+
3. 阅读:完整输出,检查退出代码,计数失败
|
|
32
|
+
4. 验证:输出是否确认声明?
|
|
33
|
+
- 如果否:用证据说明实际状态
|
|
34
|
+
- 如果是:用证据说明声明
|
|
35
|
+
5. 只有这样:做出声明
|
|
36
|
+
|
|
37
|
+
跳过任何步骤 = 说谎,不是验证
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 常见失败
|
|
41
|
+
|
|
42
|
+
| 声明 | 需要 | 不足够 |
|
|
43
|
+
|------|------|--------|
|
|
44
|
+
| 测试通过 | 测试命令输出:0 失败 | 之前的运行,"应该通过" |
|
|
45
|
+
| 代码检查干净 | 代码检查输出:0 错误 | 部分检查,推断 |
|
|
46
|
+
| 构建成功 | 构建命令:退出 0 | 代码检查通过,日志看起来不错 |
|
|
47
|
+
| 错误已修复 | 测试原始症状:通过 | 代码已更改,假设已修复 |
|
|
48
|
+
| 回归测试有效 | 红-绿循环已验证 | 测试通过一次 |
|
|
49
|
+
| 代理完成 | VCS diff 显示更改 | 代理报告"成功" |
|
|
50
|
+
| 满足要求 | 逐行检查清单 | 测试通过 |
|
|
51
|
+
|
|
52
|
+
## 红旗 - 停止
|
|
53
|
+
|
|
54
|
+
- 使用"应该"、"可能"、"似乎"
|
|
55
|
+
- 在验证前表达满意("太好了!"、"完美!"、"完成!"等)
|
|
56
|
+
- 在没有验证的情况下即将提交/推送/PR
|
|
57
|
+
- 信任代理成功报告
|
|
58
|
+
- 依赖部分验证
|
|
59
|
+
- 想"就这一次"
|
|
60
|
+
- 疲倦并希望工作结束
|
|
61
|
+
- **任何暗示成功但未运行验证的措辞**
|
|
62
|
+
|
|
63
|
+
## 防止合理化
|
|
64
|
+
|
|
65
|
+
| 借口 | 现实 |
|
|
66
|
+
|------|------|
|
|
67
|
+
| "现在应该工作" | 运行验证 |
|
|
68
|
+
| "我有信心" | 信心 ≠ 证据 |
|
|
69
|
+
| "就这一次" | 无例外 |
|
|
70
|
+
| "代码检查通过" | 代码检查 ≠ 编译器 |
|
|
71
|
+
| "代理说成功" | 独立验证 |
|
|
72
|
+
| "我累了" | 疲惫 ≠ 借口 |
|
|
73
|
+
| "部分检查足够" | 部分证明不了什么 |
|
|
74
|
+
| "不同的词,所以规则不适用" | 精神胜于字面 |
|
|
75
|
+
|
|
76
|
+
## 关键模式
|
|
77
|
+
|
|
78
|
+
**测试:**
|
|
79
|
+
```
|
|
80
|
+
✅ [运行测试命令] [见:34/34 通过] "所有测试通过"
|
|
81
|
+
❌ "现在应该通过" / "看起来正确"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**回归测试(TDD 红-绿):**
|
|
85
|
+
```
|
|
86
|
+
✅ 编写 → 运行(通过)→ 恢复修复 → 运行(必须失败)→ 恢复 → 运行(通过)
|
|
87
|
+
❌ "我已经编写了回归测试"(没有红-绿验证)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**构建:**
|
|
91
|
+
```
|
|
92
|
+
✅ [运行构建] [见:退出 0] "构建通过"
|
|
93
|
+
❌ "代码检查通过"(代码检查不检查编译)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**要求:**
|
|
97
|
+
```
|
|
98
|
+
✅ 重新阅读计划 → 创建检查清单 → 验证每个 → 报告差距或完成
|
|
99
|
+
❌ "测试通过,阶段完成"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**代理委托:**
|
|
103
|
+
```
|
|
104
|
+
✅ 代理报告成功 → 检查 VCS diff → 验证更改 → 报告实际状态
|
|
105
|
+
❌ 信任代理报告
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## 为什么这很重要
|
|
109
|
+
|
|
110
|
+
来自 24 个失败记忆:
|
|
111
|
+
- 你的人类伙伴说"我不相信你" - 信任破裂
|
|
112
|
+
- 未定义函数被发布 - 会崩溃
|
|
113
|
+
- 缺少要求被发布 - 功能不完整
|
|
114
|
+
- 时间浪费在错误的完成上 → 重定向 → 返工
|
|
115
|
+
- 违反:"诚实是核心价值观。如果你撒谎,你将被替换。"
|
|
116
|
+
|
|
117
|
+
## 何时应用
|
|
118
|
+
|
|
119
|
+
**始终在之前:**
|
|
120
|
+
- 任何成功/完成声明的变体
|
|
121
|
+
- 任何满意的表达
|
|
122
|
+
- 任何关于工作状态的积极陈述
|
|
123
|
+
- 提交、PR 创建、任务完成
|
|
124
|
+
- 移动到下一个任务
|
|
125
|
+
- 委托给代理
|
|
126
|
+
|
|
127
|
+
**规则适用于:**
|
|
128
|
+
- 确切短语
|
|
129
|
+
- 释义和同义词
|
|
130
|
+
- 成功的暗示
|
|
131
|
+
- 任何暗示完成/正确性的沟通
|
|
132
|
+
|
|
133
|
+
## 底线
|
|
134
|
+
|
|
135
|
+
**验证没有捷径。**
|
|
136
|
+
|
|
137
|
+
运行命令。阅读输出。然后声明结果。
|
|
138
|
+
|
|
139
|
+
这是不可协商的。
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: writing-plans
|
|
3
|
+
description: 当你有规范或多步骤任务的需求时,在接触代码前使用
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 编写计划
|
|
7
|
+
|
|
8
|
+
## 概述
|
|
9
|
+
|
|
10
|
+
编写全面的实现计划,假设工程师对我们的代码库没有任何上下文,并且品味可疑。记录他们需要知道的一切:每个任务需要修改哪些文件、代码、测试、他们可能需要检查的文档、如何测试。将整个计划分解为 bite-sized 任务。DRY(不要重复自己)、YAGNI(你不会需要它)、TDD(测试驱动开发)、频繁提交。
|
|
11
|
+
|
|
12
|
+
假设他们是熟练的开发人员,但对我们的工具集或问题域几乎一无所知。假设他们不太了解良好的测试设计。
|
|
13
|
+
|
|
14
|
+
**开始时宣布:** "我正在使用 writing-plans 技能创建实现计划。"
|
|
15
|
+
|
|
16
|
+
**上下文:** 这应该在专用的工作树中运行(由 brainstorming 技能创建)。
|
|
17
|
+
|
|
18
|
+
**保存计划到:** `docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md`
|
|
19
|
+
- (用户对计划位置的偏好覆盖此默认值)
|
|
20
|
+
|
|
21
|
+
## 范围检查
|
|
22
|
+
|
|
23
|
+
如果规范涵盖多个独立子系统,在头脑风暴期间应该已经分解为子项目规范。如果没有,建议将其分解为单独的计划 - 每个子系统一个。每个计划都应该独立产生可工作、可测试的软件。
|
|
24
|
+
|
|
25
|
+
## 文件结构
|
|
26
|
+
|
|
27
|
+
在定义任务之前,映射出将创建或修改哪些文件以及每个文件的职责。这是分解决策被锁定的地方。
|
|
28
|
+
|
|
29
|
+
- 设计具有明确边界和定义良好接口的单元。每个文件应该有一个明确的职责。
|
|
30
|
+
- 你对能一次保持在上下文中的代码推理得最好,当文件集中时,你的编辑更可靠。优先选择较小、集中的文件,而不是做太多事情的大文件。
|
|
31
|
+
- 一起更改的文件应该放在一起。按职责划分,而不是按技术层划分。
|
|
32
|
+
- 在现有代码库中,遵循已建立的模式。如果代码库使用大文件,不要单方面重构 - 但如果你正在修改的文件变得难以管理,在计划中包含拆分是合理的。
|
|
33
|
+
|
|
34
|
+
这种结构为任务分解提供信息。每个任务应该产生独立有意义的自包含更改。
|
|
35
|
+
|
|
36
|
+
## Bite-Sized 任务粒度
|
|
37
|
+
|
|
38
|
+
**每个步骤是一个动作(2-5分钟):**
|
|
39
|
+
- "编写失败的测试" - 步骤
|
|
40
|
+
- "运行它以确保它失败" - 步骤
|
|
41
|
+
- "实现最小代码以使测试通过" - 步骤
|
|
42
|
+
- "运行测试并确保它们通过" - 步骤
|
|
43
|
+
- "提交" - 步骤
|
|
44
|
+
|
|
45
|
+
## 计划文档标题
|
|
46
|
+
|
|
47
|
+
**每个计划必须以以下标题开始:**
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# [功能名称] 实现计划
|
|
51
|
+
|
|
52
|
+
> **对于代理工作者:** 必需:使用 superpowers:subagent-driven-development(如果子代理可用)或 superpowers:executing-plans 来实现此计划。步骤使用复选框(`- [ ]`)语法进行跟踪。
|
|
53
|
+
|
|
54
|
+
**目标:** [一句话描述此构建内容]
|
|
55
|
+
|
|
56
|
+
**架构:** [关于方法的2-3句话]
|
|
57
|
+
|
|
58
|
+
**技术栈:** [关键技术/库]
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 任务结构
|
|
64
|
+
|
|
65
|
+
````markdown
|
|
66
|
+
### 任务 N:[组件名称]
|
|
67
|
+
|
|
68
|
+
**文件:**
|
|
69
|
+
- 创建:`exact/path/to/file.py`
|
|
70
|
+
- 修改:`exact/path/to/existing.py:123-145`
|
|
71
|
+
- 测试:`tests/exact/path/to/test.py`
|
|
72
|
+
|
|
73
|
+
- [ ] **步骤 1:编写失败的测试**
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
def test_specific_behavior():
|
|
77
|
+
result = function(input)
|
|
78
|
+
assert result == expected
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- [ ] **步骤 2:运行测试以验证它失败**
|
|
82
|
+
|
|
83
|
+
运行:`pytest tests/path/test.py::test_name -v`
|
|
84
|
+
预期:失败,提示 "function not defined"
|
|
85
|
+
|
|
86
|
+
- [ ] **步骤 3:编写最小实现**
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
def function(input):
|
|
90
|
+
return expected
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
- [ ] **步骤 4:运行测试以验证它通过**
|
|
94
|
+
|
|
95
|
+
运行:`pytest tests/path/test.py::test_name -v`
|
|
96
|
+
预期:通过
|
|
97
|
+
|
|
98
|
+
- [ ] **步骤 5:提交**
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
git add tests/path/test.py src/path/file.py
|
|
102
|
+
git commit -m "feat: add specific feature"
|
|
103
|
+
```
|
|
104
|
+
````
|
|
105
|
+
|
|
106
|
+
## 记住
|
|
107
|
+
- 始终使用精确的文件路径
|
|
108
|
+
- 计划中包含完整的代码(不是 "添加验证")
|
|
109
|
+
- 带有预期输出的精确命令
|
|
110
|
+
- 使用 @ 语法引用相关技能
|
|
111
|
+
- DRY、YAGNI、TDD、频繁提交
|
|
112
|
+
|
|
113
|
+
## 计划审查循环
|
|
114
|
+
|
|
115
|
+
编写完整计划后:
|
|
116
|
+
|
|
117
|
+
1. 调度单个 plan-document-reviewer 子代理(参见 plan-document-reviewer-prompt.md),使用精心设计的审查上下文 - 绝不是你的会话历史。这使审查者专注于计划,而不是你的思考过程。
|
|
118
|
+
- 提供:计划文档路径,规范文档路径
|
|
119
|
+
2. 如果 ❌ 发现问题:修复问题,重新调度审查者审查整个计划
|
|
120
|
+
3. 如果 ✅ 批准:继续执行交接
|
|
121
|
+
|
|
122
|
+
**审查循环指导:**
|
|
123
|
+
- 编写计划的同一代理修复它(保留上下文)
|
|
124
|
+
- 如果循环超过3次迭代,提交给人类指导
|
|
125
|
+
- 审查者是顾问 - 如果你认为反馈不正确,解释分歧
|
|
126
|
+
|
|
127
|
+
## 执行交接
|
|
128
|
+
|
|
129
|
+
保存计划后:
|
|
130
|
+
|
|
131
|
+
**"计划完成并保存到 `docs/superpowers/plans/<filename>.md`。准备执行?"**
|
|
132
|
+
|
|
133
|
+
**执行路径取决于 harness 能力:**
|
|
134
|
+
|
|
135
|
+
**如果 harness 有子代理(Claude Code 等):**
|
|
136
|
+
- **必需:** 使用 superpowers:subagent-driven-development
|
|
137
|
+
- 不要提供选择 - 子代理驱动是标准方法
|
|
138
|
+
- 每个任务使用新的子代理 + 两阶段审查
|
|
139
|
+
|
|
140
|
+
**如果 harness 没有子代理:**
|
|
141
|
+
- 在当前会话中使用 superpowers:executing-plans 执行计划
|
|
142
|
+
- 批处理执行,带有审查检查点
|