cdspec 0.1.1 → 0.1.3

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.
Files changed (59) hide show
  1. package/dist/cli.js +1 -40
  2. package/dist/config/default.js +1 -48
  3. package/dist/config/loader.js +1 -30
  4. package/dist/config/path.js +1 -11
  5. package/dist/config/types.js +1 -1
  6. package/dist/skill-core/adapters/claudecode-adapter.js +1 -35
  7. package/dist/skill-core/adapters/codex-adapter.js +1 -28
  8. package/dist/skill-core/adapters/iflow-adapter.js +1 -39
  9. package/dist/skill-core/adapters/index.js +1 -34
  10. package/dist/skill-core/adapters/shared.js +1 -36
  11. package/dist/skill-core/manifest-loader.js +1 -60
  12. package/dist/skill-core/scaffold.js +1 -169
  13. package/dist/skill-core/service.js +1 -109
  14. package/dist/skill-core/tool-interactions.js +1 -70
  15. package/dist/skill-core/types.js +1 -1
  16. package/dist/skill-core/validator.js +1 -25
  17. package/dist/utils/frontmatter.js +1 -40
  18. package/dist/utils/fs.js +1 -37
  19. package/package.json +11 -2
  20. package/templates/{standards-backend → backend-standard}/SKILL.md +55 -55
  21. package/templates/backend-standard/agents/openai.yaml +4 -0
  22. package/templates/{standards-backend → backend-standard}/references/DDD/346/236/266/346/236/204/347/272/246/346/235/237.md +103 -103
  23. package/templates/{standards-backend → backend-standard}/references/JUC/345/271/266/345/217/221/350/247/204/350/214/203.md +232 -232
  24. package/templates/{standards-backend → backend-standard}/references//344/274/240/347/273/237/344/270/211/345/261/202/346/236/266/346/236/204/347/272/246/346/235/237.md +35 -35
  25. package/templates/{standards-backend → backend-standard}/references//345/220/216/347/253/257/345/274/200/345/217/221/350/247/204/350/214/203.md +49 -49
  26. package/templates/{standards-backend → backend-standard}/references//346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/350/247/204/350/214/203.md +116 -116
  27. package/templates/{standards-backend → backend-standard}/references//350/256/276/350/256/241/346/250/241/345/274/217/350/220/275/345/234/260/346/211/213/345/206/214.md +395 -395
  28. package/templates/{frontend-develop-standard → frontend-standard}/SKILL.md +63 -63
  29. package/templates/frontend-standard/agents/openai.yaml +4 -0
  30. package/templates/{frontend-develop-standard/references/frontend_develop_standard.md → frontend-standard/references/frontend_standard.md} +28 -321
  31. package/dist/skill-core/agent-config.js +0 -40
  32. package/dist/task-core/parser.js +0 -70
  33. package/dist/task-core/service.js +0 -28
  34. package/dist/task-core/storage.js +0 -159
  35. package/dist/task-core/types.js +0 -1
  36. package/src/cli.ts +0 -44
  37. package/src/config/default.ts +0 -51
  38. package/src/config/loader.ts +0 -37
  39. package/src/config/path.ts +0 -13
  40. package/src/config/types.ts +0 -22
  41. package/src/skill-core/adapters/claudecode-adapter.ts +0 -45
  42. package/src/skill-core/adapters/codex-adapter.ts +0 -36
  43. package/src/skill-core/adapters/iflow-adapter.ts +0 -49
  44. package/src/skill-core/adapters/index.ts +0 -39
  45. package/src/skill-core/adapters/shared.ts +0 -45
  46. package/src/skill-core/manifest-loader.ts +0 -72
  47. package/src/skill-core/scaffold.ts +0 -192
  48. package/src/skill-core/service.ts +0 -137
  49. package/src/skill-core/tool-interactions.ts +0 -95
  50. package/src/skill-core/types.ts +0 -22
  51. package/src/skill-core/validator.ts +0 -28
  52. package/src/types/yaml.d.ts +0 -4
  53. package/src/utils/frontmatter.ts +0 -55
  54. package/src/utils/fs.ts +0 -41
  55. package/templates/frontend-develop-standard/agents/openai.yaml +0 -4
  56. package/templates/standards-backend/agents/openai.yaml +0 -4
  57. package/tests/init.test.ts +0 -63
  58. package/tsconfig.json +0 -16
  59. package/vitest.config.ts +0 -9
@@ -1,103 +1,103 @@
1
- # DDD 架构约束(项目实战总结版)
2
-
3
- ## 1. 目标与适用边界
4
- 1. 本规范用于业务规则复杂、状态流转明确、需要长期演进的模块。
5
- 2. 以“领域规则内聚、技术细节外置、跨服务编排上收”为核心目标。
6
- 3. 纯 CRUD 且规则稳定场景优先使用传统三层,不强行 DDD 化。
7
-
8
- ## 2. 分层模型与职责
9
- ### 2.1 Performance(接口层)
10
- 1. 只负责请求接收、参数校验、响应组装。
11
- 2. 禁止在 Controller 写领域规则和状态流转。
12
- 3. 对外 DTO 只表达接口语义,不泄露领域内部对象结构。
13
-
14
- ### 2.2 Application(应用层)
15
- 1. 负责用例编排、事务边界、流程顺序控制。
16
- 2. 负责“加载聚合 -> 调用领域行为 -> 持久化 -> 后置动作”的主线流程。
17
- 3. 可做跨聚合协调,但禁止承载可复用的核心业务规则。
18
-
19
- ### 2.3 Domain(领域层)
20
- 1. 聚合根维护一致性边界内的业务不变量。
21
- 2. 领域实体/值对象暴露业务行为(如提交、确认、状态刷新、数量回写)。
22
- 3. 领域服务承载跨实体规则,保持无基础设施依赖。
23
- 4. 对外依赖通过领域接口抽象(如 `*DomainService`、`*Policy`、`*Repository`)。
24
-
25
- ### 2.4 Infrastructure(基础设施层)
26
- 1. 实现仓储、策略实现、事件发布器、外部系统客户端。
27
- 2. 承担实体映射与持久化细节,不写业务编排。
28
- 3. 将技术框架能力适配为领域可用接口实现。
29
-
30
- ## 3. 依赖方向与边界约束
31
- 1. 依赖方向必须稳定:Performance -> Application -> Domain <- Infrastructure。
32
- 2. Domain 禁止依赖 Spring 配置对象、三方 SDK、数据库/消息中间件 API。
33
- 3. Application 禁止绕过领域接口直接依赖底层持久化细节。
34
- 4. Infrastructure 不得反向调用 Application 形成环依赖。
35
-
36
- ## 4. 聚合设计经验
37
- 1. 聚合根只维护本聚合状态,不跨聚合直接改写对方对象。
38
- 2. 聚合行为命名必须体现业务语义(如 `submit`、`confirm`、`ensureCanEdit`),避免 `doXxx`。
39
- 3. 聚合内校验前置:关键写操作前统一执行可编辑性、状态合法性和明细合法性校验。
40
- 4. 状态流转规则优先封装到枚举/值对象,避免散落的状态码判断。
41
- 5. 聚合字段保持业务最小集,查询条件对象与聚合对象分离。
42
-
43
- ## 5. 应用服务编排经验
44
- 1. 应用层方法先做轻量参数保护,再加载聚合,最后调用领域行为。
45
- 2. 提交、确认、删除等写操作必须加事务,防止主子表或多仓储更新不一致。
46
- 3. 应用层日志至少记录:业务主键、关键状态、明细数量、执行结果。
47
- 4. 批量操作采用“逐条复用单条逻辑”优先,保证规则一致性。
48
-
49
- ## 6. 仓储与聚合持久化经验
50
- 1. 仓储接口定义在 Domain,实现在 Infrastructure。
51
- 2. 主表与明细作为聚合整体持久化,提供 `saveAggregate/updateAggregate` 语义接口。
52
- 3. 仓储实现负责“主表落库 + 明细绑定主键 + 明细落库”,应用层不拼装 SQL。
53
- 4. 查询场景按职责拆分:`findById`、`findByNumber`、`findByIdOrNo` 等语义化接口。
54
- 5. Converter 统一负责领域对象与持久化对象转换,禁止在应用层手写大量字段搬运。
55
-
56
- ## 7. 策略与工厂落地经验
57
- 1. 多租户/多工厂差异规则统一抽象为 `Policy/Strategy` 接口。
58
- 2. 应用层使用工厂解析策略,先匹配显式配置,再匹配租户能力,最后默认兜底。
59
- 3. 默认策略必须存在,且行为可预期。
60
- 4. 策略实现只关注规则差异,不复制主流程。
61
-
62
- ## 8. 适配器与防腐层经验
63
- 1. 领域接口与已有应用服务模型不一致时,使用应用层 Adapter 进行桥接转换。
64
- 2. 适配器职责只做转换与转调,不承载业务决策。
65
- 3. 外部返回结果判断必须绑定业务语义,禁止笼统“成功/失败兜底”。
66
-
67
- ## 9. 跨服务编排约束(项目级)
68
- 1. 原子服务(DDD 主栈)只处理本域逻辑,不直接编排外部微服务调用。
69
- 2. 跨服务联动统一放聚合层编排(Facade 层)处理。
70
- 3. 原子服务只负责状态回写、领域规则执行和本域数据一致性。
71
-
72
- ## 10. 领域事件与一致性经验
73
- 1. 领域事件接口定义在 Domain,发布实现放 Infrastructure。
74
- 2. 应用层在聚合状态稳定后触发事件发布,避免中间态事件外泄。
75
- 3. 事件发布失败策略需明确:重试、补偿或降级日志,不能静默吞掉。
76
-
77
- ## 11. 校验、异常与日志规范
78
- 1. 参数校验保持最小必要原则,避免重复校验链。
79
- 2. 业务异常信息必须可读并包含关键上下文。
80
- 3. 关键分支、状态变更、异常场景必须有中文日志。
81
- 4. 禁止在通用兜底里吞异常后继续成功返回。
82
-
83
- ## 12. 测试与回归要求
84
- 1. 领域层:聚合行为与状态流转必须有单元测试。
85
- 2. 基础设施层:仓储聚合保存、更新、删除要有集成测试。
86
- 3. 接口层:关键 API 场景要有集成测试覆盖。
87
- 4. 每次重构至少保证“新增/编辑/提交/删除”主链路可回归。
88
-
89
- ## 13. 反模式清单(必须规避)
90
- 1. 在 Controller 或 Mapper 层写核心业务规则。
91
- 2. 领域对象直接依赖 Spring 或外部服务 SDK。
92
- 3. 应用层出现大量状态码分支,领域对象退化为贫血模型。
93
- 4. 仓储只存主表不处理聚合明细,导致一致性缺口。
94
- 5. 没有默认策略实现,新增租户时直接运行失败。
95
- 6. 跨服务调用下沉到原子服务,破坏边界与可测试性。
96
-
97
- ## 14. 交付前 DDD 自检清单
98
- 1. 本次规则是否真正沉淀在 Domain。
99
- 2. 是否存在跨层越权调用。
100
- 3. 聚合保存是否覆盖主表与明细一致性。
101
- 4. 策略扩展是否满足“新增实现类即可扩展”。
102
- 5. 是否补齐关键测试与中文日志。
103
- 6. 是否将跨服务编排留在聚合层处理。
1
+ # DDD 架构约束(项目实战总结版)
2
+
3
+ ## 1. 目标与适用边界
4
+ 1. 本规范用于业务规则复杂、状态流转明确、需要长期演进的模块。
5
+ 2. 以“领域规则内聚、技术细节外置、跨服务编排上收”为核心目标。
6
+ 3. 纯 CRUD 且规则稳定场景优先使用传统三层,不强行 DDD 化。
7
+
8
+ ## 2. 分层模型与职责
9
+ ### 2.1 Performance(接口层)
10
+ 1. 只负责请求接收、参数校验、响应组装。
11
+ 2. 禁止在 Controller 写领域规则和状态流转。
12
+ 3. 对外 DTO 只表达接口语义,不泄露领域内部对象结构。
13
+
14
+ ### 2.2 Application(应用层)
15
+ 1. 负责用例编排、事务边界、流程顺序控制。
16
+ 2. 负责“加载聚合 -> 调用领域行为 -> 持久化 -> 后置动作”的主线流程。
17
+ 3. 可做跨聚合协调,但禁止承载可复用的核心业务规则。
18
+
19
+ ### 2.3 Domain(领域层)
20
+ 1. 聚合根维护一致性边界内的业务不变量。
21
+ 2. 领域实体/值对象暴露业务行为(如提交、确认、状态刷新、数量回写)。
22
+ 3. 领域服务承载跨实体规则,保持无基础设施依赖。
23
+ 4. 对外依赖通过领域接口抽象(如 `*DomainService`、`*Policy`、`*Repository`)。
24
+
25
+ ### 2.4 Infrastructure(基础设施层)
26
+ 1. 实现仓储、策略实现、事件发布器、外部系统客户端。
27
+ 2. 承担实体映射与持久化细节,不写业务编排。
28
+ 3. 将技术框架能力适配为领域可用接口实现。
29
+
30
+ ## 3. 依赖方向与边界约束
31
+ 1. 依赖方向必须稳定:Performance -> Application -> Domain <- Infrastructure。
32
+ 2. Domain 禁止依赖 Spring 配置对象、三方 SDK、数据库/消息中间件 API。
33
+ 3. Application 禁止绕过领域接口直接依赖底层持久化细节。
34
+ 4. Infrastructure 不得反向调用 Application 形成环依赖。
35
+
36
+ ## 4. 聚合设计经验
37
+ 1. 聚合根只维护本聚合状态,不跨聚合直接改写对方对象。
38
+ 2. 聚合行为命名必须体现业务语义(如 `submit`、`confirm`、`ensureCanEdit`),避免 `doXxx`。
39
+ 3. 聚合内校验前置:关键写操作前统一执行可编辑性、状态合法性和明细合法性校验。
40
+ 4. 状态流转规则优先封装到枚举/值对象,避免散落的状态码判断。
41
+ 5. 聚合字段保持业务最小集,查询条件对象与聚合对象分离。
42
+
43
+ ## 5. 应用服务编排经验
44
+ 1. 应用层方法先做轻量参数保护,再加载聚合,最后调用领域行为。
45
+ 2. 提交、确认、删除等写操作必须加事务,防止主子表或多仓储更新不一致。
46
+ 3. 应用层日志至少记录:业务主键、关键状态、明细数量、执行结果。
47
+ 4. 批量操作采用“逐条复用单条逻辑”优先,保证规则一致性。
48
+
49
+ ## 6. 仓储与聚合持久化经验
50
+ 1. 仓储接口定义在 Domain,实现在 Infrastructure。
51
+ 2. 主表与明细作为聚合整体持久化,提供 `saveAggregate/updateAggregate` 语义接口。
52
+ 3. 仓储实现负责“主表落库 + 明细绑定主键 + 明细落库”,应用层不拼装 SQL。
53
+ 4. 查询场景按职责拆分:`findById`、`findByNumber`、`findByIdOrNo` 等语义化接口。
54
+ 5. Converter 统一负责领域对象与持久化对象转换,禁止在应用层手写大量字段搬运。
55
+
56
+ ## 7. 策略与工厂落地经验
57
+ 1. 多租户/多工厂差异规则统一抽象为 `Policy/Strategy` 接口。
58
+ 2. 应用层使用工厂解析策略,先匹配显式配置,再匹配租户能力,最后默认兜底。
59
+ 3. 默认策略必须存在,且行为可预期。
60
+ 4. 策略实现只关注规则差异,不复制主流程。
61
+
62
+ ## 8. 适配器与防腐层经验
63
+ 1. 领域接口与已有应用服务模型不一致时,使用应用层 Adapter 进行桥接转换。
64
+ 2. 适配器职责只做转换与转调,不承载业务决策。
65
+ 3. 外部返回结果判断必须绑定业务语义,禁止笼统“成功/失败兜底”。
66
+
67
+ ## 9. 跨服务编排约束(项目级)
68
+ 1. 原子服务(DDD 主栈)只处理本域逻辑,不直接编排外部微服务调用。
69
+ 2. 跨服务联动统一放聚合层编排(Facade 层)处理。
70
+ 3. 原子服务只负责状态回写、领域规则执行和本域数据一致性。
71
+
72
+ ## 10. 领域事件与一致性经验
73
+ 1. 领域事件接口定义在 Domain,发布实现放 Infrastructure。
74
+ 2. 应用层在聚合状态稳定后触发事件发布,避免中间态事件外泄。
75
+ 3. 事件发布失败策略需明确:重试、补偿或降级日志,不能静默吞掉。
76
+
77
+ ## 11. 校验、异常与日志规范
78
+ 1. 参数校验保持最小必要原则,避免重复校验链。
79
+ 2. 业务异常信息必须可读并包含关键上下文。
80
+ 3. 关键分支、状态变更、异常场景必须有中文日志。
81
+ 4. 禁止在通用兜底里吞异常后继续成功返回。
82
+
83
+ ## 12. 测试与回归要求
84
+ 1. 领域层:聚合行为与状态流转必须有单元测试。
85
+ 2. 基础设施层:仓储聚合保存、更新、删除要有集成测试。
86
+ 3. 接口层:关键 API 场景要有集成测试覆盖。
87
+ 4. 每次重构至少保证“新增/编辑/提交/删除”主链路可回归。
88
+
89
+ ## 13. 反模式清单(必须规避)
90
+ 1. 在 Controller 或 Mapper 层写核心业务规则。
91
+ 2. 领域对象直接依赖 Spring 或外部服务 SDK。
92
+ 3. 应用层出现大量状态码分支,领域对象退化为贫血模型。
93
+ 4. 仓储只存主表不处理聚合明细,导致一致性缺口。
94
+ 5. 没有默认策略实现,新增租户时直接运行失败。
95
+ 6. 跨服务调用下沉到原子服务,破坏边界与可测试性。
96
+
97
+ ## 14. 交付前 DDD 自检清单
98
+ 1. 本次规则是否真正沉淀在 Domain。
99
+ 2. 是否存在跨层越权调用。
100
+ 3. 聚合保存是否覆盖主表与明细一致性。
101
+ 4. 策略扩展是否满足“新增实现类即可扩展”。
102
+ 5. 是否补齐关键测试与中文日志。
103
+ 6. 是否将跨服务编排留在聚合层处理。