sdd-full 5.0.6 → 5.0.8
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/SDD_ORCHESTRATOR_PROMPT.md +301 -0
- package/.claude/agents/orchestrator.md +83 -124
- 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 +28 -53
- 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/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 +97 -163
- 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/.claude/skills/mempalace-auto-saver/SKILL.md +0 -302
- package/README.md +0 -94
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:Base-SDD】【trae调用标识:Base-SDD+sdd】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目】
|
|
2
1
|
|
|
3
2
|
# Base-SDD:[项目名称]全局通用基线规范(skill选项式设计)
|
|
4
3
|
|
|
@@ -32,7 +31,9 @@
|
|
|
32
31
|
- 选项1:隐私数据处理 → 选项:加密存储/脱敏展示 → 自定义处理:__________
|
|
33
32
|
- 选项2:敏感信息脱敏 → 选项:手机号隐藏中间4位/身份证隐藏中间8位 → 自定义脱敏:__________
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
35
|
+
|
|
36
36
|
- 调用路径:skills/templates/Base-SDD.md
|
|
37
37
|
- 必传参数:项目名称、基线规范类型(如:UI交互/编码规范)
|
|
38
|
-
- 可选参数:自定义规范补充内容
|
|
38
|
+
- 可选参数:自定义规范补充内容
|
|
39
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:Brain-SDD】【trae调用标识:Brain-SDD+brainstorming】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代】
|
|
2
1
|
|
|
3
2
|
# Brain-SDD:[项目名称]头脑风暴文档(skill选项式设计)
|
|
4
3
|
|
|
@@ -30,7 +29,9 @@
|
|
|
30
29
|
- 选项2:风险点:云同步稳定性差 → 应对措施选项:选择可靠云服务/增加异常处理 → 自定义补充:__________
|
|
31
30
|
- 选项3:自定义风险点:__________ → 应对措施:__________
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
33
|
+
|
|
34
34
|
- 调用路径:skills/templates/Brain-SDD.md
|
|
35
35
|
- 必传参数:项目名称、头脑风暴阶段(如:初期想法收集/脑洞筛选)
|
|
36
|
-
- 可选参数:自定义想法、自定义方案补充内容
|
|
36
|
+
- 可选参数:自定义想法、自定义方案补充内容
|
|
37
|
+
<!-- End Trae-only -->
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
【claude code调用标识:BugReproduction-SDD】【trae调用标识:BugReproduction-SDD+bug-reproduction-confirm】【流程场景:4.Bug处理】
|
|
3
2
|
|
|
4
3
|
# BugReproduction-SDD:Bug复现确认文档(skill选项式设计)
|
|
5
4
|
|
|
@@ -74,8 +73,11 @@
|
|
|
74
73
|
- 选项2:环境差异说明:__________
|
|
75
74
|
- 选项3:后续跟进建议:__________
|
|
76
75
|
|
|
77
|
-
|
|
76
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
77
|
+
|
|
78
78
|
- 调用路径:skills/templates/BugReproduction-SDD.md
|
|
79
79
|
- 必传参数:Bug基本信息、复现操作记录、复现结论判定
|
|
80
80
|
- 可选参数:归档备注、证据链接
|
|
81
81
|
|
|
82
|
+
|
|
83
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:Code-SDD】【trae调用标识:Code-SDD+sdd-code】【流程场景:1.完整3阶段SDD流程、3.小型功能迭代、4.Bug处理】
|
|
2
1
|
|
|
3
2
|
# Code-SDD:[功能模块名称](skill选项式设计)
|
|
4
3
|
|
|
@@ -35,7 +34,9 @@
|
|
|
35
34
|
- 选项2:质量校验调用 → 选项:quality-gate(质量门禁)/security-audit(安全审计) → 自定义调用:__________
|
|
36
35
|
- 选项3:代码审查调用 → 选项:requesting-code-review(请求代码审查)/receiving-code-review(接收代码审查) → 自定义调用:__________
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
38
|
+
|
|
39
39
|
- 调用路径:skills/templates/Code-SDD.md
|
|
40
40
|
- 必传参数:功能模块名称、开发语言、核心功能
|
|
41
|
-
- 可选参数:接口设计、代码结构补充内容
|
|
41
|
+
- 可选参数:接口设计、代码结构补充内容
|
|
42
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:Competitor-SDD】【trae调用标识:Competitor-SDD+market-research/competitive-brief】【流程场景:2.从零开始新项目】
|
|
2
1
|
|
|
3
2
|
# Competitor-SDD:[项目名称]竞品分析文档(skill选项式设计)
|
|
4
3
|
|
|
@@ -28,7 +27,9 @@
|
|
|
28
27
|
- 选项1:功能差异化 → 选项:补充竞品缺失的功能/优化竞品不足的功能 → 自定义机会:__________
|
|
29
28
|
- 选项2:体验差异化 → 选项:优化交互流程/提升操作便捷性 → 自定义机会:__________
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
31
|
+
|
|
32
32
|
- 调用路径:skills/templates/Competitor-SDD.md
|
|
33
33
|
- 必传参数:项目名称、竞品类型、竞品名称
|
|
34
|
-
- 可选参数:对比维度、可借鉴点补充内容
|
|
34
|
+
- 可选参数:对比维度、可借鉴点补充内容
|
|
35
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:Env-SDD】【trae调用标识:Env-SDD+sdd-deploy/sdd-ops】【流程场景:1.完整3阶段SDD流程、5.代码发布】
|
|
2
1
|
|
|
3
2
|
# Env-SDD:[项目名称]环境配置文档(skill选项式设计)
|
|
4
3
|
|
|
@@ -31,7 +30,9 @@
|
|
|
31
30
|
- 选项1:敏感类型 → 选项:密码/密钥/证书 → 自定义类型:__________
|
|
32
31
|
- 选项2:管理方式 → 选项:环境变量/密钥管理服务/配置中心 → 自定义管理:__________
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
34
|
+
|
|
35
35
|
- 调用路径:skills/templates/Env-SDD.md
|
|
36
36
|
- 必传参数:项目名称、环境类型、环境URL
|
|
37
|
-
- 可选参数:权限配置、敏感信息管理补充内容
|
|
37
|
+
- 可选参数:权限配置、敏感信息管理补充内容
|
|
38
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:PRD-SDD】【trae调用标识:PRD-SDD+prd-write/requirement-completion-officer】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目】
|
|
2
1
|
|
|
3
2
|
# PRD-SDD:[项目名称]产品需求文档(skill选项式设计)
|
|
4
3
|
|
|
@@ -39,7 +38,9 @@
|
|
|
39
38
|
- 选项2:体验验收 → 选项:交互流畅/操作便捷 → 自定义验收:__________
|
|
40
39
|
- 选项3:性能验收 → 选项:响应时间≤1s/无卡顿 → 自定义验收:__________
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
42
|
+
|
|
43
43
|
- 调用路径:skills/templates/PRD-SDD.md
|
|
44
44
|
- 必传参数:项目名称、需求优先级、核心用户
|
|
45
|
-
- 可选参数:功能范围、验收标准补充内容
|
|
45
|
+
- 可选参数:功能范围、验收标准补充内容
|
|
46
|
+
<!-- End Trae-only -->
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
【claude code调用标识:Performance-SDD】【trae调用标识:Performance-SDD+performance-optimize】【流程场景:1.完整3阶段SDD流程、3.小型功能迭代、4.Bug处理】
|
|
3
2
|
|
|
4
3
|
# Performance-SDD:[性能优化模块名称](skill选项式设计)
|
|
5
4
|
|
|
@@ -38,7 +37,10 @@
|
|
|
38
37
|
- 选项2:最佳实践 → 选项:__________ → 自定义实践:__________
|
|
39
38
|
- 选项3:后续优化建议 → 选项:__________ → 自定义建议:__________
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
41
|
+
|
|
42
42
|
- 调用路径:skills/templates/Performance-SDD.md
|
|
43
43
|
- 必传参数:性能优化模块名称、问题类型、性能指标
|
|
44
44
|
- 可选参数:优化方案、验证计划补充内容
|
|
45
|
+
|
|
46
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:Test-SDD】【trae调用标识:Test-SDD+sdd-test】【流程场景:1.完整3阶段SDD流程、3.小型功能迭代、4.Bug处理】
|
|
2
1
|
|
|
3
2
|
# Test-SDD:[测试模块名称](skill选项式设计)
|
|
4
3
|
|
|
@@ -28,7 +27,9 @@
|
|
|
28
27
|
- 选项1:测试项 → 选项:SQL注入/XSS攻击/CSRF攻击/接口越权 → 自定义测试项:__________
|
|
29
28
|
- 选项2:测试工具 → 选项:OWASP ZAP/Nessus/Burp Suite → 自定义工具:__________
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
31
|
+
|
|
32
32
|
- 调用路径:skills/templates/Test-SDD.md
|
|
33
33
|
- 必传参数:测试模块名称、测试类型、测试范围
|
|
34
|
-
- 可选参数:测试用例、测试数据补充内容
|
|
34
|
+
- 可选参数:测试用例、测试数据补充内容
|
|
35
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:UI-SDD】【trae调用标识:UI-SDD+ui-sdd】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目】
|
|
2
1
|
|
|
3
2
|
# UI-SDD:[页面/组件名称](skill选项式设计)
|
|
4
3
|
|
|
@@ -32,7 +31,9 @@
|
|
|
32
31
|
- 选项1:对齐规范 → 选项:对齐Base-SDD颜色规范/对齐Base-SDD字体规范 → 自定义对齐:__________
|
|
33
32
|
- 选项2:偏差说明 → 选项:无偏差/有偏差(说明:__________) → 自定义说明:__________
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
35
|
+
|
|
36
36
|
- 调用路径:skills/templates/UI-SDD.md
|
|
37
37
|
- 必传参数:页面/组件名称、所属模块、Figma链接(或备用文件路径)
|
|
38
|
-
- 可选参数:组件清单、交互流程补充内容
|
|
38
|
+
- 可选参数:组件清单、交互流程补充内容
|
|
39
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
【claude code调用标识:全流程SDD融合体系】【trae调用标识:全流程SDD融合体系+sdd-full】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代、4.Bug处理、5.代码发布】
|
|
2
1
|
|
|
3
2
|
# 全流程SDD融合体系(skill选项式,含多流程联动)
|
|
4
3
|
|
|
@@ -191,8 +190,10 @@
|
|
|
191
190
|
|
|
192
191
|
---
|
|
193
192
|
|
|
194
|
-
|
|
193
|
+
<!-- Trae-only: trae调用参数说明 -->
|
|
194
|
+
|
|
195
195
|
|
|
196
196
|
- 调用路径:skills/templates/全流程SDD融合体系.md
|
|
197
197
|
- 必传参数:项目名称、流程阶段(如:模板适配/Figma接入/AI协作/开发测试/bug修复/版本锁定/归档管理)
|
|
198
|
-
- 可选参数:各流程的自定义补充内容
|
|
198
|
+
- 可选参数:各流程的自定义补充内容
|
|
199
|
+
<!-- End Trae-only -->
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: test-driven-development
|
|
3
|
+
description: Use when practicing test-driven development (TDD)
|
|
4
|
+
---
|
|
5
|
+
|
|
2
6
|
|
|
3
7
|
---
|
|
4
8
|
name: test-driven-development
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-motion-interaction-standard
|
|
3
|
+
description: Use when defining UI motion and interaction standards
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
name: ui-motion-interaction-standard
|
|
2
7
|
description: 全局UI动效与交互反馈规范 - 跨端通用交互动效管理
|
|
3
8
|
author:
|
|
@@ -13,7 +18,6 @@ tags:
|
|
|
13
18
|
- 工程规范
|
|
14
19
|
- 跨端通用
|
|
15
20
|
|
|
16
|
-
【claude code调用标识:ui-motion-interaction-standard】【trae调用标识:ui-motion-interaction-standard+UI动效】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代】
|
|
17
21
|
|
|
18
22
|
## 功能说明
|
|
19
23
|
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: verification-before-completion
|
|
3
|
+
description: Use when verifying completion before submitting code for review
|
|
4
|
+
---
|
|
5
|
+
|
|
2
6
|
|
|
3
7
|
---
|
|
4
8
|
name: verification-before-completion
|
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.8',
|
|
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. 每个步骤完成后,等待用户确认再进入下一步
|