create-yss-spec 3.1.3 → 3.3.0

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 (457) hide show
  1. package/README.md +5 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
  4. package/template/.agents/skills/code-review/SKILL.md +4 -0
  5. package/template/.agents/skills/code-review/agents/openai.yaml +1 -1
  6. package/template/.agents/skills/code-review/references/yss-review-standards.md +9 -2
  7. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  8. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  9. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  10. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  11. package/template/.agents/skills/yss-domain/SKILL.md +3 -3
  12. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  13. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  14. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  15. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  16. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  17. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  18. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  19. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  20. package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  21. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  22. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  23. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  24. package/template/.agents/skills/yss-mvc-design/SKILL.md +16 -0
  25. package/template/.agents/skills/yss-mvc-design/agents/openai.yaml +4 -0
  26. package/template/.agents/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  27. package/template/.agents/skills/yss-mybatis/SKILL.md +34 -58
  28. package/template/.agents/skills/yss-mybatis/agents/openai.yaml +2 -2
  29. package/template/.agents/skills/yss-mybatis/references/source-index.md +88 -68
  30. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +48 -43
  31. package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  32. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  33. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  34. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +6 -3
  35. package/template/.agents/skills/yss-repository/SKILL.md +28 -70
  36. package/template/.agents/skills/yss-repository/agents/openai.yaml +2 -2
  37. package/template/.agents/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  38. package/template/.agents/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  39. package/template/.agents/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  40. package/template/.agents/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  41. package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  42. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  43. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  44. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  45. package/template/.agents/skills/yss-tactical-design/SKILL.md +2 -2
  46. package/template/.agents/skills/yss-tactical-design/references/output-template.md +2 -0
  47. package/template/.agents/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  48. package/template/.agents/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  49. package/template/.agents/skills/yss-technical-design/SKILL.md +31 -0
  50. package/template/.agents/skills/yss-technical-design/agents/openai.yaml +4 -0
  51. package/template/.agents/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  52. package/template/.agents/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  53. package/template/.agents/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  54. package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  55. package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  56. package/template/.agents/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  57. package/template/.agents/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  58. package/template/.claude/skills/code-review/SKILL.md +4 -0
  59. package/template/.claude/skills/code-review/agents/openai.yaml +1 -1
  60. package/template/.claude/skills/code-review/references/yss-review-standards.md +9 -2
  61. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  62. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  63. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  64. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  65. package/template/.claude/skills/yss-domain/SKILL.md +3 -3
  66. package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  67. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  68. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  69. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  70. package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  71. package/template/.claude/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  72. package/template/.claude/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  73. package/template/.claude/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  74. package/template/.claude/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  75. package/template/.claude/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  76. package/template/.claude/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  77. package/template/.claude/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  78. package/template/.claude/skills/yss-mvc-design/SKILL.md +16 -0
  79. package/template/.claude/skills/yss-mvc-design/agents/openai.yaml +4 -0
  80. package/template/.claude/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  81. package/template/.claude/skills/yss-mybatis/SKILL.md +34 -58
  82. package/template/.claude/skills/yss-mybatis/agents/openai.yaml +2 -2
  83. package/template/.claude/skills/yss-mybatis/references/source-index.md +88 -68
  84. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +48 -43
  85. package/template/.claude/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  86. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  87. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  88. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +6 -3
  89. package/template/.claude/skills/yss-repository/SKILL.md +28 -70
  90. package/template/.claude/skills/yss-repository/agents/openai.yaml +2 -2
  91. package/template/.claude/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  92. package/template/.claude/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  93. package/template/.claude/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  94. package/template/.claude/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  95. package/template/.claude/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  96. package/template/.claude/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  97. package/template/.claude/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  98. package/template/.claude/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  99. package/template/.claude/skills/yss-tactical-design/SKILL.md +2 -2
  100. package/template/.claude/skills/yss-tactical-design/references/output-template.md +2 -0
  101. package/template/.claude/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  102. package/template/.claude/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  103. package/template/.claude/skills/yss-technical-design/SKILL.md +31 -0
  104. package/template/.claude/skills/yss-technical-design/agents/openai.yaml +4 -0
  105. package/template/.claude/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  106. package/template/.claude/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  107. package/template/.claude/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  108. package/template/.claude/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  109. package/template/.claude/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  110. package/template/.claude/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  111. package/template/.claude/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  112. package/template/.codex/skills/code-review/SKILL.md +4 -0
  113. package/template/.codex/skills/code-review/agents/openai.yaml +1 -1
  114. package/template/.codex/skills/code-review/references/yss-review-standards.md +9 -2
  115. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  116. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  117. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  118. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  119. package/template/.codex/skills/yss-domain/SKILL.md +3 -3
  120. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  121. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  122. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  123. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  124. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  125. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  126. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  127. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  128. package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  129. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  130. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  131. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  132. package/template/.codex/skills/yss-mvc-design/SKILL.md +16 -0
  133. package/template/.codex/skills/yss-mvc-design/agents/openai.yaml +4 -0
  134. package/template/.codex/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  135. package/template/.codex/skills/yss-mybatis/SKILL.md +34 -58
  136. package/template/.codex/skills/yss-mybatis/agents/openai.yaml +2 -2
  137. package/template/.codex/skills/yss-mybatis/references/source-index.md +88 -68
  138. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +48 -43
  139. package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  140. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  141. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  142. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +6 -3
  143. package/template/.codex/skills/yss-repository/SKILL.md +28 -70
  144. package/template/.codex/skills/yss-repository/agents/openai.yaml +2 -2
  145. package/template/.codex/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  146. package/template/.codex/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  147. package/template/.codex/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  148. package/template/.codex/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  149. package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  150. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  151. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  152. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  153. package/template/.codex/skills/yss-tactical-design/SKILL.md +2 -2
  154. package/template/.codex/skills/yss-tactical-design/references/output-template.md +2 -0
  155. package/template/.codex/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  156. package/template/.codex/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  157. package/template/.codex/skills/yss-technical-design/SKILL.md +31 -0
  158. package/template/.codex/skills/yss-technical-design/agents/openai.yaml +4 -0
  159. package/template/.codex/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  160. package/template/.codex/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  161. package/template/.codex/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  162. package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  163. package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  164. package/template/.codex/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  165. package/template/.codex/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  166. package/template/.cursor/skills/code-review/SKILL.md +4 -0
  167. package/template/.cursor/skills/code-review/agents/openai.yaml +1 -1
  168. package/template/.cursor/skills/code-review/references/yss-review-standards.md +9 -2
  169. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  170. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  171. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  172. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  173. package/template/.cursor/skills/yss-domain/SKILL.md +3 -3
  174. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  175. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  176. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  177. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  178. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  179. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  180. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  181. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  182. package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  183. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  184. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  185. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  186. package/template/.cursor/skills/yss-mvc-design/SKILL.md +16 -0
  187. package/template/.cursor/skills/yss-mvc-design/agents/openai.yaml +4 -0
  188. package/template/.cursor/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  189. package/template/.cursor/skills/yss-mybatis/SKILL.md +34 -58
  190. package/template/.cursor/skills/yss-mybatis/agents/openai.yaml +2 -2
  191. package/template/.cursor/skills/yss-mybatis/references/source-index.md +88 -68
  192. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +48 -43
  193. package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  194. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  195. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  196. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +6 -3
  197. package/template/.cursor/skills/yss-repository/SKILL.md +28 -70
  198. package/template/.cursor/skills/yss-repository/agents/openai.yaml +2 -2
  199. package/template/.cursor/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  200. package/template/.cursor/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  201. package/template/.cursor/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  202. package/template/.cursor/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  203. package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  204. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  205. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  206. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  207. package/template/.cursor/skills/yss-tactical-design/SKILL.md +2 -2
  208. package/template/.cursor/skills/yss-tactical-design/references/output-template.md +2 -0
  209. package/template/.cursor/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  210. package/template/.cursor/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  211. package/template/.cursor/skills/yss-technical-design/SKILL.md +31 -0
  212. package/template/.cursor/skills/yss-technical-design/agents/openai.yaml +4 -0
  213. package/template/.cursor/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  214. package/template/.cursor/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  215. package/template/.cursor/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  216. package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  217. package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  218. package/template/.cursor/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  219. package/template/.cursor/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  220. package/template/.pi/skills/code-review/SKILL.md +4 -0
  221. package/template/.pi/skills/code-review/agents/openai.yaml +1 -1
  222. package/template/.pi/skills/code-review/references/yss-review-standards.md +9 -2
  223. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  224. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  225. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  226. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  227. package/template/.pi/skills/yss-domain/SKILL.md +3 -3
  228. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  229. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  230. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  231. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  232. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  233. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  234. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  235. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  236. package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  237. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  238. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  239. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  240. package/template/.pi/skills/yss-mvc-design/SKILL.md +16 -0
  241. package/template/.pi/skills/yss-mvc-design/agents/openai.yaml +4 -0
  242. package/template/.pi/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  243. package/template/.pi/skills/yss-mybatis/SKILL.md +34 -58
  244. package/template/.pi/skills/yss-mybatis/agents/openai.yaml +2 -2
  245. package/template/.pi/skills/yss-mybatis/references/source-index.md +88 -68
  246. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +48 -43
  247. package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  248. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  249. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  250. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +6 -3
  251. package/template/.pi/skills/yss-repository/SKILL.md +28 -70
  252. package/template/.pi/skills/yss-repository/agents/openai.yaml +2 -2
  253. package/template/.pi/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  254. package/template/.pi/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  255. package/template/.pi/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  256. package/template/.pi/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  257. package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  258. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  259. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  260. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  261. package/template/.pi/skills/yss-tactical-design/SKILL.md +2 -2
  262. package/template/.pi/skills/yss-tactical-design/references/output-template.md +2 -0
  263. package/template/.pi/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  264. package/template/.pi/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  265. package/template/.pi/skills/yss-technical-design/SKILL.md +31 -0
  266. package/template/.pi/skills/yss-technical-design/agents/openai.yaml +4 -0
  267. package/template/.pi/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  268. package/template/.pi/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  269. package/template/.pi/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  270. package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  271. package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  272. package/template/.pi/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  273. package/template/.pi/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  274. package/template/.qoder/skills/code-review/SKILL.md +4 -0
  275. package/template/.qoder/skills/code-review/agents/openai.yaml +1 -1
  276. package/template/.qoder/skills/code-review/references/yss-review-standards.md +9 -2
  277. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  278. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  279. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  280. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  281. package/template/.qoder/skills/yss-domain/SKILL.md +3 -3
  282. package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  283. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  284. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  285. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  286. package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  287. package/template/.qoder/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  288. package/template/.qoder/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  289. package/template/.qoder/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  290. package/template/.qoder/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  291. package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  292. package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  293. package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  294. package/template/.qoder/skills/yss-mvc-design/SKILL.md +16 -0
  295. package/template/.qoder/skills/yss-mvc-design/agents/openai.yaml +4 -0
  296. package/template/.qoder/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  297. package/template/.qoder/skills/yss-mybatis/SKILL.md +34 -58
  298. package/template/.qoder/skills/yss-mybatis/agents/openai.yaml +2 -2
  299. package/template/.qoder/skills/yss-mybatis/references/source-index.md +88 -68
  300. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +48 -43
  301. package/template/.qoder/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  302. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  303. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  304. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +6 -3
  305. package/template/.qoder/skills/yss-repository/SKILL.md +28 -70
  306. package/template/.qoder/skills/yss-repository/agents/openai.yaml +2 -2
  307. package/template/.qoder/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  308. package/template/.qoder/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  309. package/template/.qoder/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  310. package/template/.qoder/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  311. package/template/.qoder/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  312. package/template/.qoder/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  313. package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  314. package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  315. package/template/.qoder/skills/yss-tactical-design/SKILL.md +2 -2
  316. package/template/.qoder/skills/yss-tactical-design/references/output-template.md +2 -0
  317. package/template/.qoder/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  318. package/template/.qoder/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  319. package/template/.qoder/skills/yss-technical-design/SKILL.md +31 -0
  320. package/template/.qoder/skills/yss-technical-design/agents/openai.yaml +4 -0
  321. package/template/.qoder/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  322. package/template/.qoder/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  323. package/template/.qoder/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  324. package/template/.qoder/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  325. package/template/.qoder/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  326. package/template/.qoder/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  327. package/template/.qoder/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  328. package/template/.trae/skills/code-review/SKILL.md +4 -0
  329. package/template/.trae/skills/code-review/agents/openai.yaml +1 -1
  330. package/template/.trae/skills/code-review/references/yss-review-standards.md +9 -2
  331. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  332. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
  333. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  334. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
  335. package/template/.trae/skills/yss-domain/SKILL.md +3 -3
  336. package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
  337. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
  338. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
  339. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
  340. package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
  341. package/template/.trae/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
  342. package/template/.trae/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
  343. package/template/.trae/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
  344. package/template/.trae/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
  345. package/template/.trae/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  346. package/template/.trae/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
  347. package/template/.trae/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
  348. package/template/.trae/skills/yss-mvc-design/SKILL.md +16 -0
  349. package/template/.trae/skills/yss-mvc-design/agents/openai.yaml +4 -0
  350. package/template/.trae/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
  351. package/template/.trae/skills/yss-mybatis/SKILL.md +34 -58
  352. package/template/.trae/skills/yss-mybatis/agents/openai.yaml +2 -2
  353. package/template/.trae/skills/yss-mybatis/references/source-index.md +88 -68
  354. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +48 -43
  355. package/template/.trae/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
  356. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
  357. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  358. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +6 -3
  359. package/template/.trae/skills/yss-repository/SKILL.md +28 -70
  360. package/template/.trae/skills/yss-repository/agents/openai.yaml +2 -2
  361. package/template/.trae/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
  362. package/template/.trae/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
  363. package/template/.trae/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
  364. package/template/.trae/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
  365. package/template/.trae/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
  366. package/template/.trae/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
  367. package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
  368. package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
  369. package/template/.trae/skills/yss-tactical-design/SKILL.md +2 -2
  370. package/template/.trae/skills/yss-tactical-design/references/output-template.md +2 -0
  371. package/template/.trae/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
  372. package/template/.trae/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
  373. package/template/.trae/skills/yss-technical-design/SKILL.md +31 -0
  374. package/template/.trae/skills/yss-technical-design/agents/openai.yaml +4 -0
  375. package/template/.trae/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
  376. package/template/.trae/skills/yss-technical-design/references/technical-design-contract.md +31 -0
  377. package/template/.trae/skills/yss-technical-design/references/technical-design.schema.json +759 -0
  378. package/template/.trae/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
  379. package/template/.trae/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
  380. package/template/.trae/skills/yss-technical-design/tests/fixtures.mjs +32 -0
  381. package/template/.trae/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
  382. package/template/CONTEXT.md +2 -1
  383. package/template/docs/agents/digital-human-roles.yaml +4 -2
  384. package/template/docs/agents/yss-skill-registry.yaml +25 -1
  385. package/template/docs/architecture/templates/architecture-review-checklist.md +1 -1
  386. package/template/docs/architecture/templates/system-overview-design-template.md +15 -4
  387. package/template/docs/process/lifecycle-artifact-map.md +6 -0
  388. package/template/docs/process/lifecycle-registry-baseline.json +8 -1
  389. package/template/docs/process/lifecycle-registry.yaml +32 -2
  390. package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +38 -0
  391. package/template/docs/process/schemas/project-scaffold-contract.schema.json +113 -0
  392. package/template/docs/process/schemas/strategic-design-handoff.schema.json +77 -4
  393. package/template/docs/process/strategic-handoff-package.md +4 -2
  394. package/template/docs/process/template-verification-profiles.yaml +37 -0
  395. package/template/docs/templates/implementation-repo-registry-template.md +8 -0
  396. package/template/docs/templates/review-report-template.md +7 -3
  397. package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +7 -6
  398. package/template/scripts/fixtures/strategic-handoff/fixture.mjs +3 -2
  399. package/template/scripts/lib/implementation-contract-compiler.mjs +8 -1
  400. package/template/scripts/lib/lifecycle-context-query.mjs +137 -0
  401. package/template/scripts/lib/lifecycle-transition.mjs +109 -3
  402. package/template/scripts/lib/scenario-checks.mjs +29 -26
  403. package/template/scripts/lib/skill-registry.mjs +9 -0
  404. package/template/scripts/lib/strategic-handoff-consumption.mjs +4 -4
  405. package/template/scripts/lib/strategic-handoff-design-targets.mjs +15 -0
  406. package/template/scripts/lib/technical-design-boundary.mjs +23 -0
  407. package/template/scripts/query-lifecycle-context +25 -0
  408. package/template/scripts/sync-strategic-handoff-tools +3 -2
  409. package/template/scripts/verify-business-language-scenarios +0 -7
  410. package/template/scripts/verify-frontend-scaffold-generator-scenarios +2 -0
  411. package/template/scripts/verify-lifecycle-context-query-scenarios +68 -0
  412. package/template/scripts/verify-lifecycle-transition-scenarios +44 -4
  413. package/template/scripts/verify-strategic-handoff-package-scenarios +7 -1
  414. package/template/skills-lock.json +48 -18
  415. package/template.snapshot.json +4 -4
  416. package/template/.agents/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  417. package/template/.agents/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  418. package/template/.agents/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  419. package/template/.agents/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  420. package/template/.agents/skills/yss-mybatis/references/README.md +0 -57
  421. package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  422. package/template/.claude/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  423. package/template/.claude/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  424. package/template/.claude/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  425. package/template/.claude/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  426. package/template/.claude/skills/yss-mybatis/references/README.md +0 -57
  427. package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  428. package/template/.codex/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  429. package/template/.codex/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  430. package/template/.codex/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  431. package/template/.codex/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  432. package/template/.codex/skills/yss-mybatis/references/README.md +0 -57
  433. package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  434. package/template/.cursor/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  435. package/template/.cursor/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  436. package/template/.cursor/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  437. package/template/.cursor/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  438. package/template/.cursor/skills/yss-mybatis/references/README.md +0 -57
  439. package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  440. package/template/.pi/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  441. package/template/.pi/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  442. package/template/.pi/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  443. package/template/.pi/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  444. package/template/.pi/skills/yss-mybatis/references/README.md +0 -57
  445. package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  446. package/template/.qoder/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  447. package/template/.qoder/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  448. package/template/.qoder/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  449. package/template/.qoder/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  450. package/template/.qoder/skills/yss-mybatis/references/README.md +0 -57
  451. package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  452. package/template/.trae/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  453. package/template/.trae/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  454. package/template/.trae/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  455. package/template/.trae/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  456. package/template/.trae/skills/yss-mybatis/references/README.md +0 -57
  457. package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ import assert from "node:assert/strict";
3
+ import { readFileSync } from "node:fs";
4
+ import { spawnSync } from "node:child_process";
5
+ import path from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { queryLifecycleContext } from "./lib/lifecycle-context-query.mjs";
8
+
9
+ const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
10
+
11
+ const query = {
12
+ mode: "route",
13
+ stageId: "stage.discovery",
14
+ workUnitId: "work-unit.discovery-requirements",
15
+ include: ["grill_exit"],
16
+ };
17
+ const first = queryLifecycleContext(query);
18
+ const second = queryLifecycleContext(query);
19
+
20
+ assert.deepEqual(first, second, "同一查询必须产生确定性结果");
21
+ assert.equal(first.query.mode, "route");
22
+ assert.equal(first.lifecycle.stage.id, "stage.discovery");
23
+ assert.ok(first.lifecycle.gates.every((gate) => gate.stage === "stage.discovery"));
24
+ assert.ok(first.lifecycle.artifacts.every((artifact) => artifact.stage === "stage.discovery"));
25
+ assert.equal(first.lifecycle.work_unit.id, "work-unit.discovery-requirements");
26
+ assert.equal(first.execution.mode, "read_only");
27
+ assert.equal(first.execution.work_unit_route.primary_skill, "yss-product-lifecycle");
28
+ assert.ok(first.execution.selected.grill_exit.required.includes("frontier_empty"));
29
+ assert.equal("review_input" in first.execution.selected, false, "不得返回未请求的合同子树");
30
+ assert.ok(first.skills.some((skill) => skill.id === "grilling"));
31
+ assert.match(first.sources.lifecycle_registry.semantic_sha256, /^[0-9a-f]{64}$/);
32
+ assert.match(first.sources.orchestration_contract.sha256, /^[0-9a-f]{64}$/);
33
+
34
+ for (const invalid of [
35
+ { mode: "invalid" },
36
+ { stageId: "stage.missing" },
37
+ { workUnitId: "work-unit.missing" },
38
+ { include: ["missing_contract_section"] },
39
+ ]) {
40
+ assert.throws(() => queryLifecycleContext(invalid), /未知|至少提供/);
41
+ }
42
+
43
+ const cli = spawnSync("node", [
44
+ "scripts/query-lifecycle-context",
45
+ "--mode", "route",
46
+ "--stage", "stage.discovery",
47
+ "--work-unit", "work-unit.discovery-requirements",
48
+ "--include", "grill_exit",
49
+ ], { cwd: ROOT, encoding: "utf8" });
50
+ assert.equal(cli.status, 0, cli.stderr);
51
+ assert.deepEqual(JSON.parse(cli.stdout), first, "CLI 输出必须等于库函数的规范投影");
52
+
53
+ const skillPath = path.join(ROOT, ".agents/skills/yss-product-lifecycle/SKILL.md");
54
+ const skill = readFileSync(skillPath, "utf8");
55
+ assert.ok(Buffer.byteLength(skill) <= 8192, "生命周期入口 Skill 必须保持在 8KB 软预算内");
56
+ assert.equal(skill.includes("| 主阶段 |"), false, "入口 Skill 不得复制完整阶段表");
57
+ for (const marker of [
58
+ "docs/process/lifecycle-registry.yaml",
59
+ "references/orchestration-contract.yaml",
60
+ "docs/agents/yss-skill-registry.yaml",
61
+ "scripts/query-lifecycle-context",
62
+ "### 仓库身份",
63
+ "### 流转与实现",
64
+ "### 用户决定",
65
+ "### 外部副作用与 Git",
66
+ ]) assert.match(skill, new RegExp(marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")));
67
+
68
+ process.stdout.write("生命周期按需上下文查询场景验证通过\n");
@@ -3,16 +3,24 @@ import assert from "node:assert/strict";
3
3
  import { mkdtempSync, rmSync, readFileSync, existsSync } from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
- import { buildImplementationFixture } from "./fixtures/user-decision/build-fixture.mjs";
6
+ import { buildDecisionFixture, buildImplementationFixture } from "./fixtures/user-decision/build-fixture.mjs";
7
7
  const temp = mkdtempSync(path.join(os.tmpdir(), "lifecycle-decision-test-"));
8
8
  process.on("exit", () => rmSync(temp, { recursive: true, force: true }));
9
9
  const approval = buildImplementationFixture(temp, "docs/.scratch/demo/issues/01-valid-slice.md");
10
- import { validateImplementationEntry, validateNextRoute, validateTicketFormalization } from "./lib/lifecycle-transition.mjs";
10
+ const scaffoldApproval = buildDecisionFixture(path.join(temp, "scaffold-choice"), { boundary: "scaffold-choice", scope: ["backend", "frontend"] });
11
+ import { validateImplementationEntry, validateImplementationRepositoriesReady, validateNextRoute, validateTicketFormalization } from "./lib/lifecycle-transition.mjs";
11
12
 
12
13
  const exists = (ref) => [
13
14
  "docs/process/lifecycle-registry.yaml",
14
15
  "docs/.scratch/demo/issues/01-valid-slice.md",
15
16
  "docs/.scratch/demo/evidence/ticket-decomposition-result.yaml",
17
+ "docs/.scratch/demo/evidence/repository-preparation.yaml",
18
+ "docs/.scratch/demo/evidence/backend-onboarding.yaml",
19
+ "docs/.scratch/demo/evidence/frontend-onboarding.yaml",
20
+ "docs/.scratch/demo/evidence/backend-manifest.json",
21
+ "docs/.scratch/demo/evidence/backend-verification.json",
22
+ "docs/.scratch/demo/evidence/frontend-manifest.json",
23
+ "docs/.scratch/demo/evidence/frontend-verification.json",
16
24
  ].includes(ref) || existsSync(ref);
17
25
  const decompositionResult = `result_schema: workflow-execution-result-v1\nwork_unit: work-unit.ticket-decomposition\nresult: completed\nevidence_refs:\n - docs/.scratch/demo/evidence/ticket-decomposition-result.yaml\n`;
18
26
  const read = (ref) => ref === "docs/.scratch/demo/evidence/ticket-decomposition-result.yaml" ? decompositionResult : readFileSync(ref, "utf8");
@@ -20,6 +28,17 @@ const options = { exists, read };
20
28
 
21
29
  const validTicketState = {
22
30
  ...approval.state,
31
+ user_decisions: [...approval.state.user_decisions, scaffoldApproval.requirement],
32
+ delivery_impacts: { backend: true, frontend: true },
33
+ implementation_repository_preparation: {
34
+ result: "completed",
35
+ current_version: true,
36
+ evidence_refs: ["docs/.scratch/demo/evidence/repository-preparation.yaml"],
37
+ projects: [
38
+ { project_id: "backend", delivery_role: "backend", status: "existing-and-onboarded", repository_ref: "git://backend", project_root: "/workspace/backend", repository_scope: "external-repository", onboarding_result: { status: "completed", ref: "docs/.scratch/demo/evidence/backend-onboarding.yaml" } },
39
+ { project_id: "frontend", delivery_role: "frontend", status: "existing-and-onboarded", repository_ref: "git://frontend", project_root: "/workspace/frontend", repository_scope: "external-repository", onboarding_result: { status: "completed", ref: "docs/.scratch/demo/evidence/frontend-onboarding.yaml" } },
40
+ ],
41
+ },
23
42
  predecessor_work_unit: "work-unit.ticket-decomposition",
24
43
  tracker_kind: "local-markdown",
25
44
  ticket_decomposition_result_ref: "docs/.scratch/demo/evidence/ticket-decomposition-result.yaml",
@@ -45,6 +64,19 @@ const validTicketState = {
45
64
 
46
65
  const valid = validateTicketFormalization(validTicketState, options);
47
66
  assert.equal(valid.result, "allowed");
67
+ assert.equal(validateImplementationRepositoriesReady(validTicketState, options).result, "allowed");
68
+ const initializedState = {
69
+ delivery_impacts: { backend: true, frontend: true },
70
+ implementation_repository_preparation: {
71
+ result: "completed", current_version: true, evidence_refs: ["docs/.scratch/demo/evidence/repository-preparation.yaml"],
72
+ projects: [
73
+ { project_id: "backend-ddd", delivery_role: "backend", status: "initialized-and-verified", repository_ref: "git://backend", project_root: "/workspace/backend", repository_scope: "external-repository", architecture_family: "domain-driven", scaffold_contract: { schema_version: 4, status: "approved", persisted: true, current_version: true }, scaffold_manifest_ref: "docs/.scratch/demo/evidence/backend-manifest.json", scaffold_verification: { status: "passed", ref: "docs/.scratch/demo/evidence/backend-verification.json" } },
74
+ { project_id: "frontend", delivery_role: "frontend", status: "initialized-and-verified", repository_ref: "git://frontend", project_root: "/workspace/frontend", repository_scope: "external-repository", template_available: true, scaffold_contract: { schema_version: 4, status: "approved", persisted: true, current_version: true }, scaffold_manifest_ref: "docs/.scratch/demo/evidence/frontend-manifest.json", scaffold_verification: { status: "passed", ref: "docs/.scratch/demo/evidence/frontend-verification.json" } },
75
+ ],
76
+ },
77
+ };
78
+ assert.equal(validateImplementationRepositoriesReady(initializedState, options).result, "allowed");
79
+ assert.equal(validateImplementationRepositoriesReady({ delivery_impacts: { backend: false, frontend: false }, implementation_repository_preparation: { result: "completed", current_version: true, evidence_refs: ["docs/.scratch/demo/evidence/repository-preparation.yaml"], projects: [{ project_id: "backend-na", delivery_role: "backend", status: "not-applicable", reason: "no backend impact" }, { project_id: "frontend-na", delivery_role: "frontend", status: "not-applicable", reason: "no frontend impact" }] } }, options).result, "allowed");
48
80
 
49
81
  const implementation = validateImplementationEntry({
50
82
  ...validTicketState,
@@ -53,6 +85,11 @@ const implementation = validateImplementationEntry({
53
85
  assert.equal(implementation.result, "allowed");
54
86
 
55
87
  const cases = [
88
+ ["missing repository preparation", { ...validTicketState, implementation_repository_preparation: undefined }, "implementation-repository-decision-required"],
89
+ ["stale repository preparation", { ...validTicketState, implementation_repositories_stale: true }, "implementation-repositories-stale"],
90
+ ["missing frontend decision", { ...validTicketState, implementation_repository_preparation: { ...validTicketState.implementation_repository_preparation, projects: validTicketState.implementation_repository_preparation.projects.filter((item) => item.delivery_role !== "frontend") } }, "implementation-repository-decision-required"],
91
+ ["missing repository location", { ...validTicketState, implementation_repository_preparation: { ...validTicketState.implementation_repository_preparation, projects: validTicketState.implementation_repository_preparation.projects.map((item) => item.delivery_role === "backend" ? { ...item, project_root: undefined } : item) } }, "implementation-repository-location-required"],
92
+ ["incomplete onboarding", { ...validTicketState, implementation_repository_preparation: { ...validTicketState.implementation_repository_preparation, projects: validTicketState.implementation_repository_preparation.projects.map((item) => item.delivery_role === "backend" ? { ...item, onboarding_result: { status: "blocked" } } : item) } }, "implementation-repository-onboarding-incomplete"],
56
93
  ["missing decomposition result ref", { ...validTicketState, ticket_decomposition_result_ref: undefined }, "ticket-decomposition-result-ref-missing"],
57
94
  ["missing slice ref", { ...validTicketState, vertical_slice_ticket_ref: undefined }, "vertical-slice-ticket-ref-missing"],
58
95
  ["missing slice role", { ...validTicketState, vertical_slice_ticket_role: undefined }, "vertical-slice-ticket-role-missing"],
@@ -90,7 +127,10 @@ for (const current of ["work-unit.spec-synthesis", "work-unit.prototype-design",
90
127
  assert.equal(result.result, "blocked", current);
91
128
  assert.ok(result.blocking_signals.includes("ticket-formalization-required"), current);
92
129
  }
93
- assert.equal(validateNextRoute("work-unit.spec-synthesis", "work-unit.ticket-decomposition").result, "allowed");
130
+ assert.equal(validateNextRoute("work-unit.spec-synthesis", "work-unit.ticket-decomposition").result, "blocked");
131
+ assert.equal(validateNextRoute("work-unit.technical-analysis", "work-unit.implementation-repository-preparation").result, "allowed");
132
+ assert.equal(validateNextRoute("work-unit.implementation-repository-preparation", "work-unit.ticket-decomposition", validTicketState, options).result, "allowed");
133
+ assert.ok(validateNextRoute("work-unit.implementation-repository-preparation", "work-unit.ticket-decomposition", {}, options).blocking_signals.includes("implementation-repository-decision-required"));
94
134
  assert.equal(validateNextRoute("work-unit.intensity-aware-verification", "work-unit.intensity-aware-review").result, "allowed");
95
135
  assert.equal(validateNextRoute("work-unit.release-and-rollback", null).result, "allowed");
96
136
  const arbitraryReadable = validateTicketFormalization({
@@ -110,6 +150,6 @@ assert.equal(validateTicketFormalization({
110
150
  vertical_slice_ticket_ref: "https://github.com/example/project/issues/1",
111
151
  vertical_slice_ticket: { ref: "https://github.com/example/project/issues/1", kind: "vertical-slice-ticket", role: "ready-for-agent" },
112
152
  slice_contract: { ...validTicketState.slice_contract, ticket_ref: "https://github.com/example/project/issues/1" },
113
- }, { ...options, exists: (ref) => ref === "https://github.com/example/project/issues/1", read: (ref) => ref === "https://github.com/example/project/issues/1" ? decompositionResult.replace("docs/.scratch/demo/evidence/ticket-decomposition-result.yaml", "https://github.com/example/project/issues/1") : readFileSync(ref, "utf8") }).result, "allowed");
153
+ }, { ...options, exists: (ref) => ref === "https://github.com/example/project/issues/1" || exists(ref), read: (ref) => ref === "https://github.com/example/project/issues/1" ? decompositionResult.replace("docs/.scratch/demo/evidence/ticket-decomposition-result.yaml", "https://github.com/example/project/issues/1") : readFileSync(ref, "utf8") }).result, "allowed");
114
154
 
115
155
  process.stdout.write("生命周期转换压力场景验证通过\n");
@@ -9,7 +9,7 @@ import { fixture, context } from './fixtures/strategic-handoff/fixture.mjs';
9
9
  import { exportBundle, openBundle, importBundle } from './lib/strategic-handoff.mjs';
10
10
  import { read, json, hash, digest } from './lib/strategic-handoff-io.mjs';
11
11
  import { parseContextContract } from './lib/context-contract.mjs';
12
- const setup=async t=>{const base=mkdtempSync(path.join(tmpdir(),'handoff-test-'));t.after(()=>rmSync(base,{recursive:true,force:true}));const source=path.join(base,'source');mkdirSync(source);return{base,source,...await fixture(source)};};
12
+ const setup=async t=>{const base=mkdtempSync(path.join(tmpdir(),'handoff-test-'));t.after(()=>rmSync(base,{recursive:true,force:true}));const source=path.join(base,'source');mkdirSync(source);return{base,source,...await fixture(source,{technicalDesign:true})};};
13
13
  function advanceStrategy(f,version='v2') {
14
14
  f.handoff.handoff_version=version;
15
15
  f.strategy.domain_version=version;
@@ -79,6 +79,12 @@ test('受控延期只阻断依赖切片;未知依赖扩大阻断;目标未
79
79
  writeFileSync(path.join(target,'reconciliation.yaml'),json(record));
80
80
  for(const row of tactical.strategic_handoff.rows)Object.assign(row,{disposition:'implemented',tactical_refs:['behavior.submit'],test_seam_refs:['test-seam.submit'],scenario_tests:[{outcome:'success',seam_ref:'test-seam.submit'},{outcome:'failure',seam_ref:'test-seam.submit'}],evidence_refs:['CONTEXT.md'],dependency_status:'known',dependent_slice_refs:['slice.submit']});
81
81
  assert.equal((await verifyConsumption(tactical,{root:target})).result,'verified');
82
+ const mvc={schema_version:2,status:'approved',architecture:{family:'layered-mvc'},strategic_handoff:structuredClone(tactical.strategic_handoff),design:{use_case_catalog:[{use_case_id:'use-case.submit'}],test_seams:[{seam_id:'test-seam.submit',subject_ref:'use-case.submit'}]}};
83
+ for(const row of mvc.strategic_handoff.rows)row.tactical_refs=['use-case.submit'];
84
+ assert.equal((await verifyConsumption(mvc,{root:target})).result,'verified');
85
+ mvc.strategic_handoff.rows[0].tactical_refs=['aggregate.fake'];
86
+ await assert.rejects(()=>verifyConsumption(mvc,{root:target}),/落点悬空/);
87
+
82
88
  const row=tactical.strategic_handoff.rows[0];Object.assign(row,{disposition:'deferred',reason:'分批实现',risk:'不能提交',owner:'需求负责人',followup_ticket_ref:'ticket.followup',verification_plan:'提交测试',target_version:'v2'});
83
89
  assert.equal((await verifyConsumption(tactical,{root:target,sliceRef:'slice.submit'})).result,'blocked');
84
90
  assert.equal((await verifyConsumption(tactical,{root:target,sliceRef:'slice.other'})).result,'verified');
@@ -21,7 +21,7 @@
21
21
  "revision": "c4d958f18cc947cb91cbe1bd48783fa4601cc18f"
22
22
  },
23
23
  "iloveZzz/yss-harness-design-agent": {
24
- "revision": "5c1c98225bb181c7c1add8972c1e44b866205f76"
24
+ "revision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab"
25
25
  }
26
26
  },
27
27
  "skills": {
@@ -63,7 +63,7 @@
63
63
  "source": "mattpocock/skills",
64
64
  "sourceType": "github",
65
65
  "skillPath": "skills/engineering/code-review/SKILL.md",
66
- "effectiveHash": "a9839b761443bcb9bf46b886630378e53dfb748ed77fc46b96e5777e701a438e",
66
+ "effectiveHash": "660ca39ab37b65099940b2e6a197089291e2fb74494ec93bbeb8e2fde6559465",
67
67
  "sourceRevision": "0ab1b63a410a03d3627979a109c8695de27af954",
68
68
  "upstreamHash": "12daafb9c4f77deb3c3303dc2e6f8a3c2a0ff7928fc004af959ba18b8bd38068",
69
69
  "adaptationRef": "docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md",
@@ -559,7 +559,7 @@
559
559
  "sourceType": "git-submodule",
560
560
  "skillPath": ".agents/skills/prototype-review/SKILL.md",
561
561
  "effectiveHash": "51021f119697dbff644d70c3d6ba3314147c47f412c6f56e4b5540ea3bf554a1",
562
- "sourceRevision": "5c1c98225bb181c7c1add8972c1e44b866205f76",
562
+ "sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
563
563
  "upstreamHash": "2e77b3093a758bb692fb3bda453c5c020d0523f875975e17e2731365f67432e1",
564
564
  "adaptationRef": "docs/agents/strategic-design-skills-integration.md",
565
565
  "targets": [
@@ -824,7 +824,7 @@
824
824
  "sourceType": "git-submodule",
825
825
  "skillPath": ".agents/skills/yss-antd-design/SKILL.md",
826
826
  "effectiveHash": "917099caa9b76ca3cfd1d0f81f61b28111c1c54ed93e92891f81012dcd0662e2",
827
- "sourceRevision": "5c1c98225bb181c7c1add8972c1e44b866205f76",
827
+ "sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
828
828
  "upstreamHash": "08ce99d45586d5ea19e25fdd9e9a6ede16e66f18992b70b87e0cd23f92343b16",
829
829
  "adaptationRef": "docs/agents/strategic-design-skills-integration.md",
830
830
  "targets": [
@@ -842,7 +842,7 @@
842
842
  "sourceType": "git-submodule",
843
843
  "skillPath": ".agents/skills/yss-antdv-next-design/SKILL.md",
844
844
  "effectiveHash": "8c55e3a815ace34fbf591e931a58970b3d58cb657e00432ca6c72938d307563b",
845
- "sourceRevision": "5c1c98225bb181c7c1add8972c1e44b866205f76",
845
+ "sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
846
846
  "upstreamHash": "2942ed52dd58a38e51f09eb11254809334aeaed08f21cd081f09f35e6647a68c",
847
847
  "adaptationRef": "docs/agents/strategic-design-skills-integration.md",
848
848
  "targets": [
@@ -937,7 +937,7 @@
937
937
  "source": "project",
938
938
  "sourceType": "local",
939
939
  "skillPath": ".agents/skills/yss-ddd-scaffold-generator/SKILL.md",
940
- "effectiveHash": "438b92a03e9e0c80ac68db65096fd499275ad16cb69d4d751571754a97aa38a8",
940
+ "effectiveHash": "96e1c82c538a96af293273906db5ddefcf9943e8b76bb47b05d08772f16258cb",
941
941
  "targets": [
942
942
  ".agents/skills",
943
943
  ".claude/skills",
@@ -953,7 +953,7 @@
953
953
  "sourceType": "git-submodule",
954
954
  "skillPath": ".agents/skills/yss-design-system/SKILL.md",
955
955
  "effectiveHash": "e69597b8b6a5ce4de5bd40f67630443b8176202f6b028b2ce146a2a1d062816f",
956
- "sourceRevision": "5c1c98225bb181c7c1add8972c1e44b866205f76",
956
+ "sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
957
957
  "upstreamHash": "90aaf06b2514353152464a4d032076fa9d5ef56272d8ad526f5544f3c22a2b00",
958
958
  "adaptationRef": "docs/agents/strategic-design-skills-integration.md",
959
959
  "targets": [
@@ -985,7 +985,7 @@
985
985
  "source": "project",
986
986
  "sourceType": "local",
987
987
  "skillPath": ".agents/skills/yss-domain/SKILL.md",
988
- "effectiveHash": "ed5fbd0ff31f0677f7901a9ea69c4939c22a170f1fef3947b4f7409b11fa5161",
988
+ "effectiveHash": "e682e141ac6cdb9d97296f270e314a6c7d00ebf574f8a9aaba557dcd8f6553b7",
989
989
  "targets": [
990
990
  ".agents/skills",
991
991
  ".claude/skills",
@@ -1078,7 +1078,7 @@
1078
1078
  "source": "project",
1079
1079
  "sourceType": "local",
1080
1080
  "skillPath": ".agents/skills/yss-frontend-scaffold-generator/SKILL.md",
1081
- "effectiveHash": "87bc0d2f0c279d3fff14ded7a07ba7b9f72a61080e7b9ca826bb452894877e4e",
1081
+ "effectiveHash": "968c213c90a30d719e51050a6122ef729bc03ae97d2841a5d47824d68a5d27ff",
1082
1082
  "targets": [
1083
1083
  ".agents/skills",
1084
1084
  ".claude/skills",
@@ -1108,7 +1108,7 @@
1108
1108
  "source": "project",
1109
1109
  "sourceType": "local",
1110
1110
  "skillPath": ".agents/skills/yss-implementation-contract-compiler/SKILL.md",
1111
- "effectiveHash": "abc754700c6ac1c20245923400c0e5c65e5dcf419c7d6674ec9a3fe6a997868b",
1111
+ "effectiveHash": "96582c950a13f26a7c16b2087d0614cb28a99f0f805190fc64cfc80e6456c335",
1112
1112
  "targets": [
1113
1113
  ".agents/skills",
1114
1114
  ".claude/skills",
@@ -1123,7 +1123,7 @@
1123
1123
  "source": "project",
1124
1124
  "sourceType": "local",
1125
1125
  "skillPath": ".agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md",
1126
- "effectiveHash": "360389486d6bd07949c0b11ab30e266fbf073169d8ee447d89581fe583228950",
1126
+ "effectiveHash": "50d0f704326fc523c29f4b728c08148cde372c674b9e8686829bee3e74b66fdc",
1127
1127
  "targets": [
1128
1128
  ".agents/skills",
1129
1129
  ".claude/skills",
@@ -1149,6 +1149,21 @@
1149
1149
  ".trae/skills"
1150
1150
  ]
1151
1151
  },
1152
+ "yss-mvc-design": {
1153
+ "source": "project",
1154
+ "sourceType": "local",
1155
+ "skillPath": ".agents/skills/yss-mvc-design/SKILL.md",
1156
+ "effectiveHash": "b3deae27723c3a0e9e32c8f5b40fb1295d082a31ccea3f4d9a190b47a704efd3",
1157
+ "targets": [
1158
+ ".agents/skills",
1159
+ ".claude/skills",
1160
+ ".codex/skills",
1161
+ ".cursor/skills",
1162
+ ".pi/skills",
1163
+ ".qoder/skills",
1164
+ ".trae/skills"
1165
+ ]
1166
+ },
1152
1167
  "yss-mvc-scaffold-generator": {
1153
1168
  "source": "project",
1154
1169
  "sourceType": "local",
@@ -1168,7 +1183,7 @@
1168
1183
  "source": "project",
1169
1184
  "sourceType": "local",
1170
1185
  "skillPath": ".agents/skills/yss-mybatis/SKILL.md",
1171
- "effectiveHash": "1f70b00dcc6be6fde9c32ebf4ee41a86f2b348ca4bb789a3f2f32a7a24258ff4",
1186
+ "effectiveHash": "8ab792d519c045a8a682942185f9aae3dcabfe86dbd8a4a9a444d7f657798701",
1172
1187
  "targets": [
1173
1188
  ".agents/skills",
1174
1189
  ".claude/skills",
@@ -1213,7 +1228,7 @@
1213
1228
  "source": "project",
1214
1229
  "sourceType": "local",
1215
1230
  "skillPath": ".agents/skills/yss-product-lifecycle/SKILL.md",
1216
- "effectiveHash": "3134144d171d3ac7a52ba37683d6a2972cf7df1f83492a5d58083567f12764af",
1231
+ "effectiveHash": "d317bd2799da0442745c8126e62f7919a0b3de03f2c3cc2e1a7ca0433dc69645",
1217
1232
  "targets": [
1218
1233
  ".agents/skills",
1219
1234
  ".claude/skills",
@@ -1229,7 +1244,7 @@
1229
1244
  "sourceType": "git-submodule",
1230
1245
  "skillPath": ".agents/skills/yss-prototype-stage/SKILL.md",
1231
1246
  "effectiveHash": "0ecf3125a73d15e4c9b6b665f92535180df82ccb2255fa863ec59f3ff5d460aa",
1232
- "sourceRevision": "5c1c98225bb181c7c1add8972c1e44b866205f76",
1247
+ "sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
1233
1248
  "upstreamHash": "e8f2f3a507da6bf7be0582e4a4dd9659381da8e291755070698a1f51a4e33808",
1234
1249
  "adaptationRef": "docs/agents/strategic-design-skills-integration.md",
1235
1250
  "targets": [
@@ -1246,7 +1261,7 @@
1246
1261
  "source": "project",
1247
1262
  "sourceType": "local",
1248
1263
  "skillPath": ".agents/skills/yss-repository/SKILL.md",
1249
- "effectiveHash": "19f4380ba81f6cf373b737a4b17316f35bf2be27646be38707d52cfd6c1c7aef",
1264
+ "effectiveHash": "0abe4e8f4896613985074615281f11711b807fcfc5727a6e6d2e7d2ebcf7ddc7",
1250
1265
  "targets": [
1251
1266
  ".agents/skills",
1252
1267
  ".claude/skills",
@@ -1309,7 +1324,7 @@
1309
1324
  "source": "project",
1310
1325
  "sourceType": "local",
1311
1326
  "skillPath": ".agents/skills/yss-skill-source-index-refresh/SKILL.md",
1312
- "effectiveHash": "4c95ec664da1d3515ac49b80c063df20bf69d352c6892f66ceb29d0a12b55458",
1327
+ "effectiveHash": "96ff974a0f7b3db8de09680daf9ecada94dd19f608341dcc85a32d40c02591b0",
1313
1328
  "targets": [
1314
1329
  ".agents/skills",
1315
1330
  ".claude/skills",
@@ -1325,7 +1340,7 @@
1325
1340
  "sourceType": "git-submodule",
1326
1341
  "skillPath": ".agents/skills/yss-stage-decision/SKILL.md",
1327
1342
  "effectiveHash": "63e222ec2bc572c8d66fc52143ba3862650d243f57e1e9c71214b533eba37c23",
1328
- "sourceRevision": "5c1c98225bb181c7c1add8972c1e44b866205f76",
1343
+ "sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
1329
1344
  "upstreamHash": "1eadf230f0e17bf6d209c1df1249acef3520ab29c26a80c476a2a557a224c10a",
1330
1345
  "adaptationRef": "docs/agents/strategic-design-skills-integration.md",
1331
1346
  "targets": [
@@ -1342,7 +1357,22 @@
1342
1357
  "source": "project",
1343
1358
  "sourceType": "local",
1344
1359
  "skillPath": ".agents/skills/yss-tactical-design/SKILL.md",
1345
- "effectiveHash": "336eda3a058ae565d31f90a46cb26d6fc921d2c8a7ec0ccc2f4bcb2c780bd128",
1360
+ "effectiveHash": "2ffb26709fd68184e0fe8f724318dc748fc479dcf52af236fe63f49a17540bfa",
1361
+ "targets": [
1362
+ ".agents/skills",
1363
+ ".claude/skills",
1364
+ ".codex/skills",
1365
+ ".cursor/skills",
1366
+ ".pi/skills",
1367
+ ".qoder/skills",
1368
+ ".trae/skills"
1369
+ ]
1370
+ },
1371
+ "yss-technical-design": {
1372
+ "source": "project",
1373
+ "sourceType": "local",
1374
+ "skillPath": ".agents/skills/yss-technical-design/SKILL.md",
1375
+ "effectiveHash": "a4226303571483b115ef7134f9615440ce8b7d39f209be39e1bc16152e080a9f",
1346
1376
  "targets": [
1347
1377
  ".agents/skills",
1348
1378
  ".claude/skills",
@@ -3,8 +3,8 @@
3
3
  "templateName": "yss-spec-project-template",
4
4
  "templateSource": "github:iloveZzz/yss-spec-project-template",
5
5
  "templateRepository": "https://github.com/iloveZzz/yss-spec-project-template.git",
6
- "requestedRef": "4f01bef25dfac465e9ff54c71681cf4d0f74669b",
7
- "templateCommit": "4f01bef25dfac465e9ff54c71681cf4d0f74669b",
6
+ "requestedRef": "6f5c5d80adcdb743fb06199f70a7ab0b0a640ce5",
7
+ "templateCommit": "6f5c5d80adcdb743fb06199f70a7ab0b0a640ce5",
8
8
  "manifestHash": "f7520dfdfa388b19ea47cb893c2daab8936019783aa84589f13921e459702280",
9
9
  "encodedPaths": {
10
10
  ".codex/skills/data-analytics/.gitignore": ".codex/skills/data-analytics/__yss_dotfile__.gitignore",
@@ -12,6 +12,6 @@
12
12
  ".codex/skills/product-design/templates/prototype/.npmrc": ".codex/skills/product-design/templates/prototype/__yss_dotfile__.npmrc",
13
13
  ".gitignore": "__yss_dotfile__.gitignore"
14
14
  },
15
- "snapshotHash": "3c5bb9dea7cc8f5bf8559f49ee7b31fea830bff51839dfc49e233e7afe9f948d",
16
- "generatedAt": "2026-09-07T03:27:16.902Z"
15
+ "snapshotHash": "2a676bf4ed0d3151bab51ad900181cbb8fdd628385572e11dd398bcbaceab61b",
16
+ "generatedAt": "2026-09-09T02:16:12.516Z"
17
17
  }
@@ -1,112 +0,0 @@
1
- package com.yss.cloud.mybatis.support;
2
-
3
- import com.baomidou.mybatisplus.core.conditions.Wrapper;
4
- import com.baomidou.mybatisplus.core.toolkit.Constants;
5
- import io.mybatis.mapper.BaseMapper;
6
- import io.mybatis.mapper.list.ListMapper;
7
- import io.mybatis.mapper.list.ListProvider;
8
- import io.mybatis.provider.Caching;
9
- import com.baomidou.mybatisplus.core.mapper.Mapper;
10
- import org.apache.ibatis.annotations.*;
11
-
12
- import java.io.Serializable;
13
- import java.util.Collection;
14
- import java.util.List;
15
- import java.util.Map;
16
-
17
- /**
18
- * @author zhudaoming
19
- */
20
- public interface BaseRepository<T, D extends Serializable> extends Mapper<T>, BaseMapper<T, D>, ListMapper<T> {
21
- /**s
22
- /**
23
- * 删除(根据ID或实体 批量删除)
24
- *
25
- * @param idList 主键ID列表或实体列表(不能为 null 以及 empty)
26
- */
27
- int deleteBatchIds(@Param(Constants.COLL) Collection<?> idList);
28
- /**
29
- * 查询(根据ID 批量查询)
30
- *
31
- * @param idList 主键ID列表(不能为 null 以及 empty)
32
- */
33
- List<T> selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList);
34
- /**
35
- * 查询(根据 columnMap 条件)
36
- *
37
- * @param columnMap 表字段 map 对象
38
- */
39
- List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
40
- /**
41
- * 根据 Wrapper 条件,查询全部记录
42
- *
43
- * @param queryWrapper 实体对象封装操作类(可以为 null)
44
- */
45
- List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
46
-
47
- /**
48
- * 根据 Wrapper 条件,查询全部记录
49
- * <p>注意: 只返回第一个字段的值</p>
50
- *
51
- * @param queryWrapper 实体对象封装操作类(可以为 null)
52
- */
53
- List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
54
- /**
55
- * 保存实体,默认主键自增,并且名称为 id
56
- * <p>
57
- * 这个方法是个示例,你可以在自己的接口中使用相同的方式覆盖父接口中的配置
58
- *
59
- * @param entity 实体类
60
- * @return 1成功,0失败
61
- */
62
- @Override
63
- @Lang(Caching.class)
64
- @Options(useGeneratedKeys = true)
65
- @InsertProvider(type = EntityProvider.class, method = "insert")
66
- <S extends T> int insert(S entity);
67
-
68
- /**
69
- * 保存实体中不为空的字段,默认主键自增,并且名称为 id
70
- * <p>
71
- * 这个方法是个示例,你可以在自己的接口中使用相同的方式覆盖父接口中的配置
72
- *
73
- * @param entity 实体类
74
- * @return 1成功,0失败
75
- */
76
- @Override
77
- @Lang(Caching.class)
78
- @Options(useGeneratedKeys = true)
79
- @InsertProvider(type = EntityProvider.class, method = "insertSelective")
80
- <S extends T> int insertSelective(S entity);
81
-
82
- @Override
83
- @Lang(Caching.class)
84
- @Options(useGeneratedKeys = true)
85
- @InsertProvider(type = ListProvider.class, method = "insertList")
86
- <S extends T> int insertList(@Param("entityList") List<S> entityList);
87
-
88
- /**
89
- * 批量更新
90
- *
91
- * @author dengsd
92
- * @date 2022/9/27 11:49
93
- */
94
- @Override
95
- @Lang(Caching.class)
96
- @Options(useGeneratedKeys = true)
97
- @UpdateProvider(type = ListProvider.class, method = "updateList")
98
- <S extends T> int updateList(@Param("entityList") List<S> entityList);
99
-
100
-
101
- /**
102
- * 批量更新
103
- *
104
- * @author dengsd
105
- * @date 2022/9/27 11:49
106
- */
107
- @Override
108
- @Lang(Caching.class)
109
- @Options(useGeneratedKeys = true)
110
- @UpdateProvider(type = ListProvider.class, method = "updateListSelective")
111
- <S extends T> int updateListSelective(@Param("entityList") List<S> entityList);
112
- }
@@ -1,37 +0,0 @@
1
- package com.yss.cloud.mybatis.aop;
2
-
3
- import com.github.pagehelper.Page;
4
- import com.github.pagehelper.PageHelper;
5
- import com.yss.cloud.dto.page.PageQuery;
6
- import lombok.SneakyThrows;
7
- import org.aspectj.lang.ProceedingJoinPoint;
8
- import org.aspectj.lang.annotation.Around;
9
- import org.aspectj.lang.annotation.Aspect;
10
-
11
- @Aspect
12
- public class EntityQueryAspect {
13
-
14
- /**
15
- * 字段开启分页的方法
16
- *
17
- * @apiNote 1. 包命名需符合规范 com.yss.datamiddle.(项目名).service?.impl.serviceImpl.method <br/> 2. 参数为pageQuery dto的方法
18
- * @param joinPoint 加入切点
19
- * @param pageQuery 查询分页对象dtp
20
- * @return 执行结果
21
- */
22
- @Around("( (execution(public * (@org.springframework.stereotype.Repository *).*(..)) || execution(* com.yss..*.gateway.impl.*.*(..))))&& (args(pageQuery)||args(pageQuery,..))")
23
- @SneakyThrows
24
- public Object interceptEntityQueries(ProceedingJoinPoint joinPoint, PageQuery pageQuery) {
25
- if (pageQuery != null) {
26
- //分页查询开始
27
- Page<Object> page = PageHelper.offsetPage(pageQuery.getOffset(), pageQuery.getPageSize());
28
- // 继续执行目标方法
29
- Object result = joinPoint.proceed();
30
- long total = page.getTotal();
31
- pageQuery.setTempTotalCount(total);
32
- return result;
33
- }
34
- // 不满足条件时直接执行目标方法
35
- return joinPoint.proceed();
36
- }
37
- }
@@ -1,18 +0,0 @@
1
- package com.yss.cloud.mybatis;
2
-
3
- import com.yss.cloud.mybatis.config.PageQueryEntityConfigration;
4
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
5
- import org.springframework.context.annotation.Configuration;
6
- import org.springframework.context.annotation.Import;
7
-
8
-
9
- @Configuration
10
- @Import({
11
- PageQueryEntityConfigration.class}
12
- )
13
- @EnableConfigurationProperties({PrimaryDataSourceProperties.class,
14
- MybatisPlusGlobalProperties.class,
15
- YssMybatisMapperProperties.class})
16
- public class MybatisBaseConfiguration {
17
-
18
- }
@@ -1,18 +0,0 @@
1
- package com.yss.cloud.mybatis.config;
2
-
3
- import com.yss.cloud.mybatis.aop.EntityQueryAspect;
4
- import lombok.extern.slf4j.Slf4j;
5
- import org.springframework.context.annotation.Bean;
6
- import org.springframework.context.annotation.Configuration;
7
- import org.springframework.context.annotation.Primary;
8
-
9
- @Configuration
10
- @Slf4j
11
- public class PageQueryEntityConfigration {
12
- @Primary
13
- @Bean
14
- public EntityQueryAspect entityQueryAspect() {
15
- log.info("【MapperConfiguration】DataSource 获取数据源primaryDataSourceProperties配置");
16
- return new EntityQueryAspect();
17
- }
18
- }