create-yss-spec 3.2.0 → 3.3.1

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 (439) hide show
  1. package/README.md +2 -2
  2. package/package.json +3 -2
  3. package/src/command-runner.mjs +107 -0
  4. package/src/self-update.js +7 -4
  5. package/src/template/instance-runtime.js +1 -1
  6. package/template/.agents/skills/.strategic-design-skills-manifest.json +2 -2
  7. package/template/.agents/skills/code-review/SKILL.md +4 -0
  8. package/template/.agents/skills/code-review/agents/openai.yaml +1 -1
  9. package/template/.agents/skills/code-review/references/yss-review-standards.md +9 -2
  10. package/template/.agents/skills/competitive-intelligence/SKILL.md +4 -4
  11. package/template/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  12. package/template/.agents/skills/grill-with-docs/SKILL.md +1 -1
  13. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  14. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  18. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  19. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  20. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  21. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  22. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  23. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  24. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  25. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  26. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  27. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  28. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  29. package/template/.agents/skills/yss-mybatis/SKILL.md +34 -58
  30. package/template/.agents/skills/yss-mybatis/agents/openai.yaml +2 -2
  31. package/template/.agents/skills/yss-mybatis/references/source-index.md +88 -68
  32. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +50 -42
  33. package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  34. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  35. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  36. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  37. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +5 -2
  38. package/template/.agents/skills/yss-repository/SKILL.md +28 -70
  39. package/template/.agents/skills/yss-repository/agents/openai.yaml +2 -2
  40. package/template/.agents/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  41. package/template/.agents/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  42. package/template/.agents/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  43. package/template/.agents/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  44. package/template/.agents/skills/yss-research/SKILL.md +1 -1
  45. package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  46. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  47. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  48. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  49. package/template/.agents/skills/yss-stage-decision/SKILL.md +5 -3
  50. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  51. package/template/.claude/skills/code-review/SKILL.md +4 -0
  52. package/template/.claude/skills/code-review/agents/openai.yaml +1 -1
  53. package/template/.claude/skills/code-review/references/yss-review-standards.md +9 -2
  54. package/template/.claude/skills/competitive-intelligence/SKILL.md +4 -4
  55. package/template/.claude/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  56. package/template/.claude/skills/grill-with-docs/SKILL.md +1 -1
  57. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  58. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  59. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  60. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  61. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  62. package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  63. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  64. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  65. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  66. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  67. package/template/.claude/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  68. package/template/.claude/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  69. package/template/.claude/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  70. package/template/.claude/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  71. package/template/.claude/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  72. package/template/.claude/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  73. package/template/.claude/skills/yss-mybatis/SKILL.md +34 -58
  74. package/template/.claude/skills/yss-mybatis/agents/openai.yaml +2 -2
  75. package/template/.claude/skills/yss-mybatis/references/source-index.md +88 -68
  76. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +50 -42
  77. package/template/.claude/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  78. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  79. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  80. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  81. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +5 -2
  82. package/template/.claude/skills/yss-repository/SKILL.md +28 -70
  83. package/template/.claude/skills/yss-repository/agents/openai.yaml +2 -2
  84. package/template/.claude/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  85. package/template/.claude/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  86. package/template/.claude/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  87. package/template/.claude/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  88. package/template/.claude/skills/yss-research/SKILL.md +1 -1
  89. package/template/.claude/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  90. package/template/.claude/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  91. package/template/.claude/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  92. package/template/.claude/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  93. package/template/.claude/skills/yss-stage-decision/SKILL.md +5 -3
  94. package/template/.claude/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  95. package/template/.codex/skills/code-review/SKILL.md +4 -0
  96. package/template/.codex/skills/code-review/agents/openai.yaml +1 -1
  97. package/template/.codex/skills/code-review/references/yss-review-standards.md +9 -2
  98. package/template/.codex/skills/competitive-intelligence/SKILL.md +4 -4
  99. package/template/.codex/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  100. package/template/.codex/skills/grill-with-docs/SKILL.md +1 -1
  101. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  102. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  103. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  104. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  105. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  106. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  107. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  108. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  109. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  110. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  111. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  112. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  113. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  114. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  115. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  116. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  117. package/template/.codex/skills/yss-mybatis/SKILL.md +34 -58
  118. package/template/.codex/skills/yss-mybatis/agents/openai.yaml +2 -2
  119. package/template/.codex/skills/yss-mybatis/references/source-index.md +88 -68
  120. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +50 -42
  121. package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  122. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  123. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  124. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  125. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +5 -2
  126. package/template/.codex/skills/yss-repository/SKILL.md +28 -70
  127. package/template/.codex/skills/yss-repository/agents/openai.yaml +2 -2
  128. package/template/.codex/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  129. package/template/.codex/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  130. package/template/.codex/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  131. package/template/.codex/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  132. package/template/.codex/skills/yss-research/SKILL.md +1 -1
  133. package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  134. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  135. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  136. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  137. package/template/.codex/skills/yss-stage-decision/SKILL.md +5 -3
  138. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  139. package/template/.cursor/skills/code-review/SKILL.md +4 -0
  140. package/template/.cursor/skills/code-review/agents/openai.yaml +1 -1
  141. package/template/.cursor/skills/code-review/references/yss-review-standards.md +9 -2
  142. package/template/.cursor/skills/competitive-intelligence/SKILL.md +4 -4
  143. package/template/.cursor/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  144. package/template/.cursor/skills/grill-with-docs/SKILL.md +1 -1
  145. package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  146. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  147. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  148. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  149. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  150. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  151. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  152. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  153. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  154. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  155. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  156. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  157. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  158. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  159. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  160. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  161. package/template/.cursor/skills/yss-mybatis/SKILL.md +34 -58
  162. package/template/.cursor/skills/yss-mybatis/agents/openai.yaml +2 -2
  163. package/template/.cursor/skills/yss-mybatis/references/source-index.md +88 -68
  164. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +50 -42
  165. package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  166. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  167. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  168. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  169. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +5 -2
  170. package/template/.cursor/skills/yss-repository/SKILL.md +28 -70
  171. package/template/.cursor/skills/yss-repository/agents/openai.yaml +2 -2
  172. package/template/.cursor/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  173. package/template/.cursor/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  174. package/template/.cursor/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  175. package/template/.cursor/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  176. package/template/.cursor/skills/yss-research/SKILL.md +1 -1
  177. package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  178. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  179. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  180. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  181. package/template/.cursor/skills/yss-stage-decision/SKILL.md +5 -3
  182. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  183. package/template/.pi/skills/code-review/SKILL.md +4 -0
  184. package/template/.pi/skills/code-review/agents/openai.yaml +1 -1
  185. package/template/.pi/skills/code-review/references/yss-review-standards.md +9 -2
  186. package/template/.pi/skills/competitive-intelligence/SKILL.md +4 -4
  187. package/template/.pi/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  188. package/template/.pi/skills/grill-with-docs/SKILL.md +1 -1
  189. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  190. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  191. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  192. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  193. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  194. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  195. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  196. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  197. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  198. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  199. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  200. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  201. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  202. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  203. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  204. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  205. package/template/.pi/skills/yss-mybatis/SKILL.md +34 -58
  206. package/template/.pi/skills/yss-mybatis/agents/openai.yaml +2 -2
  207. package/template/.pi/skills/yss-mybatis/references/source-index.md +88 -68
  208. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +50 -42
  209. package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  210. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  211. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  212. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  213. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +5 -2
  214. package/template/.pi/skills/yss-repository/SKILL.md +28 -70
  215. package/template/.pi/skills/yss-repository/agents/openai.yaml +2 -2
  216. package/template/.pi/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  217. package/template/.pi/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  218. package/template/.pi/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  219. package/template/.pi/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  220. package/template/.pi/skills/yss-research/SKILL.md +1 -1
  221. package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  222. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  223. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  224. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  225. package/template/.pi/skills/yss-stage-decision/SKILL.md +5 -3
  226. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  227. package/template/.qoder/skills/code-review/SKILL.md +4 -0
  228. package/template/.qoder/skills/code-review/agents/openai.yaml +1 -1
  229. package/template/.qoder/skills/code-review/references/yss-review-standards.md +9 -2
  230. package/template/.qoder/skills/competitive-intelligence/SKILL.md +4 -4
  231. package/template/.qoder/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  232. package/template/.qoder/skills/grill-with-docs/SKILL.md +1 -1
  233. package/template/.qoder/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  234. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  235. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  236. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  237. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  238. package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  239. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  240. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  241. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  242. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  243. package/template/.qoder/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  244. package/template/.qoder/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  245. package/template/.qoder/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  246. package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  247. package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  248. package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  249. package/template/.qoder/skills/yss-mybatis/SKILL.md +34 -58
  250. package/template/.qoder/skills/yss-mybatis/agents/openai.yaml +2 -2
  251. package/template/.qoder/skills/yss-mybatis/references/source-index.md +88 -68
  252. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +50 -42
  253. package/template/.qoder/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  254. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  255. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  256. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  257. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +5 -2
  258. package/template/.qoder/skills/yss-repository/SKILL.md +28 -70
  259. package/template/.qoder/skills/yss-repository/agents/openai.yaml +2 -2
  260. package/template/.qoder/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  261. package/template/.qoder/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  262. package/template/.qoder/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  263. package/template/.qoder/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  264. package/template/.qoder/skills/yss-research/SKILL.md +1 -1
  265. package/template/.qoder/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  266. package/template/.qoder/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  267. package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  268. package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  269. package/template/.qoder/skills/yss-stage-decision/SKILL.md +5 -3
  270. package/template/.qoder/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  271. package/template/.trae/skills/code-review/SKILL.md +4 -0
  272. package/template/.trae/skills/code-review/agents/openai.yaml +1 -1
  273. package/template/.trae/skills/code-review/references/yss-review-standards.md +9 -2
  274. package/template/.trae/skills/competitive-intelligence/SKILL.md +4 -4
  275. package/template/.trae/skills/domain-modeling/CONTEXT-FORMAT.md +1 -1
  276. package/template/.trae/skills/grill-with-docs/SKILL.md +1 -1
  277. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-local.md +1 -1
  278. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  279. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  280. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +8 -8
  281. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  282. package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  283. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  284. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +121 -0
  285. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +40 -0
  286. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +55 -0
  287. package/template/.trae/skills/yss-implementation-contract-compiler/SKILL.md +1 -1
  288. package/template/.trae/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -0
  289. package/template/.trae/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +25 -0
  290. package/template/.trae/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  291. package/template/.trae/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  292. package/template/.trae/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  293. package/template/.trae/skills/yss-mybatis/SKILL.md +34 -58
  294. package/template/.trae/skills/yss-mybatis/agents/openai.yaml +2 -2
  295. package/template/.trae/skills/yss-mybatis/references/source-index.md +88 -68
  296. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +50 -42
  297. package/template/.trae/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  298. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +3 -3
  299. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +124 -16
  300. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +16 -2
  301. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +5 -2
  302. package/template/.trae/skills/yss-repository/SKILL.md +28 -70
  303. package/template/.trae/skills/yss-repository/agents/openai.yaml +2 -2
  304. package/template/.trae/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  305. package/template/.trae/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  306. package/template/.trae/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  307. package/template/.trae/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  308. package/template/.trae/skills/yss-research/SKILL.md +1 -1
  309. package/template/.trae/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  310. package/template/.trae/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  311. package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  312. package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  313. package/template/.trae/skills/yss-stage-decision/SKILL.md +5 -3
  314. package/template/.trae/skills/yss-stage-decision/references/stage-decision-package-contract.md +1 -1
  315. package/template/AGENTS.md +2 -2
  316. package/template/CONTEXT.md +3 -2
  317. package/template/README.md +3 -3
  318. package/template/docs/agents/digital-human-roles.md +1 -1
  319. package/template/docs/agents/digital-human-roles.yaml +13 -11
  320. package/template/docs/agents/issue-tracker.md +1 -1
  321. package/template/docs/agents/strategic-design-skills-integration.md +2 -0
  322. package/template/docs/agents/yss-skill-registry.yaml +5 -0
  323. package/template/docs/architecture/README.md +1 -1
  324. package/template/docs/architecture/templates/business-architecture-template.md +1 -1
  325. package/template/docs/architecture/templates/functional-architecture-template.md +1 -1
  326. package/template/docs/design/README.md +1 -1
  327. package/template/docs/design/templates/interaction-spec-template.md +1 -1
  328. package/template/docs/design/templates/product-overview-design-template.md +1 -1
  329. package/template/docs/{discovery → plan}/IDEATION.md +5 -5
  330. package/template/docs/plan/README.md +9 -0
  331. package/template/docs/plan/entry-review.md +23 -0
  332. package/template/docs/plan/templates/plan-template.md +58 -0
  333. package/template/docs/process/harness-process-tailoring.md +1 -1
  334. package/template/docs/process/lifecycle-artifact-map.md +10 -6
  335. package/template/docs/process/lifecycle-registry-baseline.json +10 -1
  336. package/template/docs/process/lifecycle-registry.yaml +48 -20
  337. package/template/docs/process/plan-migration.md +13 -0
  338. package/template/docs/process/schemas/digital-human-task-package.schema.json +2 -0
  339. package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +38 -0
  340. package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +3 -0
  341. package/template/docs/process/schemas/lifecycle-registry.schema.json +1 -1
  342. package/template/docs/process/schemas/project-scaffold-contract.schema.json +113 -0
  343. package/template/docs/process/template-engineering-overview.md +2 -2
  344. package/template/docs/process/template-verification-profiles.yaml +25 -0
  345. package/template/docs/process/templates/context-reconciliation-template.yaml +2 -2
  346. package/template/docs/process/templates/lifecycle-checkpoint-template.yaml +1 -1
  347. package/template/docs/requirements/README.md +2 -2
  348. package/template/docs/templates/implementation-repo-registry-template.md +8 -0
  349. package/template/docs/templates/local-parent-ticket-template.md +1 -1
  350. package/template/docs/templates/review-report-template.md +7 -3
  351. package/template/docs/templates/subagent-task-package-template.md +1 -1
  352. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +1 -1
  353. package/template/scripts/cache-template-commit +2 -2
  354. package/template/scripts/fixtures/strategic-handoff/source-roles.json +7 -7
  355. package/template/scripts/fixtures/user-decision/plan-fixture.mjs +30 -0
  356. package/template/scripts/lib/backend-delivery.mjs +5 -2
  357. package/template/scripts/lib/command-runner.mjs +107 -0
  358. package/template/scripts/lib/context-reconciliation.mjs +34 -0
  359. package/template/scripts/lib/json-schema.mjs +42 -13
  360. package/template/scripts/lib/lifecycle-context-query.mjs +141 -0
  361. package/template/scripts/lib/lifecycle-transition.mjs +118 -6
  362. package/template/scripts/lib/plan-spec-entry.mjs +87 -0
  363. package/template/scripts/lib/scenario-checks.mjs +44 -38
  364. package/template/scripts/lib/skill-registry.mjs +9 -0
  365. package/template/scripts/lib/skill-supply-chain.mjs +18 -2
  366. package/template/scripts/lib/strategic-handoff-io.mjs +5 -4
  367. package/template/scripts/lib/strategic-handoff.mjs +10 -9
  368. package/template/scripts/lib/task-package.mjs +2 -0
  369. package/template/scripts/lib/template-commit-cache.mjs +7 -5
  370. package/template/scripts/query-lifecycle-context +25 -0
  371. package/template/scripts/run-template-verification +9 -3
  372. package/template/scripts/sync-strategic-handoff-tools +9 -0
  373. package/template/scripts/verify-business-language-scenarios +0 -7
  374. package/template/scripts/verify-context-reconciliation +2 -48
  375. package/template/scripts/verify-context-reconciliation-scenarios +1 -1
  376. package/template/scripts/verify-frontend-scaffold-generator-scenarios +2 -0
  377. package/template/scripts/verify-lifecycle-checkpoint +2 -0
  378. package/template/scripts/verify-lifecycle-context-query-scenarios +88 -0
  379. package/template/scripts/verify-lifecycle-transition-scenarios +44 -4
  380. package/template/scripts/verify-plan-spec-entry +11 -0
  381. package/template/scripts/verify-plan-spec-entry-scenarios +79 -0
  382. package/template/scripts/verify-script-performance-scenarios +56 -0
  383. package/template/scripts/verify-subagent-task-package-scenarios +9 -8
  384. package/template/scripts/verify-template-cache-scenarios +11 -1
  385. package/template/scripts/verify-user-decision-scenarios +4 -4
  386. package/template/skills-lock.json +23 -23
  387. package/template.manifest.json +2 -1
  388. package/template.snapshot.json +5 -5
  389. package/template/.agents/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  390. package/template/.agents/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  391. package/template/.agents/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  392. package/template/.agents/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  393. package/template/.agents/skills/yss-mybatis/references/README.md +0 -57
  394. package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  395. package/template/.claude/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  396. package/template/.claude/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  397. package/template/.claude/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  398. package/template/.claude/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  399. package/template/.claude/skills/yss-mybatis/references/README.md +0 -57
  400. package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  401. package/template/.codex/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  402. package/template/.codex/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  403. package/template/.codex/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  404. package/template/.codex/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  405. package/template/.codex/skills/yss-mybatis/references/README.md +0 -57
  406. package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  407. package/template/.cursor/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  408. package/template/.cursor/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  409. package/template/.cursor/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  410. package/template/.cursor/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  411. package/template/.cursor/skills/yss-mybatis/references/README.md +0 -57
  412. package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  413. package/template/.pi/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  414. package/template/.pi/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  415. package/template/.pi/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  416. package/template/.pi/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  417. package/template/.pi/skills/yss-mybatis/references/README.md +0 -57
  418. package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  419. package/template/.qoder/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  420. package/template/.qoder/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  421. package/template/.qoder/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  422. package/template/.qoder/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  423. package/template/.qoder/skills/yss-mybatis/references/README.md +0 -57
  424. package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  425. package/template/.trae/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  426. package/template/.trae/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  427. package/template/.trae/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  428. package/template/.trae/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  429. package/template/.trae/skills/yss-mybatis/references/README.md +0 -57
  430. package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  431. package/template/docs/discovery/README.md +0 -87
  432. package/template/docs/discovery/reports/.gitkeep +0 -0
  433. package/template/docs/discovery/reports/agent-governance-options.md +0 -71
  434. package/template/docs/discovery/reports/competitor-deep-dive/.gitkeep +0 -0
  435. package/template/docs/discovery/templates/discovery-template.md +0 -94
  436. /package/template/docs/{discovery → plan}/templates/competitive-analysis-template.md +0 -0
  437. /package/template/docs/{discovery → plan}/templates/competitive-matrix-template.md +0 -0
  438. /package/template/docs/{discovery → plan}/templates/market-analysis-template.md +0 -0
  439. /package/template/docs/{discovery → plan}/templates/user-pain-points-template.md +0 -0
@@ -48,6 +48,34 @@ modes:
48
48
  orchestrate: bounded_write
49
49
  resume: rebuild_then_bounded_write
50
50
 
51
+ execution_efficiency:
52
+ context_query:
53
+ strategy: combine-mode-stage-work-unit-and-required-includes
54
+ read_scope: current-work-unit-and-triggered-impacts
55
+ reuse: already-read-unchanged-sources-within-current-task
56
+ refresh_on: [source-changed, new-impact, evidence-conflict, resume, handoff]
57
+ verification:
58
+ scope: current-artifacts-and-triggered-contracts
59
+ timing: after-artifact-write-before-approval-or-transition
60
+ duplicate_check: reuse-only-within-same-boundary-and-unchanged-inputs
61
+ unchanged_inputs: [artifact-bytes, upstream-bytes, validator-and-schema, command-and-options, repository-root]
62
+ freshness_unknown: rerun
63
+ always_revalidate_on: [resume, handoff, implementation-entry, merge, release]
64
+ template_regression_suite: template-maintenance-or-explicit-regression-task
65
+ per_work_unit_context_reconciliation: required
66
+ skip_triggered_gates: forbidden
67
+ interaction:
68
+ questions: batch-independent-current-stage-questions
69
+ user_decision_policy_ref: docs/agents/digital-human-roles.yaml#user_decision_policy
70
+ decision_evidence_ref: references/user-decisions.md
71
+ dependent_future_approvals: forbidden
72
+ checkpoint_policy_ref: checkpoint_policy
73
+ timing_evidence:
74
+ location: existing-checkpoint-verification-evidence
75
+ script_fields: [command, duration_ms, exit_code]
76
+ distinguish: [script-execution, agent-orchestration, human-wait]
77
+ unmeasured_duration: unknown
78
+
51
79
  # 有效的 YSS 仓库必须先由生命周期编排器接管入口;Matt flow 只负责选择工作方式。
52
80
  entry_routing:
53
81
  manifest: yss-project.yaml
@@ -210,7 +238,7 @@ lifecycle_native_entries:
210
238
  implement: lifecycle-validate-and-accept
211
239
 
212
240
  work_unit_routes:
213
- work-unit.discovery-opportunity:
241
+ work-unit.plan-opportunity:
214
242
  native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
215
243
  primary_skill: yss-product-lifecycle
216
244
  supporting_skills: [competitive-intelligence, yss-research]
@@ -218,7 +246,7 @@ work_unit_routes:
218
246
  route_by: {market_or_competitor_fact: competitive-intelligence, technical_or_standard_fact: yss-research:technical-evidence, strategy_fact: yss-research:strategy-evidence, no_external_fact: yss-product-lifecycle}
219
247
  applies_when: opportunity_or_external_fact_requires_validation
220
248
  not_applicable_reason: no_external_fact
221
- work-unit.discovery-requirements:
249
+ work-unit.plan-requirements:
222
250
  native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
223
251
  primary_skill: yss-product-lifecycle
224
252
  supporting_skills: [grilling, domain-modeling]
@@ -241,7 +269,7 @@ work_unit_routes:
241
269
  skills: [yss-stage-decision, domain-modeling, yss-research]
242
270
  research_contract: {profile: strategy-evidence, mode_before_gate: evidence-audited, artifact_owner: yss-research, downstream_owner: yss-stage-decision}
243
271
  human_gate: stage-decision-package-approved
244
- applies_when: discovery_to_spec_requires_stable_decision_package
272
+ applies_when: plan_to_spec_requires_stable_decision_package
245
273
  not_applicable_reason: existing_approved_stage_decision_current
246
274
  work-unit.spec-synthesis:
247
275
  native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
@@ -294,6 +322,17 @@ work_unit_routes:
294
322
  human_gate: openapi-freeze_if_api_impact
295
323
  applies_when: technical_or_contract_impact
296
324
  not_applicable_reason: no_technical_or_contract_impact
325
+ work-unit.implementation-repository-preparation:
326
+ native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
327
+ primary_skill: implementation-repo-onboarding
328
+ supporting_skills: [yss-implementation-contract-compiler, yss-ddd-scaffold-generator, yss-layered-mvc-scaffold-generator, yss-frontend-scaffold-generator]
329
+ skills: [implementation-repo-onboarding, yss-implementation-contract-compiler, yss-ddd-scaffold-generator, yss-layered-mvc-scaffold-generator, yss-frontend-scaffold-generator]
330
+ applies_when: before_ticket_formalization
331
+ not_applicable_reason: no_frontend_or_backend_delivery_impact
332
+ decision_boundary: scaffold-choice
333
+ completion_states: [existing-and-onboarded, initialized-and-verified, not-applicable]
334
+ aggregate_gate: gate.implementation-repositories-ready
335
+ must_complete_before: work-unit.ticket-decomposition
297
336
  work-unit.ticket-decomposition:
298
337
  native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
299
338
  primary_skill: yss-product-lifecycle
@@ -342,8 +381,8 @@ work_unit_routes:
342
381
  work-unit.code-review:
343
382
  native: {source: yss-product-lifecycle, skill: code-review, invocation_mode: model-invoked}
344
383
  primary_skill: code-review
345
- supporting_skills: [alibaba-java-code-style, yss-ui, yss-design-system, yss-ui-business-page-generation, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
346
- skills: [code-review, alibaba-java-code-style, yss-ui, yss-design-system, yss-ui-business-page-generation, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
384
+ supporting_skills: [alibaba-java-code-style, yss-ui, yss-design-system, yss-ui-business-page-generation, yss-domain, yss-application, yss-repository, yss-mybatis, yss-web-controller, yss-dto, mapstruct, lombok]
385
+ skills: [code-review, alibaba-java-code-style, yss-ui, yss-design-system, yss-ui-business-page-generation, yss-domain, yss-application, yss-repository, yss-mybatis, yss-web-controller, yss-dto, mapstruct, lombok]
347
386
  review_standards_route:
348
387
  unique_default_skill: code-review
349
388
  second_generic_review_skill: forbidden
@@ -354,8 +393,13 @@ work_unit_routes:
354
393
  run_if_present: true
355
394
  missing_tooling: not-applicable-with-reason
356
395
  checkable_rule_without_machine: not-a-pass
396
+ project_scope:
397
+ sources: [candidate-project-root, implementation-repository-registry, slice-project-roots, allowed-write-paths]
398
+ include: [project-itself, registered-backend-development-projects]
399
+ exclude: [frontend-projects, unrelated-submodules, vendor, unregistered-directories]
400
+ fixed_apps_backend_assumption: forbidden
357
401
  conditional_skills:
358
- backend_impact: [alibaba-java-code-style, yss-domain, yss-application, yss-repository, yss-web-controller, yss-dto, mapstruct, lombok]
402
+ backend_impact: [alibaba-java-code-style, yss-domain, yss-application, yss-repository, yss-mybatis, yss-web-controller, yss-dto, mapstruct, lombok]
359
403
  ui_impact: [yss-ui, yss-design-system, yss-ui-business-page-generation]
360
404
  not_applicable_reasons:
361
405
  backend_impact: no_backend_impact
@@ -399,7 +443,7 @@ compatibility_flow_preconditions:
399
443
  evidence: [user_problem, mvp_and_non_goals, success_criteria, test_seam, terminology_review]
400
444
  output_role: ready-for-human
401
445
  to-tickets:
402
- required: [openapi_freeze_or_no_api_impact, required_gates_satisfied, vertical_slice_scope, blocking_edges]
446
+ required: [openapi_freeze_or_no_api_impact, required_gates_satisfied, implementation_repositories_ready, vertical_slice_scope, blocking_edges]
403
447
  output: vertical-slice-tickets
404
448
  output_role: ready-for-human
405
449
  implement:
@@ -407,6 +451,7 @@ compatibility_flow_preconditions:
407
451
  applies_to_single_session: true
408
452
 
409
453
  ticket_formalization:
454
+ repository_predecessor: work-unit.implementation-repository-preparation
410
455
  implementation_predecessor: work-unit.ticket-decomposition
411
456
  result_ref_required: true
412
457
  result_must_be: completed
@@ -424,7 +469,37 @@ ticket_formalization:
424
469
  current_version: true
425
470
  validator:
426
471
  module: scripts/lib/lifecycle-transition.mjs
427
- functions: [validateNextRoute, validateTicketFormalization, validateImplementationEntry]
472
+ functions: [validateNextRoute, validateImplementationRepositoriesReady, validateTicketFormalization, validateImplementationEntry]
473
+
474
+ implementation_repository_preparation:
475
+ stage: stage.system-data-engineering
476
+ work_unit: work-unit.implementation-repository-preparation
477
+ gate: gate.implementation-repositories-ready
478
+ applies_per_delivery_role: [backend, frontend]
479
+ affected_role_allowed_states: [existing-and-onboarded, initialized-and-verified]
480
+ unaffected_role_state: not-applicable
481
+ not_applicable_reason_required: true
482
+ existing_repository:
483
+ required: [repository_ref, project_root, repository_scope, onboarding_result]
484
+ onboarding_skill: implementation-repo-onboarding
485
+ architecture_migration: separate-initiative
486
+ new_repository:
487
+ default_scope: external-repository
488
+ allowed_scopes: [external-repository, harness-apps, git-submodule]
489
+ user_confirmation_required: [scope, project_root, init_git]
490
+ remote_repository_creation: explicit-authorization-only
491
+ approved_project_scaffold_contract_required: true
492
+ frontend_contract_minimum_schema_version: 4
493
+ backend_contract_compatibility_schema_versions: [3, 4]
494
+ target_policy: nonexistent-or-empty
495
+ force_overwrite: forbidden
496
+ completion_requires: [scaffold_manifest_ref, scaffold_verification]
497
+ aggregate_result:
498
+ required: [result, current_version, projects, evidence_refs]
499
+ result: completed
500
+ evidence_refs_readable: true
501
+ stale_action: return-to-work-unit.implementation-repository-preparation
502
+ blocking_signals: [implementation-repository-decision-required, implementation-repository-location-required, implementation-repository-onboarding-incomplete, scaffold-choice-required, scaffold-contract-unapproved, scaffold-generation-incomplete, scaffold-verification-failed, frontend-template-unavailable, implementation-repositories-stale]
428
503
 
429
504
  transition_graph:
430
505
  validator: scripts/lib/lifecycle-transition.mjs
@@ -437,14 +512,39 @@ transition_graph:
437
512
  work-unit.intensity-aware-verification: [work-unit.intensity-aware-review]
438
513
  work-unit.intensity-aware-review: [work-unit.release-and-rollback]
439
514
  work-unit.release-and-rollback: []
440
- work-unit.spec-synthesis: [work-unit.prototype-design, work-unit.technical-analysis, work-unit.ticket-decomposition]
441
- work-unit.prototype-design: [work-unit.technical-analysis, work-unit.ticket-decomposition]
442
- work-unit.technical-analysis: [work-unit.ticket-decomposition]
515
+ work-unit.plan-opportunity: [work-unit.plan-requirements, work-unit.domain-strategy-design, work-unit.stage-decision, work-unit.spec-synthesis]
516
+ work-unit.plan-requirements: [work-unit.domain-strategy-design, work-unit.stage-decision, work-unit.spec-synthesis]
517
+ work-unit.domain-strategy-design: [work-unit.stage-decision, work-unit.spec-synthesis]
518
+ work-unit.stage-decision: [work-unit.spec-synthesis]
519
+ work-unit.spec-synthesis: [work-unit.prototype-design, work-unit.technical-analysis, work-unit.implementation-repository-preparation]
520
+ work-unit.prototype-design: [work-unit.technical-analysis, work-unit.implementation-repository-preparation]
521
+ work-unit.technical-analysis: [work-unit.implementation-repository-preparation]
522
+ work-unit.implementation-repository-preparation: [work-unit.ticket-decomposition]
443
523
  work-unit.ticket-decomposition: [work-unit.slice-implementation]
444
524
  forbidden_shortcuts:
445
525
  - {from: work-unit.spec-synthesis, to: work-unit.slice-implementation}
446
526
  - {from: work-unit.prototype-design, to: work-unit.slice-implementation}
447
527
  - {from: work-unit.technical-analysis, to: work-unit.slice-implementation}
528
+ - {from: work-unit.technical-analysis, to: work-unit.ticket-decomposition}
529
+
530
+ planning:
531
+ entry_validator: scripts/verify-plan-spec-entry
532
+ review_contract: docs/plan/entry-review.md
533
+ check_policy: docs/process/lifecycle-registry.yaml
534
+ default_check_status: pending
535
+ formal_spec_draft_requires_passed_entry: true
536
+ stage: stage.plan
537
+ record: artifact.plan-record
538
+ template: docs/plan/templates/plan-template.md
539
+ exit_policy: docs/process/lifecycle-registry.yaml
540
+ migration_policy: docs/process/plan-migration.md
541
+ critical_open_questions: block-before-spec
542
+ deferred_details_require: [noncritical_reason, owner, resolution_point, downstream_recipient]
543
+ reuse_requires: [source_ref, current_version, applicable_scope, reason]
544
+ downstream: work-unit.spec-synthesis
545
+ implementation_authorized: false
546
+ frontier_scope: current-plan-decisions
547
+ deferred_details: excluded-from-frontier-only-after-user-confirms-deferral
448
548
 
449
549
  grill_exit:
450
550
  required: [frontier_empty, facts_resolved_or_routed, decisions_confirmed, shared_understanding_confirmed, no_unresolved_runnable_blocker]
@@ -453,7 +553,7 @@ grill_exit:
453
553
  runnable_question: handoff-prototype-handoff
454
554
  external_decision: external-input-required
455
555
  user_confirmation_required: true
456
- output: discovery-evidence
556
+ output: plan-evidence
457
557
 
458
558
  ticket_role_transition:
459
559
  yss_active:
@@ -470,6 +570,10 @@ review_input:
470
570
  second_generic_review_skill: forbidden
471
571
  axes: [standards, spec, ui_fidelity_if_ui_impact]
472
572
  standards_sources: [repo_coding_standards, slice_contract_required_skills, specialist_check_inputs, review_report_template]
573
+ scope_resolution:
574
+ sources: [candidate-project-root, implementation-repository-registry, slice-project-roots, allowed-write-paths]
575
+ backend_includes: [project-itself, registered-backend-development-projects]
576
+ excludes: [frontend-projects, unrelated-submodules, vendor, unregistered-directories]
473
577
  completed_requires_specialist_coverage: true
474
578
  finding_disposition_required: true
475
579
  completed_requires_no_open_mandatory_violations: true
@@ -618,7 +722,11 @@ backend_scaffold:
618
722
  layered-mvc: { recipe: backend.mvc-scaffold, generator_skill: yss-layered-mvc-scaffold-generator, baseline_skills: [] }
619
723
  tdd_mode: controlled-generation
620
724
  contract_schema:
621
- schema_version: 3
725
+ schema_version: 4
726
+ current_schema_version: 4
727
+ schema_ref: docs/process/schemas/project-scaffold-contract.schema.json
728
+ compatible_backend_versions: [3, 4]
729
+ frontend_minimum_version: 4
622
730
  identity: service-engineering-baseline
623
731
  required: [contract_id, contract_version, scaffold_request_id, status, compiler_draft_ref, lifecycle_approval_ref, persisted_ref, current_version, implementation_repository, backend_repository, scaffold_status, project_name, target_output_dir, base_package, architecture_family, generator_skill, decision_ref, decision_id, decision_digest, maven_coordinates, profiles, module_profile, allowed_write_paths, expected_evidence_files, verification_commands, approval, work_unit, generation_policy]
624
732
  status_by_owner:
@@ -704,7 +812,7 @@ tracker:
704
812
  local_markdown:
705
813
  root: docs/.scratch
706
814
  legacy_roots: [.scratch, docs/requirements/tickets]
707
- feature_layout: [map.md, discovery, spec.md, spec-delta, parent-ticket.md, design, api, architecture, gates, verification, issues]
815
+ feature_layout: [map.md, plan, spec.md, spec-delta, parent-ticket.md, design, api, architecture, gates, verification, issues]
708
816
  primary_sync: local
709
817
  remote_ticket_required: false
710
818
  remote_mirror: optional
@@ -760,7 +868,7 @@ wayfinder_mode:
760
868
  - multi-session-or-multi-agent-work
761
869
  - unclear-decision-frontier
762
870
  - cross-domain-dependency-map-needed
763
- lifecycle_position: discovery-to-spec-planning
871
+ lifecycle_position: plan-to-spec-planning
764
872
  completion_route: wayfinder -> handoff -> to-spec
765
873
  does_not_replace: [lifecycle-gates, spec-baseline, ticket-formalization]
766
874
  forbidden_state_mutations: [ready-for-agent, gate-approval, ticket-role]
@@ -796,7 +904,7 @@ quality_baseline_reuse:
796
904
  redefinition: forbidden
797
905
 
798
906
  ready_for_agent:
799
- required: [gates_satisfied, no_stale_artifacts, blockers_closed, implementation_context_ready, context_plan, quality_baseline_ref, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, predecessor_work_unit, ticket_decomposition_result_ref, ticket_decomposition_result_status, vertical_slice_ticket_ref, vertical_slice_ticket_role, vertical_slice_ticket_kind, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied, frontend_implementation_plan_if_ui_impact]
907
+ required: [gates_satisfied, no_stale_artifacts, blockers_closed, implementation_context_ready, context_plan, quality_baseline_ref, implementation_repositories_ready, implementation_repository_preparation_ref, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, predecessor_work_unit, ticket_decomposition_result_ref, ticket_decomposition_result_status, vertical_slice_ticket_ref, vertical_slice_ticket_role, vertical_slice_ticket_kind, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied, frontend_implementation_plan_if_ui_impact]
800
908
  ticket_formalization_validator: scripts/lib/lifecycle-transition.mjs
801
909
  requires_vertical_slice_ticket: true
802
910
  parent_ticket_as_implementation_ref: forbidden
@@ -13,6 +13,16 @@
13
13
 
14
14
  连续阶段自动推进时累积 Ticket 同步和 Git 判断证据,在人工暂停、handoff、进入实现、合并或发布边界集中 checkpoint。发生阻塞、责任人变化或资产需要单独批准时立即落 checkpoint,不因合并记录而丢失阶段因果关系。
15
15
 
16
+ ## 执行成本
17
+
18
+ 执行策略以 `orchestration-contract.yaml.execution_efficiency` 为准,通过同一次 `query-lifecycle-context` 查询取得。Plan → Spec → Ticket 的耗时应分清脚本执行、Agent 读取与编排、人工等待;没有计时记录时不把总时长归因于摘要计算。
19
+
20
+ 同一工作单元把 mode、stage、work-unit 和必要 include 放进一次查询。查询已给出的内容不再整份读取;已读资料在当前任务内未变化时复用,变化、新影响或恢复时重新加载。只问当前阶段尚缺且会影响判断的问题,独立问题可合并;依赖尚未形成资产的后续批准仍按用户决定协议逐边界取得。
21
+
22
+ 资产写入稳定后、批准或流转前执行当前合同要求的验证。同一边界内,只有输入字节、上游、验证器/schema、参数和仓库根均已确认未变化且实际结果可读时,才引用已执行结果;不确定就重跑。每个工作单元仍生成并校验自己的 context reconciliation;恢复、交接、实现、合并和发布边界重新执行适用验证。`verify-*-scenarios` 与模板全量核验用于模板维护或明确的回归任务,不因产品阶段切换而重复执行;实例合同显式要求的检查仍须执行。
23
+
24
+ 脚本命令、实际退出码和 duration_ms 记入已有 checkpoint 的验证证据;Agent 编排和人工等待仅在有计时来源时记录,否则标为 unknown。无需为耗时再建一套阶段产物。
25
+
16
26
  ## 阶段边界
17
27
 
18
28
  Matt phase boundary 是工作阶段之间的上下文决策,不是新的生命周期状态。按以下顺序判断,第一项适用即停止判断:
@@ -27,6 +37,10 @@ Matt phase boundary 是工作阶段之间的上下文决策,不是新的生命
27
37
 
28
38
  ## 原型到后端脚手架的接力
29
39
 
40
+ 阶段 5 在技术分析后固定进入 `work-unit.implementation-repository-preparation`。编排器按 backend / frontend 影响逐项目展示已有或新建工程、Agent 推荐、仓库 scope、目标路径、Git 初始化、验证命令和风险,取得真实用户确认后再执行。已有工程调用 `implementation-repo-onboarding`;新后端按已确认架构调用对应生成器;新前端调用 `yss-frontend-scaffold-generator`。默认 `external-repository`,`harness-apps` / `git-submodule`、`git init` 和远端仓库创建均须显式选择或授权。
41
+
42
+ 所有命中项目必须达到 `existing-and-onboarded` 或 `initialized-and-verified`,未命中的交付面必须有带原因的 `not-applicable`。聚合结果、Manifest、验证和 onboarding 证据必须可读且当前;否则 `gate.implementation-repositories-ready` 阻断 Ticket 正式化。旧实例恢复时保留已有 Ticket,但将相关 Ticket / Slice Contract 标为 `blocked` / `stale` 并返回本工作单元。
43
+
30
44
  `prototype_confirmation` 通过后,先判断实现仓库登记中的 backend `scaffold_status`。当状态为 `required` 时,在工程基线中先完成脚手架架构选择:Agent 按领域复杂度给出 `domain-driven` / `layered-mvc` 推荐和依据,本体选择作为子项目预填默认值,用户通过批量表确认全部项目或逐项覆盖。选择写入 `scaffold-architecture-decisions.yaml`;处于 `undecided`、`recommended`、`awaiting-user-decision` 或 `stale` 时必须阻断,不得默认 DDD,也不得在生成器内交互。
31
45
 
32
46
  选择达到 `lifecycle-approved` 且 digest 当前后,由 `yss-implementation-contract-compiler` 编译脚手架 schema v3 `controlled-generation` 工作单元合同,生命周期批准并持久化后才能运行对应生成器。顺序为:工程基线与架构推荐 → 用户确认与选择持久化 → 实现合同编译器脚手架合同 draft → 生命周期批准/持久化 → `domain-driven` 使用 `yss-ddd-scaffold-generator` 或 `layered-mvc` 使用 `yss-layered-mvc-scaffold-generator` → 对应基线/Manifest v3 校验 → 实现合同编译器业务合同重编译。`existing` / `initialized` 不重复生成;架构转换必须单独立项。
@@ -55,10 +69,10 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
55
69
 
56
70
  - `work-unit.technical-analysis` 由 `yss-technical-design` 组织后端技术设计,先按项目确认架构,再调用 DDD `yss-tactical-design` 或传统 MVC `yss-mvc-design`。状态、规则、一致性、持久化影响本身不意味着选择 DDD。无后端技术设计影响记录带原因的 `not-applicable`,其他 API / 前端技术分析继续各自路由。新合同使用 `artifact.technical-design`,通过 `evidence.technical-design-review` 回交现有架构审查;旧 DDD 稳定 ID 只读兼容。批准仍由生命周期维护,编译器消费批准且当前的设计起草实现合同;`stale`、`drift` 或 `new_impacts` 时不得继续 Ticket 正式化。
57
71
 
58
- - `work-unit.discovery-requirements` 实际调用 `grilling` 和 `domain-modeling`;`work-unit.discovery-opportunity` 按事实类型路由 `competitive-intelligence` 或 `yss-research`。`yss-research:quick` 只用于探索;外部证据进入领域战略、阶段决策或其他生命周期批准输入前必须升级为 `evidence-audited`。生命周期原生工作单元默认负责 Spec、Ticket 和实现资产;`to-spec`、`to-tickets`、`implement` 仅保留为显式兼容入口,结果必须回交生命周期验收。
72
+ - `work-unit.plan-requirements` 实际调用 `grilling` 和 `domain-modeling`;`work-unit.plan-opportunity` 按事实类型路由 `competitive-intelligence` 或 `yss-research`。`yss-research:quick` 只用于探索;外部证据进入领域战略、阶段决策或其他生命周期批准输入前必须升级为 `evidence-audited`。生命周期原生工作单元默认负责 Spec、Ticket 和实现资产;`to-spec`、`to-tickets`、`implement` 仅保留为显式兼容入口,结果必须回交生命周期验收。
59
73
  - 原生 `work-unit.ticket-decomposition` 只能在 OpenAPI Freeze 或无 API 影响记录后创建垂直切片,初始 Ticket 状态统一为 `ready-for-human`;生命周期复算完整公式后才能提升 `ready-for-agent`。该工作单元必须返回 `ticket_decomposition_result_ref` 和垂直切片引用,并作为实现的必经前置证据。
60
74
  - 原生 `work-unit.slice-implementation` 必须在生命周期批准并持久化 Slice Implementation Contract 和 Build Architecture Checklist 后执行;用户显式 `implement` 仍走兼容入口,不得绕过生命周期。
61
- - `Workflow Execution Result.next_route` 必须通过生命周期转换校验;Spec、原型和技术分析不得直接跳转到 `work-unit.slice-implementation`,只能先进入 `work-unit.ticket-decomposition`。
75
+ - `Workflow Execution Result.next_route` 必须通过生命周期转换校验;Spec、原型和技术分析不得直接跳转到 Ticket 正式化或实现,必须先完成 `work-unit.implementation-repository-preparation`,再进入 `work-unit.ticket-decomposition`。
62
76
  - `implement` 遇到 backend `scaffold_status=required` 时,还必须满足原型确认后的脚手架策略:脚手架 Execution Result、`yss-backend-scaffold-parent` 基线、Wrapper 验证和 实现合同编译器 合同重编译均已回写;否则停在工程基线,不得写业务代码。
63
77
  - `Workflow Execution Result` 出现 `drift`、`new_impacts`、`stale_candidates`、`violation`、`missing_evidence`、空 `evidence_refs` 或缺少必需字段时暂停当前工作单元;旧结果只能先经只读兼容 adapter 归一化。
64
78
 
@@ -41,6 +41,8 @@ required gates ∈ {approved, not-applicable}
41
41
  AND 关键决定及当前切片实施范围已有可追溯、当前且未撤回的真实用户批准
42
42
  AND related artifacts 不含 stale(若命中技术设计影响,`artifact.technical-design` 必须已批准且版本当前、架构一致;旧 DDD 合同仅按显式兼容入口消费)
43
43
  AND blocking edges 全部关闭
44
+ AND `gate.implementation-repositories-ready` 已通过,所有命中的前后端项目均为 `existing-and-onboarded` 或 `initialized-and-verified`,未命中的交付面有带原因的 `not-applicable`
45
+ AND `work-unit.implementation-repository-preparation` 已返回当前且证据可读的 `completed` 结果
44
46
  AND implementation repo/branch/CI/test/rollback 已明确
45
47
  AND `work-unit.ticket-decomposition` 已返回 `completed`,且其 `ticket_decomposition_result_ref` 证据可读取
46
48
  AND `vertical_slice_ticket_ref` 指向 `docs/.scratch/<feature>/issues/` 下的垂直切片 Ticket
@@ -50,7 +52,8 @@ AND Slice Implementation Contract 已由生命周期编排器批准并持久化
50
52
  AND Slice Implementation Contract 的 `ticket_ref` 与 `vertical_slice_ticket_ref` 完全一致
51
53
  AND 当前工作单元消费的 contract_id/version 与最新批准版本一致
52
54
  AND Backend Slice Implementation Contract(后端适用)和 Build Architecture Checklist 已完成
53
- AND backend 影响且 scaffold_status=required 时,脚手架架构选择已由用户确认并达到 lifecycle-approved、schema v3 合同与 Manifest v3 当前、对应 DDD / Layered MVC 基线、Wrapper 验证和 实现合同编译器重编译均已完成
55
+ AND backend 影响且 scaffold_status=required 时,脚手架架构选择已由用户确认并达到 lifecycle-approved、兼容 schema v3 或统一 schema v4 合同与 Manifest 当前、对应 DDD / Layered MVC 基线、Wrapper 验证和 实现合同编译器重编译均已完成
56
+ AND frontend 影响且无已有工程时,统一 schema v4 Project Scaffold Contract 已批准、持久化且当前,模板 commit 已锁定,`pnpm install --frozen-lockfile` 与工程基线要求的 lint/type-check/build 已实际通过
54
57
  AND 所有后续生成代码均绑定主 YSS skill、依赖闭包、允许写路径、预期证据和 YSS Skill Execution Result
55
58
  AND UI 影响切片的前端实现还原计划已通过 schema 校验、`template=false`、`status=approved`,且基线引用可读取
56
59
  ```
@@ -61,7 +64,7 @@ AND UI 影响切片的前端实现还原计划已通过 schema 校验、`templat
61
64
 
62
65
  任何 `project-instance` 工作单元进入下一步、任何阶段会签暂停或阶段完成 checkpoint,还必须引用当前工作单元的 `context_reconciliation`。其中 `status=reconciled`、`context_ref=CONTEXT.md`、`document_digest` 与 `referenced_terms_digest` 必须和根目录唯一 `CONTEXT.md` 一致;该证据不改变门禁数量。`template-source` 仅允许以带原因的 `not-applicable` 表示它只校验模板合同,不产生产品业务术语。
63
66
 
64
- 用户显式运行 `to-tickets` 后,垂直切片初始 Ticket 状态固定为 `ready-for-human`。原生路径执行 `work-unit.ticket-decomposition` 时同样必须产生等价的垂直切片和 `Workflow Execution Result` 证据。只有 `yss-product-lifecycle` 复算上述公式全部为真后,才能把它提升为 `ready-for-agent`;生命周期不会自动调用 `to-tickets`,但不得跳过 Ticket 正式化工作单元。其默认标签也不参与该裁决。
67
+ 用户显式运行 `to-tickets` 后,垂直切片初始 Ticket 状态固定为 `ready-for-human`。原生路径执行 `work-unit.ticket-decomposition` 时同样必须产生等价的垂直切片和 `Workflow Execution Result` 证据。只有 `yss-product-lifecycle` 复算上述公式全部为真后,才能把它提升为 `ready-for-agent`;生命周期不会自动调用 `to-tickets`,但不得跳过实现仓库准备和 Ticket 正式化工作单元。旧实例恢复时若缺少当前工程准备结果,保留既有 Ticket,将 Ticket 与 Slice Contract 标为 `blocked` / `stale` 并回到阶段 5。其默认标签也不参与该裁决。
65
68
 
66
69
  ## Review 与 Git 授权状态
67
70
 
@@ -1,86 +1,44 @@
1
1
  ---
2
2
  name: yss-repository
3
- description: Use when generating or refactoring YSS Infrastructure persistence models, repositories, MapStruct convertors, Domain Gateway implementations, or metadata/DDL-backed queries.
3
+ description: 用于按批准的 YSS 架构与持久化合同实现或重构 PO、Repository、Convertor、Domain Gateway/Query Adapter;负责结构路由、分层边界和验证,不内置可照抄的业务代码模板。
4
4
  ---
5
5
 
6
6
  # yss-repository
7
7
 
8
- ## 架构分流(先执行)
8
+ 本 Skill 消费批准合同,将持久化责任落到选定架构 Profile。它不是完整脚手架,也不从 DDL、表名或示例反向创造领域/API 合同。
9
9
 
10
- 读取当前合同的 architecture_identity 并与工程基线、仓库登记及 Manifest 核对;再且只读取 `references/profiles/<architecture_profile>.md`。支持的分支为 target-domain-model、layered-mvc-service、mvc-data-analysis-v1;成熟度以注册表为准,不能把 draft 称为受支持。MVC 不执行下文 DDD 专属规则,也不加载其旧分层 guide;组件、安全、批准合同、允许路径及执行证据规则仍共用。
10
+ ## 架构分流
11
11
 
12
- 以下 Application / Domain Gateway / Infrastructure / Web module 叙述仅适用于 target-domain-model;MVC 的 service/core/repository/server/client 所有权由所选 Profile 引用定义。
12
+ 1. 读取当前 Slice Implementation Contract 的 `architecture_identity`、`persistence_profile`、实现仓登记、数据合同、`allowed_write_paths` 和预期证据。
13
+ 2. 将架构身份与工程基线、Manifest 和 `docs/agents/yss-skill-registry.yaml` 核对;成熟度以注册表为准,不能把 `draft` 称为已支持。
14
+ 3. 根据 `architecture_profile` **且只**加载一个文件:
15
+ - [target-domain-model](references/profiles/target-domain-model.md)
16
+ - [layered-mvc-service](references/profiles/layered-mvc-service.md)
17
+ - [mvc-data-analysis-v1](references/profiles/mvc-data-analysis-v1.md)
18
+ 4. Profile 缺失、身份冲突、Manifest 漂移或数据输入不完整时返回 `blocked` / `drift` / `new_impacts`,不得选择“最像”的分支继续。
13
19
 
14
- 这是一个偏代码生成和结构补全的 skill,适合在已有工程里补 Repository 层,不适合替代完整脚手架。
20
+ ## 共用规则
15
21
 
16
- ## 何时使用
22
+ - 只实现批准合同已有的结构与 seam,不创建或改写 Domain Gateway、Application Query Port、service/core 接口或 Web/API DTO。
23
+ - 持久化 Profile 命中 MyBatis 时加载 `yss-mybatis`,以当前组件能力索引核验基类、分页、批量、扫描、XML 和数据源行为;本 Skill 不复制这些规则。
24
+ - POJO、转换和 Java 规范分别消费 Registry 编译出的 `lombok`、`mapstruct`、`alibaba-java-code-style`;不在此重复其注解和处理器规则。
25
+ - 数据合同必须显式覆盖主键、逻辑删除、审计字段、空值、枚举/值对象映射和敏感字段;动态排序、分组与过滤必须使用批准白名单和参数绑定。
26
+ - 事务归所选 Profile 的用例边界。Repository/Gateway Adapter 不临时新增业务事务,也不把数据库异常原文或凭据暴露给上层。
27
+ - 基础机械结构只有在合同标记 `controlled-generation`、metadata 完整且目标文件不存在时才可受控生成;查询语义、分页、并发、事务和迁移行为使用 `behavior-tdd`。
28
+ - 发现 SQL、DDL、索引、数据模型或 API schema 新影响时立即暂停并返回 `new_impacts`,不能以 TODO 代替合同重编译。
17
29
 
18
- - 用户要生成 `PO / Repository / Convertor / GatewayImpl`。
19
- - 用户已有 Domain 模型,缺基础设施持久层落地。
20
- - 用户要基于表结构、DDL、metadata 补齐持久层代码。
30
+ ## 产物与证据
21
31
 
22
- ## 不适用
32
+ 实际产物由所选 Profile 和合同共同决定,不以固定示例类名或固定包路径推断。完成前至少证明:
23
33
 
24
- - 只做 Controller 时,优先 `yss-web-controller`。
25
- - 只做领域建模时,优先 `yss-domain`。
26
- - 从零建多模块工程时,优先 `yss-ddd-scaffold-generator`。
34
+ - 每个实现类对应已批准的端口或用例调用方;
35
+ - Mapper/Repository、XML、扫描和转换实现可编译且被运行时发现;
36
+ - 保存/重载、查询、分页、空结果、排序白名单和回滚等命中行为有测试;
37
+ - 所有写入位于 `allowed_write_paths`;
38
+ - 使用各后端项目根的 `./mvnw ...` 记录实际命令、退出码和时间。
27
39
 
28
- ## 工作方式
40
+ 按 [YSS Skill Execution Result v2](../yss-implementation-contract-compiler/references/yss-skill-execution-result.md) 返回实际文件、测试、约束结果、`seam_deferred`、`deviations`、`new_impacts`、`drift` 和 `violation`。
29
41
 
30
- 1. 先确认批准且版本当前的 Slice Implementation Contract、数据架构、领域模型和既有 Domain Gateway/Application Query Port;缺任一前置项即返回 `blocked` / `new_impacts`,不得从 DDL 反向猜测领域端口。
31
- 2. 确认持久化 Profile 为 `mybatis-plus` 与 `PO <-> Domain Model`;`Entity + BaseRepository + DTO/VO GatewayImpl` 等旧架构对新脚手架为 `unsupported`。
32
- 3. 如果 metadata 不完整,先补齐 metadata、数据库表结构或 DDL 输入。
33
- 4. 加载并遵守固定 Profile 的 `yss-mybatis`,不得在本 skill 内维护第二套 Mapper、分页或 SQL 安全规则。
34
- 5. 涉及 POJO 字段、getter/setter、constructor、builder 或日志时,必须加载并遵守 `lombok`。
35
- 6. 涉及持久化模型与 Domain/Application Result 转换时,必须加载并遵守 `mapstruct`;Infrastructure 不生成 Web VO/CMD 转换。
36
- 7. 生成代码时严格保持 Domain 与 Infrastructure 分层边界。
37
- 8. 默认先生成基础 CRUD 骨架,把复杂查询留给手工实现。
42
+ ## Review 输入
38
43
 
39
- ## 产物范围
40
-
41
- - `infrastructure/persistence/po/*PO.java`
42
- - `infrastructure/persistence/repository/*Repository.java`
43
- - `infrastructure/persistence/convertor/*Convertor.java`
44
- - `infrastructure/persistence/gateway/*GatewayImpl.java`
45
- - `infrastructure/query/adapter/*QueryAdapter.java`(实现 Application Query Port)
46
- - `infrastructure/query/convertor/*QueryConvertor.java`
47
-
48
- ## 约束
49
-
50
- - Domain 不依赖 Infrastructure。
51
- - Gateway 定义在 Domain,实现放在 Infrastructure。
52
- - `yss-repository` 不创建或改写 Domain Gateway interface;缺少或需要改变 Gateway 时返回 `new_impacts`,由 实现合同编译器 回到 `yss-domain` / `yss-tactical-design`。
53
- - Domain Gateway 只交换 Domain Model、领域值和标识;分页、列表和读模型走 Application Query Port,禁止返回 Web VO 或把 `PageQuery` 带入 Domain。
54
- - PO / Domain Model 等 POJO 样板代码优先使用 Lombok;不要成片手写 getter/setter、constructor、builder 或 logger。
55
- - Convertor 必须优先使用 `@Mapper(componentModel = "spring")` 和构造器注入;禁止静态 `INSTANCE`、`BeanUtils.copyProperties`、反射式通用拷贝和重复手写字段赋值,除非实现合同记录受控例外、测试和 review 证据。
56
- - MapStruct 与 Lombok 同时使用时,必须确认注解处理器顺序和 `lombok-mapstruct-binding` 配置;构建命令使用项目根目录 `./mvnw ...`。
57
- - 逻辑删除、审计字段、主键策略要显式处理,不要隐式略过。
58
- - 事务放在批准的 Application 用例边界;检测到旧 GatewayImpl 事务布局时返回 `unsupported`,不在 scaffold 链路内迁移。
59
-
60
- ## 质量门禁
61
-
62
- - 生成代码必须可编译。
63
- - 命名、包路径、注解要与工程现有规范一致。
64
- - Convertor 必须有 MapStruct 接口 / 抽象类、生成实现可编译,必要时补 mapper 单测或覆盖核心字段转换的行为测试。
65
- - POJO 使用 Lombok 时不得引入 `@Data` 造成实体 equals / toString 风险;有关系字段、敏感字段或懒加载字段时按 `lombok` skill 排除。
66
- - 遇到无法自动判断的字段、映射或查询规则时返回 `new_impacts` / `drift` 并暂停,不要把 TODO 当作已完成实现。
67
-
68
- ## 协同顺序
69
-
70
- - metadata / DDL 输入准备:确认输入完整
71
- - 领域建模:`yss-domain`
72
- - 用例编排:`yss-application`
73
- - POJO 样板代码:`lombok`
74
- - 对象转换:`mapstruct`
75
- - Web 补齐:`yss-web-controller`
76
-
77
- ## 分层开发规范
78
-
79
- 实现 PO / Repository / GatewayImpl 前,必须加载 `references/infrastructure-layer-guide.md`:其中定义持久化对象、Repository、Convertor 与 Gateway 实现的结构与示例。
80
-
81
- ## 阶段 7 合同
82
-
83
- - 前置条件:数据架构、领域元数据、实现仓库和批准后的 `Slice Implementation Contract` 均可用;否则不执行本 skill,由 实现合同编译器 返回 `blocked`。
84
- - PO/Repository/Convertor 骨架可使用 `controlled-generation`;复杂过滤、分页语义、并发、事务和迁移行为必须拆为 `behavior-tdd`。
85
- - 写入仅限合同 `allowed_write_paths`,证据必须包含实际 PO、Repository、Convertor、GatewayImpl、测试和 `./mvnw ...` 结果。
86
- - 按统一 `YSS Skill Execution Result` 返回 `seam_deferred/deviations/new_impacts`;发现数据模型、DDL、SQL、索引或 API schema 变化时暂停并重路由。
44
+ `code-review` 仅对本体项目及合同/实现仓登记的后端研发项目执行本 Skill。候选命中持久化结构或数据访问时,Standards 轴必须读取所选 Profile 并引用规则与代码证据;未命中时记录带原因的 `not-applicable`。Reviewer 只报告 finding,不写实现。
@@ -1,5 +1,5 @@
1
1
  version: 1
2
2
  interface:
3
3
  display_name: "YSS Repository"
4
- short_description: "Infrastructure Repository、Mapper、Convertor 与端口实现规范"
5
- default_prompt: "Use $yss-repository to implement Infrastructure persistence and query adapters against existing Domain Gateway and Application Query Port interfaces without creating domain contracts."
4
+ short_description: "按架构 Profile 实现并验证 YSS 持久层结构"
5
+ default_prompt: "Use $yss-repository to route and implement persistence structures from an approved architecture profile and contract without inventing domain, service, or API contracts."
@@ -1,3 +1,21 @@
1
1
  # layered-mvc-service
2
2
 
3
- 先读仓库 `docs/agents/backend-architecture-profiles.md`。依据批准的数据合同写入 repository 的 po/repository/convertor 及 Mapper XML;无需领域模型或 Gateway。使用 `yss-mybatis` 的 MyBatis-Plus 体系;保留 cause,避免向上暴露原始 SQL/凭据。事务由 service 用例拥有。测试覆盖查询、分页、回滚与字段转换;H2 不证明生产方言。生产驱动/数据源接入须另有批准的存储工作单元。
3
+ 仅适用于注册表中 `architecture_family=layered-mvc`、用例层为 `service` 的当前合同。先读仓库 `docs/agents/backend-architecture-profiles.md`;Profile 的成熟度沿用注册表。
4
+
5
+ ## 前置与所有权
6
+
7
+ - 已有批准的 service 用例接口、数据合同和查询/写入语义;不得从表结构反推 service 或 HTTP API。
8
+ - repository module 拥有 PO、Repository/Mapper、XML 和持久化 Convertor;不生成 DDD Domain Gateway、Application Query Port 或 Web DTO。
9
+ - repository 不反向依赖 service、server、client;事务、业务规则和幂等归 service 用例。
10
+
11
+ ## 结构决策
12
+
13
+ - 包、module、Mapper 扫描和 XML 路径来自 `architecture_identity`、当前工程基线及合同,不使用 DDD Infrastructure 固定布局。
14
+ - MyBatis-Plus 基类、分页、批量和数据源能力由 `yss-mybatis` 当前能力矩阵决定。
15
+ - repository 输出 service 已批准的内部模型或结果,不泄漏 PO、原始 SQL、数据库异常原文或凭据。
16
+
17
+ ## 必须验证
18
+
19
+ - service 是唯一业务事务边界,Controller 不直连 Repository。
20
+ - Repository/Mapper 覆盖查询、写入、分页、回滚、字段转换和批准数据库 fixture。
21
+ - H2 仅作为验证数据库;生产驱动和数据源必须由单独批准的存储工作单元接入。
@@ -1,3 +1,21 @@
1
1
  # mvc-data-analysis-v1
2
2
 
3
- 遵守 `layered-mvc-service.md`,但事务所有者为 `core`。repository 不依赖 core/client/server,不生成 DDD Gateway。数据分析的动态排序、分组、过滤均须白名单及参数绑定;只消费批准的数据和查询合同。
3
+ 仅适用于注册表中的数据分析 MVC Profile。先读仓库 `docs/agents/backend-architecture-profiles.md`;Profile 的成熟度沿用注册表。
4
+
5
+ ## 前置与所有权
6
+
7
+ - 已有批准的数据合同、查询语义和 core 用例接口;不得从 DDL 或报表字段反推对外 API。
8
+ - repository module 拥有 PO、Repository/Mapper、XML 和持久化 Convertor;不生成 DDD Gateway,也不依赖 core、client、server。
9
+ - 事务、业务规则和查询编排归 core;repository 只实现批准的数据访问 seam。
10
+
11
+ ## 数据分析约束
12
+
13
+ - 动态排序、分组、过滤、聚合字段和表来源必须来自批准白名单并使用参数绑定;客户端输入不得直接拼接 SQL 标识符或表达式。
14
+ - MyBatis-Plus 基类、分页、批量和数据源能力由 `yss-mybatis` 当前能力矩阵决定,不假设组件提供动态数据源路由。
15
+ - repository 不返回 HTTP DTO,不暴露原始 SQL、数据库错误原文或连接凭据。
16
+
17
+ ## 必须验证
18
+
19
+ - 查询覆盖白名单边界、空值、空结果、分页 total、稳定排序和大数据量限制。
20
+ - 数据库 fixture 验证实际 Mapper/XML 与方言;H2 不能证明生产数据库的函数、排序或执行计划。
21
+ - core 是唯一业务事务边界,server 不直连 Repository。
@@ -1,3 +1,23 @@
1
1
  # target-domain-model
2
2
 
3
- 完整执行规则见 `../infrastructure-layer-guide.md`。Domain Gateway 和 Application Query Port 必须已存在;本 Skill 只在 Infrastructure 实现,不反向创建领域端口。事务归 Application。
3
+ 仅适用于注册表中 `architecture_family=domain-driven` 的当前合同。Profile 的成熟度沿用注册表,不因加载本文件而升级。
4
+
5
+ ## 前置与所有权
6
+
7
+ - 写模型必须已有批准的 Domain Gateway;读模型必须已有批准的 Application Query Port。缺失或需要改变签名时返回 `new_impacts`,由 `yss-domain` / `yss-application` 和实现合同编译器处理。
8
+ - Infrastructure 实现既有端口,拥有 PO、Repository/Mapper、XML、持久化 Convertor、GatewayImpl 和 QueryAdapter;不拥有领域规则、HTTP DTO 或业务事务。
9
+ - Domain Gateway 只交换 Aggregate、Domain Model、领域值和标识;分页、列表和读模型走 Application Query Port,`PageQuery` 不进入 Domain。
10
+
11
+ ## 结构决策
12
+
13
+ - 包与 module 必须来自 `architecture_identity` 和现有工程基线;新脚手架的持久化责任位于 Infrastructure,既有工程不得因本 Skill 自动迁移目录。
14
+ - 写模型转换覆盖 `PO <-> Domain Model`;读模型转换只到 Application Result。Infrastructure 不生成或返回 Web VO/CMD。
15
+ - Repository 基类、Mapper/XML、分页与批量能力由 `yss-mybatis` 当前能力矩阵决定,不把组件版本方法名写成领域规则。
16
+ - 事务归 Application 用例。GatewayImpl/QueryAdapter 只执行端口语义,不新增业务编排。
17
+
18
+ ## 必须验证
19
+
20
+ - Domain 不反向依赖 Infrastructure、Mapper、PO 或组件类型。
21
+ - 经 Domain Gateway 保存后可重新加载语义等价的 Aggregate。
22
+ - Query Port 覆盖分页 total、空结果、排序/过滤白名单和字段转换。
23
+ - Mapper/Repository 使用批准数据库 fixture;H2 不能证明生产方言。
@@ -0,0 +1,59 @@
1
+ import assert from "node:assert/strict";
2
+ import { access, readFile, readdir } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import test from "node:test";
5
+ import { fileURLToPath } from "node:url";
6
+
7
+ const repositorySkillRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
8
+ const skillsRoot = path.resolve(repositorySkillRoot, "..");
9
+ const projectRoot = path.resolve(skillsRoot, "../..");
10
+
11
+ async function text(target) {
12
+ return readFile(target, "utf8");
13
+ }
14
+
15
+ test("repository router exposes exactly the registered profile entry points", async () => {
16
+ const profilesRoot = path.join(repositorySkillRoot, "references/profiles");
17
+ const profiles = (await readdir(profilesRoot)).filter((name) => name.endsWith(".md")).sort();
18
+ assert.deepEqual(profiles, ["layered-mvc-service.md", "mvc-data-analysis-v1.md", "target-domain-model.md"]);
19
+
20
+ const skill = await text(path.join(repositorySkillRoot, "SKILL.md"));
21
+ for (const profile of profiles) assert.match(skill, new RegExp(`references/profiles/${profile.replace(".md", "")}`));
22
+ assert.match(skill, /且只.*加载一个文件/);
23
+ assert.doesNotMatch(skill, /infrastructure-layer-guide/);
24
+ });
25
+
26
+ test("normative persistence skills do not contain business-specific templates or production source mirrors", async () => {
27
+ const normativeFiles = [
28
+ path.join(repositorySkillRoot, "SKILL.md"),
29
+ ...["layered-mvc-service.md", "mvc-data-analysis-v1.md", "target-domain-model.md"]
30
+ .map((name) => path.join(repositorySkillRoot, "references/profiles", name)),
31
+ ];
32
+ for (const target of normativeFiles) {
33
+ const contents = await text(target);
34
+ assert.doesNotMatch(contents, /QualityTemplate|id\.value\(\)|insertOrUpdate\(/);
35
+ }
36
+
37
+ const mybatisAssets = path.join(skillsRoot, "yss-mybatis/assets");
38
+ try {
39
+ const javaMirrors = (await readdir(mybatisAssets)).filter((name) => name.endsWith(".java"));
40
+ assert.deepEqual(javaMirrors, []);
41
+ } catch (error) {
42
+ if (error.code !== "ENOENT") throw error;
43
+ }
44
+ });
45
+
46
+ test("code review wires Repository and MyBatis with registered backend scope", async () => {
47
+ const standards = await text(path.join(skillsRoot, "code-review/references/yss-review-standards.md"));
48
+ const report = await text(path.join(projectRoot, "docs/templates/review-report-template.md"));
49
+ const lifecycle = await text(path.join(skillsRoot, "yss-product-lifecycle/references/orchestration-contract.yaml"));
50
+
51
+ for (const source of [standards, report, lifecycle]) {
52
+ assert.match(source, /yss-repository/);
53
+ assert.match(source, /yss-mybatis/);
54
+ }
55
+ assert.match(standards, /本体项目和已登记后端研发项目/);
56
+ assert.match(report, /<review-root\.\.\.>/);
57
+ assert.match(lifecycle, /registered-backend-development-projects/);
58
+ await access(path.join(skillsRoot, "yss-mybatis/references/source-index.md"));
59
+ });
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: yss-research
3
- description: Research technical or product-strategy questions with traceable evidence before YSS Discovery, Spec, domain-strategy, API, architecture, or implementation decisions. Use for current facts, standards, third-party APIs, business constraints, user problems, domain-boundary evidence, or when the deprecated `research` alias is invoked.
3
+ description: Research technical or product-strategy questions with traceable evidence before YSS Plan, Spec, domain-strategy, API, architecture, or implementation decisions. Use for current facts, standards, third-party APIs, business constraints, user problems, domain-boundary evidence, or when the deprecated `research` alias is invoked.
4
4
  ---
5
5
 
6
6
  # YSS Research