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
package/README.md
CHANGED
|
@@ -1,49 +1,94 @@
|
|
|
1
1
|
# sdd-full
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
完整的软件设计开发技能包
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 概述
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
`sdd-full` 是一个全面的软件开发技能包,包含了从需求分析到发布上线的完整开发流程技能。
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
8
10
|
|
|
9
11
|
```bash
|
|
10
|
-
|
|
12
|
+
npm install sdd-full
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 使用
|
|
16
|
+
|
|
17
|
+
### JavaScript API 使用
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
const sdd = require('sdd-full');
|
|
21
|
+
|
|
22
|
+
// 获取所有技能列表
|
|
23
|
+
console.log(sdd.getSkills());
|
|
24
|
+
|
|
25
|
+
// 获取特定技能的内容
|
|
26
|
+
console.log(sdd.getSkill('sdd-full'));
|
|
27
|
+
|
|
28
|
+
// 获取技能决策树文档
|
|
29
|
+
console.log(sdd.getDecisionTree());
|
|
30
|
+
|
|
31
|
+
// 获取完整开发流程手册
|
|
32
|
+
console.log(sdd.getDevGuide());
|
|
11
33
|
```
|
|
12
34
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
- sdd-
|
|
29
|
-
- sdd-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- sdd-
|
|
33
|
-
- sdd-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
35
|
+
### 命令行使用
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 直接运行查看技能包
|
|
39
|
+
node node_modules/sdd-full/index.js
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 包含的技能
|
|
43
|
+
|
|
44
|
+
### 需求分析类
|
|
45
|
+
- brainstorming - 创意头脑风暴
|
|
46
|
+
- market-research - 市场调研
|
|
47
|
+
- competitive-brief - 竞品简报
|
|
48
|
+
- prd-write - PRD 文档编写
|
|
49
|
+
- requirement-completion-officer - 需求补全
|
|
50
|
+
- sdd - 基础 SDD 拆分
|
|
51
|
+
- sdd-full - 完整 SDD 流程
|
|
52
|
+
|
|
53
|
+
### 设计规划类
|
|
54
|
+
- ui-sdd - UI 交互 SDD
|
|
55
|
+
- sdd-code - 功能实现 SDD
|
|
56
|
+
- sdd-test - 测试 SDD
|
|
57
|
+
- sdd-deploy - 部署 SDD
|
|
58
|
+
- sdd-ops - 运维 SDD
|
|
59
|
+
- writing-plans - 编写计划
|
|
60
|
+
|
|
61
|
+
### 开发执行类
|
|
62
|
+
- sdd-add - 快速迭代
|
|
63
|
+
- test-driven-development - TDD 开发
|
|
64
|
+
- systematic-debugging - 系统化调试
|
|
65
|
+
- verification-before-completion - 完成前验证
|
|
66
|
+
|
|
67
|
+
### 质量保障类
|
|
68
|
+
- quality-gate - 质量门禁
|
|
69
|
+
- security-audit - 安全审计
|
|
70
|
+
|
|
71
|
+
### 发布运维类
|
|
72
|
+
- finishing-a-development-branch - 完成开发分支
|
|
73
|
+
- release-flow - 发布流程管理
|
|
74
|
+
|
|
75
|
+
### 知识沉淀类
|
|
76
|
+
- claudeception - 持续学习
|
|
77
|
+
- mempalace-auto-saver - 记忆宫殿自动保存
|
|
78
|
+
|
|
79
|
+
### 专项工具类
|
|
80
|
+
- using-superpowers - Superpowers 全流程
|
|
81
|
+
- requesting-code-review - 请求代码审查
|
|
82
|
+
- receiving-code-review - 接收代码审查
|
|
83
|
+
|
|
84
|
+
## 版本历史
|
|
85
|
+
|
|
86
|
+
### v1.0.0 (2026-05-04)
|
|
87
|
+
- 初始版本发布
|
|
88
|
+
- 包含完整的技能体系
|
|
89
|
+
- 包含技能决策树
|
|
90
|
+
- 包含完整开发流程手册
|
|
91
|
+
|
|
92
|
+
## 许可证
|
|
48
93
|
|
|
49
94
|
MIT
|
package/index.js
CHANGED
|
@@ -1,38 +1,172 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const skillsData = require('./skills-data.js');
|
|
5
|
-
|
|
6
|
-
const cwd = process.cwd();
|
|
7
2
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
{ name: 'Claude-Code', base: '.claude/skills' }
|
|
11
|
-
];
|
|
3
|
+
// sdd-full npm 包
|
|
4
|
+
// 完整的软件设计开发技能包
|
|
12
5
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
targets.forEach(({ name, base }) => {
|
|
16
|
-
const root = path.join(cwd, base);
|
|
17
|
-
console.log(`\n📂 Generating ${name} skills: ${base}`);
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
const path = require('path');
|
|
18
8
|
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
// 技能包的主入口
|
|
10
|
+
const SDD = {
|
|
11
|
+
version: '1.2.0',
|
|
12
|
+
name: 'sdd-full',
|
|
13
|
+
description: '完整的软件设计开发技能包',
|
|
14
|
+
|
|
15
|
+
// 获取所有技能列表
|
|
16
|
+
getSkills: function() {
|
|
17
|
+
const skillsDir = path.join(__dirname, 'skills');
|
|
18
|
+
const skills = [];
|
|
19
|
+
|
|
20
|
+
// 检查目录是否存在
|
|
21
|
+
if (fs.existsSync(skillsDir)) {
|
|
22
|
+
const items = fs.readdirSync(skillsDir);
|
|
23
|
+
|
|
24
|
+
items.forEach(item => {
|
|
25
|
+
const itemPath = path.join(skillsDir, item);
|
|
26
|
+
const stat = fs.statSync(itemPath);
|
|
27
|
+
|
|
28
|
+
// 只处理目录(技能),排除 .md 文件
|
|
29
|
+
if (stat.isDirectory() && !item.endsWith('.md')) {
|
|
30
|
+
const skillPath = path.join(itemPath, 'SKILL.md');
|
|
31
|
+
if (fs.existsSync(skillPath)) {
|
|
32
|
+
skills.push(item);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return skills;
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
// 获取特定技能的内容
|
|
42
|
+
getSkill: function(skillName) {
|
|
43
|
+
const skillPath = path.join(__dirname, 'skills', skillName, 'SKILL.md');
|
|
44
|
+
|
|
45
|
+
if (fs.existsSync(skillPath)) {
|
|
46
|
+
return fs.readFileSync(skillPath, 'utf-8');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return null;
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
// 获取技能决策树文档
|
|
53
|
+
getDecisionTree: function() {
|
|
54
|
+
const docPath = path.join(__dirname, 'skills', '技能决策树.md');
|
|
55
|
+
|
|
56
|
+
if (fs.existsSync(docPath)) {
|
|
57
|
+
return fs.readFileSync(docPath, 'utf-8');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return null;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
// 获取完整开发流程手册
|
|
64
|
+
getDevGuide: function() {
|
|
65
|
+
const docPath = path.join(__dirname, 'skills', '完整开发流程手册.md');
|
|
66
|
+
|
|
67
|
+
if (fs.existsSync(docPath)) {
|
|
68
|
+
return fs.readFileSync(docPath, 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return null;
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
// 安装技能到当前目录
|
|
75
|
+
install: function(targetDir) {
|
|
76
|
+
const destDir = path.join(targetDir || process.cwd(), '.sdd-full', 'skills');
|
|
77
|
+
const sourceDir = path.join(__dirname, 'skills');
|
|
78
|
+
|
|
79
|
+
console.log('========================================');
|
|
80
|
+
console.log(` ${SDD.name} - ${SDD.description}`);
|
|
81
|
+
console.log(` 版本: ${SDD.version}`);
|
|
82
|
+
console.log('========================================');
|
|
83
|
+
console.log(`\n正在安装技能到: ${destDir}`);
|
|
84
|
+
|
|
85
|
+
// 确保目标目录存在
|
|
86
|
+
if (!fs.existsSync(destDir)) {
|
|
87
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// 复制所有技能文件
|
|
91
|
+
let count = 0;
|
|
92
|
+
if (fs.existsSync(sourceDir)) {
|
|
93
|
+
const items = fs.readdirSync(sourceDir);
|
|
94
|
+
|
|
95
|
+
items.forEach(item => {
|
|
96
|
+
const srcItem = path.join(sourceDir, item);
|
|
97
|
+
const destItem = path.join(destDir, item);
|
|
98
|
+
const stat = fs.statSync(srcItem);
|
|
99
|
+
|
|
100
|
+
if (stat.isDirectory()) {
|
|
101
|
+
// 复制目录(技能)
|
|
102
|
+
copyDirectory(srcItem, destItem);
|
|
103
|
+
count++;
|
|
104
|
+
} else if (stat.isFile() && item.endsWith('.md')) {
|
|
105
|
+
// 复制文档文件
|
|
106
|
+
fs.copyFileSync(srcItem, destItem);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
console.log(`\n✅ 成功安装 ${count} 个技能!`);
|
|
112
|
+
console.log(`\n技能目录: ${destDir}`);
|
|
113
|
+
console.log('\n您现在可以在支持技能的环境中使用这些技能了!\n');
|
|
21
114
|
}
|
|
115
|
+
};
|
|
22
116
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
117
|
+
// 复制目录的辅助函数
|
|
118
|
+
function copyDirectory(src, dest) {
|
|
119
|
+
if (!fs.existsSync(dest)) {
|
|
120
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const items = fs.readdirSync(src);
|
|
124
|
+
items.forEach(item => {
|
|
125
|
+
const srcPath = path.join(src, item);
|
|
126
|
+
const destPath = path.join(dest, item);
|
|
127
|
+
const stat = fs.statSync(srcPath);
|
|
128
|
+
|
|
129
|
+
if (stat.isDirectory()) {
|
|
130
|
+
copyDirectory(srcPath, destPath);
|
|
131
|
+
} else {
|
|
132
|
+
fs.copyFileSync(srcPath, destPath);
|
|
29
133
|
}
|
|
30
|
-
|
|
31
|
-
fs.writeFileSync(mdPath, skill.content, 'utf8');
|
|
32
|
-
console.log(`✅ ${base}/${skill.name}/SKILL.md`);
|
|
33
134
|
});
|
|
34
|
-
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// 导出模块
|
|
138
|
+
module.exports = SDD;
|
|
35
139
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
140
|
+
// 如果直接运行,显示版本和技能列表或安装
|
|
141
|
+
if (require.main === module) {
|
|
142
|
+
const args = process.argv.slice(2);
|
|
143
|
+
|
|
144
|
+
if (args.includes('install') || args.includes('i')) {
|
|
145
|
+
// 安装模式
|
|
146
|
+
const targetIndex = args.indexOf('--dir') || args.indexOf('-d');
|
|
147
|
+
let targetDir;
|
|
148
|
+
if (targetIndex !== -1 && args[targetIndex + 1]) {
|
|
149
|
+
targetDir = args[targetIndex + 1];
|
|
150
|
+
}
|
|
151
|
+
SDD.install(targetDir);
|
|
152
|
+
} else {
|
|
153
|
+
// 默认显示模式
|
|
154
|
+
console.log('========================================');
|
|
155
|
+
console.log(` ${SDD.name} - ${SDD.description}`);
|
|
156
|
+
console.log(` 版本: ${SDD.version}`);
|
|
157
|
+
console.log('========================================');
|
|
158
|
+
console.log('\n用法:');
|
|
159
|
+
console.log(' npx sdd-full - 显示帮助和技能列表');
|
|
160
|
+
console.log(' npx sdd-full install - 安装技能到当前目录');
|
|
161
|
+
console.log(' npx sdd-full i - 安装技能(简写)');
|
|
162
|
+
console.log(' npx sdd-full install --dir ./my-project - 安装到指定目录');
|
|
163
|
+
|
|
164
|
+
const skills = SDD.getSkills();
|
|
165
|
+
console.log('\n可用技能:');
|
|
166
|
+
skills.forEach(skill => {
|
|
167
|
+
console.log(` - ${skill}`);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
console.log(`\n总计 ${skills.length} 个技能\n`);
|
|
171
|
+
}
|
|
172
|
+
}
|
package/package.json
CHANGED
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sdd-full",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "SDD Full - 完整的软件设计开发技能包",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"sdd-full": "./index.js"
|
|
8
8
|
},
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
9
|
+
"keywords": [
|
|
10
|
+
"sdd",
|
|
11
|
+
"software design",
|
|
12
|
+
"development",
|
|
13
|
+
"skills",
|
|
14
|
+
"ai"
|
|
12
15
|
],
|
|
13
16
|
"author": "",
|
|
14
17
|
"license": "MIT",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
"scripts": {
|
|
19
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
20
|
+
"start": "node index.js"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"index.js",
|
|
24
|
+
"package.json",
|
|
25
|
+
"README.md",
|
|
26
|
+
"skills/"
|
|
27
|
+
],
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": ""
|
|
31
|
+
},
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": ""
|
|
34
|
+
},
|
|
35
|
+
"homepage": ""
|
|
36
|
+
}
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 技能文档目录索引
|
|
2
|
+
|
|
3
|
+
## 概述
|
|
4
|
+
|
|
5
|
+
本目录包含所有技能体系相关的文档,帮助你快速了解和使用整个技能体系。
|
|
6
|
+
|
|
7
|
+
## 文档列表
|
|
8
|
+
|
|
9
|
+
### 核心文档
|
|
10
|
+
|
|
11
|
+
| 文档名称 | 路径 | 说明 |
|
|
12
|
+
|---------|------|------|
|
|
13
|
+
| **技能使用指南.md** | `技能使用指南.md` | 所有技能的使用场景、功能特点、与其他技能的关系,快速选择和使用合适的技能 |
|
|
14
|
+
| **完整开发流程手册.md** | `完整开发流程手册.md` | 从需求想法到上线发布的完整端到端开发流程,包含每个阶段的目标、使用技能、产出物、检查清单 |
|
|
15
|
+
| **技能决策树.md** | `技能决策树.md` | 什么场景用什么技能,快速决策选择 |
|
|
16
|
+
| **技能体系完善建议.md** | `技能体系完善建议.md` | 技能体系的现状分析、完整技能列表、最佳实践 |
|
|
17
|
+
|
|
18
|
+
## 快速开始
|
|
19
|
+
|
|
20
|
+
### 新手入门
|
|
21
|
+
1. 先看 **技能决策树.md** - 了解什么场景用什么技能
|
|
22
|
+
2. 再看 **技能使用指南.md** - 了解所有技能的功能
|
|
23
|
+
3. 最后看 **完整开发流程手册.md** - 了解端到端流程
|
|
24
|
+
|
|
25
|
+
### 新项目
|
|
26
|
+
1. 查看 **完整开发流程手册.md** - 了解完整流程
|
|
27
|
+
2. 根据场景使用 **技能决策树.md** - 选择合适的技能
|
|
28
|
+
3. 需要时参考 **技能使用指南.md** - 了解技能详情
|
|
29
|
+
|
|
30
|
+
## 现有技能列表
|
|
31
|
+
|
|
32
|
+
### 需求分析类
|
|
33
|
+
- brainstorming - 创意头脑风暴
|
|
34
|
+
- market-research - 市场调研
|
|
35
|
+
- competitive-brief - 竞品简报
|
|
36
|
+
- prd-write - PRD文档编写
|
|
37
|
+
- requirement-completion-officer - 需求补全
|
|
38
|
+
- sdd - 基础SDD拆分
|
|
39
|
+
- sdd-full - 完整SDD流程
|
|
40
|
+
|
|
41
|
+
### 设计规划类
|
|
42
|
+
- ui-sdd - UI交互SDD
|
|
43
|
+
- sdd-code - 功能实现SDD
|
|
44
|
+
- sdd-test - 测试SDD
|
|
45
|
+
- sdd-deploy - 部署SDD
|
|
46
|
+
- sdd-ops - 运维SDD
|
|
47
|
+
- writing-plans - 编写计划
|
|
48
|
+
|
|
49
|
+
### 开发执行类
|
|
50
|
+
- sdd-add - 快速迭代
|
|
51
|
+
- test-driven-development - TDD开发
|
|
52
|
+
- systematic-debugging - 系统化调试
|
|
53
|
+
- verification-before-completion - 完成前验证
|
|
54
|
+
|
|
55
|
+
### 质量保障类
|
|
56
|
+
- quality-gate - 质量门禁
|
|
57
|
+
- security-audit - 安全审计
|
|
58
|
+
|
|
59
|
+
### 发布运维类
|
|
60
|
+
- finishing-a-development-branch - 完成开发分支
|
|
61
|
+
- release-flow - 发布流程
|
|
62
|
+
|
|
63
|
+
### 知识沉淀类
|
|
64
|
+
- claudeception - 持续学习
|
|
65
|
+
- mempalace-auto-saver - 自动保存记忆
|
|
66
|
+
|
|
67
|
+
### 专项工具类
|
|
68
|
+
- using-superpowers - Superpowers全流程
|
|
69
|
+
- requesting-code-review - 请求代码审查
|
|
70
|
+
- receiving-code-review - 接收代码审查
|
|
71
|
+
|
|
72
|
+
## 更新日志
|
|
73
|
+
|
|
74
|
+
- 2026-05-04: 更新技能列表,匹配当前实际存在的技能
|
|
75
|
+
- 2024-05-04: 创建目录索引,整理技能文档
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorming
|
|
3
|
+
description: "在任何创意工作之前必须使用此技能 - 创建功能、构建组件、添加功能或修改行为。在实现之前探索用户意图、需求和设计。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 头脑风暴:将想法转化为设计
|
|
7
|
+
|
|
8
|
+
通过自然的协作对话,帮助将想法转化为完整的设计和规范。
|
|
9
|
+
|
|
10
|
+
首先了解当前项目上下文,然后一次一个问题地完善想法。一旦理解了要构建的内容,就展示设计并获得用户批准。
|
|
11
|
+
|
|
12
|
+
<HARD-GATE>
|
|
13
|
+
在展示设计并获得用户批准之前,不要调用任何实现技能、编写任何代码、搭建任何项目或采取任何实现行动。这适用于所有项目,无论其看似多么简单。
|
|
14
|
+
</HARD-GATE>
|
|
15
|
+
|
|
16
|
+
## 反模式:"这太简单了,不需要设计"
|
|
17
|
+
|
|
18
|
+
每个项目都需要经过这个过程。待办事项列表、单个功能实用程序、配置更改 - 所有这些都需要。"简单"项目是未经检验的假设导致最多浪费工作的地方。设计可以很短(对于真正简单的项目,几句话就够了),但你必须展示它并获得批准。
|
|
19
|
+
|
|
20
|
+
## 检查清单
|
|
21
|
+
|
|
22
|
+
你必须为以下每个项目创建任务并按顺序完成:
|
|
23
|
+
|
|
24
|
+
1. **探索项目上下文** - 检查文件、文档、最近的提交
|
|
25
|
+
2. **提供视觉 companion**(如果主题涉及视觉问题)- 这是单独的消息,不与澄清问题结合。请参阅下面的视觉 companion 部分。
|
|
26
|
+
3. **提出澄清问题** - 一次一个,了解目的/约束/成功标准
|
|
27
|
+
4. **提出2-3种方法** - 带有权衡和你的建议
|
|
28
|
+
5. **展示设计** - 按复杂度分部分展示,每部分后获得用户批准
|
|
29
|
+
6. **编写设计文档** - 保存到 `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` 并提交
|
|
30
|
+
7. **规范审查循环** - 调度 spec-document-reviewer 子代理,使用精心设计的审查上下文(绝不是你的会话历史);修复问题并重新调度,直到获得批准(最多3次迭代,然后提交给人类)
|
|
31
|
+
8. **用户审查书面规范** - 请用户在继续之前审查规范文件
|
|
32
|
+
9. **过渡到实现** - 调用 writing-plans 技能创建实现计划
|
|
33
|
+
|
|
34
|
+
## 流程
|
|
35
|
+
|
|
36
|
+
```dot
|
|
37
|
+
digraph brainstorming {
|
|
38
|
+
"探索项目上下文" [shape=box];
|
|
39
|
+
"前方有视觉问题?" [shape=diamond];
|
|
40
|
+
"提供视觉 Companion\n(单独消息,无其他内容)" [shape=box];
|
|
41
|
+
"提出澄清问题" [shape=box];
|
|
42
|
+
"提出2-3种方法" [shape=box];
|
|
43
|
+
"展示设计部分" [shape=box];
|
|
44
|
+
"用户批准设计?" [shape=diamond];
|
|
45
|
+
"编写设计文档" [shape=box];
|
|
46
|
+
"规范审查循环" [shape=box];
|
|
47
|
+
"规范审查通过?" [shape=diamond];
|
|
48
|
+
"用户审查规范?" [shape=diamond];
|
|
49
|
+
"调用 writing-plans 技能" [shape=doublecircle];
|
|
50
|
+
|
|
51
|
+
"探索项目上下文" -> "前方有视觉问题?";
|
|
52
|
+
"前方有视觉问题?" -> "提供视觉 Companion\n(单独消息,无其他内容)" [label="是"];
|
|
53
|
+
"前方有视觉问题?" -> "提出澄清问题" [label="否"];
|
|
54
|
+
"提供视觉 Companion\n(单独消息,无其他内容)" -> "提出澄清问题";
|
|
55
|
+
"提出澄清问题" -> "提出2-3种方法";
|
|
56
|
+
"提出2-3种方法" -> "展示设计部分";
|
|
57
|
+
"展示设计部分" -> "用户批准设计?";
|
|
58
|
+
"用户批准设计?" -> "展示设计部分" [label="否,修改"];
|
|
59
|
+
"用户批准设计?" -> "编写设计文档" [label="是"];
|
|
60
|
+
"编写设计文档" -> "规范审查循环";
|
|
61
|
+
"规范审查循环" -> "规范审查通过?";
|
|
62
|
+
"规范审查通过?" -> "规范审查循环" [label="发现问题,\n修复并重新调度"];
|
|
63
|
+
"规范审查通过?" -> "用户审查规范?" [label="已批准"];
|
|
64
|
+
"用户审查规范?" -> "编写设计文档" [label="要求更改"];
|
|
65
|
+
"用户审查规范?" -> "调用 writing-plans 技能" [label="已批准"];
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**最终状态是调用 writing-plans。** 不要调用 frontend-design、mcp-builder 或任何其他实现技能。头脑风暴后你唯一应该调用的技能是 writing-plans。
|
|
70
|
+
|
|
71
|
+
## 流程说明
|
|
72
|
+
|
|
73
|
+
**理解想法:**
|
|
74
|
+
|
|
75
|
+
- 首先检查当前项目状态(文件、文档、最近的提交)
|
|
76
|
+
- 在提出详细问题之前,评估范围:如果请求描述了多个独立子系统(例如,"构建一个包含聊天、文件存储、计费和分析的平台"),立即标记这一点。不要在需要先分解的项目上花费时间完善细节。
|
|
77
|
+
- 如果项目太大,无法用单个规范覆盖,帮助用户分解为子项目:独立部分是什么,它们如何关联,应该按什么顺序构建?然后通过正常的设计流程对第一个子项目进行头脑风暴。每个子项目都有自己的规范 → 计划 → 实现周期。
|
|
78
|
+
- 对于范围适当的项目,一次一个问题地完善想法
|
|
79
|
+
- 尽可能使用多项选择题,但开放式问题也可以
|
|
80
|
+
- 每条消息只提一个问题 - 如果一个主题需要更多探索,将其分解为多个问题
|
|
81
|
+
- 关注理解:目的、约束、成功标准
|
|
82
|
+
|
|
83
|
+
**探索方法:**
|
|
84
|
+
|
|
85
|
+
- 提出2-3种不同的方法,包括权衡
|
|
86
|
+
- 以对话方式展示选项,包括你的建议和理由
|
|
87
|
+
- 先提出你推荐的选项并解释原因
|
|
88
|
+
|
|
89
|
+
**展示设计:**
|
|
90
|
+
|
|
91
|
+
- 一旦你认为理解了要构建的内容,就展示设计
|
|
92
|
+
- 根据复杂度调整每个部分:如果简单,几句话就够了;如果复杂,最多200-300字
|
|
93
|
+
- 每部分后询问是否看起来正确
|
|
94
|
+
- 涵盖:架构、组件、数据流、错误处理、测试
|
|
95
|
+
- 准备在有不明白的地方回头澄清
|
|
96
|
+
|
|
97
|
+
**设计隔离和清晰度:**
|
|
98
|
+
|
|
99
|
+
- 将系统分解为更小的单元,每个单元有一个明确的目的,通过定义良好的接口进行通信,并且可以独立理解和测试
|
|
100
|
+
- 对于每个单元,你应该能够回答:它做什么,如何使用它,它依赖什么?
|
|
101
|
+
- 有人能在不阅读内部代码的情况下理解一个单元的作用吗?你能在不破坏消费者的情况下更改内部代码吗?如果不能,边界需要改进。
|
|
102
|
+
- 更小、边界明确的单元也更容易使用 - 你对能一次保持在上下文中的代码推理得更好,当文件集中时,你的编辑更可靠。当文件变大时,这通常是它做得太多的信号。
|
|
103
|
+
|
|
104
|
+
**在现有代码库中工作:**
|
|
105
|
+
|
|
106
|
+
- 在提出更改之前探索当前结构。遵循现有模式。
|
|
107
|
+
- 在现有代码存在影响工作的问题的地方(例如,文件变得太大、边界不明确、职责混乱),将有针对性的改进作为设计的一部分 - 就像优秀的开发人员改进他们正在工作的代码一样。
|
|
108
|
+
- 不要提出无关的重构。保持专注于服务当前目标的内容。
|
|
109
|
+
|
|
110
|
+
## 设计之后
|
|
111
|
+
|
|
112
|
+
**文档:**
|
|
113
|
+
|
|
114
|
+
- 将验证后的设计(规范)写入 `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`
|
|
115
|
+
- (用户对规范位置的偏好覆盖此默认值)
|
|
116
|
+
- 如果可用,使用 elements-of-style:writing-clearly-and-concisely 技能
|
|
117
|
+
- 将设计文档提交到 git
|
|
118
|
+
|
|
119
|
+
**规范审查循环:**
|
|
120
|
+
编写规范文档后:
|
|
121
|
+
|
|
122
|
+
1. 调度 spec-document-reviewer 子代理(参见 spec-document-reviewer-prompt.md)
|
|
123
|
+
2. 如果发现问题:修复,重新调度,重复直到批准
|
|
124
|
+
3. 如果循环超过3次迭代,提交给人类指导
|
|
125
|
+
|
|
126
|
+
**用户审查关卡:**
|
|
127
|
+
规范审查循环通过后,请用户在继续之前审查书面规范:
|
|
128
|
+
|
|
129
|
+
> "规范已编写并提交到 `<path>`。请审查它,并让我知道在我们开始编写实现计划之前是否要进行任何更改。"
|
|
130
|
+
|
|
131
|
+
等待用户的响应。如果他们要求更改,进行更改并重新运行规范审查循环。只有在用户批准后才能继续。
|
|
132
|
+
|
|
133
|
+
**实现:**
|
|
134
|
+
|
|
135
|
+
- 调用 writing-plans 技能创建详细的实现计划
|
|
136
|
+
- 不要调用任何其他技能。writing-plans 是下一步。
|
|
137
|
+
|
|
138
|
+
## 关键原则
|
|
139
|
+
|
|
140
|
+
- **一次一个问题** - 不要用多个问题压倒用户
|
|
141
|
+
- **首选多项选择题** - 在可能的情况下比开放式问题更容易回答
|
|
142
|
+
- **严格遵循 YAGNI** - 从所有设计中删除不必要的功能
|
|
143
|
+
- **探索替代方案** - 在确定之前始终提出2-3种方法
|
|
144
|
+
- **增量验证** - 展示设计,在继续之前获得批准
|
|
145
|
+
- **保持灵活** - 当有不明白的地方时回头澄清
|
|
146
|
+
|
|
147
|
+
## 视觉 Companion
|
|
148
|
+
|
|
149
|
+
一个基于浏览器的 companion,用于在头脑风暴期间显示模型、图表和视觉选项。作为工具提供 - 不是模式。接受 companion 意味着它可用于受益于视觉处理的问题;这并不意味着每个问题都通过浏览器进行。
|
|
150
|
+
|
|
151
|
+
**提供 companion:** 当你预计即将提出的问题将涉及视觉内容(模型、布局、图表)时,一次提出请求获得同意:
|
|
152
|
+
> "我们正在处理的一些内容可能更容易在网页浏览器中向您展示。我可以在我们进行过程中准备模型、图表、比较和其他视觉内容。此功能仍处于新状态,可能会消耗较多 tokens。想尝试一下吗?(需要打开本地 URL)"
|
|
153
|
+
|
|
154
|
+
**此提议必须是单独的消息。** 不要将其与澄清问题、上下文摘要或任何其他内容结合。消息应只包含上述提议,别无其他。在继续之前等待用户的响应。如果他们拒绝,继续使用纯文本头脑风暴。
|
|
155
|
+
|
|
156
|
+
**每个问题的决定:** 即使在用户接受后,也要为每个问题决定是使用浏览器还是终端。测试:**用户通过查看是否比阅读更能理解这一点?**
|
|
157
|
+
|
|
158
|
+
- **使用浏览器** 处理视觉内容 - 模型、线框图、布局比较、架构图表、并排视觉设计
|
|
159
|
+
- **使用终端** 处理文本内容 - 需求问题、概念选择、权衡列表、A/B/C/D 文本选项、范围决策
|
|
160
|
+
|
|
161
|
+
关于 UI 主题的问题并不自动成为视觉问题。"在这种情况下,个性意味着什么?"是一个概念性问题 - 使用终端。"哪种向导布局更好?"是一个视觉问题 - 使用浏览器。
|
|
162
|
+
|
|
163
|
+
如果他们同意使用 companion,请在继续之前阅读详细指南:
|
|
164
|
+
`skills/brainstorming/visual-companion.md`
|