create-yss-spec 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1508) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/cli.js +0 -1
  4. package/template/.agents/skills/.strategic-design-skills-manifest.json +35 -0
  5. package/template/.agents/skills/.yss-skills-manifest.json +0 -2
  6. package/template/.agents/skills/code-review/SKILL.md +1 -1
  7. package/template/.agents/skills/code-review/references/yss-review-standards.md +1 -1
  8. package/template/.agents/skills/lombok/SKILL.md +1 -1
  9. package/template/.agents/skills/mapstruct/SKILL.md +1 -1
  10. package/template/.agents/skills/prototype-review/SKILL.md +7 -6
  11. package/template/.agents/skills/yss-antd-design/SKILL.md +8 -7
  12. package/template/.agents/skills/yss-antd-design/references/evidence.md +11 -6
  13. package/template/.agents/skills/yss-api-integration/SKILL.md +2 -2
  14. package/template/.agents/skills/yss-application/SKILL.md +2 -2
  15. package/template/.agents/skills/yss-audit-log/SKILL.md +2 -2
  16. package/template/.agents/skills/yss-audit-log/references/source-index.md +1 -1
  17. package/template/.agents/skills/yss-cache/SKILL.md +2 -2
  18. package/template/.agents/skills/yss-cache/references/source-index.md +1 -1
  19. package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  22. package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  23. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  24. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  25. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  26. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  27. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  28. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  29. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  30. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  31. package/template/.agents/skills/yss-design-system/SKILL.md +6 -6
  32. package/template/.agents/skills/yss-distributed-id/SKILL.md +2 -2
  33. package/template/.agents/skills/yss-distributed-id/references/source-index.md +1 -1
  34. package/template/.agents/skills/yss-domain/SKILL.md +1 -1
  35. package/template/.agents/skills/yss-dto/SKILL.md +2 -2
  36. package/template/.agents/skills/yss-dto/references/source-index.md +1 -1
  37. package/template/.agents/skills/yss-excel-mvc/SKILL.md +2 -2
  38. package/template/.agents/skills/yss-excel-mvc/references/source-index.md +1 -1
  39. package/template/.agents/skills/yss-exception/SKILL.md +1 -1
  40. package/template/.agents/skills/yss-exception/references/source-index.md +1 -1
  41. package/template/.agents/skills/{yss-router → yss-implementation-contract-compiler}/SKILL.md +22 -18
  42. package/template/.agents/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  43. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  44. package/template/{.codex/skills/yss-router/references/router-contract.yaml → .agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml} +59 -94
  45. package/template/{.codex/skills/yss-router → .agents/skills/yss-implementation-contract-compiler}/references/slice-implementation-contract.md +20 -8
  46. package/template/.agents/skills/{yss-router → yss-implementation-contract-compiler}/references/yss-skill-execution-result.md +5 -3
  47. package/template/.agents/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  48. package/template/.agents/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  49. package/template/.agents/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  50. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  51. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  52. package/template/.agents/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  53. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  54. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  55. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  56. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  57. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  58. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  59. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  60. package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
  61. package/template/.agents/skills/yss-mybatis/references/source-index.md +1 -1
  62. package/template/.agents/skills/yss-page-module-development/SKILL.md +1 -1
  63. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +6 -6
  64. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  65. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  66. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  67. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
  68. package/template/.agents/skills/yss-prototype-stage/SKILL.md +34 -24
  69. package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  70. package/template/.agents/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  71. package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  72. package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  73. package/template/.agents/skills/yss-repository/SKILL.md +2 -2
  74. package/template/.agents/skills/yss-resilience4j/SKILL.md +1 -1
  75. package/template/.agents/skills/yss-resilience4j/references/source-index.md +1 -1
  76. package/template/.agents/skills/yss-security-algorithm/SKILL.md +1 -1
  77. package/template/.agents/skills/yss-security-algorithm/references/source-index.md +1 -1
  78. package/template/.agents/skills/{yss-source-index → yss-skill-source-index-refresh}/SKILL.md +4 -4
  79. package/template/.agents/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  80. package/template/{.claude/skills/yss-source-index → .agents/skills/yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.mjs +1 -1
  81. package/template/.agents/skills/yss-ui/SKILL.md +2 -1
  82. package/template/.agents/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  83. package/template/.agents/skills/yss-up-springboot3/SKILL.md +1 -1
  84. package/template/.agents/skills/yss-userinfo/SKILL.md +1 -1
  85. package/template/.agents/skills/yss-userinfo/references/source-index.md +1 -1
  86. package/template/.agents/skills/yss-validation/SKILL.md +1 -1
  87. package/template/.agents/skills/yss-validation/references/source-index.md +1 -1
  88. package/template/.agents/skills/yss-web-controller/SKILL.md +2 -2
  89. package/template/.claude/skills/code-review/SKILL.md +1 -1
  90. package/template/.claude/skills/code-review/references/yss-review-standards.md +1 -1
  91. package/template/.claude/skills/lombok/SKILL.md +1 -1
  92. package/template/.claude/skills/mapstruct/SKILL.md +1 -1
  93. package/template/.claude/skills/prototype-review/SKILL.md +7 -6
  94. package/template/.claude/skills/yss-antd-design/SKILL.md +8 -7
  95. package/template/.claude/skills/yss-antd-design/references/evidence.md +11 -6
  96. package/template/.claude/skills/yss-api-integration/SKILL.md +2 -2
  97. package/template/.claude/skills/yss-application/SKILL.md +2 -2
  98. package/template/.claude/skills/yss-audit-log/SKILL.md +2 -2
  99. package/template/.claude/skills/yss-audit-log/references/source-index.md +1 -1
  100. package/template/.claude/skills/yss-cache/SKILL.md +2 -2
  101. package/template/.claude/skills/yss-cache/references/source-index.md +1 -1
  102. package/template/.claude/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  103. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  104. package/template/.claude/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  105. package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  106. package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  107. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  108. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  109. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  110. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  111. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  112. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  113. package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  114. package/template/.claude/skills/yss-design-system/SKILL.md +6 -6
  115. package/template/.claude/skills/yss-distributed-id/SKILL.md +2 -2
  116. package/template/.claude/skills/yss-distributed-id/references/source-index.md +1 -1
  117. package/template/.claude/skills/yss-domain/SKILL.md +1 -1
  118. package/template/.claude/skills/yss-dto/SKILL.md +2 -2
  119. package/template/.claude/skills/yss-dto/references/source-index.md +1 -1
  120. package/template/.claude/skills/yss-excel-mvc/SKILL.md +2 -2
  121. package/template/.claude/skills/yss-excel-mvc/references/source-index.md +1 -1
  122. package/template/.claude/skills/yss-exception/SKILL.md +1 -1
  123. package/template/.claude/skills/yss-exception/references/source-index.md +1 -1
  124. package/template/{.codex/skills/yss-router → .claude/skills/yss-implementation-contract-compiler}/SKILL.md +22 -18
  125. package/template/.claude/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  126. package/template/.claude/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  127. package/template/.claude/skills/{yss-router/references/router-contract.yaml → yss-implementation-contract-compiler/references/compiler-contract.yaml} +59 -94
  128. package/template/{.agents/skills/yss-router → .claude/skills/yss-implementation-contract-compiler}/references/slice-implementation-contract.md +20 -8
  129. package/template/{.codex/skills/yss-router → .claude/skills/yss-implementation-contract-compiler}/references/yss-skill-execution-result.md +5 -3
  130. package/template/.claude/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  131. package/template/.claude/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  132. package/template/.claude/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  133. package/template/.claude/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  134. package/template/.claude/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  135. package/template/.claude/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  136. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  137. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  138. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  139. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  140. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  141. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  142. package/template/.claude/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  143. package/template/.claude/skills/yss-mybatis/SKILL.md +2 -2
  144. package/template/.claude/skills/yss-mybatis/references/source-index.md +1 -1
  145. package/template/.claude/skills/yss-page-module-development/SKILL.md +1 -1
  146. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +6 -6
  147. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  148. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  149. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  150. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +1 -1
  151. package/template/.claude/skills/yss-prototype-stage/SKILL.md +34 -24
  152. package/template/.claude/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  153. package/template/.claude/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  154. package/template/.claude/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  155. package/template/.claude/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  156. package/template/.claude/skills/yss-repository/SKILL.md +2 -2
  157. package/template/.claude/skills/yss-resilience4j/SKILL.md +1 -1
  158. package/template/.claude/skills/yss-resilience4j/references/source-index.md +1 -1
  159. package/template/.claude/skills/yss-security-algorithm/SKILL.md +1 -1
  160. package/template/.claude/skills/yss-security-algorithm/references/source-index.md +1 -1
  161. package/template/.claude/skills/{yss-source-index → yss-skill-source-index-refresh}/SKILL.md +4 -4
  162. package/template/.claude/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  163. package/template/{.codex/skills/yss-source-index → .claude/skills/yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.mjs +1 -1
  164. package/template/.claude/skills/yss-ui/SKILL.md +2 -1
  165. package/template/.claude/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  166. package/template/.claude/skills/yss-up-springboot3/SKILL.md +1 -1
  167. package/template/.claude/skills/yss-userinfo/SKILL.md +1 -1
  168. package/template/.claude/skills/yss-userinfo/references/source-index.md +1 -1
  169. package/template/.claude/skills/yss-validation/SKILL.md +1 -1
  170. package/template/.claude/skills/yss-validation/references/source-index.md +1 -1
  171. package/template/.claude/skills/yss-web-controller/SKILL.md +2 -2
  172. package/template/.codex/skills/code-review/SKILL.md +1 -1
  173. package/template/.codex/skills/code-review/references/yss-review-standards.md +1 -1
  174. package/template/.codex/skills/lombok/SKILL.md +1 -1
  175. package/template/.codex/skills/mapstruct/SKILL.md +1 -1
  176. package/template/.codex/skills/prototype-review/SKILL.md +7 -6
  177. package/template/.codex/skills/yss-antd-design/SKILL.md +8 -7
  178. package/template/.codex/skills/yss-antd-design/references/evidence.md +11 -6
  179. package/template/.codex/skills/yss-api-integration/SKILL.md +2 -2
  180. package/template/.codex/skills/yss-application/SKILL.md +2 -2
  181. package/template/.codex/skills/yss-audit-log/SKILL.md +2 -2
  182. package/template/.codex/skills/yss-audit-log/references/source-index.md +1 -1
  183. package/template/.codex/skills/yss-cache/SKILL.md +2 -2
  184. package/template/.codex/skills/yss-cache/references/source-index.md +1 -1
  185. package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  186. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  187. package/template/.codex/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  188. package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  189. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  190. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  191. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  192. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  193. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  194. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  195. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  196. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  197. package/template/.codex/skills/yss-design-system/SKILL.md +6 -6
  198. package/template/.codex/skills/yss-distributed-id/SKILL.md +2 -2
  199. package/template/.codex/skills/yss-distributed-id/references/source-index.md +1 -1
  200. package/template/.codex/skills/yss-domain/SKILL.md +1 -1
  201. package/template/.codex/skills/yss-dto/SKILL.md +2 -2
  202. package/template/.codex/skills/yss-dto/references/source-index.md +1 -1
  203. package/template/.codex/skills/yss-excel-mvc/SKILL.md +2 -2
  204. package/template/.codex/skills/yss-excel-mvc/references/source-index.md +1 -1
  205. package/template/.codex/skills/yss-exception/SKILL.md +1 -1
  206. package/template/.codex/skills/yss-exception/references/source-index.md +1 -1
  207. package/template/{.cursor/skills/yss-router → .codex/skills/yss-implementation-contract-compiler}/SKILL.md +22 -18
  208. package/template/.codex/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  209. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  210. package/template/{.cursor/skills/yss-router/references/router-contract.yaml → .codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml} +59 -94
  211. package/template/{.cursor/skills/yss-router → .codex/skills/yss-implementation-contract-compiler}/references/slice-implementation-contract.md +20 -8
  212. package/template/{.claude/skills/yss-router → .codex/skills/yss-implementation-contract-compiler}/references/yss-skill-execution-result.md +5 -3
  213. package/template/.codex/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  214. package/template/.codex/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  215. package/template/.codex/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  216. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  217. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  218. package/template/.codex/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  219. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  220. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  221. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  222. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  223. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  224. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  225. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  226. package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
  227. package/template/.codex/skills/yss-mybatis/references/source-index.md +1 -1
  228. package/template/.codex/skills/yss-page-module-development/SKILL.md +1 -1
  229. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +6 -6
  230. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  231. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  232. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  233. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
  234. package/template/.codex/skills/yss-prototype-stage/SKILL.md +34 -24
  235. package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  236. package/template/.codex/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  237. package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  238. package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  239. package/template/.codex/skills/yss-repository/SKILL.md +2 -2
  240. package/template/.codex/skills/yss-resilience4j/SKILL.md +1 -1
  241. package/template/.codex/skills/yss-resilience4j/references/source-index.md +1 -1
  242. package/template/.codex/skills/yss-security-algorithm/SKILL.md +1 -1
  243. package/template/.codex/skills/yss-security-algorithm/references/source-index.md +1 -1
  244. package/template/.codex/skills/{yss-source-index → yss-skill-source-index-refresh}/SKILL.md +4 -4
  245. package/template/.codex/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  246. package/template/{.agents/skills/yss-source-index → .codex/skills/yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.mjs +1 -1
  247. package/template/.codex/skills/yss-ui/SKILL.md +2 -1
  248. package/template/.codex/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  249. package/template/.codex/skills/yss-up-springboot3/SKILL.md +1 -1
  250. package/template/.codex/skills/yss-userinfo/SKILL.md +1 -1
  251. package/template/.codex/skills/yss-userinfo/references/source-index.md +1 -1
  252. package/template/.codex/skills/yss-validation/SKILL.md +1 -1
  253. package/template/.codex/skills/yss-validation/references/source-index.md +1 -1
  254. package/template/.codex/skills/yss-web-controller/SKILL.md +2 -2
  255. package/template/.cursor/skills/code-review/SKILL.md +1 -1
  256. package/template/.cursor/skills/code-review/references/yss-review-standards.md +1 -1
  257. package/template/.cursor/skills/lombok/SKILL.md +1 -1
  258. package/template/.cursor/skills/mapstruct/SKILL.md +1 -1
  259. package/template/.cursor/skills/prototype-review/SKILL.md +7 -6
  260. package/template/.cursor/skills/yss-antd-design/SKILL.md +8 -7
  261. package/template/.cursor/skills/yss-antd-design/references/evidence.md +11 -6
  262. package/template/.cursor/skills/yss-api-integration/SKILL.md +2 -2
  263. package/template/.cursor/skills/yss-application/SKILL.md +2 -2
  264. package/template/.cursor/skills/yss-audit-log/SKILL.md +2 -2
  265. package/template/.cursor/skills/yss-audit-log/references/source-index.md +1 -1
  266. package/template/.cursor/skills/yss-cache/SKILL.md +2 -2
  267. package/template/.cursor/skills/yss-cache/references/source-index.md +1 -1
  268. package/template/.cursor/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  269. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  270. package/template/.cursor/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  271. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  272. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  273. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  274. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  275. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  276. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  277. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  278. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  279. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  280. package/template/.cursor/skills/yss-design-system/SKILL.md +6 -6
  281. package/template/.cursor/skills/yss-distributed-id/SKILL.md +2 -2
  282. package/template/.cursor/skills/yss-distributed-id/references/source-index.md +1 -1
  283. package/template/.cursor/skills/yss-domain/SKILL.md +1 -1
  284. package/template/.cursor/skills/yss-dto/SKILL.md +2 -2
  285. package/template/.cursor/skills/yss-dto/references/source-index.md +1 -1
  286. package/template/.cursor/skills/yss-excel-mvc/SKILL.md +2 -2
  287. package/template/.cursor/skills/yss-excel-mvc/references/source-index.md +1 -1
  288. package/template/.cursor/skills/yss-exception/SKILL.md +1 -1
  289. package/template/.cursor/skills/yss-exception/references/source-index.md +1 -1
  290. package/template/{.claude/skills/yss-router → .cursor/skills/yss-implementation-contract-compiler}/SKILL.md +22 -18
  291. package/template/.cursor/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  292. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  293. package/template/{.agents/skills/yss-router/references/router-contract.yaml → .cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml} +59 -94
  294. package/template/{.claude/skills/yss-router → .cursor/skills/yss-implementation-contract-compiler}/references/slice-implementation-contract.md +20 -8
  295. package/template/.cursor/skills/{yss-router → yss-implementation-contract-compiler}/references/yss-skill-execution-result.md +5 -3
  296. package/template/.cursor/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  297. package/template/.cursor/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  298. package/template/.cursor/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  299. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  300. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  301. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  302. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  303. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  304. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  305. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  306. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  307. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  308. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  309. package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
  310. package/template/.cursor/skills/yss-mybatis/references/source-index.md +1 -1
  311. package/template/.cursor/skills/yss-page-module-development/SKILL.md +1 -1
  312. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +6 -6
  313. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  314. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  315. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  316. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
  317. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +34 -24
  318. package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  319. package/template/.cursor/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  320. package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  321. package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  322. package/template/.cursor/skills/yss-repository/SKILL.md +2 -2
  323. package/template/.cursor/skills/yss-resilience4j/SKILL.md +1 -1
  324. package/template/.cursor/skills/yss-resilience4j/references/source-index.md +1 -1
  325. package/template/.cursor/skills/yss-security-algorithm/SKILL.md +1 -1
  326. package/template/.cursor/skills/yss-security-algorithm/references/source-index.md +1 -1
  327. package/template/.cursor/skills/{yss-source-index → yss-skill-source-index-refresh}/SKILL.md +4 -4
  328. package/template/.cursor/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  329. package/template/.cursor/skills/{yss-source-index → yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.mjs +1 -1
  330. package/template/.cursor/skills/yss-ui/SKILL.md +2 -1
  331. package/template/.cursor/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  332. package/template/.cursor/skills/yss-up-springboot3/SKILL.md +1 -1
  333. package/template/.cursor/skills/yss-userinfo/SKILL.md +1 -1
  334. package/template/.cursor/skills/yss-userinfo/references/source-index.md +1 -1
  335. package/template/.cursor/skills/yss-validation/SKILL.md +1 -1
  336. package/template/.cursor/skills/yss-validation/references/source-index.md +1 -1
  337. package/template/.cursor/skills/yss-web-controller/SKILL.md +2 -2
  338. package/template/.pi/skills/code-review/SKILL.md +1 -1
  339. package/template/.pi/skills/code-review/references/yss-review-standards.md +1 -1
  340. package/template/.pi/skills/lombok/SKILL.md +1 -1
  341. package/template/.pi/skills/mapstruct/SKILL.md +1 -1
  342. package/template/.pi/skills/prototype-review/SKILL.md +7 -6
  343. package/template/.pi/skills/yss-antd-design/SKILL.md +8 -7
  344. package/template/.pi/skills/yss-antd-design/references/evidence.md +11 -6
  345. package/template/.pi/skills/yss-api-integration/SKILL.md +2 -2
  346. package/template/.pi/skills/yss-application/SKILL.md +2 -2
  347. package/template/.pi/skills/yss-audit-log/SKILL.md +2 -2
  348. package/template/.pi/skills/yss-audit-log/references/source-index.md +1 -1
  349. package/template/.pi/skills/yss-cache/SKILL.md +2 -2
  350. package/template/.pi/skills/yss-cache/references/source-index.md +1 -1
  351. package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  352. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  353. package/template/.pi/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  354. package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  355. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  356. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  357. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  358. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  359. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  360. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  361. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  362. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  363. package/template/.pi/skills/yss-design-system/SKILL.md +6 -6
  364. package/template/.pi/skills/yss-distributed-id/SKILL.md +2 -2
  365. package/template/.pi/skills/yss-distributed-id/references/source-index.md +1 -1
  366. package/template/.pi/skills/yss-domain/SKILL.md +1 -1
  367. package/template/.pi/skills/yss-dto/SKILL.md +2 -2
  368. package/template/.pi/skills/yss-dto/references/source-index.md +1 -1
  369. package/template/.pi/skills/yss-excel-mvc/SKILL.md +2 -2
  370. package/template/.pi/skills/yss-excel-mvc/references/source-index.md +1 -1
  371. package/template/.pi/skills/yss-exception/SKILL.md +1 -1
  372. package/template/.pi/skills/yss-exception/references/source-index.md +1 -1
  373. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +55 -0
  374. package/template/.pi/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  375. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  376. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +314 -0
  377. package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +197 -0
  378. package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +69 -0
  379. package/template/.pi/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  380. package/template/.pi/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  381. package/template/.pi/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  382. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  383. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  384. package/template/.pi/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  385. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  386. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  387. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  388. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  389. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  390. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  391. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  392. package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
  393. package/template/.pi/skills/yss-mybatis/references/source-index.md +1 -1
  394. package/template/.pi/skills/yss-page-module-development/SKILL.md +1 -1
  395. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +6 -6
  396. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  397. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  398. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  399. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
  400. package/template/.pi/skills/yss-prototype-stage/SKILL.md +34 -24
  401. package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  402. package/template/.pi/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  403. package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  404. package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  405. package/template/.pi/skills/yss-repository/SKILL.md +2 -2
  406. package/template/.pi/skills/yss-resilience4j/SKILL.md +1 -1
  407. package/template/.pi/skills/yss-resilience4j/references/source-index.md +1 -1
  408. package/template/.pi/skills/yss-security-algorithm/SKILL.md +1 -1
  409. package/template/.pi/skills/yss-security-algorithm/references/source-index.md +1 -1
  410. package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +63 -0
  411. package/template/.pi/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  412. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +24 -0
  413. package/template/.pi/skills/yss-ui/SKILL.md +2 -1
  414. package/template/.pi/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  415. package/template/.pi/skills/yss-up-springboot3/SKILL.md +1 -1
  416. package/template/.pi/skills/yss-userinfo/SKILL.md +1 -1
  417. package/template/.pi/skills/yss-userinfo/references/source-index.md +1 -1
  418. package/template/.pi/skills/yss-validation/SKILL.md +1 -1
  419. package/template/.pi/skills/yss-validation/references/source-index.md +1 -1
  420. package/template/.pi/skills/yss-web-controller/SKILL.md +2 -2
  421. package/template/.qoder/skills/code-review/SKILL.md +1 -1
  422. package/template/.qoder/skills/code-review/references/yss-review-standards.md +1 -1
  423. package/template/.qoder/skills/lombok/SKILL.md +1 -1
  424. package/template/.qoder/skills/mapstruct/SKILL.md +1 -1
  425. package/template/.qoder/skills/prototype-review/SKILL.md +7 -6
  426. package/template/.qoder/skills/yss-antd-design/SKILL.md +8 -7
  427. package/template/.qoder/skills/yss-antd-design/references/evidence.md +11 -6
  428. package/template/.qoder/skills/yss-api-integration/SKILL.md +2 -2
  429. package/template/.qoder/skills/yss-application/SKILL.md +2 -2
  430. package/template/.qoder/skills/yss-audit-log/SKILL.md +2 -2
  431. package/template/.qoder/skills/yss-audit-log/references/source-index.md +1 -1
  432. package/template/.qoder/skills/yss-cache/SKILL.md +2 -2
  433. package/template/.qoder/skills/yss-cache/references/source-index.md +1 -1
  434. package/template/.qoder/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  435. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  436. package/template/.qoder/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  437. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  438. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  439. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  440. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  441. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  442. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  443. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  444. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  445. package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  446. package/template/.qoder/skills/yss-design-system/SKILL.md +6 -6
  447. package/template/.qoder/skills/yss-distributed-id/SKILL.md +2 -2
  448. package/template/.qoder/skills/yss-distributed-id/references/source-index.md +1 -1
  449. package/template/.qoder/skills/yss-domain/SKILL.md +1 -1
  450. package/template/.qoder/skills/yss-dto/SKILL.md +2 -2
  451. package/template/.qoder/skills/yss-dto/references/source-index.md +1 -1
  452. package/template/.qoder/skills/yss-excel-mvc/SKILL.md +2 -2
  453. package/template/.qoder/skills/yss-excel-mvc/references/source-index.md +1 -1
  454. package/template/.qoder/skills/yss-exception/SKILL.md +1 -1
  455. package/template/.qoder/skills/yss-exception/references/source-index.md +1 -1
  456. package/template/.qoder/skills/yss-implementation-contract-compiler/SKILL.md +55 -0
  457. package/template/.qoder/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  458. package/template/.qoder/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  459. package/template/.qoder/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +314 -0
  460. package/template/.qoder/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +197 -0
  461. package/template/.qoder/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +69 -0
  462. package/template/.qoder/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  463. package/template/.qoder/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  464. package/template/.qoder/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  465. package/template/.qoder/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  466. package/template/.qoder/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  467. package/template/.qoder/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  468. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  469. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  470. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  471. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  472. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  473. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  474. package/template/.qoder/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  475. package/template/.qoder/skills/yss-mybatis/SKILL.md +2 -2
  476. package/template/.qoder/skills/yss-mybatis/references/source-index.md +1 -1
  477. package/template/.qoder/skills/yss-page-module-development/SKILL.md +1 -1
  478. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +6 -6
  479. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  480. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  481. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  482. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +1 -1
  483. package/template/.qoder/skills/yss-prototype-stage/SKILL.md +34 -24
  484. package/template/.qoder/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  485. package/template/.qoder/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  486. package/template/.qoder/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  487. package/template/.qoder/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  488. package/template/.qoder/skills/yss-repository/SKILL.md +2 -2
  489. package/template/.qoder/skills/yss-resilience4j/SKILL.md +1 -1
  490. package/template/.qoder/skills/yss-resilience4j/references/source-index.md +1 -1
  491. package/template/.qoder/skills/yss-security-algorithm/SKILL.md +1 -1
  492. package/template/.qoder/skills/yss-security-algorithm/references/source-index.md +1 -1
  493. package/template/.qoder/skills/yss-skill-source-index-refresh/SKILL.md +63 -0
  494. package/template/.qoder/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  495. package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +24 -0
  496. package/template/.qoder/skills/yss-ui/SKILL.md +2 -1
  497. package/template/.qoder/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  498. package/template/.qoder/skills/yss-up-springboot3/SKILL.md +1 -1
  499. package/template/.qoder/skills/yss-userinfo/SKILL.md +1 -1
  500. package/template/.qoder/skills/yss-userinfo/references/source-index.md +1 -1
  501. package/template/.qoder/skills/yss-validation/SKILL.md +1 -1
  502. package/template/.qoder/skills/yss-validation/references/source-index.md +1 -1
  503. package/template/.qoder/skills/yss-web-controller/SKILL.md +2 -2
  504. package/template/.trae/skills/code-review/SKILL.md +1 -1
  505. package/template/.trae/skills/code-review/references/yss-review-standards.md +1 -1
  506. package/template/.trae/skills/lombok/SKILL.md +1 -1
  507. package/template/.trae/skills/mapstruct/SKILL.md +1 -1
  508. package/template/.trae/skills/prototype-review/SKILL.md +7 -6
  509. package/template/.trae/skills/yss-antd-design/SKILL.md +8 -7
  510. package/template/.trae/skills/yss-antd-design/references/evidence.md +11 -6
  511. package/template/.trae/skills/yss-api-integration/SKILL.md +2 -2
  512. package/template/.trae/skills/yss-application/SKILL.md +2 -2
  513. package/template/.trae/skills/yss-audit-log/SKILL.md +2 -2
  514. package/template/.trae/skills/yss-audit-log/references/source-index.md +1 -1
  515. package/template/.trae/skills/yss-cache/SKILL.md +2 -2
  516. package/template/.trae/skills/yss-cache/references/source-index.md +1 -1
  517. package/template/.trae/skills/yss-cache/scripts/check-skill-freshness.sh +1 -1
  518. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +6 -6
  519. package/template/.trae/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
  520. package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
  521. package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +3 -3
  522. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  523. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +3 -3
  524. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +3 -3
  525. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +8 -8
  526. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -1
  527. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  528. package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +8 -8
  529. package/template/.trae/skills/yss-design-system/SKILL.md +6 -6
  530. package/template/.trae/skills/yss-distributed-id/SKILL.md +2 -2
  531. package/template/.trae/skills/yss-distributed-id/references/source-index.md +1 -1
  532. package/template/.trae/skills/yss-domain/SKILL.md +1 -1
  533. package/template/.trae/skills/yss-dto/SKILL.md +2 -2
  534. package/template/.trae/skills/yss-dto/references/source-index.md +1 -1
  535. package/template/.trae/skills/yss-excel-mvc/SKILL.md +2 -2
  536. package/template/.trae/skills/yss-excel-mvc/references/source-index.md +1 -1
  537. package/template/.trae/skills/yss-exception/SKILL.md +1 -1
  538. package/template/.trae/skills/yss-exception/references/source-index.md +1 -1
  539. package/template/.trae/skills/yss-implementation-contract-compiler/SKILL.md +55 -0
  540. package/template/.trae/skills/yss-implementation-contract-compiler/agents/openai.yaml +4 -0
  541. package/template/.trae/skills/yss-implementation-contract-compiler/references/boundaries.md +134 -0
  542. package/template/.trae/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +314 -0
  543. package/template/.trae/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +197 -0
  544. package/template/.trae/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +69 -0
  545. package/template/.trae/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +89 -0
  546. package/template/.trae/skills/yss-mvc-scaffold-generator/SKILL.md +87 -0
  547. package/template/.trae/skills/yss-mvc-scaffold-generator/agents/openai.yaml +4 -0
  548. package/template/.trae/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +50 -0
  549. package/template/.trae/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +42 -0
  550. package/template/.trae/skills/yss-mvc-scaffold-generator/references/architecture.md +28 -0
  551. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +136 -0
  552. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +337 -0
  553. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +66 -0
  554. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +115 -0
  555. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +90 -0
  556. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +54 -0
  557. package/template/.trae/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +103 -0
  558. package/template/.trae/skills/yss-mybatis/SKILL.md +2 -2
  559. package/template/.trae/skills/yss-mybatis/references/source-index.md +1 -1
  560. package/template/.trae/skills/yss-page-module-development/SKILL.md +1 -1
  561. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +6 -6
  562. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  563. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +25 -17
  564. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +5 -5
  565. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +1 -1
  566. package/template/.trae/skills/yss-prototype-stage/SKILL.md +34 -24
  567. package/template/.trae/skills/yss-prototype-stage/references/product-design-adapter.md +43 -38
  568. package/template/.trae/skills/yss-prototype-stage/references/prototype-profile-routing.md +67 -0
  569. package/template/.trae/skills/yss-prototype-stage/scripts/prototype-contract.mjs +192 -103
  570. package/template/.trae/skills/yss-prototype-stage/tests/run-scenarios.mjs +87 -134
  571. package/template/.trae/skills/yss-repository/SKILL.md +2 -2
  572. package/template/.trae/skills/yss-resilience4j/SKILL.md +1 -1
  573. package/template/.trae/skills/yss-resilience4j/references/source-index.md +1 -1
  574. package/template/.trae/skills/yss-security-algorithm/SKILL.md +1 -1
  575. package/template/.trae/skills/yss-security-algorithm/references/source-index.md +1 -1
  576. package/template/.trae/skills/yss-skill-source-index-refresh/SKILL.md +63 -0
  577. package/template/.trae/skills/yss-skill-source-index-refresh/agents/openai.yaml +4 -0
  578. package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +24 -0
  579. package/template/.trae/skills/yss-ui/SKILL.md +2 -1
  580. package/template/.trae/skills/yss-ui/assets/docs/guide/llms.md +0 -61
  581. package/template/.trae/skills/yss-up-springboot3/SKILL.md +1 -1
  582. package/template/.trae/skills/yss-userinfo/SKILL.md +1 -1
  583. package/template/.trae/skills/yss-userinfo/references/source-index.md +1 -1
  584. package/template/.trae/skills/yss-validation/SKILL.md +1 -1
  585. package/template/.trae/skills/yss-validation/references/source-index.md +1 -1
  586. package/template/.trae/skills/yss-web-controller/SKILL.md +2 -2
  587. package/template/AGENTS.md +11 -11
  588. package/template/CONTEXT.md +8 -7
  589. package/template/README.md +0 -1
  590. package/template/docs/agents/digital-human-roles.md +3 -3
  591. package/template/docs/agents/digital-human-roles.yaml +3 -3
  592. package/template/docs/agents/skill-migrations.md +18 -5
  593. package/template/docs/agents/skills-maintenance.md +3 -3
  594. package/template/docs/agents/strategic-design-skills-integration.md +41 -0
  595. package/template/docs/agents/yss-skill-registry.yaml +134 -28
  596. package/template/docs/api/templates/openapi-draft-review-checklist.md +3 -3
  597. package/template/docs/architecture/templates/engineering-baseline-review-template.md +3 -3
  598. package/template/docs/design/README.md +7 -7
  599. package/template/docs/design/design.md +25 -17
  600. package/template/docs/design/templates/interaction-spec-template.md +4 -4
  601. package/template/docs/design/templates/prototype-confirmation-template.md +13 -15
  602. package/template/docs/design/templates/prototype-evidence-template.yaml +99 -75
  603. package/template/docs/design/templates/prototype-review-checklist.md +5 -4
  604. package/template/docs/design/templates/state-matrix-template.md +11 -0
  605. package/template/docs/discovery/reports/agent-governance-options.md +8 -8
  606. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -1
  607. package/template/docs/process/implementation-repo-integration.md +1 -1
  608. package/template/docs/process/lifecycle-artifact-map.md +4 -2
  609. package/template/docs/process/lifecycle-registry-baseline.json +4 -1
  610. package/template/docs/process/lifecycle-registry.yaml +15 -9
  611. package/template/docs/process/template-engineering-overview.md +2 -2
  612. package/template/docs/process/template-verification-profiles.yaml +27 -6
  613. package/template/docs/templates/build-architecture-checklist-template.md +6 -6
  614. package/template/docs/templates/implementation-routing-template.md +8 -8
  615. package/template/docs/templates/requirement-freeze-template.md +2 -2
  616. package/template/docs/templates/review-report-template.md +4 -4
  617. package/template/docs/templates/spec-template.md +1 -1
  618. package/template/docs/templates/vertical-slice-ticket-template.md +4 -4
  619. package/template/docs/user-guide/yss-ui-mcp.md +0 -2
  620. 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 +2 -2
  621. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +4 -4
  622. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +4 -4
  623. package/template/scripts/audit-yss-backend-skills +56 -0
  624. package/template/scripts/generate-yss-skill-boundaries +67 -0
  625. package/template/scripts/lib/export-skills.mjs +4 -4
  626. package/template/scripts/lib/implementation-contract-compiler.mjs +194 -0
  627. package/template/scripts/lib/scenario-checks.mjs +9 -6
  628. package/template/scripts/lib/skill-governance.mjs +27 -5
  629. package/template/scripts/lib/skill-registry.mjs +107 -63
  630. package/template/scripts/lib/skill-supply-chain.mjs +45 -5
  631. package/template/scripts/verify-repository-scope-scenarios +2 -2
  632. package/template/scripts/verify-retired-skill-ids +37 -0
  633. package/template/scripts/verify-scaffold-generator-scenarios +18 -18
  634. package/template/scripts/verify-template-verification-scenarios +4 -1
  635. package/template/scripts/verify-yss-implementation-contract-compiler-scenarios +14 -0
  636. package/template/skills-lock.json +87 -157
  637. package/template/yss-public-skills.json +4 -4
  638. package/template.manifest.json +0 -3
  639. package/template.snapshot.json +5 -5
  640. package/template/.agents/skills/yss-router/agents/openai.yaml +0 -4
  641. package/template/.agents/skills/yss-router/references/boundaries.md +0 -50
  642. package/template/.agents/skills/yss-source-index/agents/openai.yaml +0 -4
  643. package/template/.claude/skills/yss-router/agents/openai.yaml +0 -4
  644. package/template/.claude/skills/yss-router/references/boundaries.md +0 -50
  645. package/template/.claude/skills/yss-source-index/agents/openai.yaml +0 -4
  646. package/template/.codex/skills/yss-router/agents/openai.yaml +0 -4
  647. package/template/.codex/skills/yss-router/references/boundaries.md +0 -50
  648. package/template/.codex/skills/yss-source-index/agents/openai.yaml +0 -4
  649. package/template/.cursor/skills/yss-router/agents/openai.yaml +0 -4
  650. package/template/.cursor/skills/yss-router/references/boundaries.md +0 -50
  651. package/template/.cursor/skills/yss-source-index/agents/openai.yaml +0 -4
  652. package/template/.gemini/settings.json +0 -8
  653. package/template/.hermes/skills/alibaba-java-code-style/SKILL.md +0 -51
  654. package/template/.hermes/skills/alibaba-java-code-style/agents/openai.yaml +0 -4
  655. package/template/.hermes/skills/alibaba-java-code-style/references/database-engineering-design.md +0 -147
  656. package/template/.hermes/skills/alibaba-java-code-style/references/java-programming.md +0 -178
  657. package/template/.hermes/skills/alibaba-java-code-style/references/reliability-test-security.md +0 -89
  658. package/template/.hermes/skills/archify/LICENSE +0 -22
  659. package/template/.hermes/skills/archify/SKILL.md +0 -156
  660. package/template/.hermes/skills/archify/assets/template.html +0 -14787
  661. package/template/.hermes/skills/archify/bin/archify.mjs +0 -1990
  662. package/template/.hermes/skills/archify/bin/open-artifact.mjs +0 -86
  663. package/template/.hermes/skills/archify/bin/preview.mjs +0 -648
  664. package/template/.hermes/skills/archify/bin/visual-check.mjs +0 -829
  665. package/template/.hermes/skills/archify/brand-marks/README.md +0 -31
  666. package/template/.hermes/skills/archify/brand-marks/catalog.json +0 -131
  667. package/template/.hermes/skills/archify/delta/architecture-delta.mjs +0 -1214
  668. package/template/.hermes/skills/archify/examples/agent-run.lifecycle.json +0 -71
  669. package/template/.hermes/skills/archify/examples/agent-tool-call.workflow.json +0 -94
  670. package/template/.hermes/skills/archify/examples/async-job-roundtrip.sequence.json +0 -61
  671. package/template/.hermes/skills/archify/examples/brand-aware-delivery.architecture.json +0 -47
  672. package/template/.hermes/skills/archify/examples/cache-miss-request.sequence.json +0 -81
  673. package/template/.hermes/skills/archify/examples/checkout-platform.base.architecture.json +0 -31
  674. package/template/.hermes/skills/archify/examples/checkout-platform.head.architecture.json +0 -31
  675. package/template/.hermes/skills/archify/examples/dataflow-product-analytics.html +0 -14898
  676. package/template/.hermes/skills/archify/examples/deployment-release.lifecycle.json +0 -49
  677. package/template/.hermes/skills/archify/examples/event-stream.dataflow.json +0 -57
  678. package/template/.hermes/skills/archify/examples/incident-response.workflow.json +0 -64
  679. package/template/.hermes/skills/archify/examples/lifecycle-agent-run.html +0 -14847
  680. package/template/.hermes/skills/archify/examples/product-analytics.dataflow.json +0 -76
  681. package/template/.hermes/skills/archify/examples/production-deployment.architecture.json +0 -71
  682. package/template/.hermes/skills/archify/examples/release-delivery.workflow.json +0 -62
  683. package/template/.hermes/skills/archify/examples/sequence-cache-miss-request.html +0 -14913
  684. package/template/.hermes/skills/archify/examples/web-app-rendered.html +0 -14862
  685. package/template/.hermes/skills/archify/examples/web-app.architecture.json +0 -46
  686. package/template/.hermes/skills/archify/examples/workflow-agent-tool-call-rendered.html +0 -14904
  687. package/template/.hermes/skills/archify/migrations/workflow-v2.mjs +0 -279
  688. package/template/.hermes/skills/archify/package-lock.json +0 -149
  689. package/template/.hermes/skills/archify/package.json +0 -37
  690. package/template/.hermes/skills/archify/recipes/scenarios.mjs +0 -391
  691. package/template/.hermes/skills/archify/references/authoring-contract.md +0 -191
  692. package/template/.hermes/skills/archify/references/brand-marks.md +0 -65
  693. package/template/.hermes/skills/archify/references/delivery-contract.md +0 -112
  694. package/template/.hermes/skills/archify/references/viewer-runtime.md +0 -45
  695. package/template/.hermes/skills/archify/renderers/architecture/grid.mjs +0 -62
  696. package/template/.hermes/skills/archify/renderers/architecture/render-architecture.mjs +0 -1078
  697. package/template/.hermes/skills/archify/renderers/dataflow/README.md +0 -104
  698. package/template/.hermes/skills/archify/renderers/dataflow/render-dataflow.mjs +0 -483
  699. package/template/.hermes/skills/archify/renderers/lifecycle/README.md +0 -115
  700. package/template/.hermes/skills/archify/renderers/lifecycle/render-lifecycle.mjs +0 -561
  701. package/template/.hermes/skills/archify/renderers/sequence/README.md +0 -114
  702. package/template/.hermes/skills/archify/renderers/sequence/render-sequence.mjs +0 -453
  703. package/template/.hermes/skills/archify/renderers/shared/brand-marks.mjs +0 -563
  704. package/template/.hermes/skills/archify/renderers/shared/cli.mjs +0 -218
  705. package/template/.hermes/skills/archify/renderers/shared/desktop-readability.mjs +0 -26
  706. package/template/.hermes/skills/archify/renderers/shared/diagnostics.mjs +0 -127
  707. package/template/.hermes/skills/archify/renderers/shared/engineering-profiles.mjs +0 -157
  708. package/template/.hermes/skills/archify/renderers/shared/generated-brand-marks.mjs +0 -2003
  709. package/template/.hermes/skills/archify/renderers/shared/generated-validators.mjs +0 -13
  710. package/template/.hermes/skills/archify/renderers/shared/geometry.mjs +0 -1423
  711. package/template/.hermes/skills/archify/renderers/shared/i18n.mjs +0 -594
  712. package/template/.hermes/skills/archify/renderers/shared/layout-report.mjs +0 -40
  713. package/template/.hermes/skills/archify/renderers/shared/legend.mjs +0 -217
  714. package/template/.hermes/skills/archify/renderers/shared/output-path.mjs +0 -321
  715. package/template/.hermes/skills/archify/renderers/shared/repository-evidence.mjs +0 -235
  716. package/template/.hermes/skills/archify/renderers/shared/text-fit.mjs +0 -49
  717. package/template/.hermes/skills/archify/renderers/shared/utils.mjs +0 -232
  718. package/template/.hermes/skills/archify/renderers/shared/validator.mjs +0 -86
  719. package/template/.hermes/skills/archify/renderers/workflow/README.md +0 -223
  720. package/template/.hermes/skills/archify/renderers/workflow/render-workflow.mjs +0 -35
  721. package/template/.hermes/skills/archify/renderers/workflow/workflow-compiler.mjs +0 -4400
  722. package/template/.hermes/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +0 -144
  723. package/template/.hermes/skills/archify/schemas/README.md +0 -211
  724. package/template/.hermes/skills/archify/schemas/architecture.schema.json +0 -176
  725. package/template/.hermes/skills/archify/schemas/common.schema.json +0 -115
  726. package/template/.hermes/skills/archify/schemas/dataflow.schema.json +0 -243
  727. package/template/.hermes/skills/archify/schemas/lifecycle.schema.json +0 -266
  728. package/template/.hermes/skills/archify/schemas/sequence.schema.json +0 -223
  729. package/template/.hermes/skills/archify/schemas/workflow.schema.json +0 -428
  730. package/template/.hermes/skills/archify/scripts/check-render-output.mjs +0 -835
  731. package/template/.hermes/skills/archify/scripts/check-update.mjs +0 -1667
  732. package/template/.hermes/skills/archify/scripts/generate-brand-marks.mjs +0 -141
  733. package/template/.hermes/skills/archify/scripts/generate-validators.mjs +0 -66
  734. package/template/.hermes/skills/archify/scripts/render-examples.mjs +0 -26
  735. package/template/.hermes/skills/archify/scripts/update-contract.mjs +0 -182
  736. package/template/.hermes/skills/archify/scripts/yss-safe-deliver.mjs +0 -214
  737. package/template/.hermes/skills/archify/skill-release.json +0 -10
  738. package/template/.hermes/skills/archify/test/adaptive-reader-layout.test.mjs +0 -86
  739. package/template/.hermes/skills/archify/test/animation.test.mjs +0 -179
  740. package/template/.hermes/skills/archify/test/architecture-delta.test.mjs +0 -518
  741. package/template/.hermes/skills/archify/test/authored-reachability.test.mjs +0 -95
  742. package/template/.hermes/skills/archify/test/authoring-safety-contract.test.mjs +0 -54
  743. package/template/.hermes/skills/archify/test/automatic-port-spread.test.mjs +0 -376
  744. package/template/.hermes/skills/archify/test/base-input-compatibility.test.mjs +0 -42
  745. package/template/.hermes/skills/archify/test/brand-marks.test.mjs +0 -654
  746. package/template/.hermes/skills/archify/test/chapter-delta-preview.test.mjs +0 -157
  747. package/template/.hermes/skills/archify/test/chapter-handoff.test.mjs +0 -97
  748. package/template/.hermes/skills/archify/test/chapter-rail.test.mjs +0 -86
  749. package/template/.hermes/skills/archify/test/checkout-line-endings.test.mjs +0 -72
  750. package/template/.hermes/skills/archify/test/clean-skill-staging.test.mjs +0 -244
  751. package/template/.hermes/skills/archify/test/cli.test.mjs +0 -809
  752. package/template/.hermes/skills/archify/test/community-proof-intake.test.mjs +0 -104
  753. package/template/.hermes/skills/archify/test/cursor-onboarding.test.mjs +0 -74
  754. package/template/.hermes/skills/archify/test/degraded.test.mjs +0 -161
  755. package/template/.hermes/skills/archify/test/delivery-contract.test.mjs +0 -52
  756. package/template/.hermes/skills/archify/test/desktop-reader-browser.test.mjs +0 -58
  757. package/template/.hermes/skills/archify/test/diagram-guide.test.mjs +0 -92
  758. package/template/.hermes/skills/archify/test/engineering-profile.test.mjs +0 -209
  759. package/template/.hermes/skills/archify/test/finder.test.mjs +0 -104
  760. package/template/.hermes/skills/archify/test/fixtures/automatic-routing-node-border-clearance.workflow.json +0 -40
  761. package/template/.hermes/skills/archify/test/fixtures/fail-migration-cleanup.mjs +0 -17
  762. package/template/.hermes/skills/archify/test/fixtures/issue-126/custom-widths.workflow.json +0 -18
  763. package/template/.hermes/skills/archify/test/fixtures/issue-126/explicit-route.workflow.json +0 -28
  764. package/template/.hermes/skills/archify/test/fixtures/issue-126/explicit-viewbox.workflow.json +0 -19
  765. package/template/.hermes/skills/archify/test/fixtures/issue-126/labels.workflow.json +0 -18
  766. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/agent-run.lifecycle.json +0 -64
  767. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/agent-tool-call.workflow.json +0 -88
  768. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/cache-miss-request.sequence.json +0 -75
  769. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/event-stream.dataflow.json +0 -57
  770. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/product-analytics.dataflow.json +0 -70
  771. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/production-deployment.architecture.json +0 -71
  772. package/template/.hermes/skills/archify/test/fixtures/v1-baseline/web-app.architecture.json +0 -41
  773. package/template/.hermes/skills/archify/test/fixtures/v1-workflow-700x400.workflow.json +0 -22
  774. package/template/.hermes/skills/archify/test/fixtures/v1-workflow-explicit-coordinates.workflow.json +0 -47
  775. package/template/.hermes/skills/archify/test/gallery.test.mjs +0 -130
  776. package/template/.hermes/skills/archify/test/generate-validators.test.mjs +0 -59
  777. package/template/.hermes/skills/archify/test/generated-artifact-xml.test.mjs +0 -88
  778. package/template/.hermes/skills/archify/test/geometry.test.mjs +0 -739
  779. package/template/.hermes/skills/archify/test/golden.mjs +0 -207
  780. package/template/.hermes/skills/archify/test/grid.test.mjs +0 -47
  781. package/template/.hermes/skills/archify/test/guide-page.test.mjs +0 -59
  782. package/template/.hermes/skills/archify/test/guide.test.mjs +0 -81
  783. package/template/.hermes/skills/archify/test/guided-views.test.mjs +0 -144
  784. package/template/.hermes/skills/archify/test/helpers/xml.mjs +0 -37
  785. package/template/.hermes/skills/archify/test/i18n.test.mjs +0 -422
  786. package/template/.hermes/skills/archify/test/intent-trace.test.mjs +0 -111
  787. package/template/.hermes/skills/archify/test/landing.test.mjs +0 -97
  788. package/template/.hermes/skills/archify/test/layout-rules.test.mjs +0 -1449
  789. package/template/.hermes/skills/archify/test/legend-contract.test.mjs +0 -404
  790. package/template/.hermes/skills/archify/test/motion-governor.test.mjs +0 -111
  791. package/template/.hermes/skills/archify/test/open-artifact.test.mjs +0 -118
  792. package/template/.hermes/skills/archify/test/ordinary-model-floor.test.mjs +0 -1024
  793. package/template/.hermes/skills/archify/test/output-path.test.mjs +0 -587
  794. package/template/.hermes/skills/archify/test/presentation.test.mjs +0 -71
  795. package/template/.hermes/skills/archify/test/preset-tryon.test.mjs +0 -113
  796. package/template/.hermes/skills/archify/test/preview-contract.test.mjs +0 -40
  797. package/template/.hermes/skills/archify/test/preview.test.mjs +0 -499
  798. package/template/.hermes/skills/archify/test/proof-aperture.test.mjs +0 -78
  799. package/template/.hermes/skills/archify/test/reach-share-card.test.mjs +0 -149
  800. package/template/.hermes/skills/archify/test/readme-showcase.test.mjs +0 -318
  801. package/template/.hermes/skills/archify/test/real-repository-proof.test.mjs +0 -209
  802. package/template/.hermes/skills/archify/test/relationship-direct-explorer.test.mjs +0 -115
  803. package/template/.hermes/skills/archify/test/relationship-lens.test.mjs +0 -128
  804. package/template/.hermes/skills/archify/test/relationship-permalink.test.mjs +0 -130
  805. package/template/.hermes/skills/archify/test/relationship-pulse.test.mjs +0 -122
  806. package/template/.hermes/skills/archify/test/release-identity.test.mjs +0 -504
  807. package/template/.hermes/skills/archify/test/release-package-gates.test.mjs +0 -508
  808. package/template/.hermes/skills/archify/test/render-output-checks.test.mjs +0 -435
  809. package/template/.hermes/skills/archify/test/repair-receipt.test.mjs +0 -181
  810. package/template/.hermes/skills/archify/test/repository-evidence.test.mjs +0 -217
  811. package/template/.hermes/skills/archify/test/repository-language-metadata.test.mjs +0 -52
  812. package/template/.hermes/skills/archify/test/route-journey.test.mjs +0 -123
  813. package/template/.hermes/skills/archify/test/route-probe.test.mjs +0 -114
  814. package/template/.hermes/skills/archify/test/route-share-card.test.mjs +0 -163
  815. package/template/.hermes/skills/archify/test/semantic-camera.test.mjs +0 -88
  816. package/template/.hermes/skills/archify/test/semantic-flow.test.mjs +0 -90
  817. package/template/.hermes/skills/archify/test/semantic-legend-gateway.test.mjs +0 -156
  818. package/template/.hermes/skills/archify/test/semantic-lens.test.mjs +0 -103
  819. package/template/.hermes/skills/archify/test/semantic-passport.test.mjs +0 -99
  820. package/template/.hermes/skills/archify/test/semantic-radar.test.mjs +0 -575
  821. package/template/.hermes/skills/archify/test/semantic-zoom.test.mjs +0 -86
  822. package/template/.hermes/skills/archify/test/sequence-column-fit.test.mjs +0 -137
  823. package/template/.hermes/skills/archify/test/settled-flow.test.mjs +0 -97
  824. package/template/.hermes/skills/archify/test/share-card-export.test.mjs +0 -132
  825. package/template/.hermes/skills/archify/test/site-language-continuity.test.mjs +0 -562
  826. package/template/.hermes/skills/archify/test/site-language-integration.mjs +0 -9
  827. package/template/.hermes/skills/archify/test/skill-metadata.test.mjs +0 -84
  828. package/template/.hermes/skills/archify/test/stable-update-manifest.test.mjs +0 -167
  829. package/template/.hermes/skills/archify/test/start-page.test.mjs +0 -312
  830. package/template/.hermes/skills/archify/test/story-beat-navigator.test.mjs +0 -103
  831. package/template/.hermes/skills/archify/test/story-carrier.test.mjs +0 -90
  832. package/template/.hermes/skills/archify/test/story-director-strip.test.mjs +0 -91
  833. package/template/.hermes/skills/archify/test/story-follow-camera.test.mjs +0 -103
  834. package/template/.hermes/skills/archify/test/story-horizon.test.mjs +0 -89
  835. package/template/.hermes/skills/archify/test/story-moment-link.test.mjs +0 -93
  836. package/template/.hermes/skills/archify/test/story-shelf.test.mjs +0 -84
  837. package/template/.hermes/skills/archify/test/story-trail.test.mjs +0 -81
  838. package/template/.hermes/skills/archify/test/toolbar-polish.test.mjs +0 -57
  839. package/template/.hermes/skills/archify/test/update-contract.test.mjs +0 -133
  840. package/template/.hermes/skills/archify/test/update-notifier.test.mjs +0 -3317
  841. package/template/.hermes/skills/archify/test/v1-compatibility.test.mjs +0 -329
  842. package/template/.hermes/skills/archify/test/vertical-edge.test.mjs +0 -68
  843. package/template/.hermes/skills/archify/test/viewer-chrome-layout.test.mjs +0 -872
  844. package/template/.hermes/skills/archify/test/visual-check.test.mjs +0 -400
  845. package/template/.hermes/skills/archify/test/webm-artifact.smoke.mjs +0 -1840
  846. package/template/.hermes/skills/archify/test/workflow-compiler-hard-contract.test.mjs +0 -2135
  847. package/template/.hermes/skills/archify/test/workflow-compiler.test.mjs +0 -1163
  848. package/template/.hermes/skills/archify/test/workflow-migration.test.mjs +0 -620
  849. package/template/.hermes/skills/archify/test/workflow-semantic-contract.test.mjs +0 -131
  850. package/template/.hermes/skills/archify/test/yss-safe-deliver.test.mjs +0 -153
  851. package/template/.hermes/skills/ask-matt/PHASE-BOUNDARIES.md +0 -55
  852. package/template/.hermes/skills/ask-matt/SKILL.md +0 -95
  853. package/template/.hermes/skills/ask-matt/agents/openai.yaml +0 -5
  854. package/template/.hermes/skills/code-review/SKILL.md +0 -122
  855. package/template/.hermes/skills/code-review/agents/openai.yaml +0 -3
  856. package/template/.hermes/skills/code-review/references/yss-review-standards.md +0 -54
  857. package/template/.hermes/skills/codebase-design/DEEPENING.md +0 -37
  858. package/template/.hermes/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
  859. package/template/.hermes/skills/codebase-design/SKILL.md +0 -118
  860. package/template/.hermes/skills/codebase-design/agents/openai.yaml +0 -3
  861. package/template/.hermes/skills/competitive-intelligence/SKILL.md +0 -94
  862. package/template/.hermes/skills/component-selection-imports/SKILL.md +0 -64
  863. package/template/.hermes/skills/cross-repo-implementation-routing/SKILL.md +0 -51
  864. package/template/.hermes/skills/diagnosing-bugs/SKILL.md +0 -138
  865. package/template/.hermes/skills/diagnosing-bugs/agents/openai.yaml +0 -3
  866. package/template/.hermes/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -44
  867. package/template/.hermes/skills/dispatching-parallel-agents/SKILL.md +0 -185
  868. package/template/.hermes/skills/domain-modeling/ADR-FORMAT.md +0 -47
  869. package/template/.hermes/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  870. package/template/.hermes/skills/domain-modeling/SKILL.md +0 -74
  871. package/template/.hermes/skills/domain-modeling/agents/openai.yaml +0 -3
  872. package/template/.hermes/skills/file-export-download/SKILL.md +0 -160
  873. package/template/.hermes/skills/file-export-download/agents/openai.yaml +0 -4
  874. package/template/.hermes/skills/formily-foundation/SKILL.md +0 -176
  875. package/template/.hermes/skills/formily-foundation/references/examples.md +0 -486
  876. package/template/.hermes/skills/formily-linkage-effects/SKILL.md +0 -167
  877. package/template/.hermes/skills/formily-mode-slot-detail/SKILL.md +0 -137
  878. package/template/.hermes/skills/formily-step-flow/SKILL.md +0 -194
  879. package/template/.hermes/skills/frontend-commit/SKILL.md +0 -118
  880. package/template/.hermes/skills/frontend-commit/agents/openai.yaml +0 -7
  881. package/template/.hermes/skills/frontend-commit/references/scope-and-examples.md +0 -111
  882. package/template/.hermes/skills/grill-me/SKILL.md +0 -7
  883. package/template/.hermes/skills/grill-me/agents/openai.yaml +0 -5
  884. package/template/.hermes/skills/grill-with-docs/SKILL.md +0 -19
  885. package/template/.hermes/skills/grill-with-docs/agents/openai.yaml +0 -5
  886. package/template/.hermes/skills/grilling/SKILL.md +0 -28
  887. package/template/.hermes/skills/grilling/agents/openai.yaml +0 -3
  888. package/template/.hermes/skills/handoff/SKILL.md +0 -16
  889. package/template/.hermes/skills/handoff/agents/openai.yaml +0 -5
  890. package/template/.hermes/skills/implement/SKILL.md +0 -15
  891. package/template/.hermes/skills/implement/agents/openai.yaml +0 -5
  892. package/template/.hermes/skills/implementation-repo-onboarding/SKILL.md +0 -50
  893. package/template/.hermes/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
  894. package/template/.hermes/skills/improve-codebase-architecture/SKILL.md +0 -71
  895. package/template/.hermes/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  896. package/template/.hermes/skills/java-backend-commit/SKILL.md +0 -121
  897. package/template/.hermes/skills/java-backend-commit/agents/openai.yaml +0 -7
  898. package/template/.hermes/skills/java-backend-commit/references/scope-and-examples.md +0 -118
  899. package/template/.hermes/skills/llm-wiki/SKILL.md +0 -60
  900. package/template/.hermes/skills/llm-wiki/assets/CLAUDE.md.template +0 -26
  901. package/template/.hermes/skills/llm-wiki/assets/fixtures/broken-wiki/wiki/CLAUDE.md +0 -3
  902. package/template/.hermes/skills/llm-wiki/assets/fixtures/broken-wiki/wiki/index.md +0 -5
  903. package/template/.hermes/skills/llm-wiki/assets/fixtures/broken-wiki/wiki/log.md +0 -1
  904. package/template/.hermes/skills/llm-wiki/assets/fixtures/broken-wiki/wiki//345/255/230/345/234/250/347/232/204/351/241/265.md +0 -7
  905. package/template/.hermes/skills/llm-wiki/references/compile.md +0 -126
  906. package/template/.hermes/skills/llm-wiki/references/discover.md +0 -42
  907. package/template/.hermes/skills/llm-wiki/references/ingest.md +0 -36
  908. package/template/.hermes/skills/llm-wiki/references/lint.md +0 -54
  909. package/template/.hermes/skills/llm-wiki/references/query.md +0 -21
  910. package/template/.hermes/skills/llm-wiki/references/schema.md +0 -45
  911. package/template/.hermes/skills/llm-wiki/references/writing.md +0 -35
  912. package/template/.hermes/skills/llm-wiki/scripts/advise.mjs +0 -196
  913. package/template/.hermes/skills/llm-wiki/scripts/advise.test.mjs +0 -91
  914. package/template/.hermes/skills/llm-wiki/scripts/extract.mjs +0 -55
  915. package/template/.hermes/skills/llm-wiki/scripts/extract.test.mjs +0 -34
  916. package/template/.hermes/skills/llm-wiki/scripts/inventory.mjs +0 -174
  917. package/template/.hermes/skills/llm-wiki/scripts/inventory.test.mjs +0 -98
  918. package/template/.hermes/skills/llm-wiki/scripts/lint-wikilinks.mjs +0 -177
  919. package/template/.hermes/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +0 -212
  920. package/template/.hermes/skills/lombok/SKILL.md +0 -351
  921. package/template/.hermes/skills/loop-me/SKILL.md +0 -32
  922. package/template/.hermes/skills/loop-me/agents/openai.yaml +0 -5
  923. package/template/.hermes/skills/maintaining-skills/SKILL.md +0 -27
  924. package/template/.hermes/skills/mapstruct/SKILL.md +0 -334
  925. package/template/.hermes/skills/migrate-to-shoehorn/SKILL.md +0 -118
  926. package/template/.hermes/skills/migrate-to-shoehorn/agents/openai.yaml +0 -3
  927. package/template/.hermes/skills/page-form-module/SKILL.md +0 -168
  928. package/template/.hermes/skills/page-list-module/SKILL.md +0 -137
  929. package/template/.hermes/skills/page-skeleton/SKILL.md +0 -76
  930. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
  931. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
  932. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
  933. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
  934. package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
  935. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
  936. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
  937. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
  938. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
  939. package/template/.hermes/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
  940. package/template/.hermes/skills/prototype/LOGIC.md +0 -67
  941. package/template/.hermes/skills/prototype/SKILL.md +0 -26
  942. package/template/.hermes/skills/prototype/UI.md +0 -112
  943. package/template/.hermes/skills/prototype/agents/openai.yaml +0 -3
  944. package/template/.hermes/skills/prototype-page-acceptance/SKILL.md +0 -62
  945. package/template/.hermes/skills/prototype-review/SKILL.md +0 -74
  946. package/template/.hermes/skills/prototype-review/agents/openai.yaml +0 -4
  947. package/template/.hermes/skills/resolving-merge-conflicts/SKILL.md +0 -14
  948. package/template/.hermes/skills/resolving-merge-conflicts/agents/openai.yaml +0 -3
  949. package/template/.hermes/skills/scaffold-exercises/SKILL.md +0 -106
  950. package/template/.hermes/skills/scaffold-exercises/agents/openai.yaml +0 -3
  951. package/template/.hermes/skills/setup-matt-pocock-skills/SKILL.md +0 -125
  952. package/template/.hermes/skills/setup-matt-pocock-skills/agents/openai.yaml +0 -5
  953. package/template/.hermes/skills/setup-matt-pocock-skills/domain.md +0 -51
  954. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
  955. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
  956. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -66
  957. package/template/.hermes/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
  958. package/template/.hermes/skills/setup-pre-commit/SKILL.md +0 -91
  959. package/template/.hermes/skills/setup-pre-commit/agents/openai.yaml +0 -3
  960. package/template/.hermes/skills/setup-ts-deep-modules/SKILL.md +0 -102
  961. package/template/.hermes/skills/setup-ts-deep-modules/agents/openai.yaml +0 -5
  962. package/template/.hermes/skills/setup-ts-deep-modules/dependency-cruiser.config.cjs +0 -95
  963. package/template/.hermes/skills/tdd/SKILL.md +0 -38
  964. package/template/.hermes/skills/tdd/agents/openai.yaml +0 -3
  965. package/template/.hermes/skills/tdd/mocking.md +0 -59
  966. package/template/.hermes/skills/tdd/tests.md +0 -77
  967. package/template/.hermes/skills/teach/GLOSSARY-FORMAT.md +0 -35
  968. package/template/.hermes/skills/teach/LEARNING-RECORD-FORMAT.md +0 -46
  969. package/template/.hermes/skills/teach/MISSION-FORMAT.md +0 -31
  970. package/template/.hermes/skills/teach/RESOURCES-FORMAT.md +0 -32
  971. package/template/.hermes/skills/teach/SKILL.md +0 -140
  972. package/template/.hermes/skills/teach/agents/openai.yaml +0 -5
  973. package/template/.hermes/skills/theme-token-usage/SKILL.md +0 -123
  974. package/template/.hermes/skills/theme-token-usage/agents/openai.yaml +0 -4
  975. package/template/.hermes/skills/to-questionnaire/SKILL.md +0 -53
  976. package/template/.hermes/skills/to-questionnaire/agents/openai.yaml +0 -5
  977. package/template/.hermes/skills/to-spec/SKILL.md +0 -75
  978. package/template/.hermes/skills/to-spec/agents/openai.yaml +0 -5
  979. package/template/.hermes/skills/to-tickets/SKILL.md +0 -105
  980. package/template/.hermes/skills/to-tickets/agents/openai.yaml +0 -5
  981. package/template/.hermes/skills/triage/AGENT-BRIEF.md +0 -207
  982. package/template/.hermes/skills/triage/OUT-OF-SCOPE.md +0 -105
  983. package/template/.hermes/skills/triage/SKILL.md +0 -112
  984. package/template/.hermes/skills/triage/agents/openai.yaml +0 -5
  985. package/template/.hermes/skills/using-git-worktrees/SKILL.md +0 -202
  986. package/template/.hermes/skills/vue3-best-practices/SKILL.md +0 -68
  987. package/template/.hermes/skills/wait-what/SKILL.md +0 -7
  988. package/template/.hermes/skills/wait-what/agents/openai.yaml +0 -5
  989. package/template/.hermes/skills/wayfinder/SKILL.md +0 -128
  990. package/template/.hermes/skills/wayfinder/agents/openai.yaml +0 -5
  991. package/template/.hermes/skills/writing-beats/SKILL.md +0 -67
  992. package/template/.hermes/skills/writing-beats/agents/openai.yaml +0 -5
  993. package/template/.hermes/skills/writing-for-agents/SKILL-MECHANICS.md +0 -22
  994. package/template/.hermes/skills/writing-for-agents/SKILL.md +0 -81
  995. package/template/.hermes/skills/writing-for-agents/agents/openai.yaml +0 -3
  996. package/template/.hermes/skills/writing-fragments/SKILL.md +0 -79
  997. package/template/.hermes/skills/writing-fragments/agents/openai.yaml +0 -5
  998. package/template/.hermes/skills/writing-shape/SKILL.md +0 -79
  999. package/template/.hermes/skills/writing-shape/agents/openai.yaml +0 -5
  1000. package/template/.hermes/skills/yedit-table-usage/SKILL.md +0 -227
  1001. package/template/.hermes/skills/yss-antd-design/SKILL.md +0 -34
  1002. package/template/.hermes/skills/yss-antd-design/references/boundaries.md +0 -30
  1003. package/template/.hermes/skills/yss-antd-design/references/cli-matrix.md +0 -38
  1004. package/template/.hermes/skills/yss-antd-design/references/evidence.md +0 -30
  1005. package/template/.hermes/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  1006. package/template/.hermes/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  1007. package/template/.hermes/skills/yss-api-integration/SKILL.md +0 -185
  1008. package/template/.hermes/skills/yss-api-integration/agents/openai.yaml +0 -5
  1009. package/template/.hermes/skills/yss-application/SKILL.md +0 -54
  1010. package/template/.hermes/skills/yss-application/agents/openai.yaml +0 -5
  1011. package/template/.hermes/skills/yss-application/references/application-layer-guide.md +0 -87
  1012. package/template/.hermes/skills/yss-audit-log/SKILL.md +0 -67
  1013. package/template/.hermes/skills/yss-audit-log/agents/openai.yaml +0 -5
  1014. package/template/.hermes/skills/yss-audit-log/assets/AuditLogAspect.java +0 -262
  1015. package/template/.hermes/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +0 -37
  1016. package/template/.hermes/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +0 -18
  1017. package/template/.hermes/skills/yss-audit-log/assets/YssAuditPublishService.java +0 -69
  1018. package/template/.hermes/skills/yss-audit-log/references/README.md +0 -69
  1019. package/template/.hermes/skills/yss-audit-log/references/source-index.md +0 -43
  1020. package/template/.hermes/skills/yss-cache/SKILL.md +0 -44
  1021. package/template/.hermes/skills/yss-cache/agents/openai.yaml +0 -5
  1022. package/template/.hermes/skills/yss-cache/references/annotations.md +0 -39
  1023. package/template/.hermes/skills/yss-cache/references/architecture.md +0 -25
  1024. package/template/.hermes/skills/yss-cache/references/configuration.md +0 -34
  1025. package/template/.hermes/skills/yss-cache/references/redis-fallback.md +0 -23
  1026. package/template/.hermes/skills/yss-cache/references/redis-topology.md +0 -62
  1027. package/template/.hermes/skills/yss-cache/references/serialization.md +0 -17
  1028. package/template/.hermes/skills/yss-cache/references/source-index.md +0 -67
  1029. package/template/.hermes/skills/yss-cache/references/troubleshooting.md +0 -33
  1030. package/template/.hermes/skills/yss-cache/references/verification.md +0 -34
  1031. package/template/.hermes/skills/yss-cache/scripts/check-skill-freshness.sh +0 -84
  1032. package/template/.hermes/skills/yss-cache/scripts/inspect-cache-usage.sh +0 -96
  1033. package/template/.hermes/skills/yss-cache/scripts/verify-cache-component.sh +0 -101
  1034. package/template/.hermes/skills/yss-components/SKILL.md +0 -386
  1035. package/template/.hermes/skills/yss-components/agents/openai.yaml +0 -5
  1036. package/template/.hermes/skills/yss-components/references/frontend-docs.md +0 -9
  1037. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +0 -121
  1038. package/template/.hermes/skills/yss-ddd-scaffold-generator/agents/openai.yaml +0 -5
  1039. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +0 -8
  1040. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +0 -36
  1041. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/logback-spring.xml.template +0 -15
  1042. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +0 -36
  1043. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +0 -15
  1044. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +0 -19
  1045. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +0 -52
  1046. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +0 -70
  1047. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +0 -22
  1048. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +0 -54
  1049. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +0 -155
  1050. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +0 -58
  1051. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/jvm.config +0 -1
  1052. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +0 -2
  1053. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +0 -41
  1054. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  1055. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.jar +0 -0
  1056. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +0 -20
  1057. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/mvnw +0 -316
  1058. package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/mvnw.cmd +0 -188
  1059. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +0 -116
  1060. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +0 -125
  1061. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  1062. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  1063. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  1064. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  1065. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  1066. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  1067. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  1068. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  1069. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +0 -58
  1070. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
  1071. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  1072. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  1073. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +0 -225
  1074. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +0 -164
  1075. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +0 -126
  1076. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +0 -363
  1077. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +0 -172
  1078. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +0 -112
  1079. package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +0 -401
  1080. package/template/.hermes/skills/yss-design-system/SKILL.md +0 -105
  1081. package/template/.hermes/skills/yss-design-system/agents/openai.yaml +0 -5
  1082. package/template/.hermes/skills/yss-design-system/references/design-qa-theme.md +0 -64
  1083. package/template/.hermes/skills/yss-design-system/references/design-system.md +0 -245
  1084. package/template/.hermes/skills/yss-design-system/scripts/validate-frontmatter.mjs +0 -36
  1085. package/template/.hermes/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +0 -12
  1086. package/template/.hermes/skills/yss-distributed-id/SKILL.md +0 -69
  1087. package/template/.hermes/skills/yss-distributed-id/agents/openai.yaml +0 -5
  1088. package/template/.hermes/skills/yss-distributed-id/assets/AutoIdInterceptor.java +0 -246
  1089. package/template/.hermes/skills/yss-distributed-id/assets/EnableDistributedId.java +0 -25
  1090. package/template/.hermes/skills/yss-distributed-id/assets/LeafConf.java +0 -36
  1091. package/template/.hermes/skills/yss-distributed-id/references/README.md +0 -51
  1092. package/template/.hermes/skills/yss-distributed-id/references/source-index.md +0 -86
  1093. package/template/.hermes/skills/yss-domain/SKILL.md +0 -70
  1094. package/template/.hermes/skills/yss-domain/agents/openai.yaml +0 -5
  1095. package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +0 -101
  1096. package/template/.hermes/skills/yss-dto/SKILL.md +0 -92
  1097. package/template/.hermes/skills/yss-dto/agents/openai.yaml +0 -5
  1098. package/template/.hermes/skills/yss-dto/assets/CommandDTO.java +0 -8
  1099. package/template/.hermes/skills/yss-dto/assets/PageQuery.java +0 -133
  1100. package/template/.hermes/skills/yss-dto/assets/QueryDTO.java +0 -6
  1101. package/template/.hermes/skills/yss-dto/assets/Result.java +0 -105
  1102. package/template/.hermes/skills/yss-dto/references/README.md +0 -67
  1103. package/template/.hermes/skills/yss-dto/references/openapi-wire-profile.yaml +0 -187
  1104. package/template/.hermes/skills/yss-dto/references/source-index.md +0 -55
  1105. package/template/.hermes/skills/yss-excel-mvc/SKILL.md +0 -66
  1106. package/template/.hermes/skills/yss-excel-mvc/agents/openai.yaml +0 -5
  1107. package/template/.hermes/skills/yss-excel-mvc/assets/ExcelDynamicData.java +0 -66
  1108. package/template/.hermes/skills/yss-excel-mvc/assets/RequestExcel.java +0 -33
  1109. package/template/.hermes/skills/yss-excel-mvc/assets/RequestFastExcelArgumentResolver.java +0 -272
  1110. package/template/.hermes/skills/yss-excel-mvc/assets/ResponseExcel.java +0 -46
  1111. package/template/.hermes/skills/yss-excel-mvc/assets/ResponseFastExcelReturnValueHandler.java +0 -154
  1112. package/template/.hermes/skills/yss-excel-mvc/references/README.md +0 -5
  1113. package/template/.hermes/skills/yss-excel-mvc/references/source-index.md +0 -74
  1114. package/template/.hermes/skills/yss-exception/SKILL.md +0 -57
  1115. package/template/.hermes/skills/yss-exception/agents/openai.yaml +0 -4
  1116. package/template/.hermes/skills/yss-exception/references/source-index.md +0 -35
  1117. package/template/.hermes/skills/yss-formily/SKILL.md +0 -272
  1118. package/template/.hermes/skills/yss-formily-schema-generator/SKILL.md +0 -189
  1119. package/template/.hermes/skills/yss-formily-schema-generator/agents/openai.yaml +0 -5
  1120. package/template/.hermes/skills/yss-formily-schema-generator/assets/java-sdk/ExampleUsage.java +0 -111
  1121. package/template/.hermes/skills/yss-formily-schema-generator/assets/java-sdk/YssFormilyDsl.java +0 -1219
  1122. package/template/.hermes/skills/yss-formily-schema-generator/references/workflow.md +0 -240
  1123. package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +0 -76
  1124. package/template/.hermes/skills/yss-hook/SKILL.md +0 -200
  1125. package/template/.hermes/skills/yss-hook/agents/openai.yaml +0 -5
  1126. package/template/.hermes/skills/yss-hook/references/frontend-docs.md +0 -10
  1127. package/template/.hermes/skills/yss-microapp-commit/SKILL.md +0 -201
  1128. package/template/.hermes/skills/yss-microapp-commit/agents/openai.yaml +0 -5
  1129. package/template/.hermes/skills/yss-microapp-commit/references/scope-mapping.md +0 -204
  1130. package/template/.hermes/skills/yss-mybatis/SKILL.md +0 -77
  1131. package/template/.hermes/skills/yss-mybatis/agents/openai.yaml +0 -5
  1132. package/template/.hermes/skills/yss-mybatis/assets/BaseRepository.java +0 -112
  1133. package/template/.hermes/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
  1134. package/template/.hermes/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
  1135. package/template/.hermes/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
  1136. package/template/.hermes/skills/yss-mybatis/references/README.md +0 -57
  1137. package/template/.hermes/skills/yss-mybatis/references/source-index.md +0 -93
  1138. package/template/.hermes/skills/yss-openapi-draft-review/SKILL.md +0 -82
  1139. package/template/.hermes/skills/yss-openapi-governance/SKILL.md +0 -130
  1140. package/template/.hermes/skills/yss-openapi-governance/agents/openai.yaml +0 -4
  1141. package/template/.hermes/skills/yss-page-module-development/SKILL.md +0 -165
  1142. package/template/.hermes/skills/yss-page-module-development/agents/openai.yaml +0 -5
  1143. package/template/.hermes/skills/yss-page-module-development/examples/AdvancedFormPage/constant.ts +0 -32
  1144. package/template/.hermes/skills/yss-page-module-development/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -158
  1145. package/template/.hermes/skills/yss-page-module-development/examples/AdvancedFormPage/index.vue +0 -188
  1146. package/template/.hermes/skills/yss-page-module-development/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
  1147. package/template/.hermes/skills/yss-page-module-development/examples/AdvancedFormPage/style.less +0 -76
  1148. package/template/.hermes/skills/yss-page-module-development/examples/StandardListPage/constant.ts +0 -128
  1149. package/template/.hermes/skills/yss-page-module-development/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -144
  1150. package/template/.hermes/skills/yss-page-module-development/examples/StandardListPage/hooks/useRuleActions.ts +0 -141
  1151. package/template/.hermes/skills/yss-page-module-development/examples/StandardListPage/index.vue +0 -175
  1152. package/template/.hermes/skills/yss-page-module-development/examples/StandardListPage/style.less +0 -83
  1153. package/template/.hermes/skills/yss-page-module-development/references/component-map.md +0 -34
  1154. package/template/.hermes/skills/yss-page-module-development/references/frontend-docs.md +0 -11
  1155. package/template/.hermes/skills/yss-page-module-development/references/hooks-map.md +0 -11
  1156. package/template/.hermes/skills/yss-page-module-development/references/utils-map.md +0 -14
  1157. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +0 -52
  1158. package/template/.hermes/skills/yss-product-lifecycle/agents/openai.yaml +0 -4
  1159. package/template/.hermes/skills/yss-product-lifecycle/references/artifact-dependencies.md +0 -36
  1160. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +0 -122
  1161. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +0 -865
  1162. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +0 -116
  1163. package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +0 -112
  1164. package/template/.hermes/skills/yss-prototype-stage/SKILL.md +0 -47
  1165. package/template/.hermes/skills/yss-prototype-stage/references/product-design-adapter.md +0 -54
  1166. package/template/.hermes/skills/yss-prototype-stage/scripts/prototype-contract.mjs +0 -207
  1167. package/template/.hermes/skills/yss-prototype-stage/tests/run-scenarios.mjs +0 -154
  1168. package/template/.hermes/skills/yss-repository/SKILL.md +0 -80
  1169. package/template/.hermes/skills/yss-repository/agents/openai.yaml +0 -5
  1170. package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
  1171. package/template/.hermes/skills/yss-research/SKILL.md +0 -73
  1172. package/template/.hermes/skills/yss-research/agents/openai.yaml +0 -3
  1173. package/template/.hermes/skills/yss-research/assets/evidence-template.yaml +0 -68
  1174. package/template/.hermes/skills/yss-research/assets/research-brief-template.md +0 -36
  1175. package/template/.hermes/skills/yss-research/references/evidence-contract.md +0 -42
  1176. package/template/.hermes/skills/yss-research/scripts/validate-research-package.mjs +0 -128
  1177. package/template/.hermes/skills/yss-research/tests/run-scenarios.mjs +0 -81
  1178. package/template/.hermes/skills/yss-resilience4j/SKILL.md +0 -46
  1179. package/template/.hermes/skills/yss-resilience4j/agents/openai.yaml +0 -4
  1180. package/template/.hermes/skills/yss-resilience4j/references/source-index.md +0 -33
  1181. package/template/.hermes/skills/yss-router/SKILL.md +0 -51
  1182. package/template/.hermes/skills/yss-router/agents/openai.yaml +0 -4
  1183. package/template/.hermes/skills/yss-router/references/boundaries.md +0 -50
  1184. package/template/.hermes/skills/yss-router/references/router-contract.yaml +0 -349
  1185. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +0 -185
  1186. package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +0 -67
  1187. package/template/.hermes/skills/yss-security-algorithm/SKILL.md +0 -52
  1188. package/template/.hermes/skills/yss-security-algorithm/agents/openai.yaml +0 -4
  1189. package/template/.hermes/skills/yss-security-algorithm/references/source-index.md +0 -35
  1190. package/template/.hermes/skills/yss-source-index/SKILL.md +0 -63
  1191. package/template/.hermes/skills/yss-source-index/agents/openai.yaml +0 -4
  1192. package/template/.hermes/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +0 -24
  1193. package/template/.hermes/skills/yss-stage-decision/SKILL.md +0 -51
  1194. package/template/.hermes/skills/yss-stage-decision/references/domain-strategy-contract.md +0 -26
  1195. package/template/.hermes/skills/yss-stage-decision/references/domain-strategy.schema.json +0 -128
  1196. package/template/.hermes/skills/yss-stage-decision/references/stage-decision-package-contract.md +0 -19
  1197. package/template/.hermes/skills/yss-stage-decision/references/stage-decision-package.schema.json +0 -86
  1198. package/template/.hermes/skills/yss-stage-decision/references/validation-rules.md +0 -18
  1199. package/template/.hermes/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +0 -169
  1200. package/template/.hermes/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +0 -100
  1201. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +0 -15
  1202. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +0 -58
  1203. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +0 -44
  1204. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +0 -15
  1205. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +0 -49
  1206. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +0 -108
  1207. package/template/.hermes/skills/yss-stage-decision/tests/run-scenarios.mjs +0 -68
  1208. package/template/.hermes/skills/yss-tactical-design/SKILL.md +0 -35
  1209. package/template/.hermes/skills/yss-tactical-design/agents/openai.yaml +0 -4
  1210. package/template/.hermes/skills/yss-tactical-design/references/output-template.md +0 -28
  1211. package/template/.hermes/skills/yss-tactical-design/references/tactical-design-contract.md +0 -41
  1212. package/template/.hermes/skills/yss-tactical-design/references/tactical-design.schema.json +0 -31
  1213. package/template/.hermes/skills/yss-tactical-design/references/validation-rules.md +0 -13
  1214. package/template/.hermes/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +0 -213
  1215. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +0 -21
  1216. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +0 -21
  1217. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +0 -21
  1218. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +0 -21
  1219. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +0 -21
  1220. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +0 -80
  1221. package/template/.hermes/skills/yss-tactical-design/tests/run-scenarios.mjs +0 -47
  1222. package/template/.hermes/skills/yss-ui/SKILL.md +0 -170
  1223. package/template/.hermes/skills/yss-ui/agents/openai.yaml +0 -5
  1224. package/template/.hermes/skills/yss-ui/assets/demos/button/auth-basic.vue +0 -24
  1225. package/template/.hermes/skills/yss-ui/assets/demos/button/auth-dropdown.vue +0 -29
  1226. package/template/.hermes/skills/yss-ui/assets/demos/button/permission.vue +0 -10
  1227. package/template/.hermes/skills/yss-ui/assets/demos/button/size.vue +0 -12
  1228. package/template/.hermes/skills/yss-ui/assets/demos/button/states.vue +0 -12
  1229. package/template/.hermes/skills/yss-ui/assets/demos/card/basic/index.vue +0 -54
  1230. package/template/.hermes/skills/yss-ui/assets/demos/card/basic/style.less +0 -41
  1231. package/template/.hermes/skills/yss-ui/assets/demos/card/cover/index.vue +0 -25
  1232. package/template/.hermes/skills/yss-ui/assets/demos/card/flexible-layout/index.vue +0 -122
  1233. package/template/.hermes/skills/yss-ui/assets/demos/card/flexible-layout/style.less +0 -191
  1234. package/template/.hermes/skills/yss-ui/assets/demos/card/header-extra/index.vue +0 -260
  1235. package/template/.hermes/skills/yss-ui/assets/demos/card/header-extra/style.less +0 -124
  1236. package/template/.hermes/skills/yss-ui/assets/demos/card/layout-metrics/constants.ts +0 -61
  1237. package/template/.hermes/skills/yss-ui/assets/demos/card/layout-metrics/index.vue +0 -72
  1238. package/template/.hermes/skills/yss-ui/assets/demos/card/layout-metrics/metrics-cards.vue +0 -70
  1239. package/template/.hermes/skills/yss-ui/assets/demos/card/layout-metrics/style.less +0 -232
  1240. package/template/.hermes/skills/yss-ui/assets/demos/card/loading/index.vue +0 -19
  1241. package/template/.hermes/skills/yss-ui/assets/demos/card/meta/index.vue +0 -19
  1242. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/basic/constants.ts +0 -44
  1243. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/basic/hooks/useConditionBasic.ts +0 -18
  1244. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/basic/index.vue +0 -100
  1245. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/linked/constants.ts +0 -51
  1246. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/linked/hooks/useConditionLinked.ts +0 -29
  1247. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/linked/index.vue +0 -23
  1248. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/nesting-between/constants.ts +0 -35
  1249. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/nesting-between/hooks/useConditionNesting.ts +0 -25
  1250. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/nesting-between/index.vue +0 -24
  1251. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/remote/constants.ts +0 -7
  1252. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/remote/hooks/useConditionRemote.ts +0 -75
  1253. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/remote/index.vue +0 -23
  1254. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/validation/constants.ts +0 -42
  1255. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/validation/hooks/useConditionBasic.ts +0 -22
  1256. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/validation/index.vue +0 -138
  1257. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/validation-custom/constants.ts +0 -42
  1258. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/validation-custom/hooks/useConditionBasic.ts +0 -22
  1259. package/template/.hermes/skills/yss-ui/assets/demos/condition-builder/validation-custom/index.vue +0 -134
  1260. package/template/.hermes/skills/yss-ui/assets/demos/cron/basic/index.vue +0 -54
  1261. package/template/.hermes/skills/yss-ui/assets/demos/cron/select/index.vue +0 -145
  1262. package/template/.hermes/skills/yss-ui/assets/demos/echarts/basic.vue +0 -30
  1263. package/template/.hermes/skills/yss-ui/assets/demos/echarts/calendar-heatmap.vue +0 -49
  1264. package/template/.hermes/skills/yss-ui/assets/demos/echarts/candlestick.vue +0 -30
  1265. package/template/.hermes/skills/yss-ui/assets/demos/echarts/dark.vue +0 -40
  1266. package/template/.hermes/skills/yss-ui/assets/demos/echarts/expose-methods.vue +0 -97
  1267. package/template/.hermes/skills/yss-ui/assets/demos/echarts/funnel.vue +0 -42
  1268. package/template/.hermes/skills/yss-ui/assets/demos/echarts/gauge.vue +0 -25
  1269. package/template/.hermes/skills/yss-ui/assets/demos/echarts/line.vue +0 -24
  1270. package/template/.hermes/skills/yss-ui/assets/demos/echarts/mix.vue +0 -33
  1271. package/template/.hermes/skills/yss-ui/assets/demos/echarts/pie.vue +0 -34
  1272. package/template/.hermes/skills/yss-ui/assets/demos/echarts/radar.vue +0 -38
  1273. package/template/.hermes/skills/yss-ui/assets/demos/echarts/ring-segment.vue +0 -77
  1274. package/template/.hermes/skills/yss-ui/assets/demos/echarts/scatter.vue +0 -23
  1275. package/template/.hermes/skills/yss-ui/assets/demos/echarts/stacked-area.vue +0 -55
  1276. package/template/.hermes/skills/yss-ui/assets/demos/echarts/stacked-bar.vue +0 -52
  1277. package/template/.hermes/skills/yss-ui/assets/demos/echarts/treemap.vue +0 -30
  1278. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/all-types/hooks/useAllTypes.ts +0 -259
  1279. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/all-types/index.vue +0 -33
  1280. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/async-remote/hooks/useAsyncRemote.ts +0 -201
  1281. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/async-remote/index.vue +0 -45
  1282. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/basic/index.vue +0 -104
  1283. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/big-data/index.vue +0 -82
  1284. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/custom-rule/index.vue +0 -114
  1285. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/direct-editable/index.vue +0 -94
  1286. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/drag/index.vue +0 -125
  1287. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/filter/index.vue +0 -107
  1288. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/linkage/index.vue +0 -181
  1289. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/pagination-action/index.vue +0 -131
  1290. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/required/index.vue +0 -95
  1291. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/row-edit/index.vue +0 -220
  1292. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/row-options/index.vue +0 -165
  1293. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/slot-linkage/index.vue +0 -184
  1294. package/template/.hermes/skills/yss-ui/assets/demos/edit-table/submit-view/index.vue +0 -107
  1295. package/template/.hermes/skills/yss-ui/assets/demos/file-import/basic.vue +0 -54
  1296. package/template/.hermes/skills/yss-ui/assets/demos/file-import/formily.vue +0 -42
  1297. package/template/.hermes/skills/yss-ui/assets/demos/file-import/multiple.vue +0 -33
  1298. package/template/.hermes/skills/yss-ui/assets/demos/file-import/result-slot.vue +0 -30
  1299. package/template/.hermes/skills/yss-ui/assets/demos/formily/actions.vue +0 -61
  1300. package/template/.hermes/skills/yss-ui/assets/demos/formily/align.vue +0 -56
  1301. package/template/.hermes/skills/yss-ui/assets/demos/formily/async-validate.vue +0 -69
  1302. package/template/.hermes/skills/yss-ui/assets/demos/formily/basic.vue +0 -317
  1303. package/template/.hermes/skills/yss-ui/assets/demos/formily/collapse.vue +0 -104
  1304. package/template/.hermes/skills/yss-ui/assets/demos/formily/custom-component.vue +0 -75
  1305. package/template/.hermes/skills/yss-ui/assets/demos/formily/disabled.vue +0 -71
  1306. package/template/.hermes/skills/yss-ui/assets/demos/formily/dynamic-array.vue +0 -74
  1307. package/template/.hermes/skills/yss-ui/assets/demos/formily/dynamic.vue +0 -59
  1308. package/template/.hermes/skills/yss-ui/assets/demos/formily/effects.vue +0 -117
  1309. package/template/.hermes/skills/yss-ui/assets/demos/formily/events-inline.vue +0 -82
  1310. package/template/.hermes/skills/yss-ui/assets/demos/formily/events-scope.vue +0 -101
  1311. package/template/.hermes/skills/yss-ui/assets/demos/formily/grid.vue +0 -71
  1312. package/template/.hermes/skills/yss-ui/assets/demos/formily/group.vue +0 -102
  1313. package/template/.hermes/skills/yss-ui/assets/demos/formily/helper-slot.vue +0 -50
  1314. package/template/.hermes/skills/yss-ui/assets/demos/formily/label-tip.vue +0 -42
  1315. package/template/.hermes/skills/yss-ui/assets/demos/formily/linkage-multi.vue +0 -127
  1316. package/template/.hermes/skills/yss-ui/assets/demos/formily/linkage.vue +0 -78
  1317. package/template/.hermes/skills/yss-ui/assets/demos/formily/modes.vue +0 -72
  1318. package/template/.hermes/skills/yss-ui/assets/demos/formily/remote-enum.vue +0 -88
  1319. package/template/.hermes/skills/yss-ui/assets/demos/formily/slot.vue +0 -54
  1320. package/template/.hermes/skills/yss-ui/assets/demos/formily/steps.vue +0 -135
  1321. package/template/.hermes/skills/yss-ui/assets/demos/formily/submit-failed.vue +0 -72
  1322. package/template/.hermes/skills/yss-ui/assets/demos/monaco/basic.vue +0 -40
  1323. package/template/.hermes/skills/yss-ui/assets/demos/monaco/diff-basic.vue +0 -143
  1324. package/template/.hermes/skills/yss-ui/assets/demos/monaco/fullscreen.vue +0 -84
  1325. package/template/.hermes/skills/yss-ui/assets/demos/monaco/history-log-viewer.vue +0 -586
  1326. package/template/.hermes/skills/yss-ui/assets/demos/monaco/log-viewer.vue +0 -260
  1327. package/template/.hermes/skills/yss-ui/assets/demos/monaco/mock/mockLogApi.ts +0 -199
  1328. package/template/.hermes/skills/yss-ui/assets/demos/monaco/monaco.vue +0 -66
  1329. package/template/.hermes/skills/yss-ui/assets/demos/monaco/readonly.vue +0 -20
  1330. package/template/.hermes/skills/yss-ui/assets/demos/monaco/resizable.vue +0 -22
  1331. package/template/.hermes/skills/yss-ui/assets/demos/monaco/sql-schema.vue +0 -20
  1332. package/template/.hermes/skills/yss-ui/assets/demos/monaco/switch-lang-theme.vue +0 -48
  1333. package/template/.hermes/skills/yss-ui/assets/demos/split-pane/tree-table/constant.ts +0 -18
  1334. package/template/.hermes/skills/yss-ui/assets/demos/split-pane/tree-table/index.vue +0 -60
  1335. package/template/.hermes/skills/yss-ui/assets/demos/split-pane/tree-table/style.less +0 -39
  1336. package/template/.hermes/skills/yss-ui/assets/demos/split-pane/tree-table-layout/hooks/useTreeTable.ts +0 -158
  1337. package/template/.hermes/skills/yss-ui/assets/demos/split-pane/tree-table-layout/index.vue +0 -88
  1338. package/template/.hermes/skills/yss-ui/assets/demos/split-pane/tree-table-layout/style.less +0 -73
  1339. package/template/.hermes/skills/yss-ui/assets/demos/table/action/index.vue +0 -83
  1340. package/template/.hermes/skills/yss-ui/assets/demos/table/action/style.less +0 -3
  1341. package/template/.hermes/skills/yss-ui/assets/demos/table/action-auth/index.vue +0 -41
  1342. package/template/.hermes/skills/yss-ui/assets/demos/table/action-slot/index.vue +0 -62
  1343. package/template/.hermes/skills/yss-ui/assets/demos/table/action-slot/style.less +0 -36
  1344. package/template/.hermes/skills/yss-ui/assets/demos/table/basic/hooks/useBasicTable.ts +0 -205
  1345. package/template/.hermes/skills/yss-ui/assets/demos/table/basic/index.vue +0 -89
  1346. package/template/.hermes/skills/yss-ui/assets/demos/table/basic/style.less +0 -28
  1347. package/template/.hermes/skills/yss-ui/assets/demos/table/column-custom-search/hooks/useColumnCustomSearch.ts +0 -236
  1348. package/template/.hermes/skills/yss-ui/assets/demos/table/column-custom-search/index.vue +0 -141
  1349. package/template/.hermes/skills/yss-ui/assets/demos/table/column-custom-search/style.less +0 -48
  1350. package/template/.hermes/skills/yss-ui/assets/demos/table/drag/index.vue +0 -42
  1351. package/template/.hermes/skills/yss-ui/assets/demos/table/expand/action-expand.vue +0 -142
  1352. package/template/.hermes/skills/yss-ui/assets/demos/table/expand/index.vue +0 -35
  1353. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-async/index.vue +0 -93
  1354. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-auto/index.vue +0 -99
  1355. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-custom/index.vue +0 -72
  1356. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-local/index.vue +0 -112
  1357. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-mixed/index.vue +0 -142
  1358. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-remote/constant.ts +0 -129
  1359. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-remote/hooks/useTableData.ts +0 -186
  1360. package/template/.hermes/skills/yss-ui/assets/demos/table/filter-remote/index.vue +0 -73
  1361. package/template/.hermes/skills/yss-ui/assets/demos/table/group-header/index.vue +0 -86
  1362. package/template/.hermes/skills/yss-ui/assets/demos/table/group-header/style.less +0 -3
  1363. package/template/.hermes/skills/yss-ui/assets/demos/table/header-height/index.vue +0 -29
  1364. package/template/.hermes/skills/yss-ui/assets/demos/table/header-height/style.less +0 -9
  1365. package/template/.hermes/skills/yss-ui/assets/demos/table/merge-cells/hooks/useMergeCells.ts +0 -183
  1366. package/template/.hermes/skills/yss-ui/assets/demos/table/merge-cells/index.vue +0 -17
  1367. package/template/.hermes/skills/yss-ui/assets/demos/table/merge-cells/style.less +0 -3
  1368. package/template/.hermes/skills/yss-ui/assets/demos/table/pagination-remote/hooks/usePaginationRemote.ts +0 -106
  1369. package/template/.hermes/skills/yss-ui/assets/demos/table/pagination-remote/index.vue +0 -24
  1370. package/template/.hermes/skills/yss-ui/assets/demos/table/renderers/index.vue +0 -64
  1371. package/template/.hermes/skills/yss-ui/assets/demos/table/selection-checkbox/index.vue +0 -88
  1372. package/template/.hermes/skills/yss-ui/assets/demos/table/selection-checkbox/style.less +0 -9
  1373. package/template/.hermes/skills/yss-ui/assets/demos/table/selection-radio/index.vue +0 -57
  1374. package/template/.hermes/skills/yss-ui/assets/demos/table/selection-radio/style.less +0 -9
  1375. package/template/.hermes/skills/yss-ui/assets/demos/table/transform/index.vue +0 -32
  1376. package/template/.hermes/skills/yss-ui/assets/demos/tree/basic-left/index.vue +0 -124
  1377. package/template/.hermes/skills/yss-ui/assets/demos/tree/datasource-group/index.vue +0 -31
  1378. package/template/.hermes/skills/yss-ui/assets/demos/tree/multi-checkable/index.vue +0 -86
  1379. package/template/.hermes/skills/yss-ui/assets/demos/tree/multiple-select/index.vue +0 -76
  1380. package/template/.hermes/skills/yss-ui/assets/demos/tree/resource-list/index.vue +0 -41
  1381. package/template/.hermes/skills/yss-ui/assets/demos/tree/search-toolbar/index.vue +0 -156
  1382. package/template/.hermes/skills/yss-ui/assets/demos/tree/slot-icon/index.vue +0 -36
  1383. package/template/.hermes/skills/yss-ui/assets/demos/tree/slot-switcher-icon/index.vue +0 -34
  1384. package/template/.hermes/skills/yss-ui/assets/docs/components/button.md +0 -79
  1385. package/template/.hermes/skills/yss-ui/assets/docs/components/card.md +0 -162
  1386. package/template/.hermes/skills/yss-ui/assets/docs/components/conditionBuilder.md +0 -114
  1387. package/template/.hermes/skills/yss-ui/assets/docs/components/cron.md +0 -77
  1388. package/template/.hermes/skills/yss-ui/assets/docs/components/echarts.md +0 -110
  1389. package/template/.hermes/skills/yss-ui/assets/docs/components/editTable.md +0 -212
  1390. package/template/.hermes/skills/yss-ui/assets/docs/components/fileImport.md +0 -85
  1391. package/template/.hermes/skills/yss-ui/assets/docs/components/formily.md +0 -370
  1392. package/template/.hermes/skills/yss-ui/assets/docs/components/monaco.md +0 -369
  1393. package/template/.hermes/skills/yss-ui/assets/docs/components/sheet.md +0 -169
  1394. package/template/.hermes/skills/yss-ui/assets/docs/components/split-pane.md +0 -45
  1395. package/template/.hermes/skills/yss-ui/assets/docs/components/table.md +0 -398
  1396. package/template/.hermes/skills/yss-ui/assets/docs/components/tree.md +0 -102
  1397. package/template/.hermes/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +0 -166
  1398. package/template/.hermes/skills/yss-ui/assets/docs/guide/index.md +0 -132
  1399. package/template/.hermes/skills/yss-ui/assets/docs/guide/installation.md +0 -97
  1400. package/template/.hermes/skills/yss-ui/assets/docs/guide/jsp.md +0 -227
  1401. package/template/.hermes/skills/yss-ui/assets/docs/guide/llms.md +0 -295
  1402. package/template/.hermes/skills/yss-ui/assets/docs/guide/monorepo-versioning.md +0 -149
  1403. package/template/.hermes/skills/yss-ui/assets/docs/guide/release-workflow.md +0 -251
  1404. package/template/.hermes/skills/yss-ui/assets/docs/hooks/use-table-height.md +0 -101
  1405. package/template/.hermes/skills/yss-ui/assets/docs/hooks/use-tree-height.md +0 -115
  1406. package/template/.hermes/skills/yss-ui/assets/docs/hooks/useFullscreen.md +0 -130
  1407. package/template/.hermes/skills/yss-ui/assets/docs/hooks/useLoading.md +0 -97
  1408. package/template/.hermes/skills/yss-ui/assets/docs/root/resources.md +0 -18
  1409. package/template/.hermes/skills/yss-ui/assets/keyword-index.json +0 -53
  1410. package/template/.hermes/skills/yss-ui/assets/keyword-index.md +0 -47
  1411. package/template/.hermes/skills/yss-ui/assets/reference-index.json +0 -55
  1412. package/template/.hermes/skills/yss-ui/assets/reference-index.md +0 -74
  1413. package/template/.hermes/skills/yss-ui/assets/scenario-index.json +0 -50
  1414. package/template/.hermes/skills/yss-ui/assets/scenario-index.md +0 -41
  1415. package/template/.hermes/skills/yss-ui/references/accessibility.md +0 -23
  1416. package/template/.hermes/skills/yss-ui/references/antdv-compatibility.md +0 -39
  1417. package/template/.hermes/skills/yss-ui/references/checklist.md +0 -110
  1418. package/template/.hermes/skills/yss-ui/references/component-routing.md +0 -31
  1419. package/template/.hermes/skills/yss-ui/references/frontend-docs.md +0 -11
  1420. package/template/.hermes/skills/yss-ui/references/migration-antdv-to-yss.md +0 -20
  1421. package/template/.hermes/skills/yss-ui/references/quick-recipes.md +0 -280
  1422. package/template/.hermes/skills/yss-ui/references/theme-locale-overlay.md +0 -25
  1423. package/template/.hermes/skills/yss-ui/references/verification.md +0 -20
  1424. package/template/.hermes/skills/yss-ui-business-page-generation/SKILL.md +0 -159
  1425. package/template/.hermes/skills/yss-ui-business-page-generation/references/component-map.md +0 -39
  1426. package/template/.hermes/skills/yss-ui-business-page-generation/references/hooks-map.md +0 -70
  1427. package/template/.hermes/skills/yss-ui-business-page-generation/references/utils-map.md +0 -51
  1428. package/template/.hermes/skills/yss-up-springboot3/SKILL.md +0 -40
  1429. package/template/.hermes/skills/yss-up-springboot3/agents/openai.yaml +0 -4
  1430. package/template/.hermes/skills/yss-use-table-height/SKILL.md +0 -130
  1431. package/template/.hermes/skills/yss-use-table-height/agents/openai.yaml +0 -5
  1432. package/template/.hermes/skills/yss-use-table-height/references/frontend-docs.md +0 -9
  1433. package/template/.hermes/skills/yss-use-tree-height/SKILL.md +0 -98
  1434. package/template/.hermes/skills/yss-use-tree-height/agents/openai.yaml +0 -5
  1435. package/template/.hermes/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
  1436. package/template/.hermes/skills/yss-userinfo/SKILL.md +0 -49
  1437. package/template/.hermes/skills/yss-userinfo/agents/openai.yaml +0 -4
  1438. package/template/.hermes/skills/yss-userinfo/references/source-index.md +0 -34
  1439. package/template/.hermes/skills/yss-validation/SKILL.md +0 -56
  1440. package/template/.hermes/skills/yss-validation/agents/openai.yaml +0 -4
  1441. package/template/.hermes/skills/yss-validation/references/source-index.md +0 -33
  1442. package/template/.hermes/skills/yss-web-controller/SKILL.md +0 -85
  1443. package/template/.hermes/skills/yss-web-controller/agents/openai.yaml +0 -5
  1444. package/template/.hermes/skills/yss-web-controller/assets/templates/Controller.java.template +0 -72
  1445. package/template/.hermes/skills/yss-web-controller/assets/templates/WebConvertor.java.template +0 -30
  1446. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +0 -19
  1447. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +0 -21
  1448. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +0 -18
  1449. package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +0 -19
  1450. package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +0 -86
  1451. package/template/.hermes/skills/yss-web-controller/references/web-generation-contract.schema.json +0 -97
  1452. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.mjs +0 -226
  1453. package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.test.mjs +0 -156
  1454. package/template/.hermes/skills/ytable-usage/SKILL.md +0 -251
  1455. package/template/.hermes/skills/ytree-usage/SKILL.md +0 -132
  1456. package/template/.kiro/settings/mcp.json +0 -8
  1457. package/template/.pi/skills/yss-router/SKILL.md +0 -51
  1458. package/template/.pi/skills/yss-router/agents/openai.yaml +0 -4
  1459. package/template/.pi/skills/yss-router/references/boundaries.md +0 -50
  1460. package/template/.pi/skills/yss-router/references/router-contract.yaml +0 -349
  1461. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +0 -185
  1462. package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +0 -67
  1463. package/template/.pi/skills/yss-source-index/SKILL.md +0 -63
  1464. package/template/.pi/skills/yss-source-index/agents/openai.yaml +0 -4
  1465. package/template/.pi/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +0 -24
  1466. package/template/.qoder/skills/yss-router/SKILL.md +0 -51
  1467. package/template/.qoder/skills/yss-router/agents/openai.yaml +0 -4
  1468. package/template/.qoder/skills/yss-router/references/boundaries.md +0 -50
  1469. package/template/.qoder/skills/yss-router/references/router-contract.yaml +0 -349
  1470. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +0 -185
  1471. package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +0 -67
  1472. package/template/.qoder/skills/yss-source-index/SKILL.md +0 -63
  1473. package/template/.qoder/skills/yss-source-index/agents/openai.yaml +0 -4
  1474. package/template/.qoder/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +0 -24
  1475. package/template/.trae/skills/yss-router/SKILL.md +0 -51
  1476. package/template/.trae/skills/yss-router/agents/openai.yaml +0 -4
  1477. package/template/.trae/skills/yss-router/references/boundaries.md +0 -50
  1478. package/template/.trae/skills/yss-router/references/router-contract.yaml +0 -349
  1479. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +0 -185
  1480. package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +0 -67
  1481. package/template/.trae/skills/yss-source-index/SKILL.md +0 -63
  1482. package/template/.trae/skills/yss-source-index/agents/openai.yaml +0 -4
  1483. package/template/.trae/skills/yss-source-index/references/source-location.md +0 -18
  1484. package/template/.trae/skills/yss-source-index/references/source-map-config.md +0 -30
  1485. package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +0 -24
  1486. package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +0 -15
  1487. package/template/scripts/verify-yss-router-scenarios +0 -3
  1488. /package/template/.agents/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1489. /package/template/.agents/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1490. /package/template/.agents/skills/{yss-source-index → yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
  1491. /package/template/.claude/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1492. /package/template/.claude/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1493. /package/template/.claude/skills/{yss-source-index → yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
  1494. /package/template/.codex/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1495. /package/template/.codex/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1496. /package/template/.codex/skills/{yss-source-index → yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
  1497. /package/template/.cursor/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1498. /package/template/.cursor/skills/{yss-source-index → yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1499. /package/template/.cursor/skills/{yss-source-index → yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
  1500. /package/template/{.hermes/skills/yss-source-index → .pi/skills/yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1501. /package/template/{.hermes/skills/yss-source-index → .pi/skills/yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1502. /package/template/{.hermes/skills/yss-source-index → .pi/skills/yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
  1503. /package/template/{.pi/skills/yss-source-index → .qoder/skills/yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1504. /package/template/{.pi/skills/yss-source-index → .qoder/skills/yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1505. /package/template/{.pi/skills/yss-source-index → .qoder/skills/yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
  1506. /package/template/{.qoder/skills/yss-source-index → .trae/skills/yss-skill-source-index-refresh}/references/source-location.md +0 -0
  1507. /package/template/{.qoder/skills/yss-source-index → .trae/skills/yss-skill-source-index-refresh}/references/source-map-config.md +0 -0
  1508. /package/template/{.qoder/skills/yss-source-index → .trae/skills/yss-skill-source-index-refresh}/scripts/refresh-yss-skill-index.test.mjs +0 -0
@@ -1,1667 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import crypto from 'node:crypto';
4
- import { constants as fsConstants } from 'node:fs';
5
- import fs from 'node:fs/promises';
6
- import os from 'node:os';
7
- import path from 'node:path';
8
- import { performance } from 'node:perf_hooks';
9
- import { fileURLToPath } from 'node:url';
10
-
11
- import {
12
- DEFAULT_MANIFEST_URL,
13
- SKILL_ID,
14
- UpdateContractError,
15
- compareSemver,
16
- isStableCoreVersion,
17
- parseSemver,
18
- validateLocalRelease,
19
- validateReleaseNotesUrl,
20
- validateStableUpdateManifest,
21
- } from './update-contract.mjs';
22
-
23
- const OPERATION_STATE_FILE = 'state.json';
24
- const OPERATION_OWNER_FILE = 'owner.json';
25
- const ACTIVE_CLAIM_DIRECTORY = 'active-claim';
26
- const OPERATION_NAME = /^(reserved|pending|committed|fenced|cancelled)-(\d{1,20})$/;
27
- const MAX_OPERATION_GENERATION = (10n ** 20n) - 1n;
28
- const CHECK_TTL_MS = 72 * 60 * 60 * 1_000;
29
- const MAX_CACHE_HORIZON_MS = Math.ceil(CHECK_TTL_MS * 1.2);
30
- const FIRST_FAILURE_DELAY_MS = 6 * 60 * 60 * 1_000;
31
- const LATER_FAILURE_DELAY_MS = 24 * 60 * 60 * 1_000;
32
- const DEFAULT_TIMEOUT_MS = 1_000;
33
- const MAX_RESPONSE_BYTES = 32 * 1_024;
34
- const MAX_LOCAL_RELEASE_BYTES = 4 * 1_024;
35
- const MAX_CACHE_STATE_BYTES = 64 * 1_024;
36
- const MAX_CLAIM_OWNER_BYTES = 1_024;
37
- const LONGEST_ISO_TIMESTAMP = '+275760-09-13T00:00:00.000Z';
38
- const LOCK_STALE_MS = 30_000;
39
- const ACK_LOCK_WAIT_MS = 1_200;
40
- const LOCK_RETRY_DELAY_MS = 20;
41
- const DIGEST_PATTERN = /^sha256:[a-f0-9]{64}$/;
42
- const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
43
- const defaultReleasePath = path.resolve(scriptDirectory, '..', 'skill-release.json');
44
-
45
- class FileIdentityChangedError extends Error {}
46
-
47
- function silent(reason) {
48
- return { status: 'silent', reason };
49
- }
50
-
51
- function isPlainObject(value) {
52
- return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
53
- }
54
-
55
- function hasOnlyKeys(value, allowed) {
56
- return Object.keys(value).every((key) => allowed.has(key));
57
- }
58
-
59
- function validateManifest(value) {
60
- const manifest = validateStableUpdateManifest(value);
61
- return {
62
- version: manifest.version,
63
- targetDigest: `sha256:${manifest.artifact.sha256}`,
64
- severity: manifest.severity,
65
- releaseNotes: manifest.releaseNotes,
66
- };
67
- }
68
-
69
- function validateCachedCandidate(value) {
70
- if (!isPlainObject(value)
71
- || !hasOnlyKeys(value, new Set([
72
- 'version', 'targetDigest', 'severity', 'releaseNotes',
73
- ]))) return null;
74
- try {
75
- if (!isStableCoreVersion(value.version)) return null;
76
- if (!DIGEST_PATTERN.test(value.targetDigest)
77
- || !['normal', 'security'].includes(value.severity)) return null;
78
- validateReleaseNotesUrl(value.releaseNotes, value.version);
79
- return { ...value };
80
- } catch {
81
- return null;
82
- }
83
- }
84
-
85
- function emptyState(installedVersion = null) {
86
- return {
87
- schemaVersion: 1,
88
- skillId: SKILL_ID,
89
- installedVersion,
90
- check: {
91
- nextCheckAt: null,
92
- consecutiveFailures: 0,
93
- },
94
- notification: {
95
- offeredDigests: [],
96
- acknowledgedDigests: [],
97
- },
98
- };
99
- }
100
-
101
- function encodeBoundedState(state) {
102
- const encoded = Buffer.from(`${JSON.stringify(state)}\n`, 'utf8');
103
- return encoded.length <= MAX_CACHE_STATE_BYTES ? encoded : null;
104
- }
105
-
106
- function stateAfterAcknowledgement(state, targetDigest) {
107
- const alreadyAcknowledged = state.notification.acknowledgedDigests.includes(targetDigest);
108
- return {
109
- ...state,
110
- notification: {
111
- offeredDigests: state.notification.offeredDigests
112
- .filter((digest) => digest !== targetDigest),
113
- acknowledgedDigests: alreadyAcknowledged
114
- ? [...state.notification.acknowledgedDigests]
115
- : [...state.notification.acknowledgedDigests, targetDigest],
116
- },
117
- };
118
- }
119
-
120
- function stateWithFailureCheck(state, nextCheckAt, consecutiveFailures, withdrawCandidate = false) {
121
- const failedState = {
122
- ...state,
123
- check: { nextCheckAt, consecutiveFailures },
124
- };
125
- if (withdrawCandidate) delete failedState.candidate;
126
- return failedState;
127
- }
128
-
129
- function encodeRecoverableState(state) {
130
- const encoded = encodeBoundedState(state);
131
- if (!encoded) return null;
132
- if (!encodeBoundedState(stateWithFailureCheck(state, LONGEST_ISO_TIMESTAMP, 2))) return null;
133
- let acknowledgementState = state;
134
- for (const targetDigest of state.notification.offeredDigests) {
135
- acknowledgementState = stateAfterAcknowledgement(acknowledgementState, targetDigest);
136
- if (!encodeBoundedState(acknowledgementState)
137
- || !encodeBoundedState(stateWithFailureCheck(
138
- acknowledgementState,
139
- LONGEST_ISO_TIMESTAMP,
140
- 2,
141
- ))) return null;
142
- }
143
- return encoded;
144
- }
145
-
146
- function versionCacheDirectory(cacheDirectory, installedVersion) {
147
- const partition = crypto.createHash('sha256').update(installedVersion).digest('hex').slice(0, 24);
148
- return path.join(cacheDirectory, `version-${partition}`);
149
- }
150
-
151
- function normalizeState(value, installedVersion) {
152
- const effectiveInstalledVersion = installedVersion ?? value?.installedVersion ?? null;
153
- if (!isPlainObject(value) || value.schemaVersion !== 1 || value.skillId !== SKILL_ID
154
- || (installedVersion !== null && value.installedVersion !== installedVersion)
155
- || (value.installedVersion !== null && typeof value.installedVersion !== 'string')
156
- || !isPlainObject(value.check)
157
- || !(value.check.nextCheckAt === null || typeof value.check.nextCheckAt === 'string')
158
- || !Number.isSafeInteger(value.check.consecutiveFailures)
159
- || value.check.consecutiveFailures < 0
160
- || !isPlainObject(value.notification)) return null;
161
- if (effectiveInstalledVersion !== null) {
162
- try {
163
- parseSemver(effectiveInstalledVersion);
164
- } catch {
165
- return null;
166
- }
167
- }
168
-
169
- const state = emptyState(effectiveInstalledVersion);
170
- state.check.nextCheckAt = value.check.nextCheckAt;
171
- state.check.consecutiveFailures = value.check.consecutiveFailures;
172
- const { offeredDigests, acknowledgedDigests } = value.notification;
173
- if (!Array.isArray(offeredDigests)
174
- || offeredDigests.some((digest) => typeof digest !== 'string' || !DIGEST_PATTERN.test(digest))) {
175
- return null;
176
- }
177
- state.notification.offeredDigests = [...new Set(offeredDigests)];
178
-
179
- if (!Array.isArray(acknowledgedDigests)
180
- || acknowledgedDigests.some((digest) => typeof digest !== 'string' || !DIGEST_PATTERN.test(digest))) {
181
- return null;
182
- }
183
- state.notification.acknowledgedDigests = [...new Set(acknowledgedDigests)];
184
- const hasCandidate = Object.hasOwn(value, 'candidate');
185
- const candidate = validateCachedCandidate(value.candidate);
186
- if (hasCandidate && !candidate) return null;
187
- if (candidate) {
188
- if (effectiveInstalledVersion !== null
189
- && compareSemver(candidate.version, effectiveInstalledVersion) > 0
190
- && !state.notification.offeredDigests.includes(candidate.targetDigest)
191
- && !state.notification.acknowledgedDigests.includes(candidate.targetDigest)) return null;
192
- state.candidate = candidate;
193
- }
194
- return encodeRecoverableState(state) ? state : null;
195
- }
196
-
197
- function isSameFile(left, right) {
198
- if (left.dev !== right.dev || left.ino !== right.ino) return false;
199
- if (left.ino !== 0n) return true;
200
- if (left.birthtimeNs === 0n || right.birthtimeNs === 0n) return false;
201
- return left.birthtimeNs === right.birthtimeNs
202
- && left.mode === right.mode;
203
- }
204
-
205
- function assertBoundedRegularFile(metadata, maxBytes) {
206
- if (!metadata.isFile()
207
- || metadata.isSymbolicLink()
208
- || metadata.size > BigInt(maxBytes)) {
209
- throw new Error('unsafe JSON file');
210
- }
211
- }
212
-
213
- async function readJsonFile(target, maxBytes, expectedMetadata = null) {
214
- const pathMetadata = await fs.lstat(target, { bigint: true });
215
- if (expectedMetadata && !isSameFile(expectedMetadata, pathMetadata)) {
216
- throw new FileIdentityChangedError('JSON file identity changed');
217
- }
218
- assertBoundedRegularFile(pathMetadata, maxBytes);
219
- const flags = fsConstants.O_RDONLY
220
- | (fsConstants.O_NOFOLLOW ?? 0)
221
- | (fsConstants.O_NONBLOCK ?? 0);
222
- const handle = await fs.open(target, flags);
223
- try {
224
- const handleMetadata = await handle.stat({ bigint: true });
225
- const currentPathMetadata = await fs.lstat(target, { bigint: true });
226
- assertBoundedRegularFile(handleMetadata, maxBytes);
227
- assertBoundedRegularFile(currentPathMetadata, maxBytes);
228
- if (!isSameFile(pathMetadata, handleMetadata)
229
- || !isSameFile(currentPathMetadata, handleMetadata)) {
230
- throw new FileIdentityChangedError('JSON file changed while opening');
231
- }
232
-
233
- const chunks = [];
234
- let size = 0;
235
- while (size <= maxBytes) {
236
- const chunk = Buffer.allocUnsafe(Math.min(8 * 1_024, (maxBytes + 1) - size));
237
- const { bytesRead } = await handle.read(chunk, 0, chunk.length, size);
238
- if (bytesRead === 0) break;
239
- chunks.push(chunk.subarray(0, bytesRead));
240
- size += bytesRead;
241
- }
242
- if (size > maxBytes) throw new Error('JSON file is too large');
243
- return JSON.parse(Buffer.concat(chunks, size).toString('utf8'));
244
- } finally {
245
- await handle.close();
246
- }
247
- }
248
-
249
- function isWithinDirectory(directory, target) {
250
- const relative = path.relative(directory, target);
251
- return relative === ''
252
- || (!path.isAbsolute(relative) && relative !== '..' && !relative.startsWith(`..${path.sep}`));
253
- }
254
-
255
- async function canonicalizeTrustedDirectoryPrefix(target) {
256
- const absoluteTarget = path.resolve(target);
257
- const trustedDirectories = [...new Set([os.homedir(), os.tmpdir()].map((directory) => (
258
- path.resolve(directory)
259
- )))].sort((left, right) => right.length - left.length);
260
- for (const trustedDirectory of trustedDirectories) {
261
- if (!isWithinDirectory(trustedDirectory, absoluteTarget)) continue;
262
- try {
263
- const canonicalDirectory = await fs.realpath(trustedDirectory);
264
- return path.resolve(canonicalDirectory, path.relative(trustedDirectory, absoluteTarget));
265
- } catch {
266
- // Fall back to validating the absolute path from its filesystem root.
267
- }
268
- }
269
- return target;
270
- }
271
-
272
- function assertSafeDirectory(metadata) {
273
- if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
274
- throw new Error('unsafe cache directory');
275
- }
276
- }
277
-
278
- class CachePathChangedError extends Error {}
279
- class CacheOperationRaceError extends Error {}
280
- class OperationFencedError extends Error {}
281
-
282
- const preparedCacheDirectories = new Map();
283
-
284
- function invalidateCacheToken(token, message, cause) {
285
- token.trusted = false;
286
- if (cause instanceof CachePathChangedError) return cause;
287
- const error = new CachePathChangedError(message);
288
- if (cause) error.cause = cause;
289
- return error;
290
- }
291
-
292
- async function verifyDirectorySnapshots(token, snapshots, description) {
293
- if (!token.trusted) throw new CachePathChangedError('cache directory is no longer trusted');
294
- try {
295
- for (const snapshot of snapshots) {
296
- const metadata = await fs.lstat(snapshot.directory, { bigint: true });
297
- assertSafeDirectory(metadata);
298
- if (!isSameFile(snapshot.metadata, metadata)) {
299
- throw new Error(`${description} changed`);
300
- }
301
- }
302
- } catch (error) {
303
- throw invalidateCacheToken(token, `${description} changed`, error);
304
- }
305
- }
306
-
307
- async function verifyCacheToken(token) {
308
- await verifyDirectorySnapshots(token, token.ancestorSnapshots, 'cache directory');
309
- }
310
-
311
- async function guardedCacheRead(token, read) {
312
- await verifyCacheToken(token);
313
- let result;
314
- try {
315
- result = await read();
316
- } catch (error) {
317
- await verifyCacheToken(token);
318
- throw error;
319
- }
320
- await verifyCacheToken(token);
321
- return result;
322
- }
323
-
324
- function cacheTokenFor(cacheDirectory) {
325
- const token = preparedCacheDirectories.get(path.resolve(cacheDirectory));
326
- if (!token || !token.trusted) {
327
- throw new CachePathChangedError('cache directory has not been prepared safely');
328
- }
329
- return token;
330
- }
331
-
332
- function resolveCacheTarget(token, target) {
333
- const resolved = path.resolve(target);
334
- if (resolved === token.directory || !isWithinDirectory(token.directory, resolved)) {
335
- throw invalidateCacheToken(token, 'cache mutation escaped its prepared directory');
336
- }
337
- return resolved;
338
- }
339
-
340
- async function captureMutationParentSnapshots(token, targets) {
341
- await verifyCacheToken(token);
342
- const snapshots = new Map();
343
- try {
344
- for (const target of targets) {
345
- const parent = path.dirname(resolveCacheTarget(token, target));
346
- const relative = path.relative(token.directory, parent);
347
- let current = token.directory;
348
- for (const component of relative.split(path.sep).filter(Boolean)) {
349
- current = path.join(current, component);
350
- if (snapshots.has(current)) continue;
351
- const metadata = await fs.lstat(current, { bigint: true });
352
- assertSafeDirectory(metadata);
353
- snapshots.set(current, { directory: current, metadata });
354
- }
355
- }
356
- } catch (error) {
357
- throw invalidateCacheToken(token, 'cache mutation parent changed', error);
358
- }
359
- const captured = [...snapshots.values()];
360
- await verifyMutationParentSnapshots(token, captured);
361
- await verifyCacheToken(token);
362
- return captured;
363
- }
364
-
365
- async function verifyMutationParentSnapshots(token, snapshots) {
366
- try {
367
- for (const snapshot of snapshots) {
368
- const metadata = await fs.lstat(snapshot.directory, { bigint: true });
369
- assertSafeDirectory(metadata);
370
- if (!isSameFile(snapshot.metadata, metadata)) {
371
- throw new Error('cache mutation parent changed');
372
- }
373
- }
374
- } catch (error) {
375
- const raced = new CacheOperationRaceError('cache mutation parent changed');
376
- raced.cause = error;
377
- throw raced;
378
- }
379
- }
380
-
381
- async function verifyMutationContext(token, parentSnapshots) {
382
- await verifyCacheToken(token);
383
- await verifyMutationParentSnapshots(token, parentSnapshots);
384
- await verifyCacheToken(token);
385
- }
386
-
387
- function assertSafeCacheEntry(metadata) {
388
- if (metadata.isSymbolicLink() || (!metadata.isDirectory() && !metadata.isFile())) {
389
- throw new Error('unsafe cache entry');
390
- }
391
- }
392
-
393
- function assertSafeRegularFile(metadata) {
394
- if (!metadata.isFile() || metadata.isSymbolicLink()) {
395
- throw new Error('unsafe cache file');
396
- }
397
- }
398
-
399
- function assertRenameableCacheEntry(metadata) {
400
- if (!metadata.isDirectory() && !metadata.isFile() && !metadata.isSymbolicLink()) {
401
- throw new Error('unsafe cache rename entry');
402
- }
403
- }
404
-
405
- async function stableCacheEntry(
406
- token,
407
- target,
408
- validate,
409
- expectedMetadata = null,
410
- missingIsOperationRace = false,
411
- ) {
412
- const resolved = resolveCacheTarget(token, target);
413
- try {
414
- const first = await fs.lstat(resolved, { bigint: true });
415
- validate(first);
416
- if (expectedMetadata && !isSameFile(expectedMetadata, first)) {
417
- throw new Error('cache entry identity changed');
418
- }
419
- await verifyCacheToken(token);
420
- const second = await fs.lstat(resolved, { bigint: true });
421
- validate(second);
422
- if (!isSameFile(first, second)
423
- || (expectedMetadata && !isSameFile(expectedMetadata, second))) {
424
- throw new Error('cache entry identity changed');
425
- }
426
- return second;
427
- } catch (error) {
428
- if (missingIsOperationRace && error?.code === 'ENOENT') {
429
- await verifyCacheToken(token);
430
- throw error;
431
- }
432
- throw invalidateCacheToken(token, 'cache mutation produced an untrusted object', error);
433
- }
434
- }
435
-
436
- async function guardedCacheEntryRead(
437
- token,
438
- target,
439
- validate,
440
- read,
441
- expectedMetadata = null,
442
- ) {
443
- const metadata = await stableCacheEntry(
444
- token,
445
- target,
446
- validate,
447
- expectedMetadata,
448
- true,
449
- );
450
- let result;
451
- try {
452
- result = await read(metadata);
453
- } catch (error) {
454
- await stableCacheEntry(token, target, validate, metadata, true);
455
- throw error;
456
- }
457
- await stableCacheEntry(token, target, validate, metadata, true);
458
- return result;
459
- }
460
-
461
- async function stablePreparedDirectory(token, target) {
462
- try {
463
- const first = await fs.lstat(target, { bigint: true });
464
- assertSafeDirectory(first);
465
- await verifyCacheToken(token);
466
- const second = await fs.lstat(target, { bigint: true });
467
- assertSafeDirectory(second);
468
- if (!isSameFile(first, second)) throw new Error('prepared directory identity changed');
469
- return second;
470
- } catch (error) {
471
- throw invalidateCacheToken(token, 'prepared directory could not be verified', error);
472
- }
473
- }
474
-
475
- async function assertCacheTargetAbsent(token, target) {
476
- const resolved = resolveCacheTarget(token, target);
477
- try {
478
- await fs.lstat(resolved, { bigint: true });
479
- } catch (error) {
480
- if (error?.code === 'ENOENT') return;
481
- throw invalidateCacheToken(token, 'cache mutation target could not be verified', error);
482
- }
483
- throw invalidateCacheToken(token, 'cache mutation left an unexpected object');
484
- }
485
-
486
- async function guardedCacheMutation(token, parentSnapshots, {
487
- mutate,
488
- verifyBefore = null,
489
- verifyAfter,
490
- }) {
491
- await verifyMutationContext(token, parentSnapshots);
492
- if (verifyBefore) await verifyBefore();
493
- let result;
494
- try {
495
- result = await mutate();
496
- } catch (error) {
497
- await verifyMutationContext(token, parentSnapshots);
498
- throw error;
499
- }
500
- try {
501
- await verifyMutationContext(token, parentSnapshots);
502
- const verified = await verifyAfter(result);
503
- await verifyMutationContext(token, parentSnapshots);
504
- return verified ?? result;
505
- } catch (error) {
506
- if (error instanceof CacheOperationRaceError) throw error;
507
- throw invalidateCacheToken(token, 'cache mutation could not be verified', error);
508
- }
509
- }
510
-
511
- async function cacheMkdirWithToken(token, target, options, parentSnapshots = null) {
512
- const resolved = path.resolve(target);
513
- const parents = parentSnapshots ?? await captureMutationParentSnapshots(token, [resolved]);
514
- return guardedCacheMutation(token, parents, {
515
- mutate: () => fs.mkdir(resolved, options),
516
- verifyAfter: () => (parentSnapshots === null
517
- ? stableCacheEntry(token, resolved, assertSafeDirectory)
518
- : stablePreparedDirectory(token, resolved)),
519
- });
520
- }
521
-
522
- async function cacheMkdir(cacheDirectory, target, options) {
523
- return cacheMkdirWithToken(cacheTokenFor(cacheDirectory), target, options);
524
- }
525
-
526
- async function cacheWriteFile(cacheDirectory, target, data, options) {
527
- if (options?.flag !== 'wx') {
528
- throw new Error('cache files must be created exclusively');
529
- }
530
- const token = cacheTokenFor(cacheDirectory);
531
- const resolved = resolveCacheTarget(token, target);
532
- const parents = await captureMutationParentSnapshots(token, [resolved]);
533
- return guardedCacheMutation(token, parents, {
534
- mutate: async () => {
535
- const flags = fsConstants.O_WRONLY
536
- | fsConstants.O_CREAT
537
- | fsConstants.O_EXCL
538
- | (fsConstants.O_NOFOLLOW ?? 0);
539
- const handle = await fs.open(resolved, flags, options.mode);
540
- try {
541
- const openedMetadata = await handle.stat({ bigint: true });
542
- if (!openedMetadata.isFile() || openedMetadata.isSymbolicLink()) {
543
- throw new Error('cache write did not open a regular file');
544
- }
545
- await handle.writeFile(data, options.encoding ? { encoding: options.encoding } : undefined);
546
- const writtenMetadata = await handle.stat({ bigint: true });
547
- const expectedBytes = Buffer.isBuffer(data)
548
- ? data.length
549
- : Buffer.byteLength(data, options.encoding || 'utf8');
550
- if (!isSameFile(openedMetadata, writtenMetadata)
551
- || writtenMetadata.size !== BigInt(expectedBytes)) {
552
- throw new Error('cache write did not preserve the opened file identity and size');
553
- }
554
- return writtenMetadata;
555
- } finally {
556
- await handle.close();
557
- }
558
- },
559
- verifyAfter: (writtenMetadata) => stableCacheEntry(token, resolved, (metadata) => {
560
- if (!metadata.isFile() || metadata.isSymbolicLink()) {
561
- throw new Error('cache write did not create a regular file');
562
- }
563
- }, writtenMetadata),
564
- });
565
- }
566
-
567
- async function cacheRename(
568
- cacheDirectory,
569
- source,
570
- destination,
571
- validate,
572
- expectedSourceMetadata = null,
573
- ) {
574
- if (typeof validate !== 'function') {
575
- throw new TypeError('cache rename requires an explicit entry validator');
576
- }
577
- const token = cacheTokenFor(cacheDirectory);
578
- const resolvedSource = resolveCacheTarget(token, source);
579
- const resolvedDestination = resolveCacheTarget(token, destination);
580
- const parents = await captureMutationParentSnapshots(
581
- token,
582
- [resolvedSource, resolvedDestination],
583
- );
584
- const sourceMetadata = await stableCacheEntry(
585
- token,
586
- resolvedSource,
587
- validate,
588
- expectedSourceMetadata,
589
- true,
590
- );
591
- return guardedCacheMutation(token, parents, {
592
- verifyBefore: () => stableCacheEntry(
593
- token,
594
- resolvedSource,
595
- validate,
596
- sourceMetadata,
597
- true,
598
- ),
599
- mutate: () => fs.rename(resolvedSource, resolvedDestination),
600
- verifyAfter: async () => {
601
- await assertCacheTargetAbsent(token, resolvedSource);
602
- return stableCacheEntry(
603
- token,
604
- resolvedDestination,
605
- validate,
606
- sourceMetadata,
607
- );
608
- },
609
- });
610
- }
611
-
612
- async function cacheRm(cacheDirectory, target, options) {
613
- if (options?.recursive) {
614
- throw new Error('recursive cache removal is not allowed');
615
- }
616
- const token = cacheTokenFor(cacheDirectory);
617
- const resolved = resolveCacheTarget(token, target);
618
- const parents = await captureMutationParentSnapshots(token, [resolved]);
619
- let initialMetadata;
620
- try {
621
- initialMetadata = await fs.lstat(resolved, { bigint: true });
622
- } catch (error) {
623
- if (error?.code === 'ENOENT' && options?.force) {
624
- await verifyMutationContext(token, parents);
625
- return;
626
- }
627
- throw error;
628
- }
629
- try {
630
- assertSafeCacheEntry(initialMetadata);
631
- } catch (error) {
632
- throw invalidateCacheToken(token, 'cache removal target is unsafe', error);
633
- }
634
- const targetMetadata = await stableCacheEntry(
635
- token,
636
- resolved,
637
- assertSafeCacheEntry,
638
- initialMetadata,
639
- );
640
- return guardedCacheMutation(token, parents, {
641
- verifyBefore: () => stableCacheEntry(
642
- token,
643
- resolved,
644
- assertSafeCacheEntry,
645
- targetMetadata,
646
- ),
647
- mutate: () => fs.rm(resolved, options),
648
- verifyAfter: () => assertCacheTargetAbsent(token, resolved),
649
- });
650
- }
651
-
652
- async function prepareCacheDirectory(cacheDirectory) {
653
- const absoluteTarget = path.resolve(cacheDirectory);
654
- const target = await canonicalizeTrustedDirectoryPrefix(absoluteTarget);
655
- const parsed = path.parse(target);
656
- const components = target.slice(parsed.root.length).split(path.sep).filter(Boolean);
657
- let current = parsed.root;
658
- const token = {
659
- directory: target,
660
- ancestorSnapshots: [],
661
- trusted: true,
662
- };
663
-
664
- for (const component of components) {
665
- current = path.join(current, component);
666
- let metadata;
667
- try {
668
- metadata = await fs.lstat(current, { bigint: true });
669
- } catch (error) {
670
- if (error?.code !== 'ENOENT') throw error;
671
- try {
672
- await cacheMkdirWithToken(token, current, { mode: 0o700 }, []);
673
- } catch (mkdirError) {
674
- if (mkdirError?.code !== 'EEXIST') throw mkdirError;
675
- }
676
- metadata = await fs.lstat(current, { bigint: true });
677
- }
678
- assertSafeDirectory(metadata);
679
- token.ancestorSnapshots.push({ directory: current, metadata });
680
- }
681
-
682
- await verifyCacheToken(token);
683
- preparedCacheDirectories.set(target, token);
684
- return target;
685
- }
686
-
687
- function operationName(kind, generation) {
688
- return `${kind}-${generation.toString().padStart(20, '0')}`;
689
- }
690
-
691
- function parseOperationName(name) {
692
- const match = OPERATION_NAME.exec(name);
693
- if (!match) return null;
694
- return { kind: match[1], generation: BigInt(match[2]) };
695
- }
696
-
697
- async function listOperations(cacheDirectory, token = cacheTokenFor(cacheDirectory)) {
698
- return guardedCacheRead(token, async () => {
699
- try {
700
- const entries = await fs.readdir(cacheDirectory, { withFileTypes: true });
701
- return entries.flatMap((entry) => {
702
- const parsed = parseOperationName(entry.name);
703
- if (!parsed) return [];
704
- if (!entry.isDirectory() || entry.isSymbolicLink()) {
705
- throw invalidateCacheToken(
706
- token,
707
- `cache operation ${entry.name} is not a safe directory`,
708
- );
709
- }
710
- return [{ ...parsed, name: entry.name, directory: path.join(cacheDirectory, entry.name) }];
711
- });
712
- } catch (error) {
713
- if (error?.code === 'ENOENT') return [];
714
- throw error;
715
- }
716
- });
717
- }
718
-
719
- async function readState(cacheDirectory, installedVersion = null) {
720
- const token = cacheTokenFor(cacheDirectory);
721
- return guardedCacheRead(token, async () => {
722
- const operations = (await listOperations(cacheDirectory, token))
723
- .filter((operation) => operation.kind === 'committed')
724
- .sort((left, right) => (left.generation > right.generation ? -1 : 1));
725
- for (const operation of operations) {
726
- try {
727
- const state = await guardedCacheEntryRead(
728
- token,
729
- operation.directory,
730
- assertSafeDirectory,
731
- async () => normalizeState(
732
- await readJsonFile(
733
- path.join(operation.directory, OPERATION_STATE_FILE),
734
- MAX_CACHE_STATE_BYTES,
735
- ),
736
- installedVersion,
737
- ),
738
- );
739
- if (state) return state;
740
- } catch (error) {
741
- if (error instanceof FileIdentityChangedError
742
- || error instanceof CachePathChangedError
743
- || error instanceof CacheOperationRaceError) throw error;
744
- // An incomplete or corrupt generation is ignored in favor of the previous commit.
745
- }
746
- }
747
- return emptyState(installedVersion);
748
- });
749
- }
750
-
751
- async function operationIsActive(
752
- cacheDirectory,
753
- operation,
754
- token = cacheTokenFor(cacheDirectory),
755
- ) {
756
- try {
757
- return await guardedCacheEntryRead(
758
- token,
759
- operation.directory,
760
- assertSafeDirectory,
761
- async (directoryMetadata) => {
762
- try {
763
- const ownerMetadata = await fs.lstat(
764
- path.join(operation.directory, OPERATION_OWNER_FILE),
765
- { bigint: true },
766
- );
767
- if (!ownerMetadata.isFile() || ownerMetadata.isSymbolicLink()) return false;
768
- return metadataIsWithinLease(ownerMetadata);
769
- } catch (error) {
770
- if (error?.code !== 'ENOENT') throw error;
771
- return metadataIsWithinLease(directoryMetadata);
772
- }
773
- },
774
- );
775
- } catch (error) {
776
- if (error?.code === 'ENOENT') return false;
777
- throw error;
778
- }
779
- }
780
-
781
- function validateClaimOwner(value) {
782
- if (!isPlainObject(value)
783
- || !hasOnlyKeys(value, new Set(['pid', 'token', 'generation']))
784
- || !Number.isSafeInteger(value.pid)
785
- || value.pid <= 0
786
- || typeof value.token !== 'string'
787
- || !/^[a-f0-9]{32}$/.test(value.token)
788
- || typeof value.generation !== 'string'
789
- || !/^[1-9]\d*$/.test(value.generation)) return null;
790
- return { ...value, generation: BigInt(value.generation) };
791
- }
792
-
793
- function metadataIsWithinLease(metadata) {
794
- if (typeof metadata.mtimeNs === 'bigint') {
795
- const ageNs = (BigInt(Date.now()) * 1_000_000n) - metadata.mtimeNs;
796
- const absoluteAgeNs = ageNs < 0n ? -ageNs : ageNs;
797
- return absoluteAgeNs <= BigInt(LOCK_STALE_MS) * 1_000_000n;
798
- }
799
- return Math.abs(Date.now() - metadata.mtimeMs) <= LOCK_STALE_MS;
800
- }
801
-
802
- function corruptClaimStatus(directory, directoryMetadata, ownerMetadata = directoryMetadata) {
803
- if (metadataIsWithinLease(ownerMetadata)) {
804
- return { state: 'busy', directory, metadata: directoryMetadata, owner: null };
805
- }
806
- const fingerprint = crypto.createHash('sha256')
807
- .update(JSON.stringify({
808
- directory: {
809
- dev: directoryMetadata.dev.toString(),
810
- ino: directoryMetadata.ino.toString(),
811
- mode: directoryMetadata.mode.toString(),
812
- birthtimeNs: directoryMetadata.birthtimeNs.toString(),
813
- },
814
- }))
815
- .digest('hex')
816
- .slice(0, 24);
817
- return {
818
- state: 'releasable',
819
- directory,
820
- metadata: directoryMetadata,
821
- key: `corrupt-${fingerprint}`,
822
- owner: null,
823
- };
824
- }
825
-
826
- async function inspectActiveClaim(cacheDirectory) {
827
- const token = cacheTokenFor(cacheDirectory);
828
- return guardedCacheRead(token, async () => {
829
- const directory = path.join(cacheDirectory, ACTIVE_CLAIM_DIRECTORY);
830
- let directoryMetadata;
831
- try {
832
- directoryMetadata = await fs.lstat(directory, { bigint: true });
833
- } catch (error) {
834
- if (error?.code === 'ENOENT') return { state: 'absent', directory };
835
- throw error;
836
- }
837
- if (!directoryMetadata.isDirectory() || directoryMetadata.isSymbolicLink()) {
838
- return corruptClaimStatus(directory, directoryMetadata);
839
- }
840
- return guardedCacheEntryRead(
841
- token,
842
- directory,
843
- assertSafeDirectory,
844
- async (stableDirectoryMetadata) => {
845
- const ownerPath = path.join(directory, OPERATION_OWNER_FILE);
846
- let ownerMetadata = stableDirectoryMetadata;
847
- let owner = null;
848
- try {
849
- ownerMetadata = await fs.lstat(ownerPath, { bigint: true });
850
- if (!ownerMetadata.isFile()
851
- || ownerMetadata.isSymbolicLink()
852
- || ownerMetadata.size > BigInt(MAX_CLAIM_OWNER_BYTES)) {
853
- return corruptClaimStatus(directory, stableDirectoryMetadata, ownerMetadata);
854
- }
855
- const ownerSource = await readJsonFile(
856
- ownerPath,
857
- MAX_CLAIM_OWNER_BYTES,
858
- ownerMetadata,
859
- );
860
- owner = validateClaimOwner(ownerSource);
861
- } catch (error) {
862
- if (error instanceof FileIdentityChangedError) throw error;
863
- // A malformed claim is recoverable only after the same hard lease as a crashed owner.
864
- }
865
-
866
- if (owner) {
867
- const operations = await listOperations(cacheDirectory, token);
868
- if (operations.some((operation) => operation.generation === owner.generation
869
- && ['committed', 'fenced', 'cancelled'].includes(operation.kind))) {
870
- return {
871
- state: 'releasable',
872
- directory,
873
- metadata: stableDirectoryMetadata,
874
- key: owner.generation.toString(),
875
- owner,
876
- };
877
- }
878
- const pending = operations.find((operation) => operation.kind === 'pending'
879
- && operation.generation === owner.generation);
880
- if (pending) {
881
- if (await operationIsActive(cacheDirectory, pending, token)) {
882
- return {
883
- state: 'busy',
884
- directory,
885
- metadata: stableDirectoryMetadata,
886
- owner,
887
- };
888
- }
889
- return {
890
- state: 'releasable',
891
- directory,
892
- metadata: stableDirectoryMetadata,
893
- key: owner.generation.toString(),
894
- owner,
895
- };
896
- }
897
- }
898
-
899
- return corruptClaimStatus(directory, stableDirectoryMetadata, ownerMetadata);
900
- },
901
- directoryMetadata,
902
- );
903
- });
904
- }
905
-
906
- async function retireActiveClaim(cacheDirectory, claim) {
907
- const retirement = path.join(cacheDirectory, `retired-claim-${claim.key}`);
908
- await cacheMkdir(cacheDirectory, retirement, { mode: 0o700 }).catch((error) => {
909
- if (error?.code !== 'EEXIST') throw error;
910
- });
911
- try {
912
- const retirementMetadata = await fs.lstat(retirement);
913
- if (!retirementMetadata.isDirectory() || retirementMetadata.isSymbolicLink()) return false;
914
- } catch (error) {
915
- if (error instanceof CacheOperationRaceError) return false;
916
- if (error?.code === 'ENOENT') return false;
917
- throw error;
918
- }
919
- try {
920
- const metadata = await fs.lstat(claim.directory);
921
- if (metadata.isDirectory() && !metadata.isSymbolicLink()) {
922
- await cacheWriteFile(
923
- cacheDirectory,
924
- path.join(claim.directory, '.retirement-guard'),
925
- `${claim.key}\n`,
926
- { encoding: 'utf8', flag: 'wx', mode: 0o600 },
927
- ).catch((error) => {
928
- if (error?.code !== 'EEXIST') throw error;
929
- });
930
- }
931
- } catch (error) {
932
- if (error instanceof CacheOperationRaceError) return false;
933
- if (error?.code === 'ENOENT') return false;
934
- throw error;
935
- }
936
- try {
937
- await cacheRename(
938
- cacheDirectory,
939
- claim.directory,
940
- path.join(retirement, 'active'),
941
- assertRenameableCacheEntry,
942
- claim.metadata,
943
- );
944
- return true;
945
- } catch (error) {
946
- if (error instanceof CacheOperationRaceError) return false;
947
- if (['ENOENT', 'EEXIST', 'ENOTEMPTY', 'EPERM'].includes(error?.code)) return false;
948
- throw error;
949
- }
950
- }
951
-
952
- async function prepareOperationClaim(cacheDirectory, operation) {
953
- const directory = path.join(cacheDirectory, operationName('claim', operation.generation));
954
- await cacheMkdir(cacheDirectory, directory, { mode: 0o700 });
955
- await cacheWriteFile(
956
- cacheDirectory,
957
- path.join(directory, OPERATION_OWNER_FILE),
958
- `${JSON.stringify({
959
- pid: process.pid,
960
- token: operation.token,
961
- generation: operation.generation.toString(),
962
- })}\n`,
963
- { encoding: 'utf8', flag: 'wx', mode: 0o600 },
964
- );
965
- operation.preparedClaimDirectory = directory;
966
- }
967
-
968
- async function discardPreparedClaim(cacheDirectory, operation) {
969
- if (!operation.preparedClaimDirectory) return;
970
- const discarded = path.join(
971
- cacheDirectory,
972
- `discarded-claim-${operation.generation.toString().padStart(20, '0')}-${operation.token}`,
973
- );
974
- try {
975
- await cacheRename(
976
- cacheDirectory,
977
- operation.preparedClaimDirectory,
978
- discarded,
979
- assertSafeDirectory,
980
- );
981
- } catch (error) {
982
- if (error?.code !== 'ENOENT') throw error;
983
- }
984
- delete operation.preparedClaimDirectory;
985
- }
986
-
987
- async function promoteOperationClaim(cacheDirectory, operation) {
988
- await prepareOperationClaim(cacheDirectory, operation);
989
- const activeDirectory = path.join(cacheDirectory, ACTIVE_CLAIM_DIRECTORY);
990
- for (let attempt = 0; attempt < 8; attempt += 1) {
991
- if (await operationIsSuperseded(cacheDirectory, operation)) {
992
- await discardPreparedClaim(cacheDirectory, operation);
993
- return false;
994
- }
995
- const active = await inspectActiveClaim(cacheDirectory);
996
- if (active.state === 'busy') {
997
- await discardPreparedClaim(cacheDirectory, operation);
998
- return false;
999
- }
1000
- if (active.state === 'releasable') {
1001
- if (active.owner?.generation > operation.generation) {
1002
- await discardPreparedClaim(cacheDirectory, operation);
1003
- return false;
1004
- }
1005
- await retireActiveClaim(cacheDirectory, active);
1006
- continue;
1007
- }
1008
- try {
1009
- await cacheRename(
1010
- cacheDirectory,
1011
- operation.preparedClaimDirectory,
1012
- activeDirectory,
1013
- assertSafeDirectory,
1014
- );
1015
- delete operation.preparedClaimDirectory;
1016
- if (!await operationIsActive(cacheDirectory, operation)) return false;
1017
- return true;
1018
- } catch (promotionError) {
1019
- const raced = await inspectActiveClaim(cacheDirectory);
1020
- if (raced.state === 'absent') {
1021
- if (['EEXIST', 'ENOTEMPTY', 'EPERM'].includes(promotionError?.code)) continue;
1022
- await discardPreparedClaim(cacheDirectory, operation);
1023
- throw promotionError;
1024
- }
1025
- continue;
1026
- }
1027
- }
1028
- await discardPreparedClaim(cacheDirectory, operation);
1029
- return false;
1030
- }
1031
-
1032
- async function operationOwnsActiveClaim(cacheDirectory, operation) {
1033
- const active = await inspectActiveClaim(cacheDirectory);
1034
- return active.state === 'busy'
1035
- && active.owner?.generation === operation.generation
1036
- && active.owner.token === operation.token;
1037
- }
1038
-
1039
- async function hasActivePendingOperation(cacheDirectory) {
1040
- const token = cacheTokenFor(cacheDirectory);
1041
- return guardedCacheRead(token, async () => {
1042
- const pending = (await listOperations(cacheDirectory, token))
1043
- .filter((operation) => operation.kind === 'pending');
1044
- return (await Promise.all(pending.map(
1045
- (operation) => operationIsActive(cacheDirectory, operation, token),
1046
- ))).some(Boolean);
1047
- });
1048
- }
1049
-
1050
- async function reserveOperation(cacheDirectory) {
1051
- cacheDirectory = await prepareCacheDirectory(cacheDirectory);
1052
- const operations = await listOperations(cacheDirectory);
1053
- const occupied = new Set(operations.map((operation) => operation.generation.toString()));
1054
- let generation = 1n;
1055
- while (true) {
1056
- while (occupied.has(generation.toString())) generation += 1n;
1057
- if (generation > MAX_OPERATION_GENERATION) throw new Error('operation generation space exhausted');
1058
- const reservation = path.join(cacheDirectory, operationName('reserved', generation));
1059
- try {
1060
- await cacheMkdir(cacheDirectory, reservation, { mode: 0o700 });
1061
- } catch (error) {
1062
- if (error?.code !== 'EEXIST') throw error;
1063
- occupied.add(generation.toString());
1064
- generation += 1n;
1065
- continue;
1066
- }
1067
- const directory = path.join(cacheDirectory, operationName('pending', generation));
1068
- try {
1069
- await cacheMkdir(cacheDirectory, directory, { mode: 0o700 });
1070
- const operation = {
1071
- generation,
1072
- token: crypto.randomBytes(16).toString('hex'),
1073
- directory,
1074
- };
1075
- try {
1076
- await cacheWriteFile(
1077
- cacheDirectory,
1078
- path.join(directory, OPERATION_OWNER_FILE),
1079
- `${JSON.stringify({ pid: process.pid, token: operation.token })}\n`,
1080
- { encoding: 'utf8', flag: 'wx', mode: 0o600 },
1081
- );
1082
- } catch (error) {
1083
- if (await operationWasFenced(cacheDirectory, operation)) {
1084
- const fencedError = new OperationFencedError('operation was fenced while reserving');
1085
- fencedError.cause = error;
1086
- throw fencedError;
1087
- }
1088
- await cacheRename(
1089
- cacheDirectory,
1090
- directory,
1091
- path.join(cacheDirectory, operationName('cancelled', generation)),
1092
- assertSafeDirectory,
1093
- ).catch(() => {});
1094
- throw error;
1095
- }
1096
- return operation;
1097
- } catch (error) {
1098
- if (error?.code !== 'EEXIST') throw error;
1099
- occupied.add(generation.toString());
1100
- generation += 1n;
1101
- }
1102
- }
1103
- }
1104
-
1105
- async function operationIsSuperseded(cacheDirectory, operation) {
1106
- return (await listOperations(cacheDirectory))
1107
- .some((candidate) => candidate.generation > operation.generation);
1108
- }
1109
-
1110
- async function operationWasFenced(cacheDirectory, operation) {
1111
- const token = cacheTokenFor(cacheDirectory);
1112
- return guardedCacheRead(token, async () => {
1113
- try {
1114
- await fs.lstat(operation.directory, { bigint: true });
1115
- return false;
1116
- } catch (error) {
1117
- if (error?.code !== 'ENOENT') throw error;
1118
- }
1119
- const fencedDirectory = path.join(
1120
- cacheDirectory,
1121
- operationName('fenced', operation.generation),
1122
- );
1123
- try {
1124
- await stableCacheEntry(
1125
- token,
1126
- fencedDirectory,
1127
- assertSafeDirectory,
1128
- null,
1129
- true,
1130
- );
1131
- return true;
1132
- } catch (error) {
1133
- if (error?.code === 'ENOENT') return false;
1134
- throw error;
1135
- }
1136
- });
1137
- }
1138
-
1139
- async function transitionOperation(cacheDirectory, operation, kind) {
1140
- const destination = path.join(cacheDirectory, operationName(kind, operation.generation));
1141
- await cacheRename(cacheDirectory, operation.directory, destination, assertSafeDirectory);
1142
- }
1143
-
1144
- async function cancelOperation(cacheDirectory, operation) {
1145
- try {
1146
- await transitionOperation(cacheDirectory, operation, 'cancelled');
1147
- } catch (error) {
1148
- // A higher generation may already have fenced this unique pending directory.
1149
- if (error?.code !== 'ENOENT') throw error;
1150
- }
1151
- }
1152
-
1153
- async function acquireOperation(cacheDirectory) {
1154
- cacheDirectory = await prepareCacheDirectory(cacheDirectory);
1155
- if ((await inspectActiveClaim(cacheDirectory)).state === 'busy') return null;
1156
- if (await hasActivePendingOperation(cacheDirectory)) return null;
1157
- let operation;
1158
- try {
1159
- operation = await reserveOperation(cacheDirectory);
1160
- } catch (error) {
1161
- if (error instanceof OperationFencedError) return null;
1162
- throw error;
1163
- }
1164
- if (!await operationIsSuperseded(cacheDirectory, operation)
1165
- && await promoteOperationClaim(cacheDirectory, operation)) return operation;
1166
- await cancelOperation(cacheDirectory, operation);
1167
- return null;
1168
- }
1169
-
1170
- async function fenceLowerOperations(cacheDirectory, operation) {
1171
- const lower = (await listOperations(cacheDirectory))
1172
- .filter((candidate) => candidate.kind === 'pending'
1173
- && candidate.generation < operation.generation)
1174
- .sort((left, right) => (left.generation < right.generation ? -1 : 1));
1175
- for (const candidate of lower) {
1176
- try {
1177
- await cacheRename(
1178
- cacheDirectory,
1179
- candidate.directory,
1180
- path.join(cacheDirectory, operationName('fenced', candidate.generation)),
1181
- assertSafeDirectory,
1182
- );
1183
- } catch (error) {
1184
- if (error?.code !== 'ENOENT') throw error;
1185
- }
1186
- }
1187
- }
1188
-
1189
- async function commitOperation(cacheDirectory, operation, installedVersion, mutate) {
1190
- if (!await operationOwnsActiveClaim(cacheDirectory, operation)) {
1191
- await cancelOperation(cacheDirectory, operation);
1192
- return { fenced: true, result: silent('check-in-progress') };
1193
- }
1194
- await fenceLowerOperations(cacheDirectory, operation);
1195
- if (!await operationOwnsActiveClaim(cacheDirectory, operation)) {
1196
- await cancelOperation(cacheDirectory, operation);
1197
- return { fenced: true, result: silent('check-in-progress') };
1198
- }
1199
- const state = await readState(cacheDirectory, installedVersion);
1200
- const decision = mutate(state);
1201
- if (!decision.state) {
1202
- await cancelOperation(cacheDirectory, operation);
1203
- return { fenced: false, result: decision.result };
1204
- }
1205
- let committedState = decision.state;
1206
- let committedResult = decision.result;
1207
- let encodedState = encodeRecoverableState(committedState);
1208
- if (!encodedState && decision.capacityFallback) {
1209
- committedState = decision.capacityFallback.state;
1210
- committedResult = decision.capacityFallback.result;
1211
- encodedState = encodeRecoverableState(committedState);
1212
- }
1213
- if (!encodedState) {
1214
- await cancelOperation(cacheDirectory, operation);
1215
- return { fenced: false, result: silent('cache-unavailable') };
1216
- }
1217
- const temporary = path.join(
1218
- operation.directory,
1219
- `.state.${process.pid}.${crypto.randomBytes(8).toString('hex')}.tmp`,
1220
- );
1221
- try {
1222
- await cacheWriteFile(cacheDirectory, temporary, encodedState, {
1223
- flag: 'wx',
1224
- mode: 0o600,
1225
- });
1226
- await cacheRename(
1227
- cacheDirectory,
1228
- temporary,
1229
- path.join(operation.directory, OPERATION_STATE_FILE),
1230
- assertSafeRegularFile,
1231
- );
1232
- await transitionOperation(cacheDirectory, operation, 'committed');
1233
- return { fenced: false, result: committedResult };
1234
- } catch (error) {
1235
- if (await operationWasFenced(cacheDirectory, operation)) {
1236
- return { fenced: true, result: silent('check-in-progress') };
1237
- }
1238
- await cacheRm(cacheDirectory, temporary, { force: true }).catch(() => {});
1239
- throw error;
1240
- }
1241
- }
1242
-
1243
- function nextSuccessfulCheck(nowMs, random) {
1244
- const boundedRandom = Math.min(1, Math.max(0, Number(random()) || 0));
1245
- const multiplier = 0.8 + (boundedRandom * 0.4);
1246
- return new Date(nowMs + Math.round(CHECK_TTL_MS * multiplier)).toISOString();
1247
- }
1248
-
1249
- function nextFailedCheck(nowMs, failures) {
1250
- const delay = failures <= 1 ? FIRST_FAILURE_DELAY_MS : LATER_FAILURE_DELAY_MS;
1251
- return new Date(nowMs + delay).toISOString();
1252
- }
1253
-
1254
- function stateAfterFailedCheck(state, nowMs, withdrawCandidate = false) {
1255
- const failures = Math.min(state.check.consecutiveFailures + 1, 2);
1256
- return stateWithFailureCheck(
1257
- state,
1258
- nextFailedCheck(nowMs, failures),
1259
- failures,
1260
- withdrawCandidate,
1261
- );
1262
- }
1263
-
1264
- function eventKeyForDigest(targetDigest) {
1265
- return `${SKILL_ID}@${targetDigest}`;
1266
- }
1267
-
1268
- function digestForEventKey(eventKey) {
1269
- const prefix = `${SKILL_ID}@`;
1270
- if (typeof eventKey !== 'string' || !eventKey.startsWith(prefix)) return null;
1271
- const digest = eventKey.slice(prefix.length);
1272
- return DIGEST_PATTERN.test(digest) ? digest : null;
1273
- }
1274
-
1275
- function notification(localRelease, candidate) {
1276
- return {
1277
- status: 'update_available',
1278
- eventKey: eventKeyForDigest(candidate.targetDigest),
1279
- installedVersion: localRelease.version,
1280
- latestVersion: candidate.version,
1281
- targetDigest: candidate.targetDigest,
1282
- severity: candidate.severity,
1283
- summary: `Archify ${candidate.version} is available; see the official release notes for details.`,
1284
- releaseNotes: candidate.releaseNotes,
1285
- };
1286
- }
1287
-
1288
- function resultForCandidate(localRelease, state) {
1289
- if (!state.candidate) return silent('cache-valid');
1290
- const comparison = compareSemver(state.candidate.version, localRelease.version);
1291
- if (comparison <= 0) return silent('current');
1292
- if (state.notification.acknowledgedDigests.includes(state.candidate.targetDigest)) {
1293
- return silent('already-notified');
1294
- }
1295
- return notification(localRelease, state.candidate);
1296
- }
1297
-
1298
- async function readBoundedBody(response) {
1299
- const contentLength = Number(response.headers.get('content-length'));
1300
- if (Number.isFinite(contentLength) && contentLength > MAX_RESPONSE_BYTES) {
1301
- await cancelResponseBody(response);
1302
- throw new UpdateContractError('manifest response is too large');
1303
- }
1304
- if (!response.body || typeof response.body.getReader !== 'function') {
1305
- throw new UpdateContractError('manifest response has no bounded stream');
1306
- }
1307
- const reader = response.body.getReader();
1308
- const chunks = [];
1309
- let size = 0;
1310
- try {
1311
- while (true) {
1312
- const { done, value } = await reader.read();
1313
- if (done) break;
1314
- size += value.byteLength;
1315
- if (size > MAX_RESPONSE_BYTES) {
1316
- await reader.cancel().catch(() => {});
1317
- throw new UpdateContractError('manifest response is too large');
1318
- }
1319
- chunks.push(value);
1320
- }
1321
- } finally {
1322
- reader.releaseLock();
1323
- }
1324
- const joined = new Uint8Array(size);
1325
- let offset = 0;
1326
- for (const chunk of chunks) {
1327
- joined.set(chunk, offset);
1328
- offset += chunk.byteLength;
1329
- }
1330
- try {
1331
- return new TextDecoder('utf-8', { fatal: true }).decode(joined);
1332
- } catch {
1333
- throw new UpdateContractError('manifest is not valid UTF-8');
1334
- }
1335
- }
1336
-
1337
- async function cancelResponseBody(response) {
1338
- try {
1339
- if (response.body && typeof response.body.cancel === 'function') {
1340
- await response.body.cancel();
1341
- }
1342
- } catch {
1343
- // Network cleanup is best-effort; the original response classification wins.
1344
- }
1345
- }
1346
-
1347
- async function fetchCandidate({ fetchImpl, manifestUrl, timeoutMs }) {
1348
- if (manifestUrl !== DEFAULT_MANIFEST_URL) throw new UpdateContractError('unexpected manifest URL');
1349
- const controller = new AbortController();
1350
- let timer;
1351
- const timeout = new Promise((_resolve, reject) => {
1352
- timer = setTimeout(() => {
1353
- controller.abort();
1354
- reject(new Error('update check timed out'));
1355
- }, timeoutMs);
1356
- });
1357
- const request = (async () => {
1358
- const headers = { accept: 'application/json' };
1359
- const response = await fetchImpl(manifestUrl, {
1360
- method: 'GET',
1361
- headers,
1362
- redirect: 'error',
1363
- signal: controller.signal,
1364
- });
1365
- if (response.status !== 200) {
1366
- await cancelResponseBody(response);
1367
- throw new Error(`manifest returned HTTP ${response.status}`);
1368
- }
1369
- const mediaType = response.headers.get('content-type')?.split(';', 1)[0].trim().toLowerCase();
1370
- if (mediaType !== 'application/json') {
1371
- await cancelResponseBody(response);
1372
- throw new UpdateContractError('manifest is not JSON');
1373
- }
1374
- const source = await readBoundedBody(response);
1375
- let decoded;
1376
- try {
1377
- decoded = JSON.parse(source);
1378
- } catch {
1379
- throw new UpdateContractError('manifest is not valid bounded JSON');
1380
- }
1381
- return { candidate: validateManifest(decoded) };
1382
- })();
1383
- try {
1384
- return await Promise.race([request, timeout]);
1385
- } finally {
1386
- clearTimeout(timer);
1387
- }
1388
- }
1389
-
1390
- function defaultCacheDirectory() {
1391
- const homeDirectory = os.homedir();
1392
- if (process.platform === 'win32') {
1393
- const localData = process.env.LOCALAPPDATA;
1394
- return path.join(localData && path.isAbsolute(localData) ? localData : path.join(homeDirectory, 'AppData', 'Local'), 'archify-skill');
1395
- }
1396
- if (process.platform === 'darwin') return path.join(homeDirectory, 'Library', 'Caches', 'archify-skill');
1397
- const xdgCache = process.env.XDG_CACHE_HOME;
1398
- return path.join(xdgCache && path.isAbsolute(xdgCache) ? xdgCache : path.join(homeDirectory, '.cache'), 'archify-skill');
1399
- }
1400
-
1401
- function freshStateResult(localRelease, state, nowMs) {
1402
- const nextCheckAt = Date.parse(state.check.nextCheckAt || '');
1403
- if (Number.isFinite(nextCheckAt) && nextCheckAt > nowMs
1404
- && nextCheckAt <= nowMs + MAX_CACHE_HORIZON_MS) {
1405
- return resultForCandidate(localRelease, state);
1406
- }
1407
- return null;
1408
- }
1409
-
1410
- async function resultAfterLosingOperation(cacheDirectory, operation, localRelease) {
1411
- await cancelOperation(cacheDirectory, operation);
1412
- const cached = await readState(cacheDirectory, localRelease.version);
1413
- if (cached.candidate
1414
- && cached.notification.offeredDigests.includes(cached.candidate.targetDigest)) {
1415
- return resultForCandidate(localRelease, cached);
1416
- }
1417
- return silent('check-in-progress');
1418
- }
1419
-
1420
- async function waitUntilRetry(deadline, monotonicNow) {
1421
- let remaining;
1422
- try {
1423
- remaining = deadline - Number(monotonicNow());
1424
- } catch {
1425
- return false;
1426
- }
1427
- if (!Number.isFinite(remaining) || remaining <= 0) return false;
1428
- await new Promise((resolve) => setTimeout(
1429
- resolve,
1430
- Math.min(LOCK_RETRY_DELAY_MS, remaining),
1431
- ));
1432
- return true;
1433
- }
1434
-
1435
- export async function checkForUpdate({
1436
- releasePath = defaultReleasePath,
1437
- cacheDirectory = defaultCacheDirectory(),
1438
- fetchImpl = globalThis.fetch,
1439
- now = Date.now,
1440
- random = Math.random,
1441
- timeoutMs = DEFAULT_TIMEOUT_MS,
1442
- } = {}) {
1443
- if (typeof fetchImpl !== 'function') return silent('runtime-unavailable');
1444
- let localRelease;
1445
- try {
1446
- localRelease = validateLocalRelease(await readJsonFile(releasePath, MAX_LOCAL_RELEASE_BYTES));
1447
- } catch {
1448
- return silent('invalid-local-release');
1449
- }
1450
-
1451
- const nowMs = Number(now());
1452
- if (!Number.isFinite(nowMs)) return silent('invalid-clock');
1453
- let stateDirectory = versionCacheDirectory(cacheDirectory, localRelease.version);
1454
- let state;
1455
- try {
1456
- stateDirectory = await prepareCacheDirectory(stateDirectory);
1457
- state = await readState(stateDirectory, localRelease.version);
1458
- } catch {
1459
- return silent('cache-unavailable');
1460
- }
1461
- const cachedResult = freshStateResult(localRelease, state, nowMs);
1462
- if (cachedResult) return cachedResult;
1463
-
1464
- let operation;
1465
- try {
1466
- operation = await acquireOperation(stateDirectory);
1467
- } catch {
1468
- return silent('cache-unavailable');
1469
- }
1470
- if (!operation) {
1471
- try {
1472
- const cached = await readState(stateDirectory, localRelease.version);
1473
- if (cached.candidate
1474
- && cached.notification.offeredDigests.includes(cached.candidate.targetDigest)) {
1475
- return resultForCandidate(localRelease, cached);
1476
- }
1477
- } catch {
1478
- return silent('cache-unavailable');
1479
- }
1480
- return silent('check-in-progress');
1481
- }
1482
-
1483
- try {
1484
- state = await readState(stateDirectory, localRelease.version);
1485
- const racedResult = freshStateResult(localRelease, state, nowMs);
1486
- if (racedResult) {
1487
- await cancelOperation(stateDirectory, operation);
1488
- return racedResult;
1489
- }
1490
-
1491
- if (!await operationOwnsActiveClaim(stateDirectory, operation)) {
1492
- return await resultAfterLosingOperation(stateDirectory, operation, localRelease);
1493
- }
1494
-
1495
- await verifyCacheToken(cacheTokenFor(stateDirectory));
1496
- if (!await operationOwnsActiveClaim(stateDirectory, operation)) {
1497
- return await resultAfterLosingOperation(stateDirectory, operation, localRelease);
1498
- }
1499
- let fetched;
1500
- try {
1501
- fetched = await fetchCandidate({
1502
- fetchImpl,
1503
- manifestUrl: localRelease.updateManifestUrl,
1504
- timeoutMs,
1505
- });
1506
- } catch (error) {
1507
- const reason = error instanceof UpdateContractError ? 'invalid-manifest' : 'check-failed';
1508
- try {
1509
- const committed = await commitOperation(
1510
- stateDirectory,
1511
- operation,
1512
- localRelease.version,
1513
- (current) => ({
1514
- state: stateAfterFailedCheck(current, nowMs),
1515
- result: silent(reason),
1516
- }),
1517
- );
1518
- return committed.result;
1519
- } catch {
1520
- await cancelOperation(stateDirectory, operation).catch(() => {});
1521
- return silent('cache-unavailable');
1522
- }
1523
- }
1524
-
1525
- try {
1526
- const committed = await commitOperation(
1527
- stateDirectory,
1528
- operation,
1529
- localRelease.version,
1530
- (current) => {
1531
- const next = {
1532
- ...current,
1533
- candidate: fetched.candidate,
1534
- check: {
1535
- nextCheckAt: nextSuccessfulCheck(nowMs, random),
1536
- consecutiveFailures: 0,
1537
- },
1538
- notification: {
1539
- offeredDigests: [...current.notification.offeredDigests],
1540
- acknowledgedDigests: [...current.notification.acknowledgedDigests],
1541
- },
1542
- };
1543
- const result = resultForCandidate(localRelease, next);
1544
- if (result.status === 'update_available') {
1545
- if (!next.notification.offeredDigests.includes(next.candidate.targetDigest)) {
1546
- next.notification.offeredDigests.push(next.candidate.targetDigest);
1547
- }
1548
- }
1549
- return {
1550
- state: next,
1551
- result,
1552
- capacityFallback: {
1553
- state: stateAfterFailedCheck(current, nowMs, true),
1554
- result: silent('cache-unavailable'),
1555
- },
1556
- };
1557
- },
1558
- );
1559
- return committed.result;
1560
- } catch {
1561
- await cancelOperation(stateDirectory, operation).catch(() => {});
1562
- return silent('cache-unavailable');
1563
- }
1564
- } catch {
1565
- await cancelOperation(stateDirectory, operation).catch(() => {});
1566
- return silent('cache-unavailable');
1567
- }
1568
- }
1569
-
1570
- export async function acknowledgeUpdate({
1571
- releasePath = defaultReleasePath,
1572
- cacheDirectory = defaultCacheDirectory(),
1573
- eventKey,
1574
- monotonicNow = () => performance.now(),
1575
- } = {}) {
1576
- const targetDigest = digestForEventKey(eventKey);
1577
- if (!targetDigest || typeof monotonicNow !== 'function') {
1578
- return silent('invalid-acknowledgement');
1579
- }
1580
- let localRelease;
1581
- try {
1582
- localRelease = validateLocalRelease(await readJsonFile(releasePath, MAX_LOCAL_RELEASE_BYTES));
1583
- } catch {
1584
- return silent('invalid-local-release');
1585
- }
1586
- let stateDirectory = versionCacheDirectory(cacheDirectory, localRelease.version);
1587
- try {
1588
- stateDirectory = await prepareCacheDirectory(stateDirectory);
1589
- } catch {
1590
- return silent('cache-unavailable');
1591
- }
1592
- let deadline;
1593
- try {
1594
- deadline = Number(monotonicNow()) + ACK_LOCK_WAIT_MS;
1595
- } catch {
1596
- return silent('invalid-acknowledgement');
1597
- }
1598
- if (!Number.isFinite(deadline)) return silent('invalid-acknowledgement');
1599
- while (true) {
1600
- let operation;
1601
- try {
1602
- operation = await acquireOperation(stateDirectory);
1603
- } catch {
1604
- return silent('cache-unavailable');
1605
- }
1606
- if (!operation) {
1607
- if (!await waitUntilRetry(deadline, monotonicNow)) return silent('check-in-progress');
1608
- continue;
1609
- }
1610
- try {
1611
- const committed = await commitOperation(
1612
- stateDirectory,
1613
- operation,
1614
- localRelease.version,
1615
- (state) => {
1616
- const wasOffered = state.notification.offeredDigests.includes(targetDigest);
1617
- const wasAcknowledged = state.notification.acknowledgedDigests.includes(targetDigest);
1618
- if (!wasOffered && !wasAcknowledged) {
1619
- return { state: null, result: silent('invalid-acknowledgement') };
1620
- }
1621
- return {
1622
- state: stateAfterAcknowledgement(state, targetDigest),
1623
- result: { status: 'acknowledged', eventKey },
1624
- };
1625
- },
1626
- );
1627
- if (!committed.fenced) return committed.result;
1628
- if (!await waitUntilRetry(deadline, monotonicNow)) return silent('check-in-progress');
1629
- } catch {
1630
- await cancelOperation(stateDirectory, operation).catch(() => {});
1631
- return silent('cache-unavailable');
1632
- }
1633
- }
1634
- }
1635
-
1636
- async function runCli() {
1637
- if (process.env.ARCHIFY_UPDATE_CHECK_DISABLED === '1') return silent('disabled');
1638
- const argumentsList = process.argv.slice(2);
1639
- if (argumentsList.length === 0) return checkForUpdate();
1640
- if (argumentsList.length === 2 && argumentsList[0] === '--ack') {
1641
- return acknowledgeUpdate({ eventKey: argumentsList[1] });
1642
- }
1643
- return silent('invalid-arguments');
1644
- }
1645
-
1646
- async function isMainModule() {
1647
- if (!process.argv[1]) return false;
1648
- try {
1649
- const [entryPath, modulePath] = await Promise.all([
1650
- fs.realpath(path.resolve(process.argv[1])),
1651
- fs.realpath(fileURLToPath(import.meta.url)),
1652
- ]);
1653
- return entryPath === modulePath;
1654
- } catch {
1655
- return path.resolve(process.argv[1]) === path.resolve(fileURLToPath(import.meta.url));
1656
- }
1657
- }
1658
-
1659
- if (await isMainModule()) {
1660
- let result;
1661
- try {
1662
- result = await runCli();
1663
- } catch {
1664
- result = silent('check-failed');
1665
- }
1666
- process.stdout.write(`${JSON.stringify(result)}\n`);
1667
- }