sdd-skills 1.1.10 → 1.3.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 +11 -12
- package/install.js +33 -5
- package/package.json +1 -1
- package/skills/ade/SKILL.md +624 -0
- package/skills/code-reviewer/SKILL.md +217 -21
- package/skills/git-engineer/SKILL.md +34 -9
- package/skills/notifier/SKILL.md +12 -13
- package/skills/sae/SKILL.md +156 -111
- package/skills/tester/SKILL.md +52 -24
- package/uninstall.js +4 -2
- package/skills/backend-engineer/SKILL.md +0 -480
- package/skills/frontend-engineer/SKILL.md +0 -674
package/README.md
CHANGED
|
@@ -20,8 +20,7 @@ sdd-skills
|
|
|
20
20
|
| Skill | 角色 | 职责 |
|
|
21
21
|
|-------|------|------|
|
|
22
22
|
| **sae** | 架构师 | 需求分析、架构设计、技术方案 |
|
|
23
|
-
| **
|
|
24
|
-
| **frontend-engineer** | Vue 前端工程师 | 组件开发、状态管理、用户交互 |
|
|
23
|
+
| **developer** | 研发工程师 | 前后端代码实现(Go后端、Vue/React前端) |
|
|
25
24
|
| **tester** | 测试工程师 | 单元测试、E2E 测试、质量保障 |
|
|
26
25
|
| **code-reviewer** | 代码审查专家 | 代码质量、安全审查、规范检查 |
|
|
27
26
|
| **git-engineer** | Git 工程师 | 预检测、提交规范、MR 创建 |
|
|
@@ -34,8 +33,7 @@ sdd-skills
|
|
|
34
33
|
↓
|
|
35
34
|
🗣️ Pre-Execution Review(多角色讨论)
|
|
36
35
|
├─ SAE 角度:需求清晰度、架构复杂度
|
|
37
|
-
├─
|
|
38
|
-
├─ Frontend Engineer 角度:用户体验、组件设计
|
|
36
|
+
├─ Developer 角度:技术可行性、性能评估
|
|
39
37
|
├─ Tester 角度:测试策略、环境需求
|
|
40
38
|
├─ Code Reviewer 角度:潜在风险、安全关注
|
|
41
39
|
└─ Git Engineer 角度:CI/CD 兼容性
|
|
@@ -44,17 +42,16 @@ sdd-skills
|
|
|
44
42
|
↓
|
|
45
43
|
📐 SAE → 需求规格文档
|
|
46
44
|
↓
|
|
47
|
-
👨💻
|
|
48
|
-
👩💻 Frontend Engineer → 前端 OpenSpec → 代码实现
|
|
45
|
+
👨💻 Developer → OpenSpec → 代码实现(后端 + 前端)
|
|
49
46
|
↓
|
|
50
47
|
🧪 Tester → 测试验证
|
|
51
|
-
├─ 失败 → 📢 钉钉通知 →
|
|
48
|
+
├─ 失败 → 📢 钉钉通知 → 返回 Developer 修复
|
|
52
49
|
└─ 成功 ↓
|
|
53
50
|
👀 Code Reviewer → 代码审查
|
|
54
|
-
├─ 失败 → 📢 钉钉通知 →
|
|
51
|
+
├─ 失败 → 📢 钉钉通知 → 返回 Developer 修复
|
|
55
52
|
└─ 成功 ↓
|
|
56
53
|
🚀 Git Engineer → 预检测 + 提交 + MR
|
|
57
|
-
├─ 失败 → 📢 钉钉通知 →
|
|
54
|
+
├─ 失败 → 📢 钉钉通知 → 返回 Developer 修复
|
|
58
55
|
└─ 成功 ↓
|
|
59
56
|
✅ 完成(等待 MR 批准)
|
|
60
57
|
```
|
|
@@ -96,7 +93,7 @@ Claude (SAE Skill):
|
|
|
96
93
|
- 工作流: user-login
|
|
97
94
|
- 失败阶段: Tester
|
|
98
95
|
- 错误信息: 3/10 测试用例失败
|
|
99
|
-
- 建议操作: 返回
|
|
96
|
+
- 建议操作: 返回 Developer 修复
|
|
100
97
|
|
|
101
98
|
🕐 时间: 2026-01-06 14:30:00
|
|
102
99
|
```
|
|
@@ -143,14 +140,16 @@ npm unlink -g sdd-skills
|
|
|
143
140
|
|
|
144
141
|
## 📚 技术栈说明
|
|
145
142
|
|
|
146
|
-
###
|
|
143
|
+
### Developer Skill (研发工程师)
|
|
144
|
+
|
|
145
|
+
**后端技术栈**:
|
|
147
146
|
- **语言**: Go 1.21+
|
|
148
147
|
- **框架**: Gin / Echo / Fiber
|
|
149
148
|
- **数据库**: PostgreSQL, MySQL, Redis
|
|
150
149
|
- **测试**: go test, testify, gomock
|
|
151
150
|
- **覆盖率要求**: >= 90%
|
|
152
151
|
|
|
153
|
-
|
|
152
|
+
**前端技术栈**:
|
|
154
153
|
- **框架**: Vue 3 / React 18+ (支持多框架)
|
|
155
154
|
- **状态管理**: Pinia / Redux Toolkit / Zustand
|
|
156
155
|
- **构建工具**: Vite
|
package/install.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* to Claude Code's skills directory.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { readFileSync, existsSync, mkdirSync, writeFileSync, cpSync } from 'fs';
|
|
10
|
+
import { readFileSync, existsSync, mkdirSync, writeFileSync, cpSync, rmSync } from 'fs';
|
|
11
11
|
import { join, dirname } from 'path';
|
|
12
12
|
import { homedir } from 'os';
|
|
13
13
|
import { fileURLToPath } from 'url';
|
|
@@ -32,6 +32,9 @@ const GLOBAL_SKILLS_DIR = join(homedir(), '.claude', 'skills');
|
|
|
32
32
|
const LOCAL_SKILLS_DIR = join(process.cwd(), '.claude', 'skills');
|
|
33
33
|
const SOURCE_SKILLS_DIR = join(__dirname, 'skills');
|
|
34
34
|
|
|
35
|
+
// Deprecated skills to clean up on upgrade
|
|
36
|
+
const DEPRECATED_SKILLS = ['backend-engineer', 'frontend-engineer'];
|
|
37
|
+
|
|
35
38
|
/**
|
|
36
39
|
* Display welcome banner
|
|
37
40
|
*/
|
|
@@ -133,6 +136,26 @@ async function promptInstallation() {
|
|
|
133
136
|
return answers;
|
|
134
137
|
}
|
|
135
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Clean up deprecated skills from previous installations
|
|
141
|
+
*/
|
|
142
|
+
function cleanupDeprecatedSkills(targetDir) {
|
|
143
|
+
let removedCount = 0;
|
|
144
|
+
for (const skill of DEPRECATED_SKILLS) {
|
|
145
|
+
const skillDir = join(targetDir, skill);
|
|
146
|
+
if (existsSync(skillDir)) {
|
|
147
|
+
try {
|
|
148
|
+
rmSync(skillDir, { recursive: true });
|
|
149
|
+
console.log(chalk.yellow(` ⚠ Removed deprecated: ${skill}`));
|
|
150
|
+
removedCount++;
|
|
151
|
+
} catch (error) {
|
|
152
|
+
console.log(chalk.red(` ✗ Failed to remove ${skill}: ${error.message}`));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return removedCount;
|
|
157
|
+
}
|
|
158
|
+
|
|
136
159
|
/**
|
|
137
160
|
* Install Skills to target directory
|
|
138
161
|
*/
|
|
@@ -145,11 +168,16 @@ function installSkills(targetDir) {
|
|
|
145
168
|
console.log(chalk.gray(` Created directory: ${targetDir}`));
|
|
146
169
|
}
|
|
147
170
|
|
|
171
|
+
// Clean up deprecated skills first
|
|
172
|
+
const removedCount = cleanupDeprecatedSkills(targetDir);
|
|
173
|
+
if (removedCount > 0) {
|
|
174
|
+
console.log('');
|
|
175
|
+
}
|
|
176
|
+
|
|
148
177
|
// Get list of skills
|
|
149
178
|
const skills = [
|
|
150
179
|
'sae',
|
|
151
|
-
'
|
|
152
|
-
'frontend-engineer',
|
|
180
|
+
'developer',
|
|
153
181
|
'tester',
|
|
154
182
|
'code-reviewer',
|
|
155
183
|
'git-engineer',
|
|
@@ -213,7 +241,7 @@ function displaySummary(location) {
|
|
|
213
241
|
console.log(chalk.bold.green('\n✨ Installation Complete!\n'));
|
|
214
242
|
console.log(chalk.bold('📋 Summary:\n'));
|
|
215
243
|
console.log(` ${chalk.gray('Location:')} ${chalk.cyan(skillsPath)}`);
|
|
216
|
-
console.log(` ${chalk.gray('Skills:')} ${chalk.cyan('
|
|
244
|
+
console.log(` ${chalk.gray('Skills:')} ${chalk.cyan('6')} (SAE, Developer, Tester, Reviewer, Git, Notifier)`);
|
|
217
245
|
|
|
218
246
|
console.log(chalk.bold('\n🚀 Getting Started:\n'));
|
|
219
247
|
console.log(' 1. Open Claude Code');
|
|
@@ -246,7 +274,7 @@ async function install() {
|
|
|
246
274
|
console.log(chalk.bold('\n📋 Installation Summary:\n'));
|
|
247
275
|
console.log(` ${chalk.gray('Location:')} ${chalk.cyan(answers.location === 'global' ? 'Global' : 'Local (Current Project)')}`);
|
|
248
276
|
console.log(` ${chalk.gray('Install to:')} ${chalk.cyan(targetDir)}`);
|
|
249
|
-
console.log(` ${chalk.gray('Skills:')} ${chalk.cyan('
|
|
277
|
+
console.log(` ${chalk.gray('Skills:')} ${chalk.cyan('6')} (SAE, Developer, Tester, Reviewer, Git, Notifier)`);
|
|
250
278
|
if (answers.configureDingTalk) {
|
|
251
279
|
console.log(` ${chalk.gray('DingTalk:')} ${chalk.cyan('Enabled')}`);
|
|
252
280
|
}
|