create-yss-spec 2.1.0 → 2.1.2

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 (278) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/src/cli.js +2 -30
  4. package/src/template-hash.js +44 -0
  5. package/template/.agents/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  6. package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +4 -2
  7. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  8. package/template/.agents/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  9. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  10. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  11. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  12. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  13. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +28 -0
  14. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  15. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  16. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +2 -0
  17. package/template/.agents/skills/yss-router/SKILL.md +4 -0
  18. package/template/.agents/skills/yss-router/references/router-contract.yaml +48 -2
  19. package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +2 -0
  20. package/template/.agents/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  21. package/template/.claude/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  22. package/template/.claude/skills/implementation-repo-onboarding/SKILL.md +4 -2
  23. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  24. package/template/.claude/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  25. package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  26. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  27. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  28. package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  29. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +28 -0
  30. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  31. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  32. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +2 -0
  33. package/template/.claude/skills/yss-router/SKILL.md +4 -0
  34. package/template/.claude/skills/yss-router/references/router-contract.yaml +48 -2
  35. package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +2 -0
  36. package/template/.claude/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  37. package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  38. package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +4 -2
  39. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  40. package/template/.codex/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  41. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  42. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  43. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  44. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  45. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +28 -0
  46. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  47. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  48. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +2 -0
  49. package/template/.codex/skills/yss-router/SKILL.md +4 -0
  50. package/template/.codex/skills/yss-router/references/router-contract.yaml +48 -2
  51. package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +2 -0
  52. package/template/.codex/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  53. package/template/.hermes/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  54. package/template/.hermes/skills/implementation-repo-onboarding/SKILL.md +4 -2
  55. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  56. package/template/.hermes/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  57. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  58. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  59. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  60. package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  61. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +28 -0
  62. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  63. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  64. package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +2 -0
  65. package/template/.hermes/skills/yss-router/SKILL.md +4 -0
  66. package/template/.hermes/skills/yss-router/references/router-contract.yaml +48 -2
  67. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +2 -0
  68. package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  69. package/template/.pi/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  70. package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +4 -2
  71. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  72. package/template/.pi/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  73. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  74. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  75. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  76. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  77. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +28 -0
  78. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  79. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  80. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +2 -0
  81. package/template/.pi/skills/yss-router/SKILL.md +4 -0
  82. package/template/.pi/skills/yss-router/references/router-contract.yaml +48 -2
  83. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +2 -0
  84. package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  85. package/template/.qoder/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  86. package/template/.qoder/skills/implementation-repo-onboarding/SKILL.md +4 -2
  87. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  88. package/template/.qoder/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  89. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  90. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  91. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  92. package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  93. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +28 -0
  94. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  95. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  96. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +2 -0
  97. package/template/.qoder/skills/yss-router/SKILL.md +4 -0
  98. package/template/.qoder/skills/yss-router/references/router-contract.yaml +48 -2
  99. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +2 -0
  100. package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  101. package/template/.trae/skills/cross-repo-implementation-routing/SKILL.md +4 -3
  102. package/template/.trae/skills/implementation-repo-onboarding/SKILL.md +4 -2
  103. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
  104. package/template/.trae/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  105. package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
  106. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
  107. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
  108. package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
  109. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +28 -0
  110. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
  111. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +9 -0
  112. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +2 -0
  113. package/template/.trae/skills/yss-router/SKILL.md +4 -0
  114. package/template/.trae/skills/yss-router/references/router-contract.yaml +48 -2
  115. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +2 -0
  116. package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +1 -1
  117. package/template/AGENTS.md +12 -8
  118. package/template/docs/architecture/templates/engineering-baseline-review-template.md +14 -0
  119. package/template/docs/process/implementation-repo-integration.md +17 -0
  120. package/template/docs/process/lifecycle-artifact-map.md +3 -3
  121. package/template/docs/templates/build-architecture-checklist-template.md +7 -1
  122. package/template/docs/templates/cross-repo-slice-template.md +2 -0
  123. package/template/docs/templates/implementation-repo-registry-template.md +14 -0
  124. package/template/docs/templates/implementation-routing-template.md +35 -6
  125. package/template/docs/user-guide//344/272/247/345/223/201/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201.md +4 -3
  126. package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +10 -2
  127. package/template/scripts/implementation-path-policy.rb +50 -0
  128. package/template/scripts/sync-skills +5 -0
  129. package/template/scripts/update-skill-lock +7 -1
  130. package/template/scripts/verify-implementation-path-scenarios +43 -0
  131. package/template/scripts/verify-lifecycle-scenarios +18 -0
  132. package/template/scripts/verify-matt-yss-integration-scenarios +1 -1
  133. package/template/scripts/verify-prototype-backend-scaffold-scenarios +239 -0
  134. package/template/scripts/verify-scaffold-generator-scenarios +438 -0
  135. package/template/scripts/verify-template +11 -0
  136. package/template/scripts/verify-yss-router-scenarios +76 -23
  137. package/template/skills-lock.json +6 -6
  138. package/template.snapshot.json +4 -4
  139. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  140. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  141. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  142. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  143. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  144. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  145. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  146. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  147. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  148. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  149. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  150. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  151. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  152. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  153. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  154. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  155. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  156. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  157. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  158. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
  159. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  160. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  161. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  162. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  163. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  164. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  165. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  166. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  167. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  168. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  169. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  170. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  171. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  172. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  173. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  174. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  175. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  176. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  177. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  178. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
  179. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  180. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  181. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  182. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  183. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  184. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  185. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  186. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  187. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  188. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  189. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  190. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  191. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  192. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  193. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  194. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  195. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  196. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  197. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  198. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
  199. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  200. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  201. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  202. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  203. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  204. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  205. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  206. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  207. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  208. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  209. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  210. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  211. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  212. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  213. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  214. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  215. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  216. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  217. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  218. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
  219. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  220. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  221. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  222. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  223. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  224. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  225. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  226. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  227. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  228. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  229. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  230. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  231. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  232. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  233. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  234. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  235. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  236. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  237. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  238. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
  239. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  240. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  241. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  242. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  243. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  244. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  245. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  246. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  247. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  248. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  249. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  250. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  251. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  252. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  253. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  254. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  255. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  256. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  257. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  258. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
  259. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
  260. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
  261. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
  262. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
  263. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
  264. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
  265. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
  266. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
  267. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
  268. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
  269. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
  270. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
  271. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
  272. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
  273. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
  274. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
  275. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
  276. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
  277. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
  278. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
@@ -0,0 +1,239 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "pathname"
5
+ require "yaml"
6
+
7
+ ROOT = Pathname.new(__dir__).join("..").realpath
8
+
9
+ failures = []
10
+
11
+ def require_marker(failures, path, marker)
12
+ body = ROOT.join(path).read
13
+ failures << "#{path} 缺少约束标记: #{marker}" unless body.include?(marker)
14
+ end
15
+
16
+ def route_after_prototype(facts)
17
+ return {"status" => "not-applicable", "steps" => []} unless facts.fetch(:backend_impact)
18
+
19
+ if facts.fetch(:ui_impact) && !facts.fetch(:prototype_confirmation)
20
+ return {"status" => "blocked", "reason" => "prototype-confirmation-required", "steps" => []}
21
+ end
22
+
23
+ steps = ["engineering-baseline"]
24
+ case facts.fetch(:scaffold_status)
25
+ when "required"
26
+ return {"status" => "blocked", "reason" => "scaffold-contract-required", "steps" => []} unless facts.fetch(:scaffold_contract_approved)
27
+ steps.concat(%w[yss-router-scaffold-contract lifecycle-approve-scaffold-contract yss-ddd-scaffold-generator yss-backend-scaffold-parent yss-router-contract-recompile])
28
+ when "existing", "initialized"
29
+ steps.concat(%w[yss-backend-scaffold-parent yss-router-contract-recompile])
30
+ else
31
+ return {"status" => "blocked", "reason" => "scaffold-status-required", "steps" => []}
32
+ end
33
+ {"status" => "ready-for-contract-review", "steps" => steps}
34
+ end
35
+
36
+ def generated_code_decision(facts)
37
+ return "blocked" unless facts.fetch(:contract_approved)
38
+ return "blocked" unless facts.fetch(:contract_persisted)
39
+ return "blocked" unless facts.fetch(:contract_current)
40
+ return "blocked" unless facts.fetch(:yss_skill_selected)
41
+ return "blocked" unless facts.fetch(:execution_result_bound)
42
+ return "blocked" if facts.fetch(:behavioral_impact) && facts.fetch(:tdd_mode) != "behavior-tdd"
43
+ return "blocked" if facts.fetch(:tdd_mode) == "controlled-generation" && facts.fetch(:business_behavior_in_generator)
44
+
45
+ "allowed"
46
+ end
47
+
48
+ def scaffold_generation_decision(facts)
49
+ return "blocked" if facts.fetch(:with_example)
50
+ return "blocked" if facts.fetch(:nonempty_target) && facts.fetch(:force) && !facts.fetch(:overwrite_approval)
51
+
52
+ "allowed"
53
+ end
54
+
55
+ contract_path = ROOT.join(".agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml")
56
+ contract = YAML.safe_load(contract_path.read, permitted_classes: [], aliases: false)
57
+ router_contract = YAML.safe_load(
58
+ ROOT.join(".agents/skills/yss-router/references/router-contract.yaml").read,
59
+ permitted_classes: [], aliases: false
60
+ )
61
+
62
+ backend_scaffold = contract["backend_scaffold"]
63
+ failures << "编排契约缺少 backend_scaffold" unless backend_scaffold.is_a?(Hash)
64
+ if backend_scaffold.is_a?(Hash)
65
+ scaffold_schema = backend_scaffold.fetch("contract_schema", {})
66
+ failures << "脚手架合同必须声明结构化 schema" unless scaffold_schema.is_a?(Hash)
67
+ if scaffold_schema.is_a?(Hash)
68
+ failures << "生命周期脚手架合同 schema 版本不受支持" unless scaffold_schema["schema_version"] == 1
69
+ failures << "生命周期脚手架合同 schema 未分离 Router 与生命周期状态" unless scaffold_schema.dig("status_by_owner", "router").to_a.include?("ready-for-lifecycle-review") && scaffold_schema.dig("status_by_owner", "lifecycle").to_a.include?("approved")
70
+ end
71
+ %w[contract_id contract_version slice_id status router_draft_ref lifecycle_approval_ref persisted_ref current_version implementation_repository backend_repository scaffold_status target_git_url_or_output_dir allowed_write_paths expected_evidence_files verification_commands approval work_unit overwrite_policy].each do |required|
72
+ failures << "脚手架合同 schema 缺少 #{required}" unless scaffold_schema.fetch("required", []).include?(required)
73
+ end
74
+ %w[approval_ref approver persisted_ref current_version].each do |required|
75
+ failures << "脚手架合同审批记录缺少 #{required}" unless scaffold_schema.dig("approval", "required").to_a.include?(required)
76
+ end
77
+ failures << "backend_scaffold 必须声明 prototype_confirmation 后置顺序" unless backend_scaffold.dig("sequence", "after").include?("prototype_confirmation")
78
+ failures << "backend_scaffold 必须先于业务代码生成" unless backend_scaffold.dig("sequence", "before").include?("business_code_generation")
79
+ failures << "required 脚手架必须使用 yss-ddd-scaffold-generator" unless backend_scaffold["generator_skill"] == "yss-ddd-scaffold-generator"
80
+ failures << "脚手架生成必须使用 controlled-generation" unless backend_scaffold["tdd_mode"] == "controlled-generation"
81
+ %w[scaffold_contract_file scaffold_contract_draft scaffold_contract_approved scaffold_contract_persisted scaffold_contract_current_version].each do |required|
82
+ failures << "脚手架生成前缺少合同条件 #{required}" unless backend_scaffold.fetch("required_inputs", []).include?(required)
83
+ end
84
+ %w[yss-backend-scaffold-parent yss-router].each do |skill|
85
+ failures << "脚手架后置流程缺少 #{skill}" unless backend_scaffold.fetch("after_generation", []).include?(skill)
86
+ end
87
+ %w[business_rules state_machine permission transaction complex_query error_mapping user_visible_behavior].each do |forbidden|
88
+ failures << "脚手架生成禁止项缺少 #{forbidden}" unless backend_scaffold.fetch("forbidden_generation", []).include?(forbidden)
89
+ end
90
+ failures << "脚手架必须关闭 --with-example" unless backend_scaffold.dig("generation_options", "with_example") == false
91
+ failures << "脚手架覆盖写入必须默认阻断" unless backend_scaffold.dig("generation_options", "force") == "forbidden-by-default"
92
+ %w[contract_file router_draft_ref persisted_ref overwrite_scope rollback_ref].each do |required|
93
+ failures << "脚手架覆盖写入条件缺少 #{required}" unless backend_scaffold.dig("generation_options", "force_requires").to_a.include?(required)
94
+ end
95
+ failures << "脚手架必须留存生成元数据清单" unless backend_scaffold.fetch("required_evidence", []).include?("scaffold_generation_manifest")
96
+ %w[business_example_crud unapproved_force_overwrite].each do |forbidden|
97
+ failures << "脚手架生成禁止项缺少 #{forbidden}" unless backend_scaffold.fetch("forbidden_generation", []).include?(forbidden)
98
+ end
99
+ failures << "脚手架验证必须执行真实命令" unless backend_scaffold.dig("verification", "requires_execution") == true
100
+ failures << "脚手架验证必须记录命令结果" unless backend_scaffold.dig("verification", "evidence").to_a.include?("exit_code")
101
+ failures << "脚手架验证必须统一记录 duration_ms" unless backend_scaffold.dig("verification", "evidence").to_a.include?("duration_ms")
102
+ failures << "脚手架打印命令不得冒充验证证据" unless backend_scaffold.dig("verification", "printed_commands_are_not_evidence") == true
103
+ end
104
+
105
+ generated_policy = contract["post_scaffold_generated_code_policy"]
106
+ failures << "编排契约缺少 post_scaffold_generated_code_policy" unless generated_policy.is_a?(Hash)
107
+ if generated_policy.is_a?(Hash)
108
+ failures << "generated_code_policy 必须明确只约束脚手架后的代码" unless generated_policy["scope"] == "post_scaffold_generated_code"
109
+ %w[approved_persisted_current_slice_contract primary_yss_skill dependency_closure allowed_write_paths expected_evidence_files yss_skill_execution_result].each do |required|
110
+ failures << "后续代码生成缺少强制条件 #{required}" unless generated_policy.fetch("required", []).include?(required)
111
+ end
112
+ failures << "后续业务代码生成必须使用 behavior-tdd" unless generated_policy.dig("business_behavior", "tdd_mode") == "behavior-tdd"
113
+ failures << "未满足生成约束时必须阻断" unless generated_policy["on_violation"] == "blocked"
114
+ failures << "脚手架工程结构不得落入脚手架后的生成策略" if generated_policy.dig("controlled_generation", "allowed_for").to_a.include?("project_scaffold")
115
+ end
116
+
117
+ scaffold_policy = contract["scaffold_work_unit_policy"]
118
+ failures << "编排契约缺少 scaffold_work_unit_policy" unless scaffold_policy.is_a?(Hash)
119
+ if scaffold_policy.is_a?(Hash)
120
+ %w[approved_scaffold_contract primary_yss_skill allowed_write_paths expected_evidence_files verification_commands].each do |required|
121
+ failures << "脚手架工作单元缺少强制条件 #{required}" unless scaffold_policy.fetch("required", []).include?(required)
122
+ end
123
+ failures << "脚手架工作单元违反约束时必须阻断" unless scaffold_policy["on_violation"] == "blocked"
124
+ end
125
+
126
+ ready_requirements = contract.dig("ready_for_agent", "required") || []
127
+ failures << "ready-for-agent 缺少 backend_scaffold_policy_satisfied" unless ready_requirements.include?("backend_scaffold_policy_satisfied")
128
+
129
+ router_generator = router_contract.dig("dependency_closure", "yss-ddd-scaffold-generator") || {}
130
+ failures << "Router 未把 yss-backend-scaffold-parent 绑定到脚手架" unless router_generator.fetch("always", []).include?("yss-backend-scaffold-parent")
131
+ failures << "Router 未把 alibaba-java-code-style 绑定到脚手架" unless router_generator.fetch("always", []).include?("alibaba-java-code-style")
132
+ failures << "Router 未声明脚手架完成后的完整重路由" unless router_contract.fetch("full_reroute_triggers", []).include?("scaffold-baseline-drift")
133
+ router_scaffold_schema = router_contract.fetch("scaffold_contract_schema", {})
134
+ failures << "Router 未声明脚手架合同 schema" unless router_scaffold_schema.is_a?(Hash)
135
+ if router_scaffold_schema.is_a?(Hash)
136
+ failures << "Router 脚手架合同 schema 版本不受支持" unless router_scaffold_schema["schema_version"] == 1
137
+ failures << "Router 脚手架合同 schema 必须由 yss-router 编译" unless router_scaffold_schema["compiled_by"] == "yss-router"
138
+ failures << "Router 脚手架合同 schema 必须由生命周期批准" unless router_scaffold_schema["approved_by"] == "yss-product-lifecycle"
139
+ failures << "Router 脚手架合同必须按 owner 分离状态" unless router_scaffold_schema.dig("status_by_owner", "router").to_a.include?("ready-for-lifecycle-review") && router_scaffold_schema.dig("status_by_owner", "lifecycle").to_a.include?("approved")
140
+ failures << "Router 不得自行声明 approved 状态" if router_scaffold_schema.dig("status_by_owner", "router").to_a.include?("approved")
141
+ %w[contract_id contract_version slice_id status router_draft_ref lifecycle_approval_ref persisted_ref current_version allowed_write_paths expected_evidence_files verification_commands approval work_unit overwrite_policy].each do |required|
142
+ failures << "Router 脚手架合同 schema 缺少 #{required}" unless router_scaffold_schema.fetch("required", []).include?(required)
143
+ end
144
+ failures << "Router 脚手架合同 schema 未要求真实验证执行" unless router_scaffold_schema.dig("verification", "requires_execution") == true
145
+ failures << "Router 脚手架合同 schema 未统一 duration_ms" unless router_scaffold_schema.dig("verification", "evidence").to_a.include?("duration_ms")
146
+ end
147
+
148
+ complete_facts = {
149
+ backend_impact: true, ui_impact: true, prototype_confirmation: true, scaffold_status: "required", scaffold_contract_approved: true
150
+ }
151
+ complete_route = route_after_prototype(complete_facts)
152
+ expected_steps = %w[engineering-baseline yss-router-scaffold-contract lifecycle-approve-scaffold-contract yss-ddd-scaffold-generator yss-backend-scaffold-parent yss-router-contract-recompile]
153
+ failures << "原型完成后的后端路由顺序不完整" unless complete_route == {"status" => "ready-for-contract-review", "steps" => expected_steps}
154
+
155
+ blocked_route = route_after_prototype(complete_facts.merge(prototype_confirmation: false))
156
+ failures << "原型未确认时错误允许后端脚手架" unless blocked_route["status"] == "blocked" && blocked_route["reason"] == "prototype-confirmation-required"
157
+
158
+ missing_scaffold_contract = route_after_prototype(complete_facts.merge(scaffold_contract_approved: false))
159
+ failures << "脚手架受控生成缺少批准合同仍被允许" unless missing_scaffold_contract["status"] == "blocked" && missing_scaffold_contract["reason"] == "scaffold-contract-required"
160
+
161
+ existing_route = route_after_prototype(complete_facts.merge(scaffold_status: "existing"))
162
+ failures << "existing 工程不应重复全量脚手架" if existing_route.fetch("steps").include?("yss-ddd-scaffold-generator")
163
+ failures << "existing 工程仍需基线校验和 Router" unless existing_route.fetch("steps") == %w[engineering-baseline yss-backend-scaffold-parent yss-router-contract-recompile]
164
+
165
+ initialized_route = route_after_prototype(complete_facts.merge(scaffold_status: "initialized"))
166
+ failures << "initialized 工程不应重复全量脚手架" if initialized_route.fetch("steps").include?("yss-ddd-scaffold-generator")
167
+ failures << "initialized 工程仍需基线校验和 Router" unless initialized_route.fetch("steps") == %w[engineering-baseline yss-backend-scaffold-parent yss-router-contract-recompile]
168
+
169
+ pressure_cases = {
170
+ "原型完成但无批准合同" => [
171
+ {contract_approved: false, contract_persisted: false, contract_current: false, yss_skill_selected: true, execution_result_bound: false, behavioral_impact: true, tdd_mode: "behavior-tdd", business_behavior_in_generator: false},
172
+ "blocked"
173
+ ],
174
+ "脚手架把事务和权限一起生成" => [
175
+ {contract_approved: true, contract_persisted: true, contract_current: true, yss_skill_selected: true, execution_result_bound: true, behavioral_impact: true, tdd_mode: "controlled-generation", business_behavior_in_generator: true},
176
+ "blocked"
177
+ ],
178
+ "批准合同下的业务行为切片" => [
179
+ {contract_approved: true, contract_persisted: true, contract_current: true, yss_skill_selected: true, execution_result_bound: true, behavioral_impact: true, tdd_mode: "behavior-tdd", business_behavior_in_generator: false},
180
+ "allowed"
181
+ ]
182
+ }
183
+ pressure_cases.each do |name, (facts, expected)|
184
+ actual = generated_code_decision(facts)
185
+ failures << "压力场景 #{name} 期望 #{expected},实际 #{actual}" unless actual == expected
186
+ end
187
+
188
+ scaffold_pressure_cases = {
189
+ "--with-example 伪装成样板" => [{with_example: true, nonempty_target: false, force: false, overwrite_approval: false}, "blocked"],
190
+ "非空目录无覆盖批准" => [{with_example: false, nonempty_target: true, force: true, overwrite_approval: false}, "blocked"],
191
+ "空目录纯骨架" => [{with_example: false, nonempty_target: false, force: false, overwrite_approval: false}, "allowed"]
192
+ }
193
+ scaffold_pressure_cases.each do |name, (facts, expected)|
194
+ actual = scaffold_generation_decision(facts)
195
+ failures << "脚手架压力场景 #{name} 期望 #{expected},实际 #{actual}" unless actual == expected
196
+ end
197
+
198
+ required_markers = {
199
+ ".agents/skills/yss-product-lifecycle/SKILL.md" => [
200
+ "原型确认 → 后端脚手架",
201
+ "yss-ddd-scaffold-generator",
202
+ "所有后续生成的后端代码",
203
+ "controlled-generation",
204
+ "behavior-tdd",
205
+ "--with-example",
206
+ "--force"
207
+ ],
208
+ ".agents/skills/yss-product-lifecycle/references/orchestration.md" => [
209
+ "prototype_confirmation",
210
+ "脚手架生成",
211
+ "不得把业务规则",
212
+ "YSS Skill Execution Result"
213
+ ],
214
+ "AGENTS.md" => [
215
+ "原型确认后",
216
+ "所有后续生成的后端代码",
217
+ "yss-ddd-scaffold-generator"
218
+ ],
219
+ "docs/architecture/templates/engineering-baseline-review-template.md" => [
220
+ "prototype_confirmation",
221
+ "脚手架生成结果",
222
+ "禁止生成业务行为"
223
+ ],
224
+ "docs/templates/implementation-routing-template.md" => [
225
+ "原型确认后先完成后端脚手架",
226
+ "所有后续生成代码",
227
+ "backend_scaffold_policy_satisfied"
228
+ ]
229
+ }
230
+ required_markers.each do |path, markers|
231
+ markers.each { |marker| require_marker(failures, path, marker) }
232
+ end
233
+
234
+ if failures.empty?
235
+ puts "原型到后端脚手架及后续 YSS 代码生成压力场景验证通过"
236
+ else
237
+ warn failures.join("\n")
238
+ exit 1
239
+ end