create-yss-spec 2.1.3 → 2.1.5

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 (296) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/code-review/SKILL.md +38 -10
  4. package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  5. package/template/.agents/skills/product-design-prototype/SKILL.md +6 -2
  6. package/template/.agents/skills/prototype-review/SKILL.md +6 -2
  7. package/template/.agents/skills/wireframe-prototype/SKILL.md +5 -1
  8. package/template/.agents/skills/yss-api-integration/SKILL.md +25 -7
  9. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  10. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  11. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  12. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  13. package/template/.agents/skills/yss-design-system/SKILL.md +6 -5
  14. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  15. package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +13 -17
  16. package/template/.agents/skills/yss-openapi-governance/SKILL.md +89 -114
  17. package/template/.agents/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  18. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +13 -7
  19. package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  20. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  21. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  22. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  23. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +8 -0
  24. package/template/.agents/skills/yss-prototype-stage/SKILL.md +40 -0
  25. package/template/.agents/skills/yss-router/SKILL.md +2 -2
  26. package/template/.agents/skills/yss-router/references/router-contract.yaml +9 -8
  27. package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +4 -1
  28. package/template/.agents/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  29. package/template/.claude/skills/code-review/SKILL.md +38 -10
  30. package/template/.claude/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  31. package/template/.claude/skills/product-design-prototype/SKILL.md +6 -2
  32. package/template/.claude/skills/prototype-review/SKILL.md +6 -2
  33. package/template/.claude/skills/wireframe-prototype/SKILL.md +5 -1
  34. package/template/.claude/skills/yss-api-integration/SKILL.md +25 -7
  35. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  36. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  37. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  38. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  39. package/template/.claude/skills/yss-design-system/SKILL.md +6 -5
  40. package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  41. package/template/.claude/skills/yss-openapi-draft-review/SKILL.md +13 -17
  42. package/template/.claude/skills/yss-openapi-governance/SKILL.md +89 -114
  43. package/template/.claude/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  44. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +13 -7
  45. package/template/.claude/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  46. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  47. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  48. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  49. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +8 -0
  50. package/template/.claude/skills/yss-prototype-stage/SKILL.md +40 -0
  51. package/template/.claude/skills/yss-router/SKILL.md +2 -2
  52. package/template/.claude/skills/yss-router/references/router-contract.yaml +9 -8
  53. package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +4 -1
  54. package/template/.claude/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  55. package/template/.codex/skills/code-review/SKILL.md +38 -10
  56. package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  57. package/template/.codex/skills/product-design-prototype/SKILL.md +6 -2
  58. package/template/.codex/skills/prototype-review/SKILL.md +6 -2
  59. package/template/.codex/skills/wireframe-prototype/SKILL.md +5 -1
  60. package/template/.codex/skills/yss-api-integration/SKILL.md +25 -7
  61. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  62. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  63. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  64. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  65. package/template/.codex/skills/yss-design-system/SKILL.md +6 -5
  66. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  67. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +13 -17
  68. package/template/.codex/skills/yss-openapi-governance/SKILL.md +89 -114
  69. package/template/.codex/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  70. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +13 -7
  71. package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  72. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  73. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  74. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  75. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +8 -0
  76. package/template/.codex/skills/yss-prototype-stage/SKILL.md +40 -0
  77. package/template/.codex/skills/yss-router/SKILL.md +2 -2
  78. package/template/.codex/skills/yss-router/references/router-contract.yaml +9 -8
  79. package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +4 -1
  80. package/template/.codex/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  81. package/template/.hermes/skills/code-review/SKILL.md +38 -10
  82. package/template/.hermes/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  83. package/template/.hermes/skills/product-design-prototype/SKILL.md +6 -2
  84. package/template/.hermes/skills/prototype-review/SKILL.md +6 -2
  85. package/template/.hermes/skills/wireframe-prototype/SKILL.md +5 -1
  86. package/template/.hermes/skills/yss-api-integration/SKILL.md +25 -7
  87. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  88. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  89. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  90. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  91. package/template/.hermes/skills/yss-design-system/SKILL.md +6 -5
  92. package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  93. package/template/.hermes/skills/yss-openapi-draft-review/SKILL.md +13 -17
  94. package/template/.hermes/skills/yss-openapi-governance/SKILL.md +89 -114
  95. package/template/.hermes/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  96. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +13 -7
  97. package/template/.hermes/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  98. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  99. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  100. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  101. package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +8 -0
  102. package/template/.hermes/skills/yss-prototype-stage/SKILL.md +40 -0
  103. package/template/.hermes/skills/yss-router/SKILL.md +2 -2
  104. package/template/.hermes/skills/yss-router/references/router-contract.yaml +9 -8
  105. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +4 -1
  106. package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  107. package/template/.pi/skills/code-review/SKILL.md +38 -10
  108. package/template/.pi/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  109. package/template/.pi/skills/product-design-prototype/SKILL.md +6 -2
  110. package/template/.pi/skills/prototype-review/SKILL.md +6 -2
  111. package/template/.pi/skills/wireframe-prototype/SKILL.md +5 -1
  112. package/template/.pi/skills/yss-api-integration/SKILL.md +25 -7
  113. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  114. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  115. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  116. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  117. package/template/.pi/skills/yss-design-system/SKILL.md +6 -5
  118. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  119. package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +13 -17
  120. package/template/.pi/skills/yss-openapi-governance/SKILL.md +89 -114
  121. package/template/.pi/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  122. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +13 -7
  123. package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  124. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  125. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  126. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  127. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +8 -0
  128. package/template/.pi/skills/yss-prototype-stage/SKILL.md +40 -0
  129. package/template/.pi/skills/yss-router/SKILL.md +2 -2
  130. package/template/.pi/skills/yss-router/references/router-contract.yaml +9 -8
  131. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +4 -1
  132. package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  133. package/template/.qoder/skills/code-review/SKILL.md +38 -10
  134. package/template/.qoder/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  135. package/template/.qoder/skills/product-design-prototype/SKILL.md +6 -2
  136. package/template/.qoder/skills/prototype-review/SKILL.md +6 -2
  137. package/template/.qoder/skills/wireframe-prototype/SKILL.md +5 -1
  138. package/template/.qoder/skills/yss-api-integration/SKILL.md +25 -7
  139. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  140. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  141. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  142. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  143. package/template/.qoder/skills/yss-design-system/SKILL.md +6 -5
  144. package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  145. package/template/.qoder/skills/yss-openapi-draft-review/SKILL.md +13 -17
  146. package/template/.qoder/skills/yss-openapi-governance/SKILL.md +89 -114
  147. package/template/.qoder/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  148. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +13 -7
  149. package/template/.qoder/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  150. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  151. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  152. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  153. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +8 -0
  154. package/template/.qoder/skills/yss-prototype-stage/SKILL.md +40 -0
  155. package/template/.qoder/skills/yss-router/SKILL.md +2 -2
  156. package/template/.qoder/skills/yss-router/references/router-contract.yaml +9 -8
  157. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +4 -1
  158. package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  159. package/template/.trae/skills/code-review/SKILL.md +38 -10
  160. package/template/.trae/skills/high-fidelity-html-prototype/SKILL.md +16 -12
  161. package/template/.trae/skills/product-design-prototype/SKILL.md +6 -2
  162. package/template/.trae/skills/prototype-review/SKILL.md +6 -2
  163. package/template/.trae/skills/wireframe-prototype/SKILL.md +5 -1
  164. package/template/.trae/skills/yss-api-integration/SKILL.md +25 -7
  165. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +3 -17
  166. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -30
  167. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  168. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +1 -21
  169. package/template/.trae/skills/yss-design-system/SKILL.md +6 -5
  170. package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +12 -6
  171. package/template/.trae/skills/yss-openapi-draft-review/SKILL.md +13 -17
  172. package/template/.trae/skills/yss-openapi-governance/SKILL.md +89 -114
  173. package/template/.trae/skills/yss-openapi-governance/agents/openai.yaml +2 -2
  174. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +13 -7
  175. package/template/.trae/skills/yss-product-lifecycle/references/artifact-dependencies.md +2 -2
  176. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +8 -2
  177. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +77 -30
  178. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +7 -2
  179. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +8 -0
  180. package/template/.trae/skills/yss-prototype-stage/SKILL.md +40 -0
  181. package/template/.trae/skills/yss-router/SKILL.md +2 -2
  182. package/template/.trae/skills/yss-router/references/router-contract.yaml +9 -8
  183. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +4 -1
  184. package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +2 -1
  185. package/template/AGENTS.md +7 -5
  186. package/template/CONTEXT.md +15 -1
  187. package/template/README.md +2 -1
  188. package/template/__yss_dotfile__.gitignore +4 -0
  189. package/template/docs/adr/0001-product-design-prototype-entrypoint.md +1 -1
  190. package/template/docs/adr/0003-machine-readable-lifecycle-registry.md +5 -0
  191. package/template/docs/adr/0004-split-lifecycle-and-router-registry-domains.md +5 -0
  192. package/template/docs/adr/0005-cross-repository-ecosystem-release-manifest.md +5 -0
  193. package/template/docs/adr/0006-stable-lifecycle-ids-and-generated-structure.md +5 -0
  194. package/template/docs/adr/0007-separate-skill-routing-registry-from-integrity-lock.md +5 -0
  195. package/template/docs/agents/issue-tracker.md +1 -0
  196. package/template/docs/api/templates/openapi-draft-review-checklist.md +8 -6
  197. package/template/docs/api/templates/openapi-freeze-record-template.md +8 -2
  198. package/template/docs/api/templates/openapi-json-export-record-template.md +60 -0
  199. package/template/docs/architecture/templates/architecture-review-checklist.md +6 -19
  200. package/template/docs/architecture/templates/functional-architecture-template.md +4 -4
  201. package/template/docs/architecture/templates/system-overview-design-template.md +10 -5
  202. package/template/docs/architecture/templates/tech-design-template.md +4 -11
  203. package/template/docs/design/README.md +4 -2
  204. package/template/docs/design/design.md +4 -0
  205. package/template/docs/design/templates/interaction-spec-template.md +3 -3
  206. package/template/docs/design/templates/prototype-confirmation-template.md +9 -6
  207. package/template/docs/design/templates/prototype-evidence-template.yaml +46 -0
  208. package/template/docs/design/templates/prototype-review-checklist.md +4 -4
  209. package/template/docs/discovery/templates/discovery-template.md +0 -1
  210. package/template/docs/implementation/create-yss-spec-repository-mode-contract.md +2 -2
  211. package/template/docs/process/harness-process-tailoring.md +2 -0
  212. package/template/docs/process/harness-work-unit-map.md +14 -10
  213. package/template/docs/process/lifecycle-artifact-map.md +84 -39
  214. package/template/docs/process/lifecycle-registry-baseline.json +70 -0
  215. package/template/docs/process/lifecycle-registry.yaml +289 -0
  216. package/template/docs/process/schemas/lifecycle-registry.schema.json +35 -0
  217. package/template/docs/reviews/lifecycle-registry-phase0-1-red-green-2026-08-17.md +61 -0
  218. package/template/docs/reviews/matt-yss-p0-ticket-review-git-red-green-2026-08-17.md +91 -0
  219. package/template/docs/reviews/openapi-skill-primary-source-research-2026-08-16.md +76 -0
  220. package/template/docs/reviews/openapi-yaml-first-independent-review-2026-08-16.md +121 -0
  221. package/template/docs/reviews/openapi-yaml-first-pressure-scenarios-2026-08-16.md +191 -0
  222. package/template/docs/reviews/openapi-yaml-first-red-green-2026-08-16.md +76 -0
  223. package/template/docs/reviews/openapi-yaml-json-output-independent-review-2026-08-16.md +30 -0
  224. package/template/docs/reviews/openapi-yaml-json-output-scope-red-green-2026-08-16.md +154 -0
  225. package/template/docs/reviews/research-create-yss-spec-refresh-2026-08-16.md +164 -0
  226. package/template/docs/reviews/security-permission-lifecycle-simplification-red-green-2026-08-16.md +43 -0
  227. package/template/docs/reviews/template-release-review-remediation-red-green-2026-08-17.md +41 -0
  228. package/template/docs/templates/agent-brief-template.md +2 -2
  229. package/template/docs/templates/build-architecture-checklist-template.md +3 -4
  230. package/template/docs/templates/implementation-repo-registry-template.md +0 -2
  231. package/template/docs/templates/implementation-routing-template.md +6 -6
  232. package/template/docs/templates/openapi-spec-template.yaml +0 -6
  233. package/template/docs/templates/review-report-template.md +2 -1
  234. package/template/docs/templates/spec-delta-template.md +1 -1
  235. package/template/docs/templates/spec-template.md +0 -1
  236. package/template/docs/templates/vertical-slice-ticket-template.md +2 -2
  237. package/template/docs/user-guide//344/272/247/345/223/201/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201.md +6 -6
  238. package/template/docs/user-guide//344/272/247/345/223/201/347/240/224/345/217/221/345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
  239. package/template/docs/user-guide//345/244/226/351/203/250/345/221/275/344/273/244/350/241/214/345/267/245/345/205/267/345/256/236/350/267/265/346/214/207/345/215/227.md +1 -1
  240. package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +1 -1
  241. package/template/scripts/generate-lifecycle-artifacts +26 -0
  242. package/template/scripts/lifecycle-registry.rb +194 -0
  243. package/template/scripts/sync-skills +1 -0
  244. package/template/scripts/test-export-yss-skills.rb +10 -6
  245. package/template/scripts/test-lifecycle-registry.rb +74 -0
  246. package/template/scripts/update-skill-lock +1 -0
  247. package/template/scripts/verify-governance-release +39 -0
  248. package/template/scripts/verify-lifecycle-registry +67 -0
  249. package/template/scripts/verify-lifecycle-scenarios +193 -23
  250. package/template/scripts/verify-matt-yss-integration-scenarios +297 -1
  251. package/template/scripts/verify-openapi-json-handoff-scenarios +270 -0
  252. package/template/scripts/verify-openapi-yaml-first-scenarios +120 -0
  253. package/template/scripts/verify-prototype-backend-scaffold-scenarios +26 -4
  254. package/template/scripts/verify-template +27 -3
  255. package/template/scripts/verify-yss-router-scenarios +51 -14
  256. package/template/skills-lock.json +25 -25
  257. package/template/wiki/raw/skills-lock.json +0 -15
  258. package/template/wiki/wiki/OpenAPI/345/245/221/347/272/246.md +1 -1
  259. package/template/wiki/wiki/YSS/345/267/245/347/250/213/346/212/200/350/203/275/344/275/223/347/263/273.md +1 -1
  260. package/template/yss-public-skills.json +5 -5
  261. package/template.snapshot.json +4 -4
  262. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  263. package/template/.agents/skills/yss-openapi/SKILL.md +0 -116
  264. package/template/.agents/skills/yss-openapi/agents/openai.yaml +0 -4
  265. package/template/.agents/skills/yss-openapi/img.png +0 -0
  266. package/template/.agents/skills/yss-openapi/img_1.png +0 -0
  267. package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  268. package/template/.claude/skills/yss-openapi/SKILL.md +0 -116
  269. package/template/.claude/skills/yss-openapi/agents/openai.yaml +0 -4
  270. package/template/.claude/skills/yss-openapi/img.png +0 -0
  271. package/template/.claude/skills/yss-openapi/img_1.png +0 -0
  272. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  273. package/template/.codex/skills/yss-openapi/SKILL.md +0 -116
  274. package/template/.codex/skills/yss-openapi/agents/openai.yaml +0 -4
  275. package/template/.codex/skills/yss-openapi/img.png +0 -0
  276. package/template/.codex/skills/yss-openapi/img_1.png +0 -0
  277. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  278. package/template/.hermes/skills/yss-openapi/SKILL.md +0 -116
  279. package/template/.hermes/skills/yss-openapi/agents/openai.yaml +0 -4
  280. package/template/.hermes/skills/yss-openapi/img.png +0 -0
  281. package/template/.hermes/skills/yss-openapi/img_1.png +0 -0
  282. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  283. package/template/.pi/skills/yss-openapi/SKILL.md +0 -116
  284. package/template/.pi/skills/yss-openapi/agents/openai.yaml +0 -4
  285. package/template/.pi/skills/yss-openapi/img.png +0 -0
  286. package/template/.pi/skills/yss-openapi/img_1.png +0 -0
  287. package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  288. package/template/.qoder/skills/yss-openapi/SKILL.md +0 -116
  289. package/template/.qoder/skills/yss-openapi/agents/openai.yaml +0 -4
  290. package/template/.qoder/skills/yss-openapi/img.png +0 -0
  291. package/template/.qoder/skills/yss-openapi/img_1.png +0 -0
  292. package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/smart-doc.json.template +0 -17
  293. package/template/.trae/skills/yss-openapi/SKILL.md +0 -116
  294. package/template/.trae/skills/yss-openapi/agents/openai.yaml +0 -4
  295. package/template/.trae/skills/yss-openapi/img.png +0 -0
  296. package/template/.trae/skills/yss-openapi/img_1.png +0 -0
@@ -2,9 +2,47 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "pathname"
5
+ require "set"
5
6
  require "yaml"
6
7
 
7
8
  ROOT = Pathname.new(__dir__).join("..").realpath
9
+ REGISTRY = YAML.safe_load(
10
+ ROOT.join("docs/process/lifecycle-registry.yaml").read,
11
+ permitted_classes: [],
12
+ aliases: false
13
+ )
14
+ REGISTRY_IDS = %w[stages gates artifacts work_units evidence].flat_map do |collection|
15
+ REGISTRY.fetch(collection).map { |record| record.fetch("id") }
16
+ end.to_set
17
+ ROUTE_REGISTRY_IDS = {
18
+ "impact-assessment" => "artifact.impact-assessment",
19
+ "ssot-update" => "work-unit.ssot-update",
20
+ "skill-projection-sync" => "work-unit.skill-projection-sync",
21
+ "pressure-scenarios" => "evidence.fresh-verification",
22
+ "fresh-verification" => "work-unit.fresh-verification",
23
+ "independent-review" => "work-unit.independent-review",
24
+ "tracker-sync" => "evidence.checkpoint-and-rollback",
25
+ "spec" => "artifact.spec",
26
+ "product-overview" => "artifact.product-overview",
27
+ "functional-architecture" => "artifact.functional-architecture",
28
+ "interaction-spec" => "artifact.interaction-spec",
29
+ "low-fidelity-prototype" => "artifact.low-fidelity-prototype",
30
+ "state-matrix" => "artifact.state-matrix",
31
+ "prototype-review" => "gate.prototype-reviewed",
32
+ "high-fidelity-html-prototype" => "artifact.high-fidelity-html-prototype",
33
+ "prototype-verification" => "gate.prototype-verified",
34
+ "user-confirmation" => "gate.user-confirmation",
35
+ "openapi-draft" => "artifact.openapi-draft",
36
+ "draft-review" => "gate.openapi-draft-reviewed",
37
+ "design-review" => "gate.design-reviewed",
38
+ "openapi-freeze" => "gate.openapi-frozen",
39
+ "engineering-baseline" => "artifact.engineering-baseline",
40
+ "architecture-review" => "artifact.architecture-review",
41
+ "data-architecture" => "artifact.data-architecture",
42
+ "spec-delta" => "artifact.spec-delta",
43
+ "parent-ticket" => "artifact.parent-ticket",
44
+ "vertical-slice-tickets" => "artifact.vertical-slice-ticket"
45
+ }.freeze
8
46
 
9
47
  def route(facts)
10
48
  if facts.fetch(:repository_mode) == "template-source"
@@ -19,20 +57,26 @@ def route(facts)
19
57
  end
20
58
 
21
59
  gates = %w[impact-assessment tracker-sync fresh-verification]
22
- return gates if facts.fetch(:scale) == :small && !facts.fetch(:high_risk)
60
+ small_change = facts.fetch(:scale) == :small && !facts.fetch(:high_risk) &&
61
+ !facts.fetch(:ui_impact) && !facts.fetch(:api_impact) &&
62
+ !facts.fetch(:backend_impact) && !facts.fetch(:data_impact)
63
+ return gates if small_change
23
64
 
24
65
  gates.concat(%w[spec product-overview functional-architecture])
25
66
 
26
67
  if facts.fetch(:ui_impact)
27
68
  gates.concat(%w[
69
+ interaction-spec
28
70
  low-fidelity-prototype
29
71
  state-matrix
72
+ prototype-review
30
73
  high-fidelity-html-prototype
74
+ prototype-verification
31
75
  user-confirmation
32
76
  ])
33
77
  end
34
78
 
35
- gates.concat(%w[openapi-draft design-review openapi-freeze]) if facts.fetch(:api_impact)
79
+ gates.concat(%w[openapi-draft draft-review design-review openapi-freeze]) if facts.fetch(:api_impact)
36
80
 
37
81
  if facts.fetch(:backend_impact) || facts.fetch(:high_risk)
38
82
  gates.concat(%w[engineering-baseline architecture-review])
@@ -53,7 +97,7 @@ scenarios = [
53
97
  data_impact: false, existing_frozen_baseline: true
54
98
  },
55
99
  required: %w[impact-assessment tracker-sync fresh-verification],
56
- forbidden: %w[spec product-overview spec-delta high-fidelity-html-prototype]
100
+ forbidden: %w[spec product-overview spec-delta interaction-spec high-fidelity-html-prototype prototype-review prototype-verification]
57
101
  },
58
102
  {
59
103
  name: "纯后端新功能",
@@ -63,7 +107,17 @@ scenarios = [
63
107
  data_impact: false, existing_frozen_baseline: false
64
108
  },
65
109
  required: %w[spec product-overview functional-architecture openapi-draft engineering-baseline parent-ticket vertical-slice-tickets],
66
- forbidden: %w[low-fidelity-prototype state-matrix high-fidelity-html-prototype user-confirmation spec-delta]
110
+ forbidden: %w[interaction-spec low-fidelity-prototype state-matrix prototype-review high-fidelity-html-prototype prototype-verification user-confirmation spec-delta]
111
+ },
112
+ {
113
+ name: "普通 API 功能无需专项输入",
114
+ facts: {
115
+ repository_mode: "project-instance", scale: :small, high_risk: false,
116
+ ui_impact: false, api_impact: true, backend_impact: true,
117
+ data_impact: false, existing_frozen_baseline: false
118
+ },
119
+ required: %w[spec product-overview functional-architecture openapi-draft draft-review openapi-freeze engineering-baseline parent-ticket vertical-slice-tickets],
120
+ forbidden: %w[interaction-spec low-fidelity-prototype state-matrix prototype-review high-fidelity-html-prototype prototype-verification user-confirmation spec-delta]
67
121
  },
68
122
  {
69
123
  name: "有 UI 的新功能",
@@ -72,7 +126,7 @@ scenarios = [
72
126
  ui_impact: true, api_impact: true, backend_impact: true,
73
127
  data_impact: false, existing_frozen_baseline: false
74
128
  },
75
- required: %w[spec product-overview low-fidelity-prototype state-matrix high-fidelity-html-prototype user-confirmation openapi-freeze vertical-slice-tickets],
129
+ required: %w[spec product-overview interaction-spec low-fidelity-prototype state-matrix prototype-review high-fidelity-html-prototype prototype-verification user-confirmation openapi-freeze vertical-slice-tickets],
76
130
  forbidden: %w[spec-delta]
77
131
  },
78
132
  {
@@ -83,7 +137,7 @@ scenarios = [
83
137
  data_impact: true, existing_frozen_baseline: true
84
138
  },
85
139
  required: %w[spec product-overview spec-delta openapi-draft data-architecture architecture-review vertical-slice-tickets],
86
- forbidden: %w[high-fidelity-html-prototype]
140
+ forbidden: %w[interaction-spec prototype-review high-fidelity-html-prototype prototype-verification]
87
141
  },
88
142
  {
89
143
  name: "模板源流程修订",
@@ -107,12 +161,48 @@ scenarios.each do |scenario|
107
161
  failures << "#{scenario.fetch(:name)} 错误触发: #{unexpected.join(', ')}" unless unexpected.empty?
108
162
  end
109
163
 
164
+ route_keys = scenarios.flat_map { |scenario| scenario.fetch(:required) + scenario.fetch(:forbidden) }.uniq
165
+ route_keys.each do |route_key|
166
+ registry_id = ROUTE_REGISTRY_IDS[route_key]
167
+ failures << "生命周期场景 route key 未映射稳定 ID: #{route_key}" unless registry_id
168
+ failures << "生命周期场景 route key 映射到不存在的稳定 ID: #{route_key} -> #{registry_id}" if registry_id && !REGISTRY_IDS.include?(registry_id)
169
+ end
170
+
171
+ prototype_registry_requirements = {
172
+ "gate.prototype-reviewed" => ["evidence.prototype-review-result"],
173
+ "gate.prototype-verified" => ["evidence.antd-cli-validation", "evidence.browser-prototype-verification"],
174
+ "gate.user-confirmation" => ["evidence.prototype-confirmation"]
175
+ }.freeze
176
+ prototype_registry_requirements.each do |gate_id, required_evidence|
177
+ gate = REGISTRY.fetch("gates").find { |record| record.fetch("id") == gate_id }
178
+ failures << "原型阶段缺少生命周期门禁: #{gate_id}" unless gate
179
+ next unless gate
180
+
181
+ missing_evidence = required_evidence - gate.fetch("evidence", [])
182
+ failures << "#{gate_id} 缺少证据: #{missing_evidence.join(', ')}" unless missing_evidence.empty?
183
+ end
184
+
185
+ %w[
186
+ artifact.interaction-spec
187
+ artifact.prototype-review
188
+ artifact.prototype-confirmation
189
+ evidence.prototype-review-result
190
+ evidence.antd-cli-validation
191
+ evidence.browser-prototype-verification
192
+ evidence.prototype-confirmation
193
+ ].each do |stable_id|
194
+ failures << "原型阶段缺少生命周期对象: #{stable_id}" unless REGISTRY_IDS.include?(stable_id)
195
+ end
196
+
110
197
  semantic_markers = {
111
198
  "AGENTS.md" => [
112
- "21 个门禁全部是条件强制门禁",
199
+ "生命周期注册表中的条件门禁全部按影响面强制",
113
200
  "只要进入 Spec 基线",
114
201
  "才构成产品设计影响",
115
202
  "Spec Delta 只记录相对既有冻结 Spec 基线",
203
+ "安全 / 权限不设独立生命周期资料或专属门禁",
204
+ "普通 action 注册",
205
+ "SQL / DDL / 迁移和上传 / 下载本身不构成安全 / 权限专项",
116
206
  "template-source",
117
207
  "apps/backend/<project>/",
118
208
  "apps/frontend/<project>/",
@@ -126,7 +216,17 @@ semantic_markers = {
126
216
  "不生成空文档",
127
217
  "最近可信阶段",
128
218
  "同一独立执行者",
129
- "集中 checkpoint"
219
+ "集中 checkpoint",
220
+ "安全 / 权限不单独分诊",
221
+ "不自动升级为安全专项"
222
+ ],
223
+ "docs/process/lifecycle-artifact-map.md" => [
224
+ "安全 / 权限不形成独立门禁",
225
+ "按实际 UI、API、Backend、Data、High-risk 影响"
226
+ ],
227
+ ".agents/skills/yss-product-lifecycle/references/artifact-dependencies.md" => [
228
+ "不使用独立影响类型",
229
+ "不增加安全 / 权限传播"
130
230
  ],
131
231
  "docs/process/implementation-repo-integration.md" => [
132
232
  "apps/backend/<project>/",
@@ -171,7 +271,7 @@ unless failures.empty?
171
271
  exit 1
172
272
  end
173
273
 
174
- puts "五类生命周期压力场景验证通过"
274
+ puts "六类生命周期压力场景验证通过"
175
275
 
176
276
  skill_root = ROOT.join(".agents/skills/yss-product-lifecycle")
177
277
  skill = skill_root.join("SKILL.md").read
@@ -235,7 +335,7 @@ reference_markers = {
235
335
  ]
236
336
  }.freeze
237
337
 
238
- removed_skills = %w[code-review-process yss-domain-modeling]
338
+ removed_skills = %w[code-review-process yss-domain-modeling yss-openapi]
239
339
  removed_skills.each do |skill_name|
240
340
  failures << "已移除 skill 仍存在: #{skill_name}" if ROOT.join(".agents/skills", skill_name).exist?
241
341
  end
@@ -250,7 +350,8 @@ tracked_policy_files = [
250
350
  tracked_policy_files.each do |relative_path|
251
351
  body = ROOT.join(relative_path).read
252
352
  removed_skills.each do |skill_name|
253
- failures << "#{relative_path} 仍引用已移除 skill: #{skill_name}" if body.include?(skill_name)
353
+ pattern = Regexp.new("(?<![a-z0-9-])#{Regexp.escape(skill_name)}(?![a-z0-9-])")
354
+ failures << "#{relative_path} 仍引用已移除 skill: #{skill_name}" if body.match?(pattern)
254
355
  end
255
356
  end
256
357
 
@@ -265,6 +366,47 @@ unless prototype_review.include?("isolated visual fixes") && prototype_review.in
265
366
  failures << "prototype-review 未排除无行为影响的局部视觉改动"
266
367
  end
267
368
 
369
+ yss_design_system = ROOT.join(".agents/skills/yss-design-system/SKILL.md").read
370
+ failures << "yss-design-system 未将 product-design:index 声明为原型主入口" unless yss_design_system.include?("product-design:index")
371
+ failures << "yss-design-system 未路由统一原型阶段契约" unless yss_design_system.include?("yss-prototype-stage")
372
+
373
+ %w[product-design-prototype wireframe-prototype high-fidelity-html-prototype].each do |skill_name|
374
+ body = ROOT.join(".agents/skills/#{skill_name}/SKILL.md").read
375
+ failures << "#{skill_name} 未降为兼容入口" unless body.include?("兼容入口") && body.include?("yss-prototype-stage")
376
+ end
377
+
378
+ high_fidelity = ROOT.join(".agents/skills/high-fidelity-html-prototype/SKILL.md").read
379
+ failures << "高保真原型仍固定 AntD CLI 版本" if high_fidelity.include?("@ant-design/cli@6.5.0")
380
+ failures << "高保真原型仍以 npm view 代替受控 AntD CLI 证据" if high_fidelity.include?("npm view antd version")
381
+
382
+ confirmation_template = ROOT.join("docs/design/templates/prototype-confirmation-template.md").read
383
+ failures << "原型确认模板仍固定 AntD 版本" if confirmation_template.include?("--version 6.0.0")
384
+ failures << "原型确认模板未引用统一证据清单" unless confirmation_template.include?("prototype-evidence.yaml")
385
+
386
+ evidence_template_path = ROOT.join("docs/design/templates/prototype-evidence-template.yaml")
387
+ failures << "缺少机器可读的原型证据模板" unless evidence_template_path.file?
388
+ if evidence_template_path.file?
389
+ evidence_template = evidence_template_path.read
390
+ %w[design_baseline antd browser_verification review user_confirmation].each do |field|
391
+ failures << "原型证据模板缺少 #{field}" unless evidence_template.include?("#{field}:")
392
+ end
393
+ end
394
+
395
+ prototype_stage_path = ROOT.join(".agents/skills/yss-prototype-stage/SKILL.md")
396
+ failures << "缺少跨 Agent 原型阶段契约" unless prototype_stage_path.file?
397
+ if prototype_stage_path.file?
398
+ prototype_stage = prototype_stage_path.read
399
+ %w[product-design:index antd design.md project_design browser_verification].each do |marker|
400
+ failures << "统一原型阶段契约缺少 #{marker}" unless prototype_stage.include?(marker)
401
+ end
402
+ end
403
+
404
+ design_baseline = ROOT.join("docs/design/design.md").read
405
+ failures << "项目设计基线未声明上游 design.md 与项目 token 的优先级" unless design_baseline.include?("上游默认") && design_baseline.include?("项目覆盖")
406
+
407
+ adr = ROOT.join("docs/adr/0001-product-design-prototype-entrypoint.md").read
408
+ failures << "ADR 仍引用不存在的原型流程文档" if adr.include?("docs/process/product-prototype-workflow.md")
409
+
268
410
  openapi_review = ROOT.join(".agents/skills/yss-openapi-draft-review/SKILL.md").read
269
411
  %w[Automated semantic unchanged].each do |marker|
270
412
  failures << "OpenAPI Draft Review 缺少自动/语义边界: #{marker}" unless openapi_review.include?(marker)
@@ -362,14 +504,14 @@ failures << "Matt prototype 分支模式错误" unless matt_prototype["branch_pa
362
504
  failures << "Matt prototype 不能作为生产交付物" unless matt_prototype["production_delivery"] == false
363
505
  failures << "Matt prototype 错误替代 YSS 高保真原型" unless matt_prototype["replaces_yss_high_fidelity"] == false
364
506
  yss_prototype = prototype_modes.fetch("yss_high_fidelity", {})
365
- %w[prototype_review antd_cli_verification user_confirmation].each do |field|
507
+ %w[prototype_review antd_cli_verification browser_verification prototype_evidence user_confirmation].each do |field|
366
508
  failures << "YSS 高保真 prototype 缺少 #{field} 门禁" unless yss_prototype.fetch("required", []).include?(field)
367
509
  end
368
510
  failures << "YSS 高保真 prototype 错误替代 Matt prototype" unless yss_prototype["replaces_matt_logic"] == false
369
511
 
370
512
  prototype_mode_requirements = {
371
513
  "matt_logic" => %w[prototype_mode prototype_branch source_handoff prototype_asset_or_run conclusion updated_authoritative_asset remaining_questions return_handoff],
372
- "yss_high_fidelity" => %w[prototype_mode prototype_review antd_cli_verification user_confirmation]
514
+ "yss_high_fidelity" => %w[prototype_mode prototype_review antd_cli_verification browser_verification prototype_evidence user_confirmation]
373
515
  }.freeze
374
516
  prototype_mode_requirements.each do |mode, required_fields|
375
517
  evidence = required_fields.to_h { |field| [field, true] }.merge("prototype_mode" => mode)
@@ -421,8 +563,9 @@ ready_required.each do |condition|
421
563
  end
422
564
 
423
565
  propagation = contract.fetch("impact_propagation")
424
- expected_types = %w[wording ui-state permission api-schema state-machine data-model service-boundary nfr deployment security]
566
+ expected_types = %w[wording ui-state api-schema state-machine data-model service-boundary nfr deployment]
425
567
  failures << "影响类型不完整" unless (expected_types - propagation.keys).empty?
568
+ failures << "安全 / 权限仍作为独立传播类型" unless (propagation.keys & %w[permission security]).empty?
426
569
 
427
570
  allowed_conditions = %w[always existing_frozen_baseline ui_impact api_impact data_impact backend_impact]
428
571
  propagation.each do |impact_type, definition|
@@ -464,14 +607,41 @@ expected_types.each do |impact_type|
464
607
  failures << "#{impact_type} 可执行传播结果为空" if targets.nil? || targets.empty?
465
608
  end
466
609
 
467
- new_module_permission = propagated_targets(
610
+ new_module_api = propagated_targets(
468
611
  propagation,
469
- "permission",
612
+ "api-schema",
470
613
  all_impacts_context.merge("existing_frozen_baseline" => false)
471
614
  )
472
- failures << "新模块错误激活 spec-delta" if new_module_permission.any? { |target| target["name"] == "spec-delta" }
473
- unless new_module_permission.any? { |target| target["kind"] == "gate" && target["name"] == "openapi-freeze" }
474
- failures << "permission API 影响未使 openapi-freeze gate stale"
615
+ failures << "新模块错误激活 spec-delta" if new_module_api.any? { |target| target["name"] == "spec-delta" }
616
+ unless new_module_api.any? { |target| target["kind"] == "gate" && target["name"] == "openapi-freeze" }
617
+ failures << "普通 API 影响未使 openapi-freeze gate stale"
618
+ end
619
+
620
+ legacy_posture_key = %w[security permission posture].join("_")
621
+ failures << "生命周期合同仍要求已废弃的专项输入" if contract.key?(legacy_posture_key)
622
+ ordinary_route = route(
623
+ repository_mode: "project-instance", scale: :medium, high_risk: false,
624
+ ui_impact: true, api_impact: true, backend_impact: true,
625
+ data_impact: false, existing_frozen_baseline: false
626
+ )
627
+ %w[openapi-draft openapi-freeze engineering-baseline].each do |gate|
628
+ failures << "普通功能错误移除 #{gate} 门禁" unless ordinary_route.include?(gate)
629
+ end
630
+
631
+ data_targets = propagated_targets(propagation, "data-model", all_impacts_context)
632
+ failures << "SQL / DDL 未按普通数据影响传播" unless data_targets.any? { |target| target["name"] == "data-architecture" }
633
+ api_targets = propagated_targets(propagation, "api-schema", all_impacts_context)
634
+ failures << "下载接口未按普通 API 影响传播" unless api_targets.any? { |target| target["name"] == "openapi-draft" }
635
+
636
+ seam_required = contract.fetch("seam_deferred_required")
637
+ def seam_field_filled?(value)
638
+ value.is_a?(Array) ? !value.empty? : !value.to_s.empty?
639
+ end
640
+ valid_seam = seam_required.to_h { |field| [field, "value"] }
641
+ failures << "完整 seam-deferred 证据被错误阻断" unless seam_required.all? { |field| seam_field_filled?(valid_seam[field]) }
642
+ %w[owner follow_up_ticket target_version_or_release_date].each do |field|
643
+ mutation = valid_seam.reject { |key, _| key == field }
644
+ failures << "seam-deferred 缺少 #{field} 时未阻断" if seam_required.all? { |required_field| seam_field_filled?(mutation[required_field]) }
475
645
  end
476
646
 
477
647
  no_api_ui = propagated_targets(
@@ -488,11 +658,11 @@ unless unknown_decision == {"action" => "pause", "reason_code" => "impact-classi
488
658
  failures << "未知 impact type 未返回结构化暂停"
489
659
  end
490
660
 
491
- permission_gate_stale = new_module_permission.any? { |target| target["kind"] == "gate" }
492
- permission_artifact_stale = new_module_permission.any? { |target| target["kind"] == "artifact" }
661
+ api_gate_stale = new_module_api.any? { |target| target["kind"] == "gate" }
662
+ api_artifact_stale = new_module_api.any? { |target| target["kind"] == "artifact" }
493
663
  linked_ready_facts = ready_slice.merge(
494
- "gates_satisfied" => !permission_gate_stale,
495
- "no_stale_artifacts" => !permission_artifact_stale
664
+ "gates_satisfied" => !api_gate_stale,
665
+ "no_stale_artifacts" => !api_artifact_stale
496
666
  )
497
667
  failures << "传播后未撤销 ready-for-agent" if ready_for_agent?(ready_required, linked_ready_facts)
498
668