sdd-full 5.0.6 → 5.0.7
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/.claude/agents/orchestrator.md +81 -122
- package/.claude/commands/bug.md +2 -5
- package/.claude/commands/dev.md +2 -5
- package/.claude/commands/env.md +2 -5
- package/.claude/commands/flow.md +4 -8
- package/.claude/commands/full.md +2 -5
- package/.claude/commands/git.md +1 -4
- package/.claude/commands/release.md +2 -5
- package/.claude/commands/review.md +2 -5
- package/.claude/commands/save.md +2 -5
- package/.claude/commands/sdd.md +2 -5
- package/.claude/commands/ui.md +2 -5
- package/.claude/rules/project_rules.md +21 -17
- package/.claude/rules/trae-rules.md +50 -0
- package/.claude/settings.json +40 -0
- package/.claude/skills/README.md +31 -11
- package/.claude/skills/ai-coding-rules/SKILL.md +5 -1
- package/.claude/skills/bdd-acceptance/SKILL.md +5 -1
- package/.claude/skills/brainstorming/SKILL.md +5 -1
- package/.claude/skills/bug-reproduction-confirm/SKILL.md +5 -1
- package/.claude/skills/claudeception/SKILL.md +4 -51
- package/.claude/skills/competitive-brief/SKILL.md +5 -1
- package/.claude/skills/design-to-code/SKILL.md +5 -1
- package/.claude/skills/env-check/SKILL.md +5 -1
- package/.claude/skills/finishing-a-development-branch/SKILL.md +5 -1
- package/.claude/skills/flutter-add-integration-test/SKILL.md +5 -1
- package/.claude/skills/flutter-add-widget-preview/SKILL.md +5 -1
- package/.claude/skills/flutter-add-widget-test/SKILL.md +5 -1
- package/.claude/skills/flutter-apply-architecture-best-practices/SKILL.md +5 -1
- package/.claude/skills/flutter-build-responsive-layout/SKILL.md +5 -1
- package/.claude/skills/flutter-errors/SKILL.md +5 -1
- package/.claude/skills/flutter-fix-layout-issues/SKILL.md +5 -1
- package/.claude/skills/flutter-implement-json-serialization/SKILL.md +5 -1
- package/.claude/skills/flutter-setup-declarative-routing/SKILL.md +5 -1
- package/.claude/skills/flutter-setup-localization/SKILL.md +5 -1
- package/.claude/skills/flutter-test/SKILL.md +5 -1
- package/.claude/skills/flutter-use-http-package/SKILL.md +5 -1
- package/.claude/skills/ios-full-auto-debug/SKILL.md +5 -1
- package/.claude/skills/market-research/SKILL.md +5 -1
- package/.claude/skills/mempalace-auto-saver/SKILL.md +5 -1
- package/.claude/skills/performance-optimize/SKILL.md +5 -1
- package/.claude/skills/prd-write/SKILL.md +5 -1
- package/.claude/skills/quality-gate/SKILL.md +5 -1
- package/.claude/skills/receiving-code-review/SKILL.md +5 -1
- package/.claude/skills/release-flow/SKILL.md +5 -1
- package/.claude/skills/requesting-code-review/SKILL.md +5 -1
- package/.claude/skills/requirement-completion-officer/SKILL.md +5 -1
- package/.claude/skills/role-roundtable-review/SKILL.md +5 -1
- package/.claude/skills/sdd/SKILL.md +6 -94
- package/.claude/skills/sdd-add/SKILL.md +5 -1
- package/.claude/skills/sdd-code/SKILL.md +5 -1
- package/.claude/skills/sdd-deploy/SKILL.md +5 -1
- package/.claude/skills/sdd-full/SKILL.md +3 -17
- package/.claude/skills/sdd-test/SKILL.md +5 -1
- package/.claude/skills/security-audit/SKILL.md +5 -1
- package/.claude/skills/systematic-debugging/SKILL.md +5 -1
- package/.claude/skills/templates/API-SDD.md +4 -3
- package/.claude/skills/templates/Andrej Karpathy AI/347/274/226/347/240/201/350/247/204/345/210/231/350/220/275/345/234/260SDD.md" +0 -1
- package/.claude/skills/templates/BDD/351/243/216/346/240/274/351/252/214/346/224/266/346/240/207/345/207/206SDD.md +0 -1
- package/.claude/skills/templates/Base-SDD.md +4 -3
- package/.claude/skills/templates/Brain-SDD.md +4 -3
- package/.claude/skills/templates/BugReproduction-SDD.md +4 -2
- package/.claude/skills/templates/Code-SDD.md +4 -3
- package/.claude/skills/templates/Competitor-SDD.md +4 -3
- package/.claude/skills/templates/Env-SDD.md +4 -3
- package/.claude/skills/templates/Flutter/345/205/250/347/261/273/345/236/213/346/265/213/350/257/225/347/255/226/347/225/245SDD.md +0 -1
- package/.claude/skills/templates/Flutter/345/234/260/345/233/276/345/257/274/350/210/252/344/270/232/345/212/241SDD.md +0 -1
- package/.claude/skills/templates/Flutter/345/270/270/350/247/201/345/274/202/345/270/270/344/270/223/351/241/271SDD.md +0 -1
- package/.claude/skills/templates/Flutter/351/237/263/350/247/206/351/242/221/345/205/250/346/240/210SDD.md +0 -1
- package/.claude/skills/templates/PRD-SDD.md +4 -3
- package/.claude/skills/templates/Performance-SDD.md +4 -2
- package/.claude/skills/templates/SKILL.md +5 -1
- package/.claude/skills/templates/Test-SDD.md +4 -3
- package/.claude/skills/templates/UI-SDD.md +4 -3
- package/.claude/skills/templates/UI-SDD/344/270/223/347/224/250/346/250/241/346/235/277.md +0 -1
- package/.claude/skills/templates/UI/350/265/204/346/272/220/346/217/220/347/244/272/350/257/215/347/224/237/346/210/220SDD.md +0 -1
- package/.claude/skills/templates//344/274/201/344/270/232/347/272/247/345/205/250/346/240/210/345/267/245/347/250/213/350/247/204/350/214/203SDD.md +0 -1
- package/.claude/skills/templates//345/205/250/346/265/201/347/250/213SDD/350/236/215/345/220/210/344/275/223/347/263/273.md +4 -3
- package/.claude/skills/templates//345/212/237/350/203/275SDD/344/270/223/347/224/250/346/250/241/346/235/277.md +0 -1
- package/.claude/skills/templates//347/216/257/345/242/203/351/242/204/346/243/200/346/240/207/345/207/206/345/214/226SDD.md +0 -1
- package/.claude/skills/templates//351/253/230/344/277/235/347/234/237/350/256/276/350/256/241/350/275/254/344/273/243/347/240/201SDD.md +0 -1
- package/.claude/skills/test-driven-development/SKILL.md +5 -1
- package/.claude/skills/ui-motion-interaction-standard/SKILL.md +5 -1
- package/.claude/skills/ui-sdd/SKILL.md +5 -1
- package/.claude/skills/verification-before-completion/SKILL.md +5 -1
- package/.claude/skills/writing-plans/SKILL.md +5 -1
- package/bin.js +123 -29
- package/package.json +1 -1
- package/.claude/commands/debug.md +0 -21
- package/.claude/commands/iter.md +0 -22
- package/.claude/commands/new.md +0 -25
package/bin.js
CHANGED
|
@@ -6,11 +6,32 @@ const fs = require('fs');
|
|
|
6
6
|
const path = require('path');
|
|
7
7
|
|
|
8
8
|
const SDD = {
|
|
9
|
-
version: '5.0.
|
|
9
|
+
version: '5.0.7',
|
|
10
10
|
name: 'sdd-full',
|
|
11
11
|
description: '完整的软件设计开发技能包'
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
+
const CORE_SKILLS = [
|
|
15
|
+
'ai-coding-rules', 'architecture-refactor', 'bdd-acceptance', 'brainstorming',
|
|
16
|
+
'bug-reproduction-confirm', 'claudeception', 'code-review-standard', 'code-split-spec',
|
|
17
|
+
'competitive-brief', 'component-split', 'data-fetching', 'design-contract-expert',
|
|
18
|
+
'design-to-code', 'env-check', 'finishing-a-development-branch', 'market-research',
|
|
19
|
+
'mempalace-auto-saver', 'performance-optimize', 'prd-write', 'quality-gate',
|
|
20
|
+
'receiving-code-review', 'release-flow', 'requesting-code-review', 'requirement-completion-officer',
|
|
21
|
+
'role-roundtable-review', 'sdd', 'sdd-add', 'sdd-code', 'sdd-common', 'sdd-deploy',
|
|
22
|
+
'sdd-full', 'sdd-test', 'security-audit', 'state-management', 'systematic-debugging',
|
|
23
|
+
'templates', 'test-driven-development', 'ui-motion-interaction-standard', 'ui-sdd',
|
|
24
|
+
'verification-before-completion', 'writing-plans', 'writing-skills'
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const FLUTTER_SKILLS = [
|
|
28
|
+
'flutter-add-integration-test', 'flutter-add-widget-preview', 'flutter-add-widget-test',
|
|
29
|
+
'flutter-apply-architecture-best-practices', 'flutter-build-responsive-layout',
|
|
30
|
+
'flutter-errors', 'flutter-fix-layout-issues', 'flutter-implement-json-serialization',
|
|
31
|
+
'flutter-setup-declarative-routing', 'flutter-setup-localization', 'flutter-test',
|
|
32
|
+
'flutter-use-http-package', 'ios-full-auto-debug'
|
|
33
|
+
];
|
|
34
|
+
|
|
14
35
|
let VERBOSE = false;
|
|
15
36
|
|
|
16
37
|
function debug(msg) {
|
|
@@ -71,62 +92,83 @@ function getSkills() {
|
|
|
71
92
|
return skills;
|
|
72
93
|
}
|
|
73
94
|
|
|
74
|
-
function install(targetDir, environment) {
|
|
95
|
+
function install(targetDir, environment, skillSet) {
|
|
75
96
|
const baseDir = targetDir || process.cwd();
|
|
76
97
|
debug(`安装基准目录: ${baseDir}`);
|
|
77
98
|
debug(`环境: ${environment}`);
|
|
99
|
+
debug(`技能集: ${skillSet}`);
|
|
78
100
|
|
|
79
101
|
console.log('========================================');
|
|
80
102
|
console.log(` ${SDD.name} - ${SDD.description}`);
|
|
81
103
|
console.log(` 版本: ${SDD.version}`);
|
|
82
104
|
console.log('========================================');
|
|
83
105
|
|
|
84
|
-
const skillsSourceDir = path.join(__dirname, 'skills');
|
|
85
|
-
const rulesSourceDir = path.join(__dirname, '
|
|
106
|
+
const skillsSourceDir = path.join(__dirname, '.claude', 'skills');
|
|
107
|
+
const rulesSourceDir = path.join(__dirname, '.claude', 'rules');
|
|
108
|
+
const commandsSourceDir = path.join(__dirname, '.claude', 'commands');
|
|
109
|
+
const instructionsSourceDir = path.join(__dirname, '.claude', 'instructions');
|
|
110
|
+
const standardsSourceDir = path.join(__dirname, '.claude', 'standards');
|
|
111
|
+
const settingsSourcePath = path.join(__dirname, '.claude', 'settings.json');
|
|
112
|
+
|
|
86
113
|
debug(`技能源目录: ${skillsSourceDir}`);
|
|
87
114
|
debug(`规则源目录: ${rulesSourceDir}`);
|
|
88
|
-
debug(
|
|
89
|
-
debug(`规则源目录存在: ${fs.existsSync(rulesSourceDir)}`);
|
|
115
|
+
debug(`命令源目录: ${commandsSourceDir}`);
|
|
90
116
|
|
|
91
|
-
// 根据环境选择安装目录
|
|
92
117
|
let installConfig;
|
|
93
118
|
|
|
94
119
|
if (environment === 'cc') {
|
|
95
120
|
installConfig = [
|
|
96
|
-
{ name: 'Claude Code', skillsPath: path.join(baseDir, '.claude', 'skills'), rulesPath: path.join(baseDir, '.claude', 'rules') }
|
|
121
|
+
{ name: 'Claude Code', basePath: path.join(baseDir, '.claude'), skillsPath: path.join(baseDir, '.claude', 'skills'), rulesPath: path.join(baseDir, '.claude', 'rules') }
|
|
97
122
|
];
|
|
98
123
|
} else if (environment === 'trae-cn') {
|
|
99
124
|
installConfig = [
|
|
100
|
-
{ name: 'Trae-cn', skillsPath: path.join(baseDir, '.trae-cn', 'skills'), rulesPath: path.join(baseDir, '.trae-cn', 'rules') }
|
|
125
|
+
{ name: 'Trae-cn', basePath: path.join(baseDir, '.trae-cn'), skillsPath: path.join(baseDir, '.trae-cn', 'skills'), rulesPath: path.join(baseDir, '.trae-cn', 'rules') }
|
|
101
126
|
];
|
|
102
127
|
} else if (environment === 'all') {
|
|
103
128
|
installConfig = [
|
|
104
|
-
{ name: 'Trae / Solo', skillsPath: path.join(baseDir, '.trae', 'skills'), rulesPath: path.join(baseDir, '.trae', 'rules') },
|
|
105
|
-
{ name: 'Trae-cn', skillsPath: path.join(baseDir, '.trae-cn', 'skills'), rulesPath: path.join(baseDir, '.trae-cn', 'rules') },
|
|
106
|
-
{ name: 'Claude Code', skillsPath: path.join(baseDir, '.claude', 'skills'), rulesPath: path.join(baseDir, '.claude', 'rules') },
|
|
107
|
-
{ name: '通用 sdd-full', skillsPath: path.join(baseDir, '.sdd-full', 'skills'), rulesPath: path.join(baseDir, '.sdd-full', 'rules') }
|
|
129
|
+
{ name: 'Trae / Solo', basePath: path.join(baseDir, '.trae'), skillsPath: path.join(baseDir, '.trae', 'skills'), rulesPath: path.join(baseDir, '.trae', 'rules') },
|
|
130
|
+
{ name: 'Trae-cn', basePath: path.join(baseDir, '.trae-cn'), skillsPath: path.join(baseDir, '.trae-cn', 'skills'), rulesPath: path.join(baseDir, '.trae-cn', 'rules') },
|
|
131
|
+
{ name: 'Claude Code', basePath: path.join(baseDir, '.claude'), skillsPath: path.join(baseDir, '.claude', 'skills'), rulesPath: path.join(baseDir, '.claude', 'rules') },
|
|
132
|
+
{ name: '通用 sdd-full', basePath: path.join(baseDir, '.sdd-full'), skillsPath: path.join(baseDir, '.sdd-full', 'skills'), rulesPath: path.join(baseDir, '.sdd-full', 'rules') }
|
|
108
133
|
];
|
|
109
134
|
} else {
|
|
110
|
-
// 默认:Trae / Solo
|
|
111
135
|
installConfig = [
|
|
112
|
-
{ name: 'Trae / Solo', skillsPath: path.join(baseDir, '.trae', 'skills'), rulesPath: path.join(baseDir, '.trae', 'rules') }
|
|
136
|
+
{ name: 'Trae / Solo', basePath: path.join(baseDir, '.trae'), skillsPath: path.join(baseDir, '.trae', 'skills'), rulesPath: path.join(baseDir, '.trae', 'rules') }
|
|
113
137
|
];
|
|
114
138
|
}
|
|
115
139
|
|
|
140
|
+
let skillsToInstall = [];
|
|
141
|
+
if (skillSet === 'core') {
|
|
142
|
+
skillsToInstall = CORE_SKILLS;
|
|
143
|
+
console.log('\n🔸 安装模式: 核心技能集 (33个)');
|
|
144
|
+
} else if (skillSet === 'flutter') {
|
|
145
|
+
skillsToInstall = [...CORE_SKILLS, ...FLUTTER_SKILLS];
|
|
146
|
+
console.log('\n🔸 安装模式: 核心技能集 + Flutter扩展 (46个)');
|
|
147
|
+
} else {
|
|
148
|
+
skillsToInstall = [...CORE_SKILLS, ...FLUTTER_SKILLS];
|
|
149
|
+
console.log('\n🔸 安装模式: 完整技能集 (46个)');
|
|
150
|
+
}
|
|
151
|
+
|
|
116
152
|
let totalSkillsCount = 0;
|
|
117
153
|
let totalRulesCount = 0;
|
|
118
154
|
|
|
119
155
|
installConfig.forEach(config => {
|
|
120
156
|
const skillsDestDir = config.skillsPath;
|
|
121
157
|
const rulesDestDir = config.rulesPath;
|
|
158
|
+
const baseDestDir = config.basePath;
|
|
159
|
+
|
|
122
160
|
debug(`安装目标: ${config.name}`);
|
|
161
|
+
debug(` 基础目录: ${baseDestDir}`);
|
|
123
162
|
debug(` 技能目录: ${skillsDestDir}`);
|
|
124
163
|
debug(` 规则目录: ${rulesDestDir}`);
|
|
125
164
|
|
|
126
165
|
console.log(`\n正在安装到: ${config.name}`);
|
|
127
166
|
|
|
128
|
-
|
|
129
|
-
|
|
167
|
+
if (!fs.existsSync(baseDestDir)) {
|
|
168
|
+
debug(`创建基础目录: ${baseDestDir}`);
|
|
169
|
+
fs.mkdirSync(baseDestDir, { recursive: true });
|
|
170
|
+
}
|
|
171
|
+
|
|
130
172
|
if (!fs.existsSync(skillsDestDir)) {
|
|
131
173
|
debug(`创建技能目录: ${skillsDestDir}`);
|
|
132
174
|
fs.mkdirSync(skillsDestDir, { recursive: true });
|
|
@@ -135,11 +177,9 @@ function install(targetDir, environment) {
|
|
|
135
177
|
let skillsCount = 0;
|
|
136
178
|
if (fs.existsSync(skillsSourceDir)) {
|
|
137
179
|
const items = fs.readdirSync(skillsSourceDir);
|
|
138
|
-
debug(`技能源目录内容: ${items.join(', ')}`);
|
|
139
180
|
|
|
140
181
|
items.forEach(item => {
|
|
141
|
-
|
|
142
|
-
if (item === 'rules') {
|
|
182
|
+
if (item === 'rules' || item === 'templates') {
|
|
143
183
|
return;
|
|
144
184
|
}
|
|
145
185
|
|
|
@@ -147,7 +187,7 @@ function install(targetDir, environment) {
|
|
|
147
187
|
const destItem = path.join(skillsDestDir, item);
|
|
148
188
|
const stat = fs.statSync(srcItem);
|
|
149
189
|
|
|
150
|
-
if (stat.isDirectory()) {
|
|
190
|
+
if (stat.isDirectory() && skillsToInstall.includes(item)) {
|
|
151
191
|
debug(`复制技能目录: ${item}`);
|
|
152
192
|
copyDirectory(srcItem, destItem);
|
|
153
193
|
skillsCount++;
|
|
@@ -156,11 +196,18 @@ function install(targetDir, environment) {
|
|
|
156
196
|
fs.copyFileSync(srcItem, destItem);
|
|
157
197
|
}
|
|
158
198
|
});
|
|
199
|
+
|
|
200
|
+
const templatesSrc = path.join(skillsSourceDir, 'templates');
|
|
201
|
+
const templatesDest = path.join(skillsDestDir, 'templates');
|
|
202
|
+
if (fs.existsSync(templatesSrc)) {
|
|
203
|
+
debug(`复制模板目录`);
|
|
204
|
+
copyDirectory(templatesSrc, templatesDest);
|
|
205
|
+
skillsCount++;
|
|
206
|
+
}
|
|
159
207
|
}
|
|
160
208
|
totalSkillsCount += skillsCount;
|
|
161
209
|
console.log(` ✅ ${skillsCount} 个技能`);
|
|
162
210
|
|
|
163
|
-
// 安装规则到.trae根目录下
|
|
164
211
|
console.log(` 📋 安装规则到: ${rulesDestDir}`);
|
|
165
212
|
if (!fs.existsSync(rulesDestDir)) {
|
|
166
213
|
debug(`创建规则目录: ${rulesDestDir}`);
|
|
@@ -170,7 +217,6 @@ function install(targetDir, environment) {
|
|
|
170
217
|
let rulesCount = 0;
|
|
171
218
|
if (fs.existsSync(rulesSourceDir)) {
|
|
172
219
|
const items = fs.readdirSync(rulesSourceDir);
|
|
173
|
-
debug(`规则源目录内容: ${items.join(', ')}`);
|
|
174
220
|
|
|
175
221
|
items.forEach(item => {
|
|
176
222
|
const srcItem = path.join(rulesSourceDir, item);
|
|
@@ -188,7 +234,43 @@ function install(targetDir, environment) {
|
|
|
188
234
|
totalRulesCount += rulesCount;
|
|
189
235
|
console.log(` ✅ ${rulesCount} 个规则文件`);
|
|
190
236
|
|
|
191
|
-
|
|
237
|
+
if (environment === 'cc' && fs.existsSync(commandsSourceDir)) {
|
|
238
|
+
const commandsDestDir = path.join(baseDestDir, 'commands');
|
|
239
|
+
console.log(` 📝 安装命令到: ${commandsDestDir}`);
|
|
240
|
+
if (!fs.existsSync(commandsDestDir)) {
|
|
241
|
+
fs.mkdirSync(commandsDestDir, { recursive: true });
|
|
242
|
+
}
|
|
243
|
+
copyDirectory(commandsSourceDir, commandsDestDir);
|
|
244
|
+
console.log(` ✅ 命令文件已安装`);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (environment === 'cc' && fs.existsSync(instructionsSourceDir)) {
|
|
248
|
+
const instructionsDestDir = path.join(baseDestDir, 'instructions');
|
|
249
|
+
console.log(` 📋 安装指令到: ${instructionsDestDir}`);
|
|
250
|
+
if (!fs.existsSync(instructionsDestDir)) {
|
|
251
|
+
fs.mkdirSync(instructionsDestDir, { recursive: true });
|
|
252
|
+
}
|
|
253
|
+
copyDirectory(instructionsSourceDir, instructionsDestDir);
|
|
254
|
+
console.log(` ✅ 指令文件已安装`);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (environment === 'cc' && fs.existsSync(standardsSourceDir)) {
|
|
258
|
+
const standardsDestDir = path.join(baseDestDir, 'standards');
|
|
259
|
+
console.log(` 📐 安装标准到: ${standardsDestDir}`);
|
|
260
|
+
if (!fs.existsSync(standardsDestDir)) {
|
|
261
|
+
fs.mkdirSync(standardsDestDir, { recursive: true });
|
|
262
|
+
}
|
|
263
|
+
copyDirectory(standardsSourceDir, standardsDestDir);
|
|
264
|
+
console.log(` ✅ 标准文件已安装`);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (environment === 'cc' && fs.existsSync(settingsSourcePath)) {
|
|
268
|
+
const settingsDestPath = path.join(baseDestDir, 'settings.json');
|
|
269
|
+
console.log(` ⚙️ 安装配置到: ${settingsDestPath}`);
|
|
270
|
+
fs.copyFileSync(settingsSourcePath, settingsDestPath);
|
|
271
|
+
console.log(` ✅ 配置文件已安装`);
|
|
272
|
+
}
|
|
273
|
+
|
|
192
274
|
if (fs.existsSync(skillsDestDir)) {
|
|
193
275
|
const installedSkills = fs.readdirSync(skillsDestDir);
|
|
194
276
|
debug(`技能目录内容: ${installedSkills.join(', ')}`);
|
|
@@ -239,13 +321,17 @@ function main() {
|
|
|
239
321
|
console.log(` 版本: ${SDD.version}`);
|
|
240
322
|
console.log('========================================');
|
|
241
323
|
console.log('\n用法:');
|
|
242
|
-
console.log(' npx sdd-full - 安装到 Trae / Solo
|
|
324
|
+
console.log(' npx sdd-full - 安装到 Trae / Solo(默认,完整技能集)');
|
|
243
325
|
console.log(' npx sdd-full cc - 安装到 Claude Code');
|
|
244
326
|
console.log(' npx sdd-full trae-cn - 仅安装到 Trae-cn');
|
|
245
|
-
console.log(' npx sdd-full all -
|
|
327
|
+
console.log(' npx sdd-full all - 安装到所有环境');
|
|
246
328
|
console.log(' npx sdd-full --help - 显示帮助');
|
|
247
329
|
console.log(' npx sdd-full --dir ./myproj - 安装到指定目录');
|
|
248
330
|
console.log(' npx sdd-full --verbose - 显示详细调试信息');
|
|
331
|
+
console.log('\n技能集选项:');
|
|
332
|
+
console.log(' --core - 仅安装核心技能集(33个,通用项目)');
|
|
333
|
+
console.log(' --flutter - 安装核心技能集 + Flutter扩展(46个)');
|
|
334
|
+
console.log(' (默认) - 安装完整技能集(46个)');
|
|
249
335
|
|
|
250
336
|
const skills = getSkills();
|
|
251
337
|
console.log('\n可用技能:');
|
|
@@ -255,7 +341,6 @@ function main() {
|
|
|
255
341
|
|
|
256
342
|
console.log(`\n总计 ${skills.length} 个技能\n`);
|
|
257
343
|
} else {
|
|
258
|
-
// 否则,直接安装
|
|
259
344
|
let targetDir;
|
|
260
345
|
const targetIndex = args.indexOf('--dir');
|
|
261
346
|
const targetIndexShort = args.indexOf('-d');
|
|
@@ -273,10 +358,19 @@ function main() {
|
|
|
273
358
|
} else if (args.indexOf('all') !== -1) {
|
|
274
359
|
environment = 'all';
|
|
275
360
|
} else {
|
|
276
|
-
environment = 'trae';
|
|
361
|
+
environment = 'trae';
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
let skillSet;
|
|
365
|
+
if (args.indexOf('--core') !== -1) {
|
|
366
|
+
skillSet = 'core';
|
|
367
|
+
} else if (args.indexOf('--flutter') !== -1) {
|
|
368
|
+
skillSet = 'flutter';
|
|
369
|
+
} else {
|
|
370
|
+
skillSet = 'full';
|
|
277
371
|
}
|
|
278
372
|
|
|
279
|
-
install(targetDir, environment);
|
|
373
|
+
install(targetDir, environment, skillSet);
|
|
280
374
|
}
|
|
281
375
|
}
|
|
282
376
|
|
package/package.json
CHANGED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: /debug command
|
|
3
|
-
argument-hint:
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
当用户输入 /debug 命令时,执行以下流程:
|
|
7
|
-
|
|
8
|
-
1. 触发 systematic-debugging(系统化调试)
|
|
9
|
-
- 分析错误信息或问题描述
|
|
10
|
-
- 定位根因
|
|
11
|
-
- 提出修复方案
|
|
12
|
-
|
|
13
|
-
2. 确认修复方案后,执行修复
|
|
14
|
-
|
|
15
|
-
3. 触发 verification-before-completion(提交前验证)
|
|
16
|
-
|
|
17
|
-
4. 验证通过后,触发 quality-gate(质量门禁检查)
|
|
18
|
-
|
|
19
|
-
5. 触发 claudeception 进行经验沉淀
|
|
20
|
-
|
|
21
|
-
6. 每个步骤完成后,等待用户确认再进入下一步
|
package/.claude/commands/iter.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: /iter command
|
|
3
|
-
argument-hint:
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
当用户输入 /iter 命令时,执行以下流程:
|
|
7
|
-
|
|
8
|
-
1. 确认需求是否明确:
|
|
9
|
-
- 如果需求不明确,先触发 requirement-completion-officer(需求补全)
|
|
10
|
-
- 如果需求已明确,直接进入下一步
|
|
11
|
-
|
|
12
|
-
2. 触发 sdd-add(快速开发落地)
|
|
13
|
-
- 如果涉及UI设计,补充调用 ui-sdd
|
|
14
|
-
- 如果需要制定计划,补充调用 writing-plans
|
|
15
|
-
|
|
16
|
-
3. 开发完成后,触发 verification-before-completion(提交前验证)
|
|
17
|
-
|
|
18
|
-
4. 验证通过后,触发 quality-gate(质量门禁检查)
|
|
19
|
-
|
|
20
|
-
5. 可选:触发 claudeception 进行经验沉淀
|
|
21
|
-
|
|
22
|
-
6. 每个步骤完成后,等待用户确认再进入下一步
|
package/.claude/commands/new.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: /new command
|
|
3
|
-
argument-hint:
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
当用户输入 /new 命令时,执行以下流程:
|
|
7
|
-
|
|
8
|
-
1. 显示新项目启动选项,让用户选择是否需要:
|
|
9
|
-
- **市场调研/头脑风暴**:如果需要,触发 brainstorming 或 market-research
|
|
10
|
-
- **竞品分析**:如果需要,触发 competitive-brief
|
|
11
|
-
- **PRD编写**:如果需要,触发 prd-write
|
|
12
|
-
|
|
13
|
-
2. 触发需求补全(requirement-completion-officer),确保需求明确
|
|
14
|
-
|
|
15
|
-
3. 触发 SDD拆分(sdd / sdd-full),按扩展需求和优先级拆分
|
|
16
|
-
|
|
17
|
-
4. 后续流程依次触发:
|
|
18
|
-
- UI设计(ui-sdd)
|
|
19
|
-
- 功能实现拆分(sdd-code,含代码规范、技术债务、重构计划)
|
|
20
|
-
- 测试设计(sdd-test)
|
|
21
|
-
- 部署设计(sdd-deploy,可选)
|
|
22
|
-
- 制定计划(writing-plans,可选)
|
|
23
|
-
- 开始开发(sdd-add / test-driven-development)
|
|
24
|
-
|
|
25
|
-
5. 每个步骤完成后,等待用户确认再进入下一步
|