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
@@ -19,6 +19,8 @@ owner: ai
19
19
  | 系统 / 数据架构设计 | | |
20
20
  | 风险 / 回滚约束 | `AGENTS.md` | |
21
21
  | Slice Implementation Contract | | 填写 contract_id / contract_version / 生命周期批准状态 |
22
+ | 后端脚手架策略 | `orchestration-contract.yaml` / `yss-ddd-scaffold-generator` | | backend `scaffold_status=required` 时填写结构化合同身份、批准/持久化引用、生成器输入、预期文件、实际 `./mvnw` 结果和后置 Router 重编译 |
23
+ | 工程项目路径策略 | `docs/process/implementation-repo-integration.md` / Router Contract | | Harness 内必须是 `apps/backend/<project>/` 或 `apps/frontend/<project>/`;`apps/backend/`、`apps/frontend/` 仅为容器,`app/backend/`、`app/frontend/` 及其子路径阻断 |
22
24
  | 垂直切片工作单元 | | |
23
25
  | YSS Skill Execution Result | | 每个 skill / work_unit 的结果文件引用 |
24
26
 
@@ -30,15 +32,18 @@ owner: ai
30
32
  | 后端切片必须回勾 `Backend Slice Implementation Contract`:required skills、允许写范围、禁止模式、证据文件、延期 seam 和验证命令完整 | implementation routing / 垂直切片 Ticket / `AGENTS.md` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 缺合同或合同不完整时暂停并记录替代方案 |
31
33
  | 统一合同版本:实现消费的 contract_id / contract_version 与生命周期批准并持久化的版本一致,Router 未自行批准合同或推进 `ready-for-agent` | Slice Implementation Contract / 生命周期证据 | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 版本不一致时将工作单元标记 `stale` 并暂停 build |
32
34
  | 合同子项闭环:Common、Frontend、Backend、Contract、Cross-repo 子合同按影响面填写,不适用项有原因 | Slice Implementation Contract | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 缺失适用子合同时回到 Router |
35
+ | 原型确认后的后端脚手架顺序:工程基线 → Router 脚手架合同 draft / 生命周期批准 → `yss-ddd-scaffold-generator` → `yss-backend-scaffold-parent` → Router 重编译;脚手架不得生成业务行为 | `yss-product-lifecycle` / `yss-ddd-scaffold-generator` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 顺序缺失、生成器混入业务行为或缺 Execution Result 时阻断 |
33
36
  | 写路径与证据:Execution Result 的 changed_files 均位于 allowed_write_paths,expected_evidence_files 已实际生成 | Slice Implementation Contract / YSS Skill Execution Result | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 路径越界或证据缺失标记 `violation` 并阻断 build |
34
37
  | TDD 模式:每个工作单元唯一选择 `behavior-tdd` 或 `controlled-generation`;生成器未承载状态、权限、业务过滤、事务、错误映射或用户可见交互 | Slice Implementation Contract / 垂直切片 Ticket / Execution Result | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 模式不匹配时拆分工作单元并完整重路由 |
35
- | 实际验证:Execution Result 包含实际命令、结果和执行时间;只列计划命令不构成 fresh verification | YSS Skill Execution Result | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 缺实际结果或时间时不得进入完成结论 |
38
+ | 所有后续生成代码:必须消费当前批准合同、主 YSS skill、依赖闭包、允许写路径、预期证据和 YSS Skill Execution Result;业务行为使用 `behavior-tdd` | `post_scaffold_generated_code_policy` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 缺任一条件或以时间压力豁免时阻断 build |
39
+ | 实际验证:Execution Result 包含实际命令、exit_code、`duration_ms`、stdout/stderr 引用和执行时间;只列计划命令或生成器打印不构成 fresh verification | YSS Skill Execution Result / `orchestration-contract.yaml` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 缺实际结果或时间时不得进入完成结论 |
36
40
  | 新影响与偏离:`new_impacts`、`deviations`、`drift`、`violation` 已核验并触发相应重路由、Architecture Re-check 或生命周期回退 | YSS Skill Execution Result / implementation routing | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 非空新影响使当前合同相关部分失效并暂停工作单元 |
37
41
  | Web Adapter / DTO:必须按 `yss-dto` 定义或复用 CMD / Query / VO / Result;不得在 Controller 内部类或非约定包临时定义主要 DTO,不得手工分页主要业务集合 | `yss-web-controller` / `yss-dto` / OpenAPI Freeze | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 命中时回到 Controller / DTO 设计 |
38
42
  | Application:负责用例编排、事务边界和跨聚合协调,不承载核心领域规则 | `yss-backend-scaffold-application` / 系统架构 | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 领域规则下沉 Domain,事务边界留在 Application |
39
43
  | Infrastructure:需要持久化的切片必须有 PO / Repository / Convertor / GatewayImpl;`InMemory*Gateway` 只能作为显式 `seam-deferred` | `yss-repository` / `yss-backend-scaffold-infrastructure` / 数据架构 | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 未补齐时不得声称生产持久化完成 |
40
44
  | POJO / Convertor:DTO / VO / CMD / Query / PO / Domain Model 样板代码默认使用 Lombok;对象转换默认使用 MapStruct,禁止 `BeanUtils.copyProperties`、反射拷贝和重复手写字段赋值 | `lombok` / `mapstruct` / `AGENTS.md` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 未加载 skill、缺注解处理器配置、缺 Convertor 或无例外说明时标记 `violation` |
41
45
  | 后端工程工具链:构建、测试、运行、OpenAPI 生成、CI 和 Release 命令必须使用项目根目录 `./mvnw ...`;裸 `mvn ...` 必须有受控例外记录 | `yss-ddd-scaffold-generator` / `yss-backend-scaffold-parent` / implementation routing | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 无例外记录时改为 `./mvnw ...`,否则不得进入完成 / 可合并结论 |
46
+ | 工程项目路径:每个 Harness 内项目必须有具体项目段,禁止直接写入容器根或单数 `app/...` | `docs/process/implementation-repo-integration.md` / implementation path validator | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 路径违规时停止 build,并回到实现路由 |
42
47
  | 文档语言:持久化生命周期文档、实施记录、审查报告、发布说明和 Git checkpoint 正文必须使用中文,英文 skill / 模板不得原样落地 | `AGENTS.md` / `yss-product-lifecycle` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 仅保留必要英文技术标识、命令和 metadata |
43
48
  | 高风险变更:认证 / 授权、SQL / DDL、迁移、加密、公共基础库 API 变更必须记录验证证据、责任人和回滚约束 | `AGENTS.md` | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | 缺验证证据或责任人时不得发布或合并 |
44
49
  | | | | `implemented` / `seam-deferred` / `drift` / `violation` / `not-applicable` | | |
@@ -90,6 +95,7 @@ owner: ai
90
95
  > 命中不等于必然失败;`SingleResult` / `PageResult`、`CMD` / `Query` / `VO` 是 `yss-dto` 合法产物。命中项必须说明是否复用了既有 DTO 体系、是否位于约定包路径、是否继承约定基类;无法解释或未回勾合同即为 `violation`。
91
96
 
92
97
  ```bash
98
+ scripts/verify-implementation-path-scenarios
93
99
  rg -n "class (SingleResult|MultiResult|PageResult|Result)<|public static class .*(Command|Cmd|Query|VO)|subList\\(|InMemory.*Gateway|implements .*Gateway|extends .*Repository|@TableName|Mappers\\.getMapper|BeanUtils\\.copyProperties|copyProperties\\(|new [A-Za-z0-9]+VO\\(|new [A-Za-z0-9]+DTO\\(" apps/backend
94
100
  rg -n "class .*(PO|DTO|VO|Cmd|Query)\\b|private final .* log =|LoggerFactory\\.getLogger|public .*(get|set)[A-Z]" apps/backend
95
101
  ```
@@ -37,6 +37,7 @@ owner: ai
37
37
  | backend_mr_pr | |
38
38
  | backend_ci | |
39
39
  | backend_verification | |
40
+ | backend_project_root | `apps/backend/<project>/` 或外部真实路径 |
40
41
  | backend_status | pending / ready / blocked / not-applicable |
41
42
 
42
43
  ## 4. Frontend
@@ -48,6 +49,7 @@ owner: ai
48
49
  | frontend_mr_pr | |
49
50
  | frontend_ci | |
50
51
  | frontend_verification | |
52
+ | frontend_project_root | `apps/frontend/<project>/` 或外部真实路径 |
51
53
  | frontend_status | pending / ready / blocked / not-applicable |
52
54
 
53
55
  ## 5. Fresh Verification
@@ -17,6 +17,11 @@ owner: ai
17
17
  | git_url | |
18
18
  | default_branch | |
19
19
  | local_worktree | |
20
+ | repository_scope | external-repository / harness-apps |
21
+ | project_type | backend / frontend / fullstack / other |
22
+ | project_name | |
23
+ | project_root | 外部仓库相对路径,或 `apps/backend/<project>/` / `apps/frontend/<project>/` |
24
+ | layout_policy | `harness-apps-multi-project` / `external-repository-native` |
20
25
  | scaffold_status | existing / required / initialized |
21
26
  | scaffold_skill | `yss-ddd-scaffold-generator` / `yss-frontend-scaffold-generator` / none |
22
27
  | scaffold_target_confirmed | 是 / 否 / 不适用 |
@@ -36,6 +41,15 @@ owner: ai
36
41
  | typecheck_command | | |
37
42
  | ci_pipeline | | |
38
43
 
44
+ Harness 内项目路径约束:`apps/backend/`、`apps/frontend/` 只能作为项目容器;工程必须位于具体的 `apps/backend/<project>/` 或 `apps/frontend/<project>/`。`app/backend/`、`app/frontend/` 及其子路径禁止登记或生成。外部实现仓库填写真实项目根路径,不使用本表的 Harness 占位路径。
45
+
46
+ ## 2.1 项目清单(同一 monorepo 可登记多个项目)
47
+
48
+ | project_name | project_type | project_root | test_command | build_command | rollback_point |
49
+ |---|---|---|---|---|---|
50
+ | project1 | backend / frontend | `apps/backend/project1/` 或 `apps/frontend/project1/` | | | |
51
+ | project2 | backend / frontend | `apps/backend/project2/` 或 `apps/frontend/project2/` | | | |
52
+
39
53
  ## 3. 契约与设计接入
40
54
 
41
55
  | 接入项 | 状态 | 证据 / 路径 | 缺口 |
@@ -21,6 +21,7 @@ owner: ai
21
21
  | Design Review | | | |
22
22
  | 实现仓库 / 实现位置 | | | |
23
23
  | 前后端工程存在性判定 | | | 记录 frontend / backend 是否已存在且可复用 |
24
+ | 工程路径策略 | | | Harness 内使用 `apps/backend/<project>/` / `apps/frontend/<project>/`;外部仓库记录真实项目根 |
24
25
  | `垂直切片 Ticket 状态` | | | ready / blocked / in-progress |
25
26
 
26
27
  ## 2. 实现前门禁
@@ -36,6 +37,10 @@ owner: ai
36
37
  | 受影响 frontend 工程已存在可复用,或已登记 `scaffold_status=required` 并确认外部脚手架目标 | 是 / 否 / 不适用 | |
37
38
  | 受影响 backend 工程已存在可复用,或已登记 `scaffold_status=required` 并确认外部脚手架目标 | 是 / 否 / 不适用 | |
38
39
  | 缺失工程时已路由到对应脚手架 skill | 是 / 否 / 不适用 | `yss-ddd-scaffold-generator` / `yss-frontend-scaffold-generator` |
40
+ | Harness 内项目根路径符合 `apps/<backend|frontend>/<project>/` | 是 / 否 / 不适用 | `apps/backend/`、`apps/frontend/` 仅为容器 |
41
+ | 未使用 `app/backend/`、`app/frontend/` 及其子路径 | 是 / 否 / 不适用 | 命中即阻断生成和实现 |
42
+ | 原型确认后先完成后端脚手架,再进入业务代码路由 | 是 / 否 / 不适用 | `backend_scaffold_policy_satisfied` |
43
+ | 后端脚手架合同字段完整且版本当前 | 是 / 否 / 不适用 | `contract_id`、`contract_version`、Router draft、生命周期批准、持久化引用、允许写路径、预期证据、验证命令 |
39
44
  | 后端构建 / 测试 / OpenAPI / CI 命令均使用项目根目录 `./mvnw ...`,或已记录受控例外 | 是 / 否 / 不适用 | 裸 `mvn ...` 默认为规范偏离 |
40
45
  | 持久化文档正文和章节标题已转换为中文,仅保留必要英文技术标识 / metadata | 是 / 否 | 英文 skill / 模板不得原样落地为交付文档 |
41
46
  | YSS skill 路由已完成 | 是 / 否 | |
@@ -79,6 +84,8 @@ owner: ai
79
84
  | 字段 | 内容 |
80
85
  |---|---|
81
86
  | impacted_areas | |
87
+ | implementation_path_policy | `harness-apps-multi-project` / `external-repository-native` |
88
+ | project_roots | Harness 内填写 `apps/backend/<project>/` / `apps/frontend/<project>/`;外部仓库填写真实项目根 |
82
89
  | required_skills | |
83
90
  | optional_skills | |
84
91
  | unavailable_skills | 写明 provider、fallback 和阻断结论;不得静默跳过 |
@@ -180,11 +187,13 @@ owner: ai
180
187
 
181
188
  ## 4. 外部实现仓库
182
189
 
183
- | repo_role | git_url | default_branch | working_branch | MR / PR | CI | test_command | build_command | 状态 |
184
- |---|---|---|---|---|---|---|---|---|
185
- | backend | | | | | | | | pending / ready / blocked / not-applicable |
186
- | frontend | | | | | | | | pending / ready / blocked / not-applicable |
187
- | other | | | | | | | | pending / ready / blocked / not-applicable |
190
+ > 当前仓库默认不承载运行时代码。若用户明确选择 Harness 内实现,项目根必须是 `apps/backend/<project>/` 或 `apps/frontend/<project>/`;`apps/backend/`、`apps/frontend/` 不能作为项目根,`app/backend/`、`app/frontend/` 及其子路径禁止使用。
191
+
192
+ | repo_role | project_root | git_url | default_branch | working_branch | MR / PR | CI | test_command | build_command | 状态 |
193
+ |---|---|---|---|---|---|---|---|---|---|
194
+ | backend | `apps/backend/<project>/` 或外部真实路径 | | | | | | | | pending / ready / blocked / not-applicable |
195
+ | frontend | `apps/frontend/<project>/` 或外部真实路径 | | | | | | | | pending / ready / blocked / not-applicable |
196
+ | other | 真实路径 | | | | | | | | pending / ready / blocked / not-applicable |
188
197
 
189
198
  说明:当前仓库默认作为 Harness / 研发管理仓库;前后端实现默认位于外部实现仓库。缺少实现仓库登记时,先使用 `implementation-repo-onboarding`,并按 `docs/templates/implementation-repo-registry-template.md` 补齐登记。
190
199
 
@@ -195,6 +204,8 @@ owner: ai
195
204
  | backend | 是 / 否 / 不适用 | existing / required / initialized / not-applicable | 是 / 否 / 不适用 | 复用现有 / 初始化 / 阻塞 | `yss-ddd-scaffold-generator` / none | | |
196
205
  | frontend | 是 / 否 / 不适用 | existing / required / initialized / not-applicable | 是 / 否 / 不适用 | 复用现有 / 初始化 / 阻塞 | `yss-frontend-scaffold-generator` / none | | |
197
206
 
207
+ 脚手架输出位置必须回指具体项目根:后端为 `apps/backend/<project>/`,前端为 `apps/frontend/<project>/`;不得把 `apps/backend/`、`apps/frontend/` 容器根或任何 `app/backend/`、`app/frontend/` 路径作为生成目标。
208
+
198
209
  ## 4.2 人工确认结论
199
210
 
200
211
  | 人工确认项 | 是否涉及 | 结论 | 证据 / 链接 | 补齐落点 |
@@ -203,6 +214,23 @@ owner: ai
203
214
  | 权限接入 / 认证 / 授权 | 是 / 否 | 通过 / 草案 / 阻断 / 不适用 | | |
204
215
  | 审计日志 | 是 / 否 | 通过 / 草案 / 阻断 / 不适用 | | |
205
216
 
217
+ ### 4.3 后端脚手架工作单元
218
+
219
+ 当 backend `scaffold_status=required` 时,先登记一个 `controlled-generation` 工作单元:`primary_skill=yss-ddd-scaffold-generator`,并在后续追加 `yss-backend-scaffold-parent` 基线校验和 `yss-router` 合同重编译。`existing` / `initialized` 不重复全量生成,但必须提供等价基线和 Wrapper 证据。
220
+
221
+ | 项 | 内容 |
222
+ |---|---|
223
+ | 前置 | `prototype_confirmation`、工程基线、实现仓库和脚手架目标已确认;Router 脚手架合同 draft 已经生命周期批准并持久化为结构化 JSON,生成器通过 `--contract-file` 消费 |
224
+ | 生成器 | `yss-ddd-scaffold-generator` |
225
+ | 模式 | `controlled-generation` |
226
+ | 允许生成 | Domain / Application / Infrastructure / Adapter / Bootstrap 目录骨架、POM、配置、Wrapper、Smart Doc 和非业务机械模板 |
227
+ | 禁止生成 | 业务规则、状态机、权限、事务、复杂查询、错误映射、业务字段和用户可见行为 |
228
+ | 生成选项 | 关闭 `--with-example`;非空目录 `--force` 默认阻断,覆盖范围、备份、回滚点和批准引用齐全后才能单独审查 |
229
+ | 验证 | 受控验证器实际执行项目根目录 `./mvnw validate`、`./mvnw test`、`./mvnw package`,逐条记录 `exit_code`、`duration_ms`、stdout/stderr 引用和执行时间;打印命令不算证据 |
230
+ | 后置 | `yss-backend-scaffold-parent`、`yss-router` 业务合同重编译、YSS Skill Execution Result |
231
+
232
+ 所有后续生成代码必须绑定当前批准且版本一致的 Slice Implementation Contract、主 YSS skill、依赖闭包、允许写路径、预期证据和 Execution Result。业务行为必须使用 `behavior-tdd`;缺任一条件即阻断,不得以脚手架成功或时间压力豁免。
233
+
206
234
  ## 5. TDD 与验证策略
207
235
 
208
236
  > 每个工作单元必须且只能选择 `behavior-tdd` 或 `controlled-generation`。领域规则、状态机、事务、复杂查询、权限 / 错误映射、页面交互和用户可见状态必须使用 `behavior-tdd`;`controlled-generation` 只用于机械脚手架、样板、冻结客户端和配置。
@@ -234,7 +262,7 @@ owner: ai
234
262
 
235
263
  ## 5.3 YSS Skill Execution Result 回填
236
264
 
237
- > 每个结果必须引用当前 `contract_id` / `contract_version` 和 `work_unit_id`。只列计划命令、缺实际结果或时间戳,不构成 fresh verification。
265
+ > 每个结果必须引用当前 `contract_id` / `contract_version` 和 `work_unit_id`。只列计划命令、缺实际结果、`duration_ms` 或时间戳,不构成 fresh verification。
238
266
 
239
267
  | schema_version | skill | slice_id | work_unit_id | status | consumed contract ref / version | changed_files | evidence_files | verification result / executed_at | constraint_results | seam_deferred | deviations | new_impacts | 结果文件引用 |
240
268
  |---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -277,6 +305,7 @@ owner: ai
277
305
  - [ ] 后端切片如适用,已填写 `Backend Slice Implementation Contract`,并且 required skills、禁止模式、证据文件、延期 seam 和验证命令完整。
278
306
  - [ ] 受影响外部实现仓库已登记,并绑定分支、MR / PR、CI 和验证命令。
279
307
  - [ ] 受影响 frontend / backend 工程存在性已判定;0-1 缺失工程已登记 `scaffold_status=required`、确认外部脚手架目标并路由对应脚手架 skill。
308
+ - [ ] 原型确认后已满足 `backend_scaffold_policy_satisfied`;脚手架只生成工程骨架,所有后续生成代码均经批准合同和 YSS skill 路由。
280
309
  - [ ] DDL / SQL / 数据库迁移、权限接入和审计日志的人工确认结论已记录;未通过时记录阻塞原因、责任人和补齐计划。
281
310
  - [ ] 若使用 subagent,已记录任务包、写范围、独立 review、verification 命令和主控采纳结论。
282
311
  - [ ] 每个切片包含测试命令、验证方式和回滚点。
@@ -27,13 +27,14 @@
27
27
  推荐把真实工程代码放在独立实现仓库。本仓库默认作为 Harness / 研发管理仓库,保存产品、契约和过程资产。如果用户明确选择把代码放入本仓库,才按需新增:
28
28
 
29
29
  ```text
30
- apps/backend/
31
- apps/frontend/
30
+ apps/
31
+ ├── backend/<project>/
32
+ └── frontend/<project>/
32
33
  docs/releases/
33
34
  docs/implementation/
34
35
  ```
35
36
 
36
- 不得由 Agent 自行新建任意顶层业务代码目录。实现仓库接入和跨仓库切片绑定见 `docs/process/implementation-repo-integration.md`。
37
+ `apps/backend/` 和 `apps/frontend/` 只能作为项目容器,不能直接生成工程;`app/backend/`、`app/frontend/` 及其子路径禁止使用。不得由 Agent 自行新建任意顶层业务代码目录。实现仓库接入和跨仓库切片绑定见 `docs/process/implementation-repo-integration.md`。
37
38
 
38
39
  ## 2. 工具分工
39
40
 
@@ -41,6 +41,8 @@ Draft 阶段允许调整接口,但不能被当成稳定实现契约;Freeze
41
41
 
42
42
  从零创建后端服务时,工程基线由 `yss-ddd-scaffold-generator` 产出;设计和审查阶段用 `yss-backend-scaffold-parent` 校验。功能开发阶段只补充本次变更需要的局部约束,不重新发明分层架构。
43
43
 
44
+ 如果功能已有高保真原型和用户确认,原型确认后先完成工程基线和脚手架受控生成合同;合同经生命周期批准/持久化后再生成后端脚手架,顺序为:`engineering-baseline -> yss-router scaffold-contract -> lifecycle approval -> yss-ddd-scaffold-generator -> yss-backend-scaffold-parent -> yss-router`。脚手架合同必须记录 `contract_id`、`contract_version`、Router draft、生命周期批准、持久化引用、允许写路径和预期证据。脚手架只生成工程骨架和机械模板;所有后续生成的后端代码都必须消费批准且版本当前的 Slice Implementation Contract、对应 YSS skills 和 YSS Skill Execution Result。
45
+
44
46
  ### 1.4 一个垂直切片 Ticket 只解决一个目标
45
47
 
46
48
  垂直切片 Ticket 应该围绕一个清晰目标。
@@ -292,20 +294,26 @@ Vue + AntDV 页面优先复用 YSS UI 体系:
292
294
 
293
295
  ### 4.3 后端按 YSS DDD 顺序推进
294
296
 
295
- 从零创建后端服务时先使用 `yss-ddd-scaffold-generator` 生成骨架,确认项目名、基础包名、输出目录和数据库类型。生成后再业务化定制,不要把脚手架直接当最终代码。
297
+ 从零创建后端服务时先确认项目名、基础包名、输出目录和数据库类型,由 `yss-router` 编译结构化脚手架工作单元合同并经生命周期批准、持久化为 JSON 后,再使用 `yss-ddd-scaffold-generator --contract-file ...` 生成骨架。生成后再业务化定制,不要把脚手架直接当最终代码;原型确认后的脚手架必须先经过 `yss-backend-scaffold-parent` 和 `yss-router` 合同重编译。
296
298
 
297
299
  如果只是开发现有服务中的一个功能,不需要重新生成全量脚手架;先读取 `yss-backend-scaffold-parent` 和对应层级 skill,确认本次变更落在哪些层。
298
300
 
299
301
  推荐顺序:
300
302
 
301
303
  ```text
302
- yss-ddd-scaffold-generator
304
+ yss-router(脚手架合同)
305
+ -> 生命周期批准 / 持久化
306
+ -> yss-ddd-scaffold-generator
307
+ -> yss-backend-scaffold-parent
308
+ -> yss-router(合同重编译)
303
309
  -> yss-domain / yss-backend-scaffold-domain
304
310
  -> yss-repository
305
311
  -> yss-mybatis
306
312
  -> yss-web-controller
307
313
  ```
308
314
 
315
+ 脚手架和后续代码生成的边界:领域规则、状态机、权限、事务、复杂查询和错误映射必须拆成 `behavior-tdd` 垂直切片;只有工程结构、样板、配置和冻结客户端可使用 `controlled-generation`。`./mvnw validate` 通过不能替代合同批准或 `ready-for-agent`;三条 `./mvnw` 命令必须真实执行并记录 `exit_code`、`duration_ms`、stdout/stderr 引用和执行时间,生成器打印命令不算验证证据。
316
+
309
317
  领域层:
310
318
 
311
319
  - 先抽业务术语、聚合边界和状态变化。
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+
5
+ # Harness 内运行时代码路径的机器可执行策略。
6
+ module YssImplementationPathPolicy
7
+ PROJECT_NAME = /\A[a-z][a-z0-9-]*\z/
8
+ IMPLEMENTATION_KINDS = %w[backend frontend].freeze
9
+ CONTAINER_ROOTS = %w[apps/backend apps/frontend].freeze
10
+ FORBIDDEN_ROOTS = %w[app/backend app/frontend].freeze
11
+
12
+ module_function
13
+
14
+ def normalize(path)
15
+ return nil unless path.is_a?(String) && !path.empty?
16
+
17
+ candidate = path.sub(%r{/$}, "")
18
+ clean = Pathname.new(candidate).cleanpath.to_s
19
+ return nil if clean != candidate || Pathname.new(clean).absolute? || clean.start_with?("../")
20
+
21
+ clean
22
+ rescue ArgumentError
23
+ nil
24
+ end
25
+
26
+ def violation(path, enforce_harness: true)
27
+ clean = normalize(path)
28
+ return "implementation path must be a clean relative path" unless clean
29
+ return nil unless enforce_harness
30
+
31
+ parts = clean.split("/")
32
+ root = parts.take(2).join("/")
33
+
34
+ if parts.length >= 2 && parts[0] == "app" && IMPLEMENTATION_KINDS.include?(parts[1])
35
+ return "singular app implementation root is forbidden: #{root}/"
36
+ end
37
+
38
+ return nil unless parts[0] == "apps" && IMPLEMENTATION_KINDS.include?(parts[1])
39
+ return "implementation container root is not a project root: #{root}/" if parts.length < 3
40
+
41
+ project = parts[2]
42
+ return "implementation project segment must be a concrete project name: #{project}" unless project.match?(PROJECT_NAME)
43
+
44
+ nil
45
+ end
46
+
47
+ def valid?(path, enforce_harness: true)
48
+ violation(path, enforce_harness: enforce_harness).nil?
49
+ end
50
+ end
@@ -59,6 +59,11 @@ def tree_hash(root)
59
59
  digest = Digest::SHA256.new
60
60
  root.glob("**/*", File::FNM_DOTMATCH)
61
61
  .reject { |item| item.directory? || item.basename.to_s == ".DS_Store" }
62
+ .reject do |item|
63
+ relative = item.relative_path_from(root)
64
+ relative.each_filename.include?("__pycache__") ||
65
+ %w[.pyc .pyo].include?(item.extname)
66
+ end
62
67
  .sort_by { |item| item.relative_path_from(root).to_s }
63
68
  .each do |item|
64
69
  relative = item.relative_path_from(root).to_s
@@ -66,7 +66,13 @@ end
66
66
  def tree_hash(root)
67
67
  digest = Digest::SHA256.new
68
68
  root.glob("**/*", File::FNM_DOTMATCH)
69
- .reject { |item| item.directory? || item.basename.to_s == ".DS_Store" }
69
+ .reject do |item|
70
+ relative = item.relative_path_from(root)
71
+ item.directory? ||
72
+ item.basename.to_s == ".DS_Store" ||
73
+ relative.each_filename.include?("__pycache__") ||
74
+ %w[.pyc .pyo].include?(item.extname)
75
+ end
70
76
  .sort_by { |item| item.relative_path_from(root).to_s }
71
77
  .each do |item|
72
78
  relative = item.relative_path_from(root).to_s
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative "implementation-path-policy"
5
+
6
+ valid_paths = {
7
+ "backend project 1" => "apps/backend/project1/",
8
+ "backend project 2 nested source" => "apps/backend/project2/src/main/java/",
9
+ "frontend project 1" => "apps/frontend/project1/",
10
+ "external repository native path" => "src/main/java/"
11
+ }.freeze
12
+
13
+ invalid_paths = {
14
+ "singular backend root" => "app/backend/project1/",
15
+ "singular frontend root" => "app/frontend/project1/",
16
+ "backend container root" => "apps/backend/",
17
+ "frontend container root" => "apps/frontend/",
18
+ "wildcard project root" => "apps/backend/*/",
19
+ "traversal" => "apps/backend/project1/../project2/"
20
+ }.freeze
21
+
22
+ external_native_paths = {
23
+ "external repository app directory" => "app/backend/src/main/java/",
24
+ "external repository apps directory" => "apps/backend/project1/src/"
25
+ }.freeze
26
+
27
+ failures = []
28
+ valid_paths.each do |name, path|
29
+ failures << "应允许 #{name}: #{YssImplementationPathPolicy.violation(path)}" unless YssImplementationPathPolicy.valid?(path)
30
+ end
31
+ invalid_paths.each do |name, path|
32
+ failures << "应阻断 #{name}" if YssImplementationPathPolicy.valid?(path)
33
+ end
34
+ external_native_paths.each do |name, path|
35
+ failures << "外部 native root 不应被 Harness 路径策略误伤 #{name}" unless YssImplementationPathPolicy.valid?(path, enforce_harness: false)
36
+ end
37
+
38
+ unless failures.empty?
39
+ warn failures.join("\n")
40
+ exit 1
41
+ end
42
+
43
+ puts "实现项目路径策略压力场景验证通过"
@@ -114,6 +114,10 @@ semantic_markers = {
114
114
  "才构成产品设计影响",
115
115
  "Spec Delta 只记录相对既有冻结 Spec 基线",
116
116
  "template-source",
117
+ "apps/backend/<project>/",
118
+ "apps/frontend/<project>/",
119
+ "app/backend/",
120
+ "app/frontend/",
117
121
  "集中同步",
118
122
  "集中记录不得丢失各阶段因果关系"
119
123
  ],
@@ -123,6 +127,20 @@ semantic_markers = {
123
127
  "最近可信阶段",
124
128
  "同一独立执行者",
125
129
  "集中 checkpoint"
130
+ ],
131
+ "docs/process/implementation-repo-integration.md" => [
132
+ "apps/backend/<project>/",
133
+ "apps/frontend/<project>/",
134
+ "app/backend/",
135
+ "app/frontend/",
136
+ "项目容器"
137
+ ],
138
+ ".agents/skills/yss-product-lifecycle/SKILL.md" => [
139
+ "apps/backend/<project>/",
140
+ "apps/frontend/<project>/",
141
+ "app/backend/",
142
+ "app/frontend/",
143
+ "项目路径策略"
126
144
  ]
127
145
  }.freeze
128
146
 
@@ -182,7 +182,7 @@ preconditions = contract.fetch("flow_preconditions", {})
182
182
  {
183
183
  "to-spec" => %w[grill_exit no_unresolved_runnable_blocker],
184
184
  "to-tickets" => %w[openapi_freeze_or_no_api_impact required_gates_satisfied vertical_slice_scope blocking_edges],
185
- "implement" => %w[ready_for_agent slice_contract_approved slice_contract_persisted slice_contract_current_version build_architecture_checklist implementation_repo implementation_branch ci verification_commands rollback_point backend_slice_contract_if_applicable]
185
+ "implement" => %w[ready_for_agent slice_contract_approved slice_contract_persisted slice_contract_current_version build_architecture_checklist implementation_repo implementation_branch ci verification_commands rollback_point backend_slice_contract_if_applicable backend_scaffold_policy_satisfied]
186
186
  }.each do |flow, required|
187
187
  actual = preconditions.dig(flow, "required") || []
188
188
  required.each { |field| require_include(failures, "#{flow} preconditions", actual, field) }