create-yss-spec 2.1.10 → 2.1.11

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 (914) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/ask-matt/SKILL.md +8 -2
  4. package/template/.agents/skills/code-review/SKILL.md +6 -4
  5. package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  6. package/template/.agents/skills/implement/SKILL.md +1 -1
  7. package/template/.agents/skills/to-spec/SKILL.md +1 -1
  8. package/template/.agents/skills/yss-api-integration/SKILL.md +2 -0
  9. package/template/.agents/skills/yss-application/SKILL.md +52 -0
  10. package/template/.agents/skills/yss-application/agents/openai.yaml +5 -0
  11. package/template/{.claude/skills/yss-backend-scaffold-application/SKILL.md → .agents/skills/yss-application/references/application-layer-guide.md} +0 -7
  12. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  13. package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  14. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  18. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  19. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  22. package/template/.agents/skills/yss-domain/SKILL.md +5 -0
  23. package/template/{.claude/skills/yss-backend-scaffold-domain/SKILL.md → .agents/skills/yss-domain/references/domain-layer-guide.md} +0 -7
  24. package/template/.agents/skills/yss-microapp-commit/SKILL.md +2 -0
  25. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  26. package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -1
  27. package/template/.agents/skills/yss-repository/SKILL.md +5 -0
  28. package/template/{.codex/skills/yss-backend-scaffold-infrastructure/SKILL.md → .agents/skills/yss-repository/references/infrastructure-layer-guide.md} +0 -7
  29. package/template/.agents/skills/yss-router/references/boundaries.md +2 -6
  30. package/template/.agents/skills/yss-router/references/router-contract.yaml +8 -12
  31. package/template/.agents/skills/yss-source-index/references/source-map-config.md +0 -4
  32. package/template/.agents/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  33. package/template/.agents/skills/yss-web-controller/SKILL.md +1 -0
  34. package/template/.agents/skills/{yss-backend-scaffold-web/SKILL.md → yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
  35. package/template/.claude/skills/ask-matt/SKILL.md +8 -2
  36. package/template/.claude/skills/code-review/SKILL.md +6 -4
  37. package/template/.claude/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  38. package/template/.claude/skills/implement/SKILL.md +1 -1
  39. package/template/.claude/skills/to-spec/SKILL.md +1 -1
  40. package/template/.claude/skills/yss-api-integration/SKILL.md +2 -0
  41. package/template/.claude/skills/yss-application/SKILL.md +52 -0
  42. package/template/.claude/skills/yss-application/agents/openai.yaml +5 -0
  43. package/template/{.codex/skills/yss-backend-scaffold-application/SKILL.md → .claude/skills/yss-application/references/application-layer-guide.md} +0 -7
  44. package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  45. package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  46. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  47. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  48. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  49. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  50. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  51. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  52. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  53. package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  54. package/template/.claude/skills/yss-domain/SKILL.md +5 -0
  55. package/template/{.agents/skills/yss-backend-scaffold-domain/SKILL.md → .claude/skills/yss-domain/references/domain-layer-guide.md} +0 -7
  56. package/template/.claude/skills/yss-microapp-commit/SKILL.md +2 -0
  57. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  58. package/template/.claude/skills/yss-prototype-stage/SKILL.md +1 -1
  59. package/template/.claude/skills/yss-repository/SKILL.md +5 -0
  60. package/template/.claude/skills/{yss-backend-scaffold-infrastructure/SKILL.md → yss-repository/references/infrastructure-layer-guide.md} +0 -7
  61. package/template/.claude/skills/yss-router/references/boundaries.md +2 -6
  62. package/template/.claude/skills/yss-router/references/router-contract.yaml +8 -12
  63. package/template/.claude/skills/yss-source-index/references/source-map-config.md +0 -4
  64. package/template/.claude/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  65. package/template/.claude/skills/yss-web-controller/SKILL.md +1 -0
  66. package/template/{.codex/skills/yss-backend-scaffold-web/SKILL.md → .claude/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
  67. package/template/.codex/skills/ask-matt/SKILL.md +8 -2
  68. package/template/.codex/skills/code-review/SKILL.md +6 -4
  69. package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  70. package/template/.codex/skills/implement/SKILL.md +1 -1
  71. package/template/.codex/skills/to-spec/SKILL.md +1 -1
  72. package/template/.codex/skills/yss-api-integration/SKILL.md +2 -0
  73. package/template/.codex/skills/yss-application/SKILL.md +52 -0
  74. package/template/.codex/skills/yss-application/agents/openai.yaml +5 -0
  75. package/template/{.agents/skills/yss-backend-scaffold-application/SKILL.md → .codex/skills/yss-application/references/application-layer-guide.md} +0 -7
  76. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  77. package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  78. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  79. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  80. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  81. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  82. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  83. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  84. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  85. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  86. package/template/.codex/skills/yss-domain/SKILL.md +5 -0
  87. package/template/.codex/skills/{yss-backend-scaffold-domain/SKILL.md → yss-domain/references/domain-layer-guide.md} +0 -7
  88. package/template/.codex/skills/yss-microapp-commit/SKILL.md +2 -0
  89. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  90. package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -1
  91. package/template/.codex/skills/yss-repository/SKILL.md +5 -0
  92. package/template/{.hermes/skills/yss-backend-scaffold-infrastructure/SKILL.md → .codex/skills/yss-repository/references/infrastructure-layer-guide.md} +0 -7
  93. package/template/.codex/skills/yss-router/references/boundaries.md +2 -6
  94. package/template/.codex/skills/yss-router/references/router-contract.yaml +8 -12
  95. package/template/.codex/skills/yss-source-index/references/source-map-config.md +0 -4
  96. package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  97. package/template/.codex/skills/yss-web-controller/SKILL.md +1 -0
  98. package/template/{.hermes/skills/yss-backend-scaffold-web/SKILL.md → .codex/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
  99. package/template/.cursor/environment.json +5 -0
  100. package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +51 -0
  101. package/template/.cursor/skills/alibaba-java-code-style/agents/openai.yaml +4 -0
  102. package/template/.cursor/skills/alibaba-java-code-style/references/database-engineering-design.md +147 -0
  103. package/template/.cursor/skills/alibaba-java-code-style/references/java-programming.md +178 -0
  104. package/template/.cursor/skills/alibaba-java-code-style/references/reliability-test-security.md +89 -0
  105. package/template/.cursor/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
  106. package/template/.cursor/skills/ask-matt/SKILL.md +95 -0
  107. package/template/.cursor/skills/ask-matt/agents/openai.yaml +5 -0
  108. package/template/.cursor/skills/code-review/SKILL.md +117 -0
  109. package/template/.cursor/skills/code-review/agents/openai.yaml +3 -0
  110. package/template/.cursor/skills/codebase-design/DEEPENING.md +37 -0
  111. package/template/.cursor/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  112. package/template/.cursor/skills/codebase-design/SKILL.md +114 -0
  113. package/template/.cursor/skills/codebase-design/agents/openai.yaml +3 -0
  114. package/template/.cursor/skills/competitive-intelligence/SKILL.md +94 -0
  115. package/template/.cursor/skills/cross-repo-implementation-routing/SKILL.md +51 -0
  116. package/template/.cursor/skills/diagnosing-bugs/SKILL.md +138 -0
  117. package/template/.cursor/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  118. package/template/.cursor/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  119. package/template/.cursor/skills/dispatching-parallel-agents/SKILL.md +185 -0
  120. package/template/.cursor/skills/domain-modeling/ADR-FORMAT.md +47 -0
  121. package/template/.cursor/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  122. package/template/.cursor/skills/domain-modeling/SKILL.md +74 -0
  123. package/template/.cursor/skills/domain-modeling/agents/openai.yaml +3 -0
  124. package/template/.cursor/skills/grill-me/SKILL.md +7 -0
  125. package/template/.cursor/skills/grill-me/agents/openai.yaml +5 -0
  126. package/template/.cursor/skills/grill-with-docs/SKILL.md +19 -0
  127. package/template/.cursor/skills/grill-with-docs/agents/openai.yaml +5 -0
  128. package/template/.cursor/skills/grilling/SKILL.md +28 -0
  129. package/template/.cursor/skills/grilling/agents/openai.yaml +3 -0
  130. package/template/.cursor/skills/handoff/SKILL.md +16 -0
  131. package/template/.cursor/skills/handoff/agents/openai.yaml +5 -0
  132. package/template/.cursor/skills/high-fidelity-html-prototype/SKILL.md +106 -0
  133. package/template/.cursor/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
  134. package/template/.cursor/skills/implement/SKILL.md +15 -0
  135. package/template/.cursor/skills/implement/agents/openai.yaml +5 -0
  136. package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +50 -0
  137. package/template/.cursor/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  138. package/template/.cursor/skills/improve-codebase-architecture/SKILL.md +71 -0
  139. package/template/.cursor/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  140. package/template/.cursor/skills/lombok/SKILL.md +351 -0
  141. package/template/.cursor/skills/loop-me/SKILL.md +32 -0
  142. package/template/.cursor/skills/loop-me/agents/openai.yaml +5 -0
  143. package/template/.cursor/skills/maintaining-skills/SKILL.md +25 -0
  144. package/template/.cursor/skills/mapstruct/SKILL.md +334 -0
  145. package/template/.cursor/skills/migrate-to-shoehorn/SKILL.md +118 -0
  146. package/template/.cursor/skills/migrate-to-shoehorn/agents/openai.yaml +3 -0
  147. package/template/.cursor/skills/prototype/LOGIC.md +67 -0
  148. package/template/.cursor/skills/prototype/SKILL.md +26 -0
  149. package/template/.cursor/skills/prototype/UI.md +112 -0
  150. package/template/.cursor/skills/prototype/agents/openai.yaml +3 -0
  151. package/template/.cursor/skills/prototype-review/SKILL.md +74 -0
  152. package/template/.cursor/skills/prototype-review/agents/openai.yaml +4 -0
  153. package/template/.cursor/skills/research/SKILL.md +12 -0
  154. package/template/.cursor/skills/research/agents/openai.yaml +3 -0
  155. package/template/.cursor/skills/resolving-merge-conflicts/SKILL.md +14 -0
  156. package/template/.cursor/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  157. package/template/.cursor/skills/scaffold-exercises/SKILL.md +106 -0
  158. package/template/.cursor/skills/scaffold-exercises/agents/openai.yaml +3 -0
  159. package/template/.cursor/skills/setup-matt-pocock-skills/SKILL.md +125 -0
  160. package/template/.cursor/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  161. package/template/.cursor/skills/setup-matt-pocock-skills/domain.md +51 -0
  162. package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  163. package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  164. package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-local.md +66 -0
  165. package/template/.cursor/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  166. package/template/.cursor/skills/setup-pre-commit/SKILL.md +91 -0
  167. package/template/.cursor/skills/setup-pre-commit/agents/openai.yaml +3 -0
  168. package/template/.cursor/skills/setup-ts-deep-modules/SKILL.md +102 -0
  169. package/template/.cursor/skills/setup-ts-deep-modules/agents/openai.yaml +5 -0
  170. package/template/.cursor/skills/setup-ts-deep-modules/dependency-cruiser.config.cjs +95 -0
  171. package/template/.cursor/skills/tdd/SKILL.md +38 -0
  172. package/template/.cursor/skills/tdd/agents/openai.yaml +3 -0
  173. package/template/.cursor/skills/tdd/mocking.md +59 -0
  174. package/template/.cursor/skills/tdd/tests.md +77 -0
  175. package/template/.cursor/skills/teach/GLOSSARY-FORMAT.md +35 -0
  176. package/template/.cursor/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  177. package/template/.cursor/skills/teach/MISSION-FORMAT.md +31 -0
  178. package/template/.cursor/skills/teach/RESOURCES-FORMAT.md +32 -0
  179. package/template/.cursor/skills/teach/SKILL.md +140 -0
  180. package/template/.cursor/skills/teach/agents/openai.yaml +5 -0
  181. package/template/.cursor/skills/to-questionnaire/SKILL.md +53 -0
  182. package/template/.cursor/skills/to-questionnaire/agents/openai.yaml +5 -0
  183. package/template/.cursor/skills/to-spec/SKILL.md +75 -0
  184. package/template/.cursor/skills/to-spec/agents/openai.yaml +5 -0
  185. package/template/.cursor/skills/to-tickets/SKILL.md +105 -0
  186. package/template/.cursor/skills/to-tickets/agents/openai.yaml +5 -0
  187. package/template/.cursor/skills/triage/AGENT-BRIEF.md +207 -0
  188. package/template/.cursor/skills/triage/OUT-OF-SCOPE.md +105 -0
  189. package/template/.cursor/skills/triage/SKILL.md +112 -0
  190. package/template/.cursor/skills/triage/agents/openai.yaml +5 -0
  191. package/template/.cursor/skills/using-git-worktrees/SKILL.md +202 -0
  192. package/template/.cursor/skills/wait-what/SKILL.md +7 -0
  193. package/template/.cursor/skills/wait-what/agents/openai.yaml +5 -0
  194. package/template/.cursor/skills/wayfinder/SKILL.md +128 -0
  195. package/template/.cursor/skills/wayfinder/agents/openai.yaml +5 -0
  196. package/template/.cursor/skills/writing-beats/SKILL.md +67 -0
  197. package/template/.cursor/skills/writing-beats/agents/openai.yaml +5 -0
  198. package/template/.cursor/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
  199. package/template/.cursor/skills/writing-for-agents/SKILL.md +81 -0
  200. package/template/.cursor/skills/writing-for-agents/agents/openai.yaml +3 -0
  201. package/template/.cursor/skills/writing-fragments/SKILL.md +79 -0
  202. package/template/.cursor/skills/writing-fragments/agents/openai.yaml +5 -0
  203. package/template/.cursor/skills/writing-shape/SKILL.md +79 -0
  204. package/template/.cursor/skills/writing-shape/agents/openai.yaml +5 -0
  205. package/template/.cursor/skills/yss-api-integration/SKILL.md +429 -0
  206. package/template/.cursor/skills/yss-api-integration/agents/openai.yaml +5 -0
  207. package/template/.cursor/skills/yss-application/SKILL.md +52 -0
  208. package/template/.cursor/skills/yss-application/agents/openai.yaml +5 -0
  209. package/template/{.hermes/skills/yss-backend-scaffold-application/SKILL.md → .cursor/skills/yss-application/references/application-layer-guide.md} +0 -7
  210. package/template/.cursor/skills/yss-audit-log/SKILL.md +67 -0
  211. package/template/.cursor/skills/yss-audit-log/agents/openai.yaml +5 -0
  212. package/template/.cursor/skills/yss-audit-log/assets/AuditLogAspect.java +262 -0
  213. package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +37 -0
  214. package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +18 -0
  215. package/template/.cursor/skills/yss-audit-log/assets/YssAuditPublishService.java +69 -0
  216. package/template/.cursor/skills/yss-audit-log/references/README.md +69 -0
  217. package/template/.cursor/skills/yss-audit-log/references/source-index.md +43 -0
  218. package/template/.cursor/skills/yss-cache/SKILL.md +44 -0
  219. package/template/.cursor/skills/yss-cache/agents/openai.yaml +5 -0
  220. package/template/.cursor/skills/yss-cache/references/annotations.md +39 -0
  221. package/template/.cursor/skills/yss-cache/references/architecture.md +25 -0
  222. package/template/.cursor/skills/yss-cache/references/configuration.md +34 -0
  223. package/template/.cursor/skills/yss-cache/references/redis-fallback.md +23 -0
  224. package/template/.cursor/skills/yss-cache/references/redis-topology.md +62 -0
  225. package/template/.cursor/skills/yss-cache/references/serialization.md +17 -0
  226. package/template/.cursor/skills/yss-cache/references/source-index.md +67 -0
  227. package/template/.cursor/skills/yss-cache/references/troubleshooting.md +33 -0
  228. package/template/.cursor/skills/yss-cache/references/verification.md +34 -0
  229. package/template/.cursor/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  230. package/template/.cursor/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  231. package/template/.cursor/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  232. package/template/.cursor/skills/yss-components/SKILL.md +386 -0
  233. package/template/.cursor/skills/yss-components/agents/openai.yaml +5 -0
  234. package/template/.cursor/skills/yss-components/references/frontend-docs.md +9 -0
  235. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +96 -0
  236. package/template/.cursor/skills/yss-ddd-scaffold-generator/agents/openai.yaml +5 -0
  237. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +37 -0
  238. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/logback-spring.xml.template +15 -0
  239. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +84 -0
  240. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +19 -0
  241. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +43 -0
  242. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +50 -0
  243. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +36 -0
  244. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +34 -0
  245. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +95 -0
  246. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +44 -0
  247. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/jvm.config +1 -0
  248. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +3 -0
  249. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +128 -0
  250. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
  251. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.jar +0 -0
  252. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +18 -0
  253. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/mvnw +316 -0
  254. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/mvnw.cmd +188 -0
  255. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +194 -0
  256. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +420 -0
  257. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +199 -0
  258. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +5 -0
  259. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +8 -0
  260. package/template/{.claude/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  261. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +8 -0
  262. package/template/{.agents/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  263. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +8 -0
  264. package/template/{.claude/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  265. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +138 -0
  266. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +5 -0
  267. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +8 -0
  268. package/template/{.claude/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  269. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
  270. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
  271. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
  272. package/template/.cursor/skills/yss-design-system/SKILL.md +99 -0
  273. package/template/.cursor/skills/yss-design-system/agents/openai.yaml +5 -0
  274. package/template/.cursor/skills/yss-design-system/references/design-system.md +237 -0
  275. package/template/.cursor/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
  276. package/template/.cursor/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
  277. package/template/.cursor/skills/yss-distributed-id/SKILL.md +69 -0
  278. package/template/.cursor/skills/yss-distributed-id/agents/openai.yaml +5 -0
  279. package/template/.cursor/skills/yss-distributed-id/assets/AutoIdInterceptor.java +246 -0
  280. package/template/.cursor/skills/yss-distributed-id/assets/EnableDistributedId.java +25 -0
  281. package/template/.cursor/skills/yss-distributed-id/assets/LeafConf.java +36 -0
  282. package/template/.cursor/skills/yss-distributed-id/references/README.md +51 -0
  283. package/template/.cursor/skills/yss-distributed-id/references/source-index.md +86 -0
  284. package/template/.cursor/skills/yss-domain/SKILL.md +68 -0
  285. package/template/.cursor/skills/yss-domain/agents/openai.yaml +5 -0
  286. package/template/{.hermes/skills/yss-backend-scaffold-domain/SKILL.md → .cursor/skills/yss-domain/references/domain-layer-guide.md} +0 -7
  287. package/template/.cursor/skills/yss-dto/SKILL.md +86 -0
  288. package/template/.cursor/skills/yss-dto/agents/openai.yaml +5 -0
  289. package/template/.cursor/skills/yss-dto/assets/CommandDTO.java +8 -0
  290. package/template/.cursor/skills/yss-dto/assets/PageQuery.java +133 -0
  291. package/template/.cursor/skills/yss-dto/assets/QueryDTO.java +6 -0
  292. package/template/.cursor/skills/yss-dto/assets/Result.java +105 -0
  293. package/template/.cursor/skills/yss-dto/references/README.md +67 -0
  294. package/template/.cursor/skills/yss-dto/references/openapi-wire-profile.yaml +181 -0
  295. package/template/.cursor/skills/yss-dto/references/source-index.md +55 -0
  296. package/template/.cursor/skills/yss-excel-mvc/SKILL.md +66 -0
  297. package/template/.cursor/skills/yss-excel-mvc/agents/openai.yaml +5 -0
  298. package/template/.cursor/skills/yss-excel-mvc/assets/ExcelDynamicData.java +66 -0
  299. package/template/.cursor/skills/yss-excel-mvc/assets/RequestExcel.java +33 -0
  300. package/template/.cursor/skills/yss-excel-mvc/assets/RequestFastExcelArgumentResolver.java +272 -0
  301. package/template/.cursor/skills/yss-excel-mvc/assets/ResponseExcel.java +46 -0
  302. package/template/.cursor/skills/yss-excel-mvc/assets/ResponseFastExcelReturnValueHandler.java +154 -0
  303. package/template/.cursor/skills/yss-excel-mvc/references/README.md +5 -0
  304. package/template/.cursor/skills/yss-excel-mvc/references/source-index.md +74 -0
  305. package/template/.cursor/skills/yss-exception/SKILL.md +55 -0
  306. package/template/.cursor/skills/yss-exception/agents/openai.yaml +4 -0
  307. package/template/{.agents/skills/yss-log → .cursor/skills/yss-exception}/references/source-index.md +8 -7
  308. package/template/.cursor/skills/yss-formily/SKILL.md +304 -0
  309. package/template/.cursor/skills/yss-formily/agents/openai.yaml +5 -0
  310. package/template/.cursor/skills/yss-formily/references/examples.md +65 -0
  311. package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +189 -0
  312. package/template/.cursor/skills/yss-formily-schema-generator/agents/openai.yaml +5 -0
  313. package/template/.cursor/skills/yss-formily-schema-generator/assets/java-sdk/ExampleUsage.java +111 -0
  314. package/template/.cursor/skills/yss-formily-schema-generator/assets/java-sdk/YssFormilyDsl.java +1219 -0
  315. package/template/.cursor/skills/yss-formily-schema-generator/references/workflow.md +240 -0
  316. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +76 -0
  317. package/template/.cursor/skills/yss-hook/SKILL.md +200 -0
  318. package/template/.cursor/skills/yss-hook/agents/openai.yaml +5 -0
  319. package/template/.cursor/skills/yss-hook/references/frontend-docs.md +10 -0
  320. package/template/.cursor/skills/yss-microapp-commit/SKILL.md +201 -0
  321. package/template/.cursor/skills/yss-microapp-commit/agents/openai.yaml +5 -0
  322. package/template/.cursor/skills/yss-microapp-commit/references/scope-mapping.md +204 -0
  323. package/template/.cursor/skills/yss-mybatis/SKILL.md +77 -0
  324. package/template/.cursor/skills/yss-mybatis/agents/openai.yaml +5 -0
  325. package/template/.cursor/skills/yss-mybatis/assets/BaseRepository.java +112 -0
  326. package/template/.cursor/skills/yss-mybatis/assets/EntityQueryAspect.java +37 -0
  327. package/template/.cursor/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +18 -0
  328. package/template/.cursor/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +18 -0
  329. package/template/.cursor/skills/yss-mybatis/references/README.md +57 -0
  330. package/template/.cursor/skills/yss-mybatis/references/source-index.md +93 -0
  331. package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +82 -0
  332. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +130 -0
  333. package/template/.cursor/skills/yss-openapi-governance/agents/openai.yaml +4 -0
  334. package/template/.cursor/skills/yss-page-module-development/SKILL.md +153 -0
  335. package/template/.cursor/skills/yss-page-module-development/agents/openai.yaml +5 -0
  336. package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/constant.ts +32 -0
  337. package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/hooks/useRuleConfig.ts +158 -0
  338. package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/index.vue +188 -0
  339. package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
  340. package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/style.less +76 -0
  341. package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/constant.ts +128 -0
  342. package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/hooks/useQualityRuleList.ts +144 -0
  343. package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/hooks/useRuleActions.ts +141 -0
  344. package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/index.vue +175 -0
  345. package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/style.less +83 -0
  346. package/template/.cursor/skills/yss-page-module-development/references/frontend-docs.md +11 -0
  347. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +49 -0
  348. package/template/.cursor/skills/yss-product-lifecycle/agents/openai.yaml +4 -0
  349. package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +32 -0
  350. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +122 -0
  351. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +521 -0
  352. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +103 -0
  353. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +107 -0
  354. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +40 -0
  355. package/template/.cursor/skills/yss-repository/SKILL.md +76 -0
  356. package/template/.cursor/skills/yss-repository/agents/openai.yaml +5 -0
  357. package/template/{.agents/skills/yss-backend-scaffold-infrastructure/SKILL.md → .cursor/skills/yss-repository/references/infrastructure-layer-guide.md} +0 -7
  358. package/template/.cursor/skills/yss-resilience4j/SKILL.md +46 -0
  359. package/template/.cursor/skills/yss-resilience4j/agents/openai.yaml +4 -0
  360. package/template/{.hermes/skills/yss-jdbc → .cursor/skills/yss-resilience4j}/references/source-index.md +6 -6
  361. package/template/.cursor/skills/yss-router/SKILL.md +49 -0
  362. package/template/.cursor/skills/yss-router/agents/openai.yaml +4 -0
  363. package/template/.cursor/skills/yss-router/references/boundaries.md +50 -0
  364. package/template/.cursor/skills/yss-router/references/router-contract.yaml +245 -0
  365. package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +113 -0
  366. package/template/.cursor/skills/yss-router/references/yss-skill-execution-result.md +62 -0
  367. package/template/.cursor/skills/yss-security-algorithm/SKILL.md +52 -0
  368. package/template/.cursor/skills/yss-security-algorithm/agents/openai.yaml +4 -0
  369. package/template/{.agents/skills/yss-jdbc → .cursor/skills/yss-security-algorithm}/references/source-index.md +7 -5
  370. package/template/.cursor/skills/yss-source-index/SKILL.md +63 -0
  371. package/template/.cursor/skills/yss-source-index/agents/openai.yaml +4 -0
  372. package/template/.cursor/skills/yss-source-index/references/source-location.md +18 -0
  373. package/template/.cursor/skills/yss-source-index/references/source-map-config.md +30 -0
  374. package/template/.cursor/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
  375. package/template/.cursor/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
  376. package/template/.cursor/skills/yss-ui/SKILL.md +169 -0
  377. package/template/.cursor/skills/yss-ui/agents/openai.yaml +5 -0
  378. package/template/.cursor/skills/yss-ui/assets/demos/button/auth-basic.vue +24 -0
  379. package/template/.cursor/skills/yss-ui/assets/demos/button/auth-dropdown.vue +29 -0
  380. package/template/.cursor/skills/yss-ui/assets/demos/button/permission.vue +10 -0
  381. package/template/.cursor/skills/yss-ui/assets/demos/button/size.vue +12 -0
  382. package/template/.cursor/skills/yss-ui/assets/demos/button/states.vue +12 -0
  383. package/template/.cursor/skills/yss-ui/assets/demos/card/basic/index.vue +54 -0
  384. package/template/.cursor/skills/yss-ui/assets/demos/card/basic/style.less +41 -0
  385. package/template/.cursor/skills/yss-ui/assets/demos/card/cover/index.vue +25 -0
  386. package/template/.cursor/skills/yss-ui/assets/demos/card/flexible-layout/index.vue +122 -0
  387. package/template/.cursor/skills/yss-ui/assets/demos/card/flexible-layout/style.less +191 -0
  388. package/template/.cursor/skills/yss-ui/assets/demos/card/header-extra/index.vue +260 -0
  389. package/template/.cursor/skills/yss-ui/assets/demos/card/header-extra/style.less +124 -0
  390. package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/constants.ts +61 -0
  391. package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/index.vue +72 -0
  392. package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/metrics-cards.vue +70 -0
  393. package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/style.less +232 -0
  394. package/template/.cursor/skills/yss-ui/assets/demos/card/loading/index.vue +19 -0
  395. package/template/.cursor/skills/yss-ui/assets/demos/card/meta/index.vue +19 -0
  396. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/basic/constants.ts +44 -0
  397. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/basic/hooks/useConditionBasic.ts +18 -0
  398. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/basic/index.vue +100 -0
  399. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/linked/constants.ts +51 -0
  400. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/linked/hooks/useConditionLinked.ts +29 -0
  401. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/linked/index.vue +23 -0
  402. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/nesting-between/constants.ts +35 -0
  403. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/nesting-between/hooks/useConditionNesting.ts +25 -0
  404. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/nesting-between/index.vue +24 -0
  405. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/remote/constants.ts +7 -0
  406. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/remote/hooks/useConditionRemote.ts +75 -0
  407. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/remote/index.vue +23 -0
  408. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation/constants.ts +42 -0
  409. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation/hooks/useConditionBasic.ts +22 -0
  410. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation/index.vue +138 -0
  411. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation-custom/constants.ts +42 -0
  412. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation-custom/hooks/useConditionBasic.ts +22 -0
  413. package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation-custom/index.vue +134 -0
  414. package/template/.cursor/skills/yss-ui/assets/demos/cron/basic/index.vue +54 -0
  415. package/template/.cursor/skills/yss-ui/assets/demos/cron/select/index.vue +145 -0
  416. package/template/.cursor/skills/yss-ui/assets/demos/echarts/basic.vue +30 -0
  417. package/template/.cursor/skills/yss-ui/assets/demos/echarts/calendar-heatmap.vue +49 -0
  418. package/template/.cursor/skills/yss-ui/assets/demos/echarts/candlestick.vue +30 -0
  419. package/template/.cursor/skills/yss-ui/assets/demos/echarts/dark.vue +40 -0
  420. package/template/.cursor/skills/yss-ui/assets/demos/echarts/expose-methods.vue +97 -0
  421. package/template/.cursor/skills/yss-ui/assets/demos/echarts/funnel.vue +42 -0
  422. package/template/.cursor/skills/yss-ui/assets/demos/echarts/gauge.vue +25 -0
  423. package/template/.cursor/skills/yss-ui/assets/demos/echarts/line.vue +24 -0
  424. package/template/.cursor/skills/yss-ui/assets/demos/echarts/mix.vue +33 -0
  425. package/template/.cursor/skills/yss-ui/assets/demos/echarts/pie.vue +34 -0
  426. package/template/.cursor/skills/yss-ui/assets/demos/echarts/radar.vue +38 -0
  427. package/template/.cursor/skills/yss-ui/assets/demos/echarts/ring-segment.vue +77 -0
  428. package/template/.cursor/skills/yss-ui/assets/demos/echarts/scatter.vue +23 -0
  429. package/template/.cursor/skills/yss-ui/assets/demos/echarts/stacked-area.vue +55 -0
  430. package/template/.cursor/skills/yss-ui/assets/demos/echarts/stacked-bar.vue +52 -0
  431. package/template/.cursor/skills/yss-ui/assets/demos/echarts/treemap.vue +30 -0
  432. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/all-types/hooks/useAllTypes.ts +259 -0
  433. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/all-types/index.vue +33 -0
  434. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/async-remote/hooks/useAsyncRemote.ts +201 -0
  435. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/async-remote/index.vue +45 -0
  436. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/basic/index.vue +104 -0
  437. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/big-data/index.vue +82 -0
  438. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/custom-rule/index.vue +114 -0
  439. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/direct-editable/index.vue +94 -0
  440. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/drag/index.vue +125 -0
  441. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/filter/index.vue +107 -0
  442. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/linkage/index.vue +181 -0
  443. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/pagination-action/index.vue +131 -0
  444. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/required/index.vue +95 -0
  445. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/row-edit/index.vue +220 -0
  446. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/row-options/index.vue +165 -0
  447. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/slot-linkage/index.vue +184 -0
  448. package/template/.cursor/skills/yss-ui/assets/demos/edit-table/submit-view/index.vue +107 -0
  449. package/template/.cursor/skills/yss-ui/assets/demos/file-import/basic.vue +54 -0
  450. package/template/.cursor/skills/yss-ui/assets/demos/file-import/formily.vue +42 -0
  451. package/template/.cursor/skills/yss-ui/assets/demos/file-import/multiple.vue +33 -0
  452. package/template/.cursor/skills/yss-ui/assets/demos/file-import/result-slot.vue +30 -0
  453. package/template/.cursor/skills/yss-ui/assets/demos/formily/actions.vue +61 -0
  454. package/template/.cursor/skills/yss-ui/assets/demos/formily/align.vue +56 -0
  455. package/template/.cursor/skills/yss-ui/assets/demos/formily/async-validate.vue +69 -0
  456. package/template/.cursor/skills/yss-ui/assets/demos/formily/basic.vue +317 -0
  457. package/template/.cursor/skills/yss-ui/assets/demos/formily/collapse.vue +104 -0
  458. package/template/.cursor/skills/yss-ui/assets/demos/formily/custom-component.vue +75 -0
  459. package/template/.cursor/skills/yss-ui/assets/demos/formily/disabled.vue +71 -0
  460. package/template/.cursor/skills/yss-ui/assets/demos/formily/dynamic-array.vue +74 -0
  461. package/template/.cursor/skills/yss-ui/assets/demos/formily/dynamic.vue +59 -0
  462. package/template/.cursor/skills/yss-ui/assets/demos/formily/effects.vue +117 -0
  463. package/template/.cursor/skills/yss-ui/assets/demos/formily/events-inline.vue +82 -0
  464. package/template/.cursor/skills/yss-ui/assets/demos/formily/events-scope.vue +101 -0
  465. package/template/.cursor/skills/yss-ui/assets/demos/formily/grid.vue +71 -0
  466. package/template/.cursor/skills/yss-ui/assets/demos/formily/group.vue +102 -0
  467. package/template/.cursor/skills/yss-ui/assets/demos/formily/helper-slot.vue +50 -0
  468. package/template/.cursor/skills/yss-ui/assets/demos/formily/label-tip.vue +42 -0
  469. package/template/.cursor/skills/yss-ui/assets/demos/formily/linkage-multi.vue +127 -0
  470. package/template/.cursor/skills/yss-ui/assets/demos/formily/linkage.vue +78 -0
  471. package/template/.cursor/skills/yss-ui/assets/demos/formily/modes.vue +72 -0
  472. package/template/.cursor/skills/yss-ui/assets/demos/formily/remote-enum.vue +88 -0
  473. package/template/.cursor/skills/yss-ui/assets/demos/formily/slot.vue +54 -0
  474. package/template/.cursor/skills/yss-ui/assets/demos/formily/steps.vue +135 -0
  475. package/template/.cursor/skills/yss-ui/assets/demos/formily/submit-failed.vue +72 -0
  476. package/template/.cursor/skills/yss-ui/assets/demos/monaco/basic.vue +40 -0
  477. package/template/.cursor/skills/yss-ui/assets/demos/monaco/diff-basic.vue +143 -0
  478. package/template/.cursor/skills/yss-ui/assets/demos/monaco/fullscreen.vue +84 -0
  479. package/template/.cursor/skills/yss-ui/assets/demos/monaco/history-log-viewer.vue +586 -0
  480. package/template/.cursor/skills/yss-ui/assets/demos/monaco/log-viewer.vue +260 -0
  481. package/template/.cursor/skills/yss-ui/assets/demos/monaco/mock/mockLogApi.ts +199 -0
  482. package/template/.cursor/skills/yss-ui/assets/demos/monaco/monaco.vue +66 -0
  483. package/template/.cursor/skills/yss-ui/assets/demos/monaco/readonly.vue +20 -0
  484. package/template/.cursor/skills/yss-ui/assets/demos/monaco/resizable.vue +22 -0
  485. package/template/.cursor/skills/yss-ui/assets/demos/monaco/sql-schema.vue +20 -0
  486. package/template/.cursor/skills/yss-ui/assets/demos/monaco/switch-lang-theme.vue +48 -0
  487. package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table/constant.ts +18 -0
  488. package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table/index.vue +60 -0
  489. package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table/style.less +39 -0
  490. package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table-layout/hooks/useTreeTable.ts +158 -0
  491. package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table-layout/index.vue +88 -0
  492. package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table-layout/style.less +73 -0
  493. package/template/.cursor/skills/yss-ui/assets/demos/table/action/index.vue +83 -0
  494. package/template/.cursor/skills/yss-ui/assets/demos/table/action/style.less +3 -0
  495. package/template/.cursor/skills/yss-ui/assets/demos/table/action-auth/index.vue +41 -0
  496. package/template/.cursor/skills/yss-ui/assets/demos/table/action-slot/index.vue +62 -0
  497. package/template/.cursor/skills/yss-ui/assets/demos/table/action-slot/style.less +36 -0
  498. package/template/.cursor/skills/yss-ui/assets/demos/table/basic/hooks/useBasicTable.ts +205 -0
  499. package/template/.cursor/skills/yss-ui/assets/demos/table/basic/index.vue +89 -0
  500. package/template/.cursor/skills/yss-ui/assets/demos/table/basic/style.less +28 -0
  501. package/template/.cursor/skills/yss-ui/assets/demos/table/column-custom-search/hooks/useColumnCustomSearch.ts +236 -0
  502. package/template/.cursor/skills/yss-ui/assets/demos/table/column-custom-search/index.vue +141 -0
  503. package/template/.cursor/skills/yss-ui/assets/demos/table/column-custom-search/style.less +48 -0
  504. package/template/.cursor/skills/yss-ui/assets/demos/table/drag/index.vue +42 -0
  505. package/template/.cursor/skills/yss-ui/assets/demos/table/expand/action-expand.vue +142 -0
  506. package/template/.cursor/skills/yss-ui/assets/demos/table/expand/index.vue +35 -0
  507. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-async/index.vue +93 -0
  508. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-auto/index.vue +99 -0
  509. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-custom/index.vue +72 -0
  510. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-local/index.vue +112 -0
  511. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-mixed/index.vue +142 -0
  512. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-remote/constant.ts +129 -0
  513. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-remote/hooks/useTableData.ts +186 -0
  514. package/template/.cursor/skills/yss-ui/assets/demos/table/filter-remote/index.vue +73 -0
  515. package/template/.cursor/skills/yss-ui/assets/demos/table/group-header/index.vue +86 -0
  516. package/template/.cursor/skills/yss-ui/assets/demos/table/group-header/style.less +3 -0
  517. package/template/.cursor/skills/yss-ui/assets/demos/table/header-height/index.vue +29 -0
  518. package/template/.cursor/skills/yss-ui/assets/demos/table/header-height/style.less +9 -0
  519. package/template/.cursor/skills/yss-ui/assets/demos/table/merge-cells/hooks/useMergeCells.ts +183 -0
  520. package/template/.cursor/skills/yss-ui/assets/demos/table/merge-cells/index.vue +17 -0
  521. package/template/.cursor/skills/yss-ui/assets/demos/table/merge-cells/style.less +3 -0
  522. package/template/.cursor/skills/yss-ui/assets/demos/table/pagination-remote/hooks/usePaginationRemote.ts +106 -0
  523. package/template/.cursor/skills/yss-ui/assets/demos/table/pagination-remote/index.vue +24 -0
  524. package/template/.cursor/skills/yss-ui/assets/demos/table/renderers/index.vue +64 -0
  525. package/template/.cursor/skills/yss-ui/assets/demos/table/selection-checkbox/index.vue +88 -0
  526. package/template/.cursor/skills/yss-ui/assets/demos/table/selection-checkbox/style.less +9 -0
  527. package/template/.cursor/skills/yss-ui/assets/demos/table/selection-radio/index.vue +57 -0
  528. package/template/.cursor/skills/yss-ui/assets/demos/table/selection-radio/style.less +9 -0
  529. package/template/.cursor/skills/yss-ui/assets/demos/table/transform/index.vue +32 -0
  530. package/template/.cursor/skills/yss-ui/assets/demos/tree/basic-left/index.vue +124 -0
  531. package/template/.cursor/skills/yss-ui/assets/demos/tree/datasource-group/index.vue +31 -0
  532. package/template/.cursor/skills/yss-ui/assets/demos/tree/multi-checkable/index.vue +86 -0
  533. package/template/.cursor/skills/yss-ui/assets/demos/tree/multiple-select/index.vue +76 -0
  534. package/template/.cursor/skills/yss-ui/assets/demos/tree/resource-list/index.vue +41 -0
  535. package/template/.cursor/skills/yss-ui/assets/demos/tree/search-toolbar/index.vue +156 -0
  536. package/template/.cursor/skills/yss-ui/assets/demos/tree/slot-icon/index.vue +36 -0
  537. package/template/.cursor/skills/yss-ui/assets/demos/tree/slot-switcher-icon/index.vue +34 -0
  538. package/template/.cursor/skills/yss-ui/assets/docs/components/button.md +79 -0
  539. package/template/.cursor/skills/yss-ui/assets/docs/components/card.md +162 -0
  540. package/template/.cursor/skills/yss-ui/assets/docs/components/conditionBuilder.md +114 -0
  541. package/template/.cursor/skills/yss-ui/assets/docs/components/cron.md +77 -0
  542. package/template/.cursor/skills/yss-ui/assets/docs/components/echarts.md +110 -0
  543. package/template/.cursor/skills/yss-ui/assets/docs/components/editTable.md +212 -0
  544. package/template/.cursor/skills/yss-ui/assets/docs/components/fileImport.md +85 -0
  545. package/template/.cursor/skills/yss-ui/assets/docs/components/formily.md +370 -0
  546. package/template/.cursor/skills/yss-ui/assets/docs/components/monaco.md +369 -0
  547. package/template/.cursor/skills/yss-ui/assets/docs/components/sheet.md +169 -0
  548. package/template/.cursor/skills/yss-ui/assets/docs/components/split-pane.md +45 -0
  549. package/template/.cursor/skills/yss-ui/assets/docs/components/table.md +398 -0
  550. package/template/.cursor/skills/yss-ui/assets/docs/components/tree.md +102 -0
  551. package/template/.cursor/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +166 -0
  552. package/template/.cursor/skills/yss-ui/assets/docs/guide/index.md +132 -0
  553. package/template/.cursor/skills/yss-ui/assets/docs/guide/installation.md +97 -0
  554. package/template/.cursor/skills/yss-ui/assets/docs/guide/jsp.md +227 -0
  555. package/template/.cursor/skills/yss-ui/assets/docs/guide/llms.md +295 -0
  556. package/template/.cursor/skills/yss-ui/assets/docs/guide/monorepo-versioning.md +149 -0
  557. package/template/.cursor/skills/yss-ui/assets/docs/guide/release-workflow.md +251 -0
  558. package/template/.cursor/skills/yss-ui/assets/docs/hooks/use-table-height.md +101 -0
  559. package/template/.cursor/skills/yss-ui/assets/docs/hooks/use-tree-height.md +115 -0
  560. package/template/.cursor/skills/yss-ui/assets/docs/hooks/useFullscreen.md +130 -0
  561. package/template/.cursor/skills/yss-ui/assets/docs/hooks/useLoading.md +97 -0
  562. package/template/.cursor/skills/yss-ui/assets/docs/root/resources.md +18 -0
  563. package/template/.cursor/skills/yss-ui/assets/keyword-index.json +53 -0
  564. package/template/.cursor/skills/yss-ui/assets/keyword-index.md +47 -0
  565. package/template/.cursor/skills/yss-ui/assets/reference-index.json +55 -0
  566. package/template/.cursor/skills/yss-ui/assets/reference-index.md +74 -0
  567. package/template/.cursor/skills/yss-ui/assets/scenario-index.json +50 -0
  568. package/template/.cursor/skills/yss-ui/assets/scenario-index.md +41 -0
  569. package/template/.cursor/skills/yss-ui/references/accessibility.md +23 -0
  570. package/template/.cursor/skills/yss-ui/references/antdv-compatibility.md +39 -0
  571. package/template/.cursor/skills/yss-ui/references/checklist.md +110 -0
  572. package/template/.cursor/skills/yss-ui/references/component-routing.md +31 -0
  573. package/template/.cursor/skills/yss-ui/references/frontend-docs.md +11 -0
  574. package/template/.cursor/skills/yss-ui/references/migration-antdv-to-yss.md +20 -0
  575. package/template/.cursor/skills/yss-ui/references/quick-recipes.md +280 -0
  576. package/template/.cursor/skills/yss-ui/references/theme-locale-overlay.md +25 -0
  577. package/template/.cursor/skills/yss-ui/references/verification.md +20 -0
  578. package/template/.cursor/skills/yss-up-springboot3/SKILL.md +40 -0
  579. package/template/.cursor/skills/yss-up-springboot3/agents/openai.yaml +4 -0
  580. package/template/.cursor/skills/yss-use-table-height/SKILL.md +340 -0
  581. package/template/.cursor/skills/yss-use-table-height/agents/openai.yaml +5 -0
  582. package/template/.cursor/skills/yss-use-table-height/references/frontend-docs.md +9 -0
  583. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +431 -0
  584. package/template/.cursor/skills/yss-use-tree-height/agents/openai.yaml +5 -0
  585. package/template/.cursor/skills/yss-use-tree-height/references/frontend-docs.md +9 -0
  586. package/template/.cursor/skills/yss-userinfo/SKILL.md +49 -0
  587. package/template/.cursor/skills/yss-userinfo/agents/openai.yaml +4 -0
  588. package/template/{.codex/skills/yss-jdbc → .cursor/skills/yss-userinfo}/references/source-index.md +6 -5
  589. package/template/.cursor/skills/yss-validation/SKILL.md +56 -0
  590. package/template/.cursor/skills/yss-validation/agents/openai.yaml +4 -0
  591. package/template/{.claude/skills/yss-jdbc → .cursor/skills/yss-validation}/references/source-index.md +6 -6
  592. package/template/.cursor/skills/yss-web-controller/SKILL.md +78 -0
  593. package/template/.cursor/skills/yss-web-controller/agents/openai.yaml +5 -0
  594. package/template/.cursor/skills/yss-web-controller/assets/templates/Controller.java.template +73 -0
  595. package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template +23 -0
  596. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +23 -0
  597. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +23 -0
  598. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +21 -0
  599. package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +20 -0
  600. package/template/{.claude/skills/yss-backend-scaffold-web/SKILL.md → .cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
  601. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
  602. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
  603. package/template/.hermes/skills/ask-matt/SKILL.md +8 -2
  604. package/template/.hermes/skills/code-review/SKILL.md +6 -4
  605. package/template/.hermes/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  606. package/template/.hermes/skills/implement/SKILL.md +1 -1
  607. package/template/.hermes/skills/to-spec/SKILL.md +1 -1
  608. package/template/.hermes/skills/yss-api-integration/SKILL.md +2 -0
  609. package/template/.hermes/skills/yss-application/SKILL.md +52 -0
  610. package/template/.hermes/skills/yss-application/agents/openai.yaml +5 -0
  611. package/template/.hermes/skills/yss-application/references/application-layer-guide.md +132 -0
  612. package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  613. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  614. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  615. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  616. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  617. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  618. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  619. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  620. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  621. package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  622. package/template/.hermes/skills/yss-domain/SKILL.md +5 -0
  623. package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +274 -0
  624. package/template/.hermes/skills/yss-microapp-commit/SKILL.md +2 -0
  625. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  626. package/template/.hermes/skills/yss-prototype-stage/SKILL.md +1 -1
  627. package/template/.hermes/skills/yss-repository/SKILL.md +5 -0
  628. package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
  629. package/template/.hermes/skills/yss-router/references/boundaries.md +2 -6
  630. package/template/.hermes/skills/yss-router/references/router-contract.yaml +8 -12
  631. package/template/.hermes/skills/yss-source-index/references/source-map-config.md +0 -4
  632. package/template/.hermes/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  633. package/template/.hermes/skills/yss-web-controller/SKILL.md +1 -0
  634. package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
  635. package/template/.pi/skills/ask-matt/SKILL.md +8 -2
  636. package/template/.pi/skills/code-review/SKILL.md +6 -4
  637. package/template/.pi/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  638. package/template/.pi/skills/implement/SKILL.md +1 -1
  639. package/template/.pi/skills/to-spec/SKILL.md +1 -1
  640. package/template/.pi/skills/yss-api-integration/SKILL.md +2 -0
  641. package/template/.pi/skills/yss-application/SKILL.md +52 -0
  642. package/template/.pi/skills/yss-application/agents/openai.yaml +5 -0
  643. package/template/.pi/skills/yss-application/references/application-layer-guide.md +132 -0
  644. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  645. package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  646. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  647. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  648. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  649. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  650. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  651. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  652. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  653. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  654. package/template/.pi/skills/yss-domain/SKILL.md +5 -0
  655. package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +274 -0
  656. package/template/.pi/skills/yss-microapp-commit/SKILL.md +2 -0
  657. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  658. package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -1
  659. package/template/.pi/skills/yss-repository/SKILL.md +5 -0
  660. package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
  661. package/template/.pi/skills/yss-router/references/boundaries.md +2 -6
  662. package/template/.pi/skills/yss-router/references/router-contract.yaml +8 -12
  663. package/template/.pi/skills/yss-source-index/references/source-map-config.md +0 -4
  664. package/template/.pi/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  665. package/template/.pi/skills/yss-web-controller/SKILL.md +1 -0
  666. package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
  667. package/template/.qoder/skills/ask-matt/SKILL.md +8 -2
  668. package/template/.qoder/skills/code-review/SKILL.md +6 -4
  669. package/template/.qoder/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  670. package/template/.qoder/skills/implement/SKILL.md +1 -1
  671. package/template/.qoder/skills/to-spec/SKILL.md +1 -1
  672. package/template/.qoder/skills/yss-api-integration/SKILL.md +2 -0
  673. package/template/.qoder/skills/yss-application/SKILL.md +52 -0
  674. package/template/.qoder/skills/yss-application/agents/openai.yaml +5 -0
  675. package/template/.qoder/skills/yss-application/references/application-layer-guide.md +132 -0
  676. package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  677. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  678. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  679. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  680. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  681. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  682. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  683. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  684. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  685. package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  686. package/template/.qoder/skills/yss-domain/SKILL.md +5 -0
  687. package/template/.qoder/skills/yss-domain/references/domain-layer-guide.md +274 -0
  688. package/template/.qoder/skills/yss-microapp-commit/SKILL.md +2 -0
  689. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  690. package/template/.qoder/skills/yss-prototype-stage/SKILL.md +1 -1
  691. package/template/.qoder/skills/yss-repository/SKILL.md +5 -0
  692. package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
  693. package/template/.qoder/skills/yss-router/references/boundaries.md +2 -6
  694. package/template/.qoder/skills/yss-router/references/router-contract.yaml +8 -12
  695. package/template/.qoder/skills/yss-source-index/references/source-map-config.md +0 -4
  696. package/template/.qoder/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  697. package/template/.qoder/skills/yss-web-controller/SKILL.md +1 -0
  698. package/template/.qoder/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
  699. package/template/.trae/skills/ask-matt/SKILL.md +8 -2
  700. package/template/.trae/skills/code-review/SKILL.md +6 -4
  701. package/template/.trae/skills/high-fidelity-html-prototype/SKILL.md +1 -1
  702. package/template/.trae/skills/implement/SKILL.md +1 -1
  703. package/template/.trae/skills/to-spec/SKILL.md +1 -1
  704. package/template/.trae/skills/yss-api-integration/SKILL.md +2 -0
  705. package/template/.trae/skills/yss-application/SKILL.md +52 -0
  706. package/template/.trae/skills/yss-application/agents/openai.yaml +5 -0
  707. package/template/.trae/skills/yss-application/references/application-layer-guide.md +132 -0
  708. package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
  709. package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
  710. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
  711. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
  712. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
  713. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
  714. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
  715. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
  716. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
  717. package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
  718. package/template/.trae/skills/yss-domain/SKILL.md +5 -0
  719. package/template/.trae/skills/yss-domain/references/domain-layer-guide.md +274 -0
  720. package/template/.trae/skills/yss-microapp-commit/SKILL.md +2 -0
  721. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +1 -1
  722. package/template/.trae/skills/yss-prototype-stage/SKILL.md +1 -1
  723. package/template/.trae/skills/yss-repository/SKILL.md +5 -0
  724. package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
  725. package/template/.trae/skills/yss-router/references/boundaries.md +2 -6
  726. package/template/.trae/skills/yss-router/references/router-contract.yaml +8 -12
  727. package/template/.trae/skills/yss-source-index/references/source-map-config.md +0 -4
  728. package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
  729. package/template/.trae/skills/yss-web-controller/SKILL.md +1 -0
  730. package/template/.trae/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
  731. package/template/AGENTS.md +14 -1
  732. package/template/CONTEXT.md +1 -3
  733. package/template/README.md +2 -1
  734. package/template/docs/agents/README.md +6 -4
  735. package/template/docs/agents/skills-maintenance.md +3 -1
  736. package/template/docs/agents/yss-skill-registry.yaml +498 -0
  737. package/template/docs/architecture/templates/engineering-baseline-review-template.md +2 -2
  738. package/template/docs/templates/build-architecture-checklist-template.md +5 -5
  739. package/template/docs/templates/implementation-routing-template.md +5 -5
  740. package/template/docs/templates/review-report-template.md +3 -3
  741. package/template/docs/templates/vertical-slice-ticket-template.md +4 -4
  742. package/template/docs/user-guide//344/272/247/345/223/201/347/240/224/345/217/221/345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -1
  743. package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -2
  744. package/template/scripts/lib/skill-registry.mjs +198 -0
  745. package/template/scripts/lib/skill-supply-chain.mjs +7 -4
  746. package/template/scripts/verify-skill-registry +10 -0
  747. package/template/scripts/verify-template +3 -2
  748. package/template/skills-lock.json +101 -141
  749. package/template/yss-public-skills.json +2 -16
  750. package/template.snapshot.json +4 -4
  751. package/template/.agents/skills/product-design-prototype/SKILL.md +0 -91
  752. package/template/.agents/skills/product-design-prototype/agents/openai.yaml +0 -4
  753. package/template/.agents/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  754. package/template/.agents/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  755. package/template/.agents/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  756. package/template/.agents/skills/yss-dictionary/SKILL.md +0 -49
  757. package/template/.agents/skills/yss-dictionary/agents/openai.yaml +0 -4
  758. package/template/.agents/skills/yss-dictionary/references/source-index.md +0 -80
  759. package/template/.agents/skills/yss-jdbc/SKILL.md +0 -73
  760. package/template/.agents/skills/yss-jdbc/agents/openai.yaml +0 -5
  761. package/template/.agents/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  762. package/template/.agents/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  763. package/template/.agents/skills/yss-jdbc/assets/DsParam.java +0 -19
  764. package/template/.agents/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  765. package/template/.agents/skills/yss-jdbc/references/README.md +0 -55
  766. package/template/.agents/skills/yss-log/SKILL.md +0 -48
  767. package/template/.agents/skills/yss-log/agents/openai.yaml +0 -4
  768. package/template/.agents/skills/yss-taskflow/SKILL.md +0 -58
  769. package/template/.agents/skills/yss-taskflow/agents/openai.yaml +0 -4
  770. package/template/.agents/skills/yss-taskflow/references/source-index.md +0 -158
  771. package/template/.claude/skills/product-design-prototype/SKILL.md +0 -91
  772. package/template/.claude/skills/product-design-prototype/agents/openai.yaml +0 -4
  773. package/template/.claude/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  774. package/template/.claude/skills/yss-dictionary/SKILL.md +0 -49
  775. package/template/.claude/skills/yss-dictionary/agents/openai.yaml +0 -4
  776. package/template/.claude/skills/yss-dictionary/references/source-index.md +0 -80
  777. package/template/.claude/skills/yss-jdbc/SKILL.md +0 -73
  778. package/template/.claude/skills/yss-jdbc/agents/openai.yaml +0 -5
  779. package/template/.claude/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  780. package/template/.claude/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  781. package/template/.claude/skills/yss-jdbc/assets/DsParam.java +0 -19
  782. package/template/.claude/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  783. package/template/.claude/skills/yss-jdbc/references/README.md +0 -55
  784. package/template/.claude/skills/yss-log/SKILL.md +0 -48
  785. package/template/.claude/skills/yss-log/agents/openai.yaml +0 -4
  786. package/template/.claude/skills/yss-log/references/source-index.md +0 -34
  787. package/template/.claude/skills/yss-taskflow/SKILL.md +0 -58
  788. package/template/.claude/skills/yss-taskflow/agents/openai.yaml +0 -4
  789. package/template/.claude/skills/yss-taskflow/references/source-index.md +0 -158
  790. package/template/.codex/skills/product-design-prototype/SKILL.md +0 -91
  791. package/template/.codex/skills/product-design-prototype/agents/openai.yaml +0 -4
  792. package/template/.codex/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  793. package/template/.codex/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  794. package/template/.codex/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  795. package/template/.codex/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  796. package/template/.codex/skills/yss-dictionary/SKILL.md +0 -49
  797. package/template/.codex/skills/yss-dictionary/agents/openai.yaml +0 -4
  798. package/template/.codex/skills/yss-dictionary/references/source-index.md +0 -80
  799. package/template/.codex/skills/yss-jdbc/SKILL.md +0 -73
  800. package/template/.codex/skills/yss-jdbc/agents/openai.yaml +0 -5
  801. package/template/.codex/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  802. package/template/.codex/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  803. package/template/.codex/skills/yss-jdbc/assets/DsParam.java +0 -19
  804. package/template/.codex/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  805. package/template/.codex/skills/yss-jdbc/references/README.md +0 -55
  806. package/template/.codex/skills/yss-log/SKILL.md +0 -48
  807. package/template/.codex/skills/yss-log/agents/openai.yaml +0 -4
  808. package/template/.codex/skills/yss-log/references/source-index.md +0 -34
  809. package/template/.codex/skills/yss-taskflow/SKILL.md +0 -58
  810. package/template/.codex/skills/yss-taskflow/agents/openai.yaml +0 -4
  811. package/template/.codex/skills/yss-taskflow/references/source-index.md +0 -158
  812. package/template/.hermes/skills/product-design-prototype/SKILL.md +0 -91
  813. package/template/.hermes/skills/product-design-prototype/agents/openai.yaml +0 -4
  814. package/template/.hermes/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  815. package/template/.hermes/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  816. package/template/.hermes/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  817. package/template/.hermes/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  818. package/template/.hermes/skills/yss-dictionary/SKILL.md +0 -49
  819. package/template/.hermes/skills/yss-dictionary/agents/openai.yaml +0 -4
  820. package/template/.hermes/skills/yss-dictionary/references/source-index.md +0 -80
  821. package/template/.hermes/skills/yss-jdbc/SKILL.md +0 -73
  822. package/template/.hermes/skills/yss-jdbc/agents/openai.yaml +0 -5
  823. package/template/.hermes/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  824. package/template/.hermes/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  825. package/template/.hermes/skills/yss-jdbc/assets/DsParam.java +0 -19
  826. package/template/.hermes/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  827. package/template/.hermes/skills/yss-jdbc/references/README.md +0 -55
  828. package/template/.hermes/skills/yss-log/SKILL.md +0 -48
  829. package/template/.hermes/skills/yss-log/agents/openai.yaml +0 -4
  830. package/template/.hermes/skills/yss-log/references/source-index.md +0 -34
  831. package/template/.hermes/skills/yss-taskflow/SKILL.md +0 -58
  832. package/template/.hermes/skills/yss-taskflow/agents/openai.yaml +0 -4
  833. package/template/.hermes/skills/yss-taskflow/references/source-index.md +0 -158
  834. package/template/.pi/skills/product-design-prototype/SKILL.md +0 -91
  835. package/template/.pi/skills/product-design-prototype/agents/openai.yaml +0 -4
  836. package/template/.pi/skills/yss-backend-scaffold-application/SKILL.md +0 -139
  837. package/template/.pi/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  838. package/template/.pi/skills/yss-backend-scaffold-domain/SKILL.md +0 -281
  839. package/template/.pi/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  840. package/template/.pi/skills/yss-backend-scaffold-infrastructure/SKILL.md +0 -199
  841. package/template/.pi/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  842. package/template/.pi/skills/yss-backend-scaffold-web/SKILL.md +0 -175
  843. package/template/.pi/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  844. package/template/.pi/skills/yss-dictionary/SKILL.md +0 -49
  845. package/template/.pi/skills/yss-dictionary/agents/openai.yaml +0 -4
  846. package/template/.pi/skills/yss-dictionary/references/source-index.md +0 -80
  847. package/template/.pi/skills/yss-jdbc/SKILL.md +0 -73
  848. package/template/.pi/skills/yss-jdbc/agents/openai.yaml +0 -5
  849. package/template/.pi/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  850. package/template/.pi/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  851. package/template/.pi/skills/yss-jdbc/assets/DsParam.java +0 -19
  852. package/template/.pi/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  853. package/template/.pi/skills/yss-jdbc/references/README.md +0 -55
  854. package/template/.pi/skills/yss-jdbc/references/source-index.md +0 -33
  855. package/template/.pi/skills/yss-log/SKILL.md +0 -48
  856. package/template/.pi/skills/yss-log/agents/openai.yaml +0 -4
  857. package/template/.pi/skills/yss-log/references/source-index.md +0 -34
  858. package/template/.pi/skills/yss-taskflow/SKILL.md +0 -58
  859. package/template/.pi/skills/yss-taskflow/agents/openai.yaml +0 -4
  860. package/template/.pi/skills/yss-taskflow/references/source-index.md +0 -158
  861. package/template/.qoder/skills/product-design-prototype/SKILL.md +0 -91
  862. package/template/.qoder/skills/product-design-prototype/agents/openai.yaml +0 -4
  863. package/template/.qoder/skills/yss-backend-scaffold-application/SKILL.md +0 -139
  864. package/template/.qoder/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  865. package/template/.qoder/skills/yss-backend-scaffold-domain/SKILL.md +0 -281
  866. package/template/.qoder/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  867. package/template/.qoder/skills/yss-backend-scaffold-infrastructure/SKILL.md +0 -199
  868. package/template/.qoder/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  869. package/template/.qoder/skills/yss-backend-scaffold-web/SKILL.md +0 -175
  870. package/template/.qoder/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  871. package/template/.qoder/skills/yss-dictionary/SKILL.md +0 -49
  872. package/template/.qoder/skills/yss-dictionary/agents/openai.yaml +0 -4
  873. package/template/.qoder/skills/yss-dictionary/references/source-index.md +0 -80
  874. package/template/.qoder/skills/yss-jdbc/SKILL.md +0 -73
  875. package/template/.qoder/skills/yss-jdbc/agents/openai.yaml +0 -5
  876. package/template/.qoder/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  877. package/template/.qoder/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  878. package/template/.qoder/skills/yss-jdbc/assets/DsParam.java +0 -19
  879. package/template/.qoder/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  880. package/template/.qoder/skills/yss-jdbc/references/README.md +0 -55
  881. package/template/.qoder/skills/yss-jdbc/references/source-index.md +0 -33
  882. package/template/.qoder/skills/yss-log/SKILL.md +0 -48
  883. package/template/.qoder/skills/yss-log/agents/openai.yaml +0 -4
  884. package/template/.qoder/skills/yss-log/references/source-index.md +0 -34
  885. package/template/.qoder/skills/yss-taskflow/SKILL.md +0 -58
  886. package/template/.qoder/skills/yss-taskflow/agents/openai.yaml +0 -4
  887. package/template/.qoder/skills/yss-taskflow/references/source-index.md +0 -158
  888. package/template/.trae/skills/product-design-prototype/SKILL.md +0 -91
  889. package/template/.trae/skills/product-design-prototype/agents/openai.yaml +0 -4
  890. package/template/.trae/skills/yss-backend-scaffold-application/SKILL.md +0 -139
  891. package/template/.trae/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  892. package/template/.trae/skills/yss-backend-scaffold-domain/SKILL.md +0 -281
  893. package/template/.trae/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  894. package/template/.trae/skills/yss-backend-scaffold-infrastructure/SKILL.md +0 -199
  895. package/template/.trae/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  896. package/template/.trae/skills/yss-backend-scaffold-web/SKILL.md +0 -175
  897. package/template/.trae/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  898. package/template/.trae/skills/yss-dictionary/SKILL.md +0 -49
  899. package/template/.trae/skills/yss-dictionary/agents/openai.yaml +0 -4
  900. package/template/.trae/skills/yss-dictionary/references/source-index.md +0 -80
  901. package/template/.trae/skills/yss-jdbc/SKILL.md +0 -73
  902. package/template/.trae/skills/yss-jdbc/agents/openai.yaml +0 -5
  903. package/template/.trae/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
  904. package/template/.trae/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
  905. package/template/.trae/skills/yss-jdbc/assets/DsParam.java +0 -19
  906. package/template/.trae/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
  907. package/template/.trae/skills/yss-jdbc/references/README.md +0 -55
  908. package/template/.trae/skills/yss-jdbc/references/source-index.md +0 -33
  909. package/template/.trae/skills/yss-log/SKILL.md +0 -48
  910. package/template/.trae/skills/yss-log/agents/openai.yaml +0 -4
  911. package/template/.trae/skills/yss-log/references/source-index.md +0 -34
  912. package/template/.trae/skills/yss-taskflow/SKILL.md +0 -58
  913. package/template/.trae/skills/yss-taskflow/agents/openai.yaml +0 -4
  914. package/template/.trae/skills/yss-taskflow/references/source-index.md +0 -158
@@ -0,0 +1,178 @@
1
+ # Java Programming Rules
2
+
3
+ Use this reference for Java implementation and review: naming, constants, formatting, OOP, collections, concurrency, control flow, comments, and general coding traps.
4
+
5
+ ## Naming
6
+
7
+ Mandatory:
8
+
9
+ - Do not start or end identifiers with `_` or `$`.
10
+ - Do not mix pinyin and English; do not use Chinese identifiers. Widely recognized names such as `alibaba`, `taobao`, `youku`, and `hangzhou` are acceptable.
11
+ - Use `UpperCamelCase` for classes, except suffix acronyms such as `DO`, `BO`, `DTO`, `VO`, `AO`, `PO`, and `UID`.
12
+ - Use `lowerCamelCase` for methods, parameters, member variables, and local variables.
13
+ - Use uppercase words separated by underscores for constants, with complete semantics such as `MAX_STOCK_COUNT`.
14
+ - Name abstract classes with `Abstract` or `Base` prefixes, exception classes with `Exception` suffixes, and test classes as the tested class name plus `Test`.
15
+ - Put brackets next to the type for arrays: `String[] args`, not `String args[]`.
16
+ - Do not prefix POJO boolean properties with `is`; frameworks may mis-detect the property name. Map database `is_xxx` fields explicitly.
17
+ - Package names must be lowercase, singular, dot-separated, and each segment should be one natural English word.
18
+ - Avoid nonstandard abbreviations that hide meaning.
19
+
20
+ Recommended/reference:
21
+
22
+ - Prefer complete words for self-explanatory names.
23
+ - If a module, interface, class, or method uses a design pattern, reflect the pattern in the name, such as `OrderFactory`, `LoginProxy`, or `ResourceObserver`.
24
+ - Interface methods and fields should omit redundant `public` modifiers and include useful Javadoc.
25
+ - For `Service` and `DAO`, expose interfaces and name implementations with `Impl`.
26
+ - Capability interfaces may use adjective names such as `Translatable`.
27
+ - Enum class names may end with `Enum`; enum members use uppercase underscores.
28
+ - Layer method prefixes: `get` for one object, `list` for multiple objects, `count`, `save`/`insert`, `remove`/`delete`, and `update`.
29
+ - Model suffixes: `xxxDO`, `xxxDTO`, `xxxVO`; do not name a class `xxxPOJO`.
30
+
31
+ ## Constants
32
+
33
+ Mandatory:
34
+
35
+ - Do not use magic values directly in code. Define named constants.
36
+ - Use uppercase `L` for `long`/`Long` literals, never lowercase `l`.
37
+
38
+ Recommended:
39
+
40
+ - Do not keep every constant in one universal constant class. Group by function and scope.
41
+ - Choose the smallest sensible reuse scope: cross-application library, application, submodule, package, or class-local `private static final`.
42
+ - Use `enum` when values vary only within a fixed set, especially when values have attributes.
43
+
44
+ ## Formatting
45
+
46
+ Mandatory:
47
+
48
+ - For non-empty blocks, put `{` on the same line, newline after `{`, newline before `}`, and keep `} else {` on one line. Empty blocks may be `{}`.
49
+ - Do not put spaces immediately inside parentheses. Put one space before `{`.
50
+ - Put one space between reserved words and `(` for `if`, `for`, `while`, `switch`, and `do`.
51
+ - Put one space around binary and ternary operators.
52
+ - Use 4 spaces for indentation; do not use tab characters.
53
+ - `//` comments must have exactly one space after the slashes.
54
+ - Keep lines at or below 120 characters. When wrapping, indent the second line 4 spaces, keep operators and dots with the following line, wrap method arguments after commas, and do not break before `(`.
55
+ - Add a space after commas in method definitions and calls.
56
+ - Use UTF-8 and Unix line endings.
57
+
58
+ Recommended:
59
+
60
+ - Keep a single method under 80 lines, including signature, braces, code, comments, blank lines, and invisible characters.
61
+ - Do not align variables by adding decorative spaces.
62
+ - Insert one blank line between different logical or business sections; avoid multiple blank lines.
63
+
64
+ ## OOP And POJO
65
+
66
+ Mandatory:
67
+
68
+ - Access static members through the class name, not an object reference.
69
+ - Add `@Override` to all overridden methods.
70
+ - Use varargs only for same-type, same-meaning arguments; avoid `Object...`.
71
+ - Do not change method signatures of externally used APIs or library APIs. Deprecate old interfaces with `@Deprecated` and document replacements.
72
+ - Do not use deprecated classes or methods.
73
+ - Call `equals` on constants or known non-null objects, or use `Objects.equals`.
74
+ - Compare wrapper objects of the same type with `equals`, not `==`.
75
+ - Use wrapper types for all POJO fields and RPC parameters/returns; prefer primitive types for local variables.
76
+ - Do not set default values on DO/DTO/VO fields.
77
+ - When adding fields to serializable classes, do not change `serialVersionUID` unless the change is intentionally incompatible.
78
+ - Do not put business logic in constructors; use an init method or lifecycle hook.
79
+ - POJO classes must implement `toString`; include `super.toString()` when extending another POJO.
80
+ - Do not define both `isXxx()` and `getXxx()` for the same POJO property.
81
+
82
+ Recommended:
83
+
84
+ - Before indexing into `String.split` results, account for trailing separators.
85
+ - Keep overloaded methods and multiple constructors adjacent.
86
+ - Order methods as public/protected methods, private methods, then getters/setters, except overloaded groups.
87
+ - Setter parameter names should match field names and use `this.field = field`.
88
+ - Do not add business logic to getters or setters.
89
+ - Use `StringBuilder.append` for string concatenation inside loops.
90
+ - Use `final` for non-inheritable classes, non-overridable methods, immutable references, non-reassigned locals, or to avoid variable reuse confusion.
91
+ - Be careful with `Object.clone`; default clone is shallow.
92
+ - Minimize access scope: private constructors for non-instantiable classes, no public/default constructors in utility classes, private fields and methods unless broader access is truly required, and consider `final` for static fields.
93
+
94
+ ## Collections
95
+
96
+ Mandatory:
97
+
98
+ - If overriding `equals`, also override `hashCode`.
99
+ - Objects stored in `Set` or used as `Map` keys must implement both `equals` and `hashCode`.
100
+ - Do not cast `ArrayList.subList` results to `ArrayList`; it is a view.
101
+ - Do not structurally modify the original list while iterating or changing a `subList`.
102
+ - Convert collections to arrays with `toArray(new T[list.size()])`, not raw `toArray()`.
103
+ - Do not call mutating methods on `Arrays.asList` results.
104
+ - Respect PECS: `? extends T` is for producers/readers and cannot safely accept `add`; `? super T` is for consumers/writers and cannot safely provide typed `get`.
105
+ - Do not remove/add elements inside foreach loops; use an `Iterator` and `iterator.remove()`. Lock the iterator if operations are concurrent.
106
+ - Comparators must be symmetric, transitive, and handle equality consistently.
107
+
108
+ Recommended:
109
+
110
+ - Use diamond syntax or type inference where supported.
111
+ - Specify initial collection capacity where size is known; for `HashMap`, use roughly `expectedSize / 0.75 + 1`, or default 16 when unknown.
112
+ - Iterate maps with `entrySet` or `Map.forEach` when both key and value are needed.
113
+ - Know map null support: `ConcurrentHashMap` and `Hashtable` reject null keys/values; `TreeMap` rejects null keys; `HashMap` allows null keys/values.
114
+ - Use set uniqueness to de-duplicate rather than repeated `List.contains`.
115
+
116
+ ## Concurrency
117
+
118
+ Mandatory:
119
+
120
+ - Singleton acquisition and singleton methods must be thread-safe.
121
+ - Name threads and thread pools meaningfully.
122
+ - Provide thread resources through thread pools; do not create raw application threads casually.
123
+ - Do not create production thread pools through `Executors`; use `ThreadPoolExecutor` so queue size, thread count, rejection policy, and resource limits are explicit.
124
+ - Do not use static `SimpleDateFormat` without synchronization. Prefer `DateTimeFormatter`/`java.time`, `ThreadLocal`, or a safe date utility.
125
+ - In high concurrency, minimize lock cost: prefer lock-free structures, small locked blocks, and object locks over class locks where suitable.
126
+ - Keep a consistent lock acquisition order across resources to avoid deadlock.
127
+ - For concurrent updates to one record, use application/cache locks or database optimistic locks with a `version` field; retry optimistic locks at least 3 times.
128
+ - Prefer `ScheduledExecutorService` over `Timer` for multiple scheduled tasks, because one uncaught `TimerTask` exception stops other tasks.
129
+
130
+ Recommended/reference:
131
+
132
+ - With `CountDownLatch`, call `countDown` in `finally` or otherwise guarantee it runs even on exceptions.
133
+ - Prefer `ThreadLocalRandom` over shared `Random`/`Math.random` in concurrent code.
134
+ - If using double-checked locking on JDK 5+, declare the target field `volatile`.
135
+ - `volatile` solves visibility for one writer/many readers but not compound writes; use `AtomicInteger`, `AtomicLong`, or `LongAdder` for counters.
136
+ - Avoid unsynchronized high-concurrency `HashMap` resizing; use concurrent collections or locking.
137
+ - Declare `ThreadLocal` fields as `static` when the per-thread value should be shared by all instances of the class.
138
+
139
+ ## Control Flow And Parameters
140
+
141
+ Mandatory:
142
+
143
+ - Every `switch` case must end with `break`, `return`, or a comment explaining fallthrough. Every `switch` must have a final `default`.
144
+ - Always use braces for `if`, `else`, `for`, `while`, and `do`, even for one line.
145
+ - In high-concurrency exit logic, avoid equality-only checks; prefer range checks that cannot be skipped by concurrent changes.
146
+ - Do not exceed 3 levels of `if/else`; use guard clauses, strategy, or state pattern.
147
+
148
+ Recommended:
149
+
150
+ - Prefer guard clauses for exceptional branches.
151
+ - Do not put complex expressions inside conditions. Assign them to well-named boolean variables first.
152
+ - Move object creation, connection acquisition, unnecessary try/catch, and other expensive operations outside loops where possible.
153
+ - Avoid negated logic when an equivalent positive condition is available.
154
+ - Protect interface parameters, especially batch operations.
155
+ - Validate parameters for low-frequency, expensive, high-stability, external, or sensitive-permission methods.
156
+ - You may omit repeated validation for hot private or low-level methods only when callers have already validated and method docs state the expectation.
157
+
158
+ ## Comments And General Rules
159
+
160
+ Mandatory:
161
+
162
+ - Use Javadoc (`/** ... */`) for classes, fields, and methods. Do not use `//` as class or method API documentation.
163
+ - Abstract methods and interface methods need Javadoc explaining purpose, parameters, returns, exceptions, and implementation notes.
164
+ - Classes must include creator and creation date if the repository convention requires Alibaba manual compliance; otherwise follow local project header policy.
165
+ - Place single-line comments above the code they explain. Align multi-line block comments with code.
166
+ - Every enum value must have a comment explaining its purpose.
167
+ - Precompile regular expressions; do not call `Pattern.compile` repeatedly inside method bodies.
168
+ - Use `System.currentTimeMillis()` for current milliseconds, not `new Date().getTime()`. Use `System.nanoTime()` for elapsed time measurement; Java 8 may use `Instant`.
169
+
170
+ Recommended/reference:
171
+
172
+ - Prefer clear Chinese comments over awkward English; keep technical terms in English.
173
+ - Update comments when changing parameters, returns, exceptions, or core logic.
174
+ - Delete dead code. If temporarily commenting code, explain why above it.
175
+ - Keep comments concise and focused on design intent, business meaning, and non-obvious logic.
176
+ - Mark `TODO`/`FIXME` with owner, date, and expected handling time when possible.
177
+ - Do not put complex logic in view templates.
178
+ - Specify data structure capacity where possible.
@@ -0,0 +1,89 @@
1
+ # Reliability, Test, And Security Rules
2
+
3
+ Use this reference for exception handling, logging, unit testing, and security-sensitive Java work.
4
+
5
+ ## Exception Handling
6
+
7
+ Mandatory:
8
+
9
+ - Do not catch avoidable runtime exceptions such as `NullPointerException` or `IndexOutOfBoundsException`; prevent them with prechecks.
10
+ - Do not use exceptions for normal process or branch control.
11
+ - Keep try blocks focused on unstable code. Catch specific exception types where behavior differs.
12
+ - Never swallow caught exceptions. Handle them, translate them to user-understandable content at the outer business boundary, or rethrow.
13
+ - In transactional code, if a caught exception requires rollback, explicitly trigger rollback according to the framework.
14
+ - Always close resources and streams in `finally` or use try-with-resources. Handle close exceptions appropriately.
15
+ - Do not `return` from a `finally` block.
16
+ - Caught exception types must match thrown exceptions exactly or be an appropriate parent type.
17
+
18
+ Recommended/reference:
19
+
20
+ - A method may return `null`, but must document when that can happen. Callers remain responsible for NPE prevention.
21
+ - Check common NPE sources: auto-unboxing wrapper return values, database nulls, null elements inside non-empty collections, remote calls, session reads, and chained calls such as `a.getB().getC()`.
22
+ - Distinguish unchecked and checked exceptions. Avoid `new RuntimeException()`, `Exception`, or `Throwable` without business meaning; prefer domain-specific exceptions such as `DAOException` or `ServiceException`.
23
+ - Public external HTTP/API interfaces should use error codes. Internal application code may throw exceptions. Cross-application RPC can prefer a result wrapper with success flag, code, and brief message.
24
+ - Avoid duplicate code; extract common validation or behavior into methods/classes/components.
25
+
26
+ ## Logging
27
+
28
+ Mandatory:
29
+
30
+ - Use SLF4J facade APIs, not direct Log4j/Logback APIs:
31
+
32
+ ```java
33
+ private static final Logger logger = LoggerFactory.getLogger(Abc.class);
34
+ ```
35
+
36
+ - Keep application logs for at least 15 days when configuring retention.
37
+ - Name extension logs as `appName_logType_logName.log`, where `logType` can be `stats`, `monitor`, `access`, etc.
38
+ - For `trace`/`debug`/`info`, use placeholder logging or guard with `isXxxEnabled`; do not eagerly concatenate strings.
39
+ - Avoid duplicate log printing, such as missing `additivity=false` in Log4j configuration.
40
+ - Exception logs must include both scene/context information and stack trace. If not handled locally, throw upward.
41
+
42
+ Recommended:
43
+
44
+ - Production must not output debug logs. Emit info selectively.
45
+ - Use `warn` for user input errors when no system fault occurred; reserve `error` for system logic errors, exceptions, or important failures.
46
+ - Prefer English error messages where possible; use Chinese only when English would be unclear. Internationalized or overseas deployments require English logs/comments.
47
+ - Before adding logs, ask whether someone will read them and what action they enable.
48
+
49
+ ## Unit Tests
50
+
51
+ Mandatory:
52
+
53
+ - Unit tests must follow AIR: Automatic, Independent, Repeatable.
54
+ - Tests must be fully automated and non-interactive. Use assertions, not `System.out`, for verification.
55
+ - Tests must not call each other or depend on execution order.
56
+ - Tests must be repeatable and isolated from external environments such as network, remote services, or middleware. Inject local or mock dependencies.
57
+ - Unit test granularity should be small: usually method-level, at most class-level.
58
+ - Incremental code for core businesses, core applications, and core modules must pass unit tests.
59
+ - Test code belongs under `src/test/java`, not production source directories.
60
+
61
+ Recommended/reference:
62
+
63
+ - Basic target: statement coverage at least 70%; core modules should reach 100% statement and branch coverage where feasible.
64
+ - Use BCDE coverage thinking:
65
+ - Border: boundary values, loop boundaries, special values, special times, data ordering.
66
+ - Correct: valid inputs and expected outputs.
67
+ - Design: cases derived from design documents.
68
+ - Error: invalid data, exception flows, and disallowed business inputs.
69
+ - Database tests should prepare data through programmatic insert/import, not manual pre-existing database edits.
70
+ - Database tests should rollback automatically or mark generated data with a clear prefix.
71
+ - Refactor untestable code instead of writing awkward tests to satisfy coverage.
72
+ - Avoid business code that makes tests hard: heavy constructors, excessive globals/statics, too many external dependencies, and deep conditionals.
73
+
74
+ ## Security
75
+
76
+ Mandatory:
77
+
78
+ - User-owned pages or functions must perform authorization checks, including horizontal permission checks.
79
+ - Sensitive user data must be masked before display, such as mobile numbers with hidden middle digits.
80
+ - SQL parameters from users must use parameter binding or metadata-limited fields. Do not concatenate SQL strings.
81
+ - Every user request parameter must be validated. Consider memory overflow, malicious `order by`, open redirect, SQL injection, deserialization injection, and ReDoS risks.
82
+ - Do not output user data to HTML without proper filtering or escaping.
83
+ - Forms and AJAX submissions must enforce CSRF protection.
84
+ - Platform resources such as SMS, email, phone calls, orders, and payments must implement replay prevention, rate limits, fatigue control, or captcha as appropriate.
85
+
86
+ Recommended:
87
+
88
+ - User-generated content such as posts, comments, and instant messages should have anti-abuse, rate-limit, and prohibited-content controls.
89
+ - Treat auth, payment, encryption, raw SQL, and database migration work as high-risk. If repository instructions mark them human-review-only, add `TODO-HUMAN-REVIEW` and do not present drafts as production-ready.
@@ -0,0 +1,55 @@
1
+ # Phase boundaries
2
+
3
+ A **phase** is a chunk of work inside a session — the grilling, the implementation, the QA. The definition is fuzzy on purpose: a phase ends when you think *"ok, we're done with that"*.
4
+
5
+ The **phase boundary** is the gap between two phases, and it is the only place this decision belongs. Mid-phase there is no decision to make — continue, or split the work that's left into subagents. Compacting mid-phase makes the agent lose the thread.
6
+
7
+ ## The five options
8
+
9
+ | Option | What it does |
10
+ | ------------ | --------------------------------------------------------------- |
11
+ | **Continue** | Stay in the session. No context switch at all. |
12
+ | **`/clear`** | Empty the context window and start from nothing. |
13
+ | **`/handoff`** | Write a portable markdown file and seed a session anywhere with it. |
14
+ | **Subagent** | Send the task to its own context window and get a report back. |
15
+ | **`/compact`** | Compress this context and seed a fresh session with the summary. |
16
+
17
+ ## The tree
18
+
19
+ Work top to bottom at the boundary. The first **yes** wins.
20
+
21
+ **1. Can you continue in this session?** Two things make the answer yes: the next phase needs this phase as a **primary source**, or you have enough [smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone) left (~150k tokens) for the next phase to fit. Grilling → implementation is the standard yes: the implementation wants the reasoning verbatim, not a summary of it. Continue costs nothing and loses nothing, so rule it out before anything else.
22
+
23
+ **2. Is the context irrelevant to what comes next?** Is everything in this session — the exploration, the decisions, the dead ends — disposable? If so, **`/clear`**. It is the cheapest move on the board: it takes no time and hands back the whole window. `/clear` also isn't terminal — the old session stays resumable.
24
+
25
+ The cost of getting this wrong is one-way. Clear a *relevant* context and you lose the **why** behind what you built, and no amount of reading the diff back gets it returned.
26
+
27
+ **3. Do you need to hand off?** `/handoff` is narrow. You need it only when you are:
28
+
29
+ - swapping to a **new harness** (Claude → Codex),
30
+ - moving to a **new directory** or repo,
31
+ - sending the work to a **colleague**,
32
+ - or forking a side task you found **mid-phase** without derailing what you're doing.
33
+
34
+ That list is the whole clause. What `/handoff` buys is **portability** — a file that travels. If nothing is travelling, you don't need it.
35
+
36
+ **4. Can the task be done AFK?** Is it scoped tightly enough to run with you away from the keyboard, no steering? Then send it to a **subagent** and leave this session untouched. Automated review is the standard case: the agent reads the diff and reports, and you aren't needed while it does.
37
+
38
+ **5. Otherwise, `/compact`.** Relevant context, same harness, same directory, and you need to stay in the loop — this is where the tree lands, and it lands here often. Pass it an instruction (`/compact we're going to QA this area`) so the summary keeps what the next phase needs.
39
+
40
+ `/compact` is the **default, not the first reach**. It sits at the bottom because the four questions above it are all cheaper or more precise. The failure mode when people start here is a fresh session that is confidently wrong about a decision the summary flattened.
41
+
42
+ ## Primary and secondary sources
43
+
44
+ Every move except **Continue** turns a **primary source** into a **secondary source** — the session as it happened, replaced by a summary of it. The trade is always the same shape:
45
+
46
+ | Source | Information | Noise | Room to move |
47
+ | --------------------------------- | ----------- | ----- | ------------ |
48
+ | Primary (Continue) | Full | Lots | Little |
49
+ | Secondary (`/compact`, `/handoff`) | Lossy | Less | Lots |
50
+
51
+ This is why question 1 comes first. You only pay the lossiness when staying costs more than it saves.
52
+
53
+ ## These are judgement calls
54
+
55
+ The questions are not objective — each has taste in it, and the same boundary can go two ways on two days. The value is in asking them **in order**, at the boundary rather than in the middle of the work.
@@ -0,0 +1,95 @@
1
+ ---
2
+ name: ask-matt
3
+ description: Ask which skill or flow fits your situation. A router over the skills in this repo.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Ask Matt
8
+
9
+ You don't remember every skill, so ask.
10
+
11
+ ## YSS default (read this first)
12
+
13
+ In this template, **`yss-product-lifecycle` is the default orchestrator**. Native work-units own Spec, tickets, implementation authorization, and gates.
14
+
15
+ This skill is a **Matt compatibility map**. Use `/grill-with-docs`, `/to-spec`, `/to-tickets`, and `/implement` only when the user **explicitly** names them. Do not treat the idea→ship list below as the YSS default. `/implement` does not grant git commit/push. Spec drafts from `/to-spec` stay `ready-for-human` until a human approves the Spec baseline.
16
+
17
+ A **flow** is a path through the skills. Most paths run along one **main flow**, and two **on-ramps** merge onto it. Everything else is standalone, or a vocabulary layer that runs underneath.
18
+
19
+ ## Matt compatibility flow: idea → ship
20
+
21
+ The route most work travels. You have an idea and want it built.
22
+
23
+ 1. **`/grill-with-docs`** — sharpen the idea by interview. Start here whenever you are **working in a working directory**: it's stateful, retaining what it learns in `CONTEXT.md` and ADRs. (No working directory? Use `/grill-me` — see Standalone. Both run the same `/grilling` primitive; `grill-with-docs` is the one that leaves a paper trail, which makes it the better of the two whenever a repo is there to leave it in.)
24
+ 2. **Branch — can you settle every question in conversation?** If a question needs a runnable answer (state, business logic, a UI you have to see), detour through a prototype, bridged by **`/handoff`** in both directions (a prototype lives in its own directory, which is exactly what `/handoff` is for — see Phase boundaries):
25
+ - **`/handoff`** out, then open a fresh session against that file,
26
+ - **`/prototype`** to answer the question with throwaway code,
27
+ - **`/handoff`** back what you learned, and reference it from the original idea thread.
28
+ 3. **Branch — is this a multi-session build?**
29
+ - **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. On a local tracker that's one file per ticket under `docs/.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed — kick off **`/implement`** per ticket, **`/clear`ing context between each one**. Each ticket is self-contained, so the last one's context is disposable.
30
+ - **No** → **`/implement`** right here, in the same context window.
31
+
32
+ Either way, **`/implement`** builds each issue by driving **`/tdd`** internally — one red-green slice at a time — then closes out by running **`/code-review`** (Standards + Spec, plus UI fidelity when UI is in scope). Do not commit or push from `/implement`. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.
33
+
34
+ ### Context hygiene
35
+
36
+ Keep steps 1–3 in **one unbroken context window** — don't compact or clear until after `/to-tickets` — so the grilling, spec, and tickets all build on the same thinking. Each `/implement` then starts fresh, working from the ticket.
37
+
38
+ The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~150k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-tickets`, don't push on degraded — `/compact` at the nearest phase boundary and carry on (see Phase boundaries).
39
+
40
+ ## On-ramps
41
+
42
+ A starting situation that generates work, then merges onto the main flow.
43
+
44
+ - **Bugs and requests piling up** → **`/triage`**. It moves issues through triage roles and produces agent-ready issues, which **`/implement`** later picks up.
45
+
46
+ Triage is only for issues **you didn't create** — bug reports, incoming feature requests, anything that arrives raw. Tickets that `/to-tickets` produced are already agent-ready, so **don't triage them**.
47
+
48
+ - **Something's broken** → **`/diagnosing-bugs`**. For the hard ones: the bug that resists a first glance, the intermittent flake, the regression that crept in between two known-good states. It refuses to theorise until it has a **tight feedback loop** — one command that already goes red on *this* bug — then fixes with a regression test. Its post-mortem hands off to **`/improve-codebase-architecture`** when the real finding is that there's no good seam to lock the bug down.
49
+
50
+ - **A huge, foggy effort — a greenfield project or a huge feature build, too big for one session** → **`/wayfinder`**, the most cognitively demanding flow here. When the way from here to the destination isn't visible yet, it charts a **shared map** of **decision tickets** on the issue tracker and resolves them one at a time — producing **decisions, not deliverables** — until the fog is pushed back and the way is clear. Where **`/grill-with-docs`** sharpens an idea you can hold in one session, wayfinder is for the idea you can't — and it's slower and denser, so save it for exactly that, never a well-scoped feature.
51
+
52
+ When the map clears, **it hands off, it doesn't build**: merge onto the main flow at **`/to-spec`**, which collapses the map's linked decisions into a buildable plan, then `/to-tickets` and `/implement` as usual. Looping the map straight into `/implement` skips that collapse and throws the linked detail away — go straight to `/implement` only when the effort turned out genuinely small.
53
+
54
+ ## Codebase health
55
+
56
+ Not feature work — upkeep.
57
+
58
+ - **`/improve-codebase-architecture`** — run whenever you have a spare moment to keep the codebase good for agents to operate in. It surfaces **deepening opportunities**; picking one _generates an idea_ you can take into the main flow at `/grill-with-docs`. It's the survey that finds the candidates; **`/codebase-design`** (below) is the bench you design the chosen one on.
59
+
60
+ ## Vocabulary underneath
61
+
62
+ Two model-invoked references that run *beneath* the other skills — each the single source of truth for its vocabulary. Reach for them directly when the **words**, not the process, are the problem; or let the skills above pull them in.
63
+
64
+ - **`/domain-modeling`** — sharpen the project's *domain* language: challenge a fuzzy term, resolve an overloaded word ("account" doing three jobs), record a hard-to-reverse decision as an ADR. It's the active discipline `/grill-with-docs` drives to keep `CONTEXT.md` a clean glossary.
65
+ - **`/codebase-design`** — the deep-module vocabulary (module, interface, depth, seam, adapter, leverage, locality) for designing a module's *shape*: a lot of behaviour behind a small interface at a clean seam. `/tdd` and `/improve-codebase-architecture` both speak it.
66
+
67
+ ## Phase boundaries
68
+
69
+ A **phase** is a chunk of work inside a session — the grilling, the implementation, the QA. At the **boundary** between two of them you have five options, and picking between them is the fuzziest decision in this whole map:
70
+
71
+ - **Continue** — stay put. Costs nothing, loses nothing.
72
+ - **`/clear`** — empty the window, when nothing here matters to what's next.
73
+ - **`/handoff`** — write a portable markdown file. Narrow: only for a **new harness**, a **new directory**, a **colleague**, or forking a side task **mid-phase**. What it buys is portability.
74
+ - **Subagent** — send a tightly-scoped task to its own window and get a report back.
75
+ - **`/compact`** — compress this context and seed a fresh session with it. The **default**, at the bottom of the tree rather than the first reach.
76
+
77
+ Read [PHASE-BOUNDARIES.md](PHASE-BOUNDARIES.md) for the ordered tree — the five questions, the reasoning behind each branch, and why the primary-source cost makes **Continue** the one to rule out first. Make the decision **at** a boundary; mid-phase, continue or split the rest into subagents.
78
+
79
+ ## Standalone
80
+
81
+ Off the main flow entirely.
82
+
83
+ - **`/grill-me`** — the same relentless interview as `/grill-with-docs`, but **stateless**: it saves nothing locally and builds no `CONTEXT.md`. Reach for it when you are **not working in a working directory** — sharpening a plan, a design, a piece of writing, anything with no repo under it. If you are in a working directory, use `/grill-with-docs` instead: it runs the same interview and leaves a paper trail, so it is strictly the better one.
84
+ - **`/grilling`** — the interview primitive itself: rounds, the frontier, facts are the agent's job and decisions are yours. `/grill-me` and `/grill-with-docs` are the two named ways in, and `/triage`, `/wayfinder` and `/improve-codebase-architecture` all run it internally. Reach for it directly only when you want the interview with no wrapper around it.
85
+ - **`/resolving-merge-conflicts`** — work an in-progress merge or rebase conflict hunk by hunk, resolving by **intent** traced to each side's primary source rather than by picking lines, then finish the operation. It never runs `--abort`. Standalone and off every flow: reach for it when you are already mid-conflict.
86
+ - **`/prototype`** — a small, throwaway program that answers one design question: does this state model feel right, or what should this UI look like. Throwaway is a constraint on how the code is written, not a promise to destroy it: the answer folds into the real code, and the prototype itself is kept as a **primary source** on a `prototype/<name>` branch out of main, pointed at from the implementation issue. It's the detour in step 2 of the main flow, but reach for it any time a design question is hard to settle on paper.
87
+ - **`/research`** — delegate reading legwork to a **background agent**: it investigates a question against **primary sources**, then leaves a cited Markdown file in the repo. Keep working while it reads. The file it produces is something to take *into* the main flow at `/grill-with-docs` — research feeds the thinking, it doesn't replace it.
88
+ - **`/to-questionnaire`** — when the thing blocking you isn't in your head or the codebase but in **someone else's**, this writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about the subject, it interviews you about the **send** — who it's going to, what you need back — and aims the questions at the gap. What comes back is material for `/grill-with-docs` or `/to-spec`.
89
+ - **`/wait-what`** — the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `CONTEXT.md` vocabulary. It works after the fact; `/grill-with-docs` is the upfront cure, because a shared language agreed early is what stops the jargon arriving at all.
90
+ - **`/teach`** — learn a concept over multiple sessions, using the current directory as a stateful workspace.
91
+ - **`/writing-for-agents`** — reference for writing documents agents consume: skills, AGENTS.md, pointed-at docs.
92
+
93
+ ## Precondition
94
+
95
+ **`/setup-matt-pocock-skills`** — run before your first engineering flow to configure the issue tracker, triage labels, and doc layout the other skills assume. Custom issue trackers also work.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "Ask Matt"
3
+ short_description: "Find the right skill or workflow"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: code-review
3
+ description: Use when the user wants to review a branch, PR, committed candidate, uncommitted work-in-progress changes, or changes since a fixed point.
4
+ ---
5
+
6
+ Review of a pinned candidate against a fixed point on two core axes, plus UI fidelity when UI is in scope:
7
+
8
+ - **Standards** — does the code conform to this repo's documented coding standards?
9
+ - **Spec** — does the code faithfully implement the originating issue / spec?
10
+ - **UI fidelity** (only when the change has UI impact) — does the candidate match the confirmed prototype and `yss-design-system` / `yss-ui`? Type-check or claiming "already aligned" is not a pass. Invoke those skills' verification notes; do not collapse this axis into Standards or Spec.
11
+
12
+ Standards and Spec run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings. When UI is in scope, add a separate UI fidelity pass after those two reports (do not merge it into either axis).
13
+
14
+ If `docs/agents/issue-tracker.md` is missing, tell the user to run `/setup-matt-pocock-skills`; do not invoke another user-invoked skill yourself.
15
+
16
+ ## Process
17
+
18
+ ### 1. Pin the fixed point and candidate
19
+
20
+ Whatever the user said is the fixed point — a commit SHA, branch name, tag, `main`, `HEAD~5`, etc. If they didn't specify one, ask for it.
21
+
22
+ Choose one candidate mode from the request or an upstream review contract:
23
+
24
+ - **Committed candidate** — review committed branch/PR state. Capture `git diff <fixed-point>...HEAD` and `git log <fixed-point>..HEAD --oneline`.
25
+ - **Worktree candidate** — review work in progress without requiring a commit. Resolve `<merge-base>` with `git merge-base <fixed-point> HEAD`, then capture:
26
+ - `git diff --no-ext-diff --binary --full-index <merge-base>` for committed, staged and unstaged tracked content as it exists in the working tree;
27
+ - `git ls-files -z --others --exclude-standard` for NUL-delimited raw untracked paths;
28
+ - each untracked file's content, using `git diff --no-index --no-ext-diff --binary --full-index -- /dev/null <path>` when a diff representation is useful. Exit code `1` from this command means a difference was found, not that review failed;
29
+ - `git log <fixed-point>..HEAD --oneline` for the committed portion of the candidate.
30
+
31
+ Record one **candidate manifest** before spawning reviewers:
32
+
33
+ ```yaml
34
+ review_mode: committed # or worktree
35
+ review_base_ref: <fixed-point>
36
+ merge_base: <resolved-sha>
37
+ implementation_candidate_ref: HEAD # or working-tree
38
+ candidate_snapshot_ref: <immutable-commit-or-captured-snapshot>
39
+ candidate_digest: <sha256-or-immutable-tree-id>
40
+ tracked_diff_command: <command>
41
+ untracked_inventory_command: <command-or-null>
42
+ untracked_files: []
43
+ commit_list_command: <command>
44
+ ```
45
+
46
+ For a Committed candidate, resolve `HEAD` to an immutable commit and tree before review. Its manifest must include `merge_base`, `tracked_diff_command` and `commit_list_command`. For a Worktree candidate, the manifest must additionally include `untracked_inventory_command`, `untracked_diff_command` and the exact `untracked_files` inventory.
47
+
48
+ For a Worktree candidate, capture the tracked binary diff and every untracked file's bytes once into an immutable snapshot, compute `candidate_digest`, and make that **captured candidate** available to both reviewers. The following is normative, not illustrative: use the `yss-worktree-candidate-v1` byte stream. Start with ASCII `YSS-WORKTREE-CANDIDATE-V1` followed by one NUL byte. Append one tracked record: byte `0x54`, unsigned 64-bit big-endian binary-diff byte length, then the exact stdout bytes from `git diff --no-ext-diff --binary --full-index <merge-base>`. Then append one untracked record for each NUL-delimited raw path from `git ls-files -z --others --exclude-standard`, sorted bytewise by the raw path: byte `0x55`, unsigned 64-bit big-endian path length, raw path bytes, unsigned 32-bit big-endian `lstat` mode, entry-kind byte (`0x52` regular or `0x4c` symlink), unsigned 64-bit big-endian content length, then raw regular-file bytes or raw symlink-target bytes. Other entry kinds block capture. This is the sole length-prefixed framing and bytewise path order for the digest. SHA-256 is calculated over exactly this stream. The immutable snapshot stores `candidate-manifest.yaml`, `tracked.diff` and the `untracked/` bytes under the digest identity; both reviewers must consume those captured bytes and must not independently reread a live worktree.
49
+
50
+ Before going further, confirm the fixed point and merge-base resolve. A committed candidate must have a non-empty committed diff. A Worktree candidate is non-empty when either its tracked diff or untracked inventory is non-empty. A bad ref, missing candidate part or empty candidate should fail here — not inside two parallel sub-agents. Do not silently downgrade Worktree review to `HEAD`-only review.
51
+
52
+ ### 2. Identify the spec source
53
+
54
+ Look for the originating spec, in this order:
55
+
56
+ 1. A spec/Ticket/contract reference supplied by the user or an upstream lifecycle review input.
57
+ 2. Issue references in the commit messages (`#123`, `Closes #45`, GitLab `!67`, etc.) — fetch via the workflow in `docs/agents/issue-tracker.md`.
58
+ 3. A spec file under `docs/`, `specs/`, or `docs/.scratch/` matching the branch name or feature.
59
+ 4. If nothing is found, ask the user where the spec is. If they say there isn't one, the **Spec** sub-agent will skip and report "no spec available".
60
+
61
+ ### 3. Identify the standards sources
62
+
63
+ Anything in the repo that documents how code should be written, such as `CODING_STANDARDS.md` or `CONTRIBUTING.md`.
64
+
65
+ On top of whatever the repo documents, the Standards axis always carries the **smell baseline** below — a fixed set of Fowler code smells (_Refactoring_, ch.3) that applies even when a repo documents nothing. Two rules bind it:
66
+
67
+ - **The repo overrides.** A documented repo standard always wins; where it endorses something the baseline would flag, suppress the smell.
68
+ - **Always a judgement call.** Each smell is a labelled heuristic ("possible Feature Envy"), never a hard violation — and, like any standard here, skip anything tooling already enforces.
69
+
70
+ Each smell reads *what it is* → *how to fix*; match it against the diff:
71
+
72
+ - **Mysterious Name** — a function, variable, or type whose name doesn't reveal what it does or holds. → rename it; if no honest name comes, the design's murky.
73
+ - **Duplicated Code** — the same logic shape appears in more than one hunk or file in the change. → extract the shared shape, call it from both.
74
+ - **Feature Envy** — a method that reaches into another object's data more than its own. → move the method onto the data it envies.
75
+ - **Data Clumps** — the same few fields or params keep travelling together (a type wanting to be born). → bundle them into one type, pass that.
76
+ - **Primitive Obsession** — a primitive or string standing in for a domain concept that deserves its own type. → give the concept its own small type.
77
+ - **Repeated Switches** — the same `switch`/`if`-cascade on the same type recurs across the change. → replace with polymorphism, or one map both sites share.
78
+ - **Shotgun Surgery** — one logical change forces scattered edits across many files in the diff. → gather what changes together into one module.
79
+ - **Divergent Change** — one file or module is edited for several unrelated reasons. → split so each module changes for one reason.
80
+ - **Speculative Generality** — abstraction, parameters, or hooks added for needs the spec doesn't have. → delete it; inline back until a real need shows.
81
+ - **Message Chains** — long `a.b().c().d()` navigation the caller shouldn't depend on. → hide the walk behind one method on the first object.
82
+ - **Middle Man** — a class or function that mostly just delegates onward. → cut it, call the real target direct.
83
+ - **Refused Bequest** — a subclass or implementer that ignores or overrides most of what it inherits. → drop the inheritance, use composition.
84
+
85
+ ### 4. Spawn both sub-agents in parallel
86
+
87
+ **Standards sub-agent prompt** — include:
88
+
89
+ - The full candidate manifest, captured candidate, `candidate_digest`, diff/inventory commands and commit list. For Worktree candidates, explicitly include every untracked file.
90
+ - The list of standards-source files you found in step 3, **plus the smell baseline from step 3** pasted in full — the sub-agent has no other access to it.
91
+ - The brief: "Report — per file/hunk where relevant — (a) every place the diff violates a documented standard: cite the standard (file + the rule); and (b) any baseline smell you spot: name it and quote the hunk. Distinguish hard violations from judgement calls — documented-standard breaches can be hard, but baseline smells are always judgement calls, and a documented repo standard overrides the baseline. Skip anything tooling enforces. Under 400 words."
92
+
93
+ **Spec sub-agent prompt** — include:
94
+
95
+ - The same candidate manifest, captured candidate, `candidate_digest`, diff/inventory commands and commit list.
96
+ - The path or fetched contents of the spec.
97
+ - The brief: "Report: (a) requirements the spec asked for that are missing or partial; (b) behaviour in the diff that wasn't asked for (scope creep); (c) requirements that look implemented but where the implementation looks wrong. Quote the spec line for each finding. Under 400 words."
98
+
99
+ If the spec is missing, skip the Spec sub-agent and note this in the final report.
100
+
101
+ ### 5. Aggregate
102
+
103
+ Present the reports under `## Standards` and `## Spec` headings, verbatim or lightly cleaned. If UI is in scope, add `## UI fidelity` from the separate pass. Do **not** merge or rerank findings — the axes are deliberately separate (see _Why separate axes_).
104
+
105
+ For Worktree mode, recapture the candidate digest after both reports return. If it differs from `candidate_digest`, mark both reports as reviewing a **stale candidate** and return `blocked`; the caller may start a new review against a new capture, but this invocation must not aggregate findings from different bytes. Recheck the same digest again at the completion/checkpoint boundary.
106
+
107
+ State the reviewed `review_mode`, fixed point, candidate digest and coverage before the two reports. End with a one-line summary: total findings per axis, and the worst issue _within each axis_ (if any). Don't pick a single winner across axes — that's the reranking the separation exists to prevent.
108
+
109
+ ## Why separate axes
110
+
111
+ A change can pass one axis and fail the other:
112
+
113
+ - Code that follows every standard but implements the wrong thing → **Standards pass, Spec fail.**
114
+ - Code that does exactly what the issue asked but breaks the project's conventions → **Spec pass, Standards fail.**
115
+ - Code that implements the spec but diverges from the confirmed prototype or design system → **Spec pass, UI fidelity fail.**
116
+
117
+ Reporting them separately stops one axis from masking the other.
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "Code Review"
3
+ short_description: "Review a diff on standards and spec"
@@ -0,0 +1,37 @@
1
+ # Deepening
2
+
3
+ How to deepen a cluster of shallow modules safely, given its dependencies. Assumes the vocabulary in [SKILL.md](SKILL.md) — **module**, **interface**, **seam**, **adapter**.
4
+
5
+ ## Dependency categories
6
+
7
+ When assessing a candidate for deepening, classify its dependencies. The category determines how the deepened module is tested across its seam.
8
+
9
+ ### 1. In-process
10
+
11
+ Pure computation, in-memory state, no I/O. Always deepenable — merge the modules and test through the new interface directly. No adapter needed.
12
+
13
+ ### 2. Local-substitutable
14
+
15
+ Dependencies that have local test stand-ins (PGLite for Postgres, in-memory filesystem). Deepenable if the stand-in exists. The deepened module is tested with the stand-in running in the test suite. The seam is internal; no port at the module's external interface.
16
+
17
+ ### 3. Remote but owned (Ports & Adapters)
18
+
19
+ Your own services across a network boundary (microservices, internal APIs). Define a **port** (interface) at the seam. The deep module owns the logic; the transport is injected as an **adapter**. Tests use an in-memory adapter. Production uses an HTTP/gRPC/queue adapter.
20
+
21
+ Recommendation shape: *"Define a port at the seam, implement an HTTP adapter for production and an in-memory adapter for testing, so the logic sits in one deep module even though it's deployed across a network."*
22
+
23
+ ### 4. True external (Mock)
24
+
25
+ Third-party services (Stripe, Twilio, etc.) you don't control. The deepened module takes the external dependency as an injected port; tests provide a mock adapter.
26
+
27
+ ## Seam discipline
28
+
29
+ - **One adapter means a hypothetical seam. Two adapters means a real one.** Don't introduce a port unless at least two adapters are justified (typically production + test). A single-adapter seam is just indirection.
30
+ - **Internal seams vs external seams.** A deep module can have internal seams (private to its implementation, used by its own tests) as well as the external seam at its interface. Don't expose internal seams through the interface just because tests use them.
31
+
32
+ ## Testing strategy: replace, don't layer
33
+
34
+ - Old unit tests on shallow modules become waste once tests at the deepened module's interface exist — delete them.
35
+ - Write new tests at the deepened module's interface. The **interface is the test surface**.
36
+ - Tests assert on observable outcomes through the interface, not internal state.
37
+ - Tests should survive internal refactors — they describe behaviour, not implementation. If a test has to change when the implementation changes, it's testing past the interface.