create-yss-spec 1.1.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/README.md +20 -2
  2. package/package.json +13 -2
  3. package/src/cli.js +367 -51
  4. package/template/.agents/skills/ask-matt/SKILL.md +8 -4
  5. package/template/.agents/skills/ask-matt/agents/openai.yaml +5 -0
  6. package/template/.agents/skills/code-review/SKILL.md +4 -4
  7. package/template/.agents/skills/code-review/agents/openai.yaml +3 -0
  8. package/template/.agents/skills/codebase-design/agents/openai.yaml +3 -0
  9. package/template/.agents/skills/competitive-intelligence/SKILL.md +5 -5
  10. package/template/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  11. package/template/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
  12. package/template/.agents/skills/excalidraw-diagram-generator/SKILL.md +3 -3
  13. package/template/.agents/skills/grill-me/agents/openai.yaml +5 -0
  14. package/template/.agents/skills/grill-with-docs/agents/openai.yaml +5 -0
  15. package/template/.agents/skills/grilling/SKILL.md +4 -4
  16. package/template/.agents/skills/grilling/agents/openai.yaml +3 -0
  17. package/template/.agents/skills/handoff/SKILL.md +1 -1
  18. package/template/.agents/skills/handoff/agents/openai.yaml +5 -0
  19. package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +6 -6
  20. package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
  21. package/template/.agents/skills/implement/SKILL.md +2 -2
  22. package/template/.agents/skills/implement/agents/openai.yaml +5 -0
  23. package/template/.agents/skills/improve-codebase-architecture/SKILL.md +6 -1
  24. package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  25. package/template/.agents/skills/lombok/SKILL.md +345 -0
  26. package/template/.agents/skills/mapstruct/SKILL.md +328 -0
  27. package/template/.agents/skills/prototype/LOGIC.md +3 -3
  28. package/template/.agents/skills/prototype/SKILL.md +2 -6
  29. package/template/.agents/skills/prototype/UI.md +4 -4
  30. package/template/.agents/skills/prototype/agents/openai.yaml +3 -0
  31. package/template/.agents/skills/research/agents/openai.yaml +3 -0
  32. package/template/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  33. package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  34. package/template/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  35. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  36. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  37. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  38. package/template/.agents/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  39. package/template/.agents/skills/tdd/agents/openai.yaml +3 -0
  40. package/template/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
  41. package/template/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  42. package/template/.agents/skills/teach/MISSION-FORMAT.md +31 -0
  43. package/template/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
  44. package/template/.agents/skills/teach/SKILL.md +140 -0
  45. package/template/.agents/skills/teach/agents/openai.yaml +5 -0
  46. package/template/.agents/skills/to-spec/SKILL.md +58 -0
  47. package/template/.agents/skills/to-spec/agents/openai.yaml +5 -0
  48. package/template/.agents/skills/to-tickets/SKILL.md +62 -0
  49. package/template/.agents/skills/to-tickets/agents/openai.yaml +5 -0
  50. package/template/.agents/skills/triage/SKILL.md +4 -4
  51. package/template/.agents/skills/triage/agents/openai.yaml +5 -0
  52. package/template/.agents/skills/wayfinder/SKILL.md +128 -0
  53. package/template/.agents/skills/wayfinder/agents/openai.yaml +5 -0
  54. package/template/.agents/skills/web-design-engineer/SKILL.md +2 -2
  55. package/template/.agents/skills/writing-great-skills/GLOSSARY.md +201 -0
  56. package/template/.agents/skills/writing-great-skills/SKILL.md +83 -0
  57. package/template/.agents/skills/writing-great-skills/agents/openai.yaml +5 -0
  58. package/template/.agents/skills/yss-cache/SKILL.md +44 -0
  59. package/template/.agents/skills/yss-cache/agents/openai.yaml +5 -0
  60. package/template/.agents/skills/yss-cache/references/annotations.md +39 -0
  61. package/template/.agents/skills/yss-cache/references/architecture.md +25 -0
  62. package/template/.agents/skills/yss-cache/references/configuration.md +34 -0
  63. package/template/.agents/skills/yss-cache/references/redis-fallback.md +23 -0
  64. package/template/.agents/skills/yss-cache/references/redis-topology.md +62 -0
  65. package/template/.agents/skills/yss-cache/references/serialization.md +17 -0
  66. package/template/.agents/skills/yss-cache/references/source-index.md +64 -0
  67. package/template/.agents/skills/yss-cache/references/troubleshooting.md +33 -0
  68. package/template/.agents/skills/yss-cache/references/verification.md +34 -0
  69. package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  70. package/template/.agents/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  71. package/template/.agents/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  72. package/template/.claude/skills/ask-matt/SKILL.md +8 -4
  73. package/template/.claude/skills/ask-matt/agents/openai.yaml +5 -0
  74. package/template/.claude/skills/code-review/SKILL.md +4 -4
  75. package/template/.claude/skills/code-review/agents/openai.yaml +3 -0
  76. package/template/.claude/skills/codebase-design/agents/openai.yaml +3 -0
  77. package/template/.claude/skills/competitive-intelligence/SKILL.md +5 -5
  78. package/template/.claude/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  79. package/template/.claude/skills/domain-modeling/agents/openai.yaml +3 -0
  80. package/template/.claude/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  81. package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  82. package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  83. package/template/.claude/skills/grill-me/agents/openai.yaml +5 -0
  84. package/template/.claude/skills/grill-with-docs/agents/openai.yaml +5 -0
  85. package/template/.claude/skills/grilling/SKILL.md +4 -4
  86. package/template/.claude/skills/grilling/agents/openai.yaml +3 -0
  87. package/template/.claude/skills/handoff/SKILL.md +1 -1
  88. package/template/.claude/skills/handoff/agents/openai.yaml +5 -0
  89. package/template/.claude/skills/implement/SKILL.md +2 -2
  90. package/template/.claude/skills/implement/agents/openai.yaml +5 -0
  91. package/template/.claude/skills/improve-codebase-architecture/SKILL.md +6 -1
  92. package/template/.claude/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  93. package/template/.claude/skills/prototype/LOGIC.md +3 -3
  94. package/template/.claude/skills/prototype/SKILL.md +2 -6
  95. package/template/.claude/skills/prototype/UI.md +4 -4
  96. package/template/.claude/skills/prototype/agents/openai.yaml +3 -0
  97. package/template/.claude/skills/research/agents/openai.yaml +3 -0
  98. package/template/.claude/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  99. package/template/.claude/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  100. package/template/.claude/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  101. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  102. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  103. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  104. package/template/.claude/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  105. package/template/.claude/skills/tdd/agents/openai.yaml +3 -0
  106. package/template/.claude/skills/teach/GLOSSARY-FORMAT.md +35 -0
  107. package/template/.claude/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  108. package/template/.claude/skills/teach/MISSION-FORMAT.md +31 -0
  109. package/template/.claude/skills/teach/RESOURCES-FORMAT.md +32 -0
  110. package/template/.claude/skills/teach/SKILL.md +140 -0
  111. package/template/.claude/skills/teach/agents/openai.yaml +5 -0
  112. package/template/.claude/skills/to-spec/SKILL.md +58 -0
  113. package/template/.claude/skills/to-spec/agents/openai.yaml +5 -0
  114. package/template/.claude/skills/to-tickets/SKILL.md +62 -0
  115. package/template/.claude/skills/to-tickets/agents/openai.yaml +5 -0
  116. package/template/.claude/skills/triage/SKILL.md +4 -4
  117. package/template/.claude/skills/triage/agents/openai.yaml +5 -0
  118. package/template/.claude/skills/wayfinder/SKILL.md +128 -0
  119. package/template/.claude/skills/wayfinder/agents/openai.yaml +5 -0
  120. package/template/.claude/skills/web-design-engineer/SKILL.md +2 -2
  121. package/template/.claude/skills/writing-great-skills/GLOSSARY.md +201 -0
  122. package/template/.claude/skills/writing-great-skills/SKILL.md +83 -0
  123. package/template/.claude/skills/writing-great-skills/agents/openai.yaml +5 -0
  124. package/template/.claude/skills/yss-cache/SKILL.md +44 -0
  125. package/template/.claude/skills/yss-cache/agents/openai.yaml +5 -0
  126. package/template/.claude/skills/yss-cache/references/annotations.md +39 -0
  127. package/template/.claude/skills/yss-cache/references/architecture.md +25 -0
  128. package/template/.claude/skills/yss-cache/references/configuration.md +34 -0
  129. package/template/.claude/skills/yss-cache/references/redis-fallback.md +23 -0
  130. package/template/.claude/skills/yss-cache/references/redis-topology.md +62 -0
  131. package/template/.claude/skills/yss-cache/references/serialization.md +17 -0
  132. package/template/.claude/skills/yss-cache/references/source-index.md +64 -0
  133. package/template/.claude/skills/yss-cache/references/troubleshooting.md +33 -0
  134. package/template/.claude/skills/yss-cache/references/verification.md +34 -0
  135. package/template/.claude/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  136. package/template/.claude/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  137. package/template/.claude/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  138. package/template/.codex/config.toml +3 -0
  139. package/template/.codex/skills/ask-matt/SKILL.md +8 -4
  140. package/template/.codex/skills/ask-matt/agents/openai.yaml +5 -0
  141. package/template/.codex/skills/code-review/SKILL.md +4 -4
  142. package/template/.codex/skills/code-review/agents/openai.yaml +3 -0
  143. package/template/.codex/skills/code-review-process/references/automation-and-standards.md +1 -1
  144. package/template/.codex/skills/codebase-design/agents/openai.yaml +3 -0
  145. package/template/.codex/skills/competitive-intelligence/SKILL.md +5 -5
  146. package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +1 -1
  147. package/template/.codex/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  148. package/template/.codex/skills/domain-modeling/agents/openai.yaml +3 -0
  149. package/template/.codex/skills/grill-with-docs/agents/openai.yaml +5 -0
  150. package/template/.codex/skills/handoff/SKILL.md +16 -0
  151. package/template/.codex/skills/handoff/agents/openai.yaml +5 -0
  152. package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +6 -6
  153. package/template/.codex/skills/implement/SKILL.md +2 -2
  154. package/template/.codex/skills/implement/agents/openai.yaml +5 -0
  155. package/template/.codex/skills/improve-codebase-architecture/SKILL.md +6 -1
  156. package/template/.codex/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  157. package/template/.codex/skills/product-design-prototype/SKILL.md +14 -10
  158. package/template/.codex/skills/product-design-prototype/agents/openai.yaml +1 -1
  159. package/template/.codex/skills/prototype/LOGIC.md +3 -3
  160. package/template/.codex/skills/prototype/SKILL.md +2 -6
  161. package/template/.codex/skills/prototype/UI.md +4 -4
  162. package/template/.codex/skills/prototype/agents/openai.yaml +3 -0
  163. package/template/.codex/skills/prototype-review/SKILL.md +6 -6
  164. package/template/.codex/skills/prototype-review/agents/openai.yaml +2 -2
  165. package/template/.codex/skills/research/agents/openai.yaml +3 -0
  166. package/template/.codex/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  167. package/template/.codex/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  168. package/template/.codex/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  169. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  170. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  171. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  172. package/template/.codex/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  173. package/template/.codex/skills/tdd/agents/openai.yaml +3 -0
  174. package/template/.codex/skills/to-spec/SKILL.md +58 -0
  175. package/template/.codex/skills/to-spec/agents/openai.yaml +5 -0
  176. package/template/.codex/skills/to-tickets/SKILL.md +62 -0
  177. package/template/.codex/skills/to-tickets/agents/openai.yaml +5 -0
  178. package/template/.codex/skills/triage/SKILL.md +4 -4
  179. package/template/.codex/skills/triage/agents/openai.yaml +5 -0
  180. package/template/.codex/skills/wayfinder/SKILL.md +128 -0
  181. package/template/.codex/skills/wayfinder/agents/openai.yaml +5 -0
  182. package/template/.codex/skills/writing-great-skills/GLOSSARY.md +201 -0
  183. package/template/.codex/skills/writing-great-skills/SKILL.md +83 -0
  184. package/template/.codex/skills/writing-great-skills/agents/openai.yaml +5 -0
  185. package/template/.codex/skills/yss-cache/SKILL.md +29 -58
  186. package/template/.codex/skills/yss-cache/agents/openai.yaml +2 -2
  187. package/template/.codex/skills/yss-cache/references/annotations.md +39 -0
  188. package/template/.codex/skills/yss-cache/references/architecture.md +25 -0
  189. package/template/.codex/skills/yss-cache/references/configuration.md +34 -0
  190. package/template/.codex/skills/yss-cache/references/redis-fallback.md +23 -0
  191. package/template/.codex/skills/yss-cache/references/redis-topology.md +62 -0
  192. package/template/.codex/skills/yss-cache/references/serialization.md +17 -0
  193. package/template/.codex/skills/yss-cache/references/source-index.md +1 -1
  194. package/template/.codex/skills/yss-cache/references/troubleshooting.md +33 -0
  195. package/template/.codex/skills/yss-cache/references/verification.md +34 -0
  196. package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  197. package/template/.codex/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  198. package/template/.codex/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  199. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -0
  200. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
  201. package/template/.codex/skills/yss-design-system/SKILL.md +9 -2
  202. package/template/.codex/skills/yss-design-system/references/design-system.md +12 -0
  203. package/template/.codex/skills/yss-domain-modeling/SKILL.md +3 -3
  204. package/template/.codex/skills/yss-domain-modeling/agents/openai.yaml +1 -1
  205. package/template/.codex/skills/yss-domain-modeling/references/modeling-workflow.md +2 -2
  206. package/template/.codex/skills/yss-openapi/SKILL.md +35 -47
  207. package/template/.codex/skills/yss-openapi/img.png +0 -0
  208. package/template/.codex/skills/yss-openapi/img_1.png +0 -0
  209. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +2 -2
  210. package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -2
  211. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +46 -39
  212. package/template/.codex/skills/yss-product-lifecycle/references/artifact-checklist.md +23 -21
  213. package/template/.codex/skills/yss-product-lifecycle/references/stage-routing.md +15 -15
  214. package/template/.codex/skills/yss-product-lifecycle/references/yss-skill-routing.md +13 -8
  215. package/template/.codex/skills/yss-repository/SKILL.md +11 -3
  216. package/template/.codex/skills/yss-router/SKILL.md +1 -1
  217. package/template/.codex/skills/yss-web-controller/SKILL.md +9 -3
  218. package/template/.hermes/skills/ask-matt/SKILL.md +8 -4
  219. package/template/.hermes/skills/ask-matt/agents/openai.yaml +5 -0
  220. package/template/.hermes/skills/code-review/SKILL.md +4 -4
  221. package/template/.hermes/skills/code-review/agents/openai.yaml +3 -0
  222. package/template/.hermes/skills/codebase-design/agents/openai.yaml +3 -0
  223. package/template/.hermes/skills/competitive-intelligence/SKILL.md +5 -5
  224. package/template/.hermes/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  225. package/template/.hermes/skills/domain-modeling/agents/openai.yaml +3 -0
  226. package/template/.hermes/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  227. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  228. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  229. package/template/.hermes/skills/grill-me/agents/openai.yaml +5 -0
  230. package/template/.hermes/skills/grill-with-docs/agents/openai.yaml +5 -0
  231. package/template/.hermes/skills/grilling/SKILL.md +4 -4
  232. package/template/.hermes/skills/grilling/agents/openai.yaml +3 -0
  233. package/template/.hermes/skills/handoff/SKILL.md +1 -1
  234. package/template/.hermes/skills/handoff/agents/openai.yaml +5 -0
  235. package/template/.hermes/skills/implement/SKILL.md +2 -2
  236. package/template/.hermes/skills/implement/agents/openai.yaml +5 -0
  237. package/template/.hermes/skills/improve-codebase-architecture/SKILL.md +6 -1
  238. package/template/.hermes/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  239. package/template/.hermes/skills/prototype/LOGIC.md +3 -3
  240. package/template/.hermes/skills/prototype/SKILL.md +2 -6
  241. package/template/.hermes/skills/prototype/UI.md +4 -4
  242. package/template/.hermes/skills/prototype/agents/openai.yaml +3 -0
  243. package/template/.hermes/skills/research/agents/openai.yaml +3 -0
  244. package/template/.hermes/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  245. package/template/.hermes/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  246. package/template/.hermes/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  247. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  248. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  249. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  250. package/template/.hermes/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  251. package/template/.hermes/skills/tdd/agents/openai.yaml +3 -0
  252. package/template/.hermes/skills/teach/GLOSSARY-FORMAT.md +35 -0
  253. package/template/.hermes/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  254. package/template/.hermes/skills/teach/MISSION-FORMAT.md +31 -0
  255. package/template/.hermes/skills/teach/RESOURCES-FORMAT.md +32 -0
  256. package/template/.hermes/skills/teach/SKILL.md +140 -0
  257. package/template/.hermes/skills/teach/agents/openai.yaml +5 -0
  258. package/template/.hermes/skills/to-spec/SKILL.md +58 -0
  259. package/template/.hermes/skills/to-spec/agents/openai.yaml +5 -0
  260. package/template/.hermes/skills/to-tickets/SKILL.md +62 -0
  261. package/template/.hermes/skills/to-tickets/agents/openai.yaml +5 -0
  262. package/template/.hermes/skills/triage/SKILL.md +4 -4
  263. package/template/.hermes/skills/triage/agents/openai.yaml +5 -0
  264. package/template/.hermes/skills/wayfinder/SKILL.md +128 -0
  265. package/template/.hermes/skills/wayfinder/agents/openai.yaml +5 -0
  266. package/template/.hermes/skills/web-design-engineer/SKILL.md +2 -2
  267. package/template/.hermes/skills/writing-great-skills/GLOSSARY.md +201 -0
  268. package/template/.hermes/skills/writing-great-skills/SKILL.md +83 -0
  269. package/template/.hermes/skills/writing-great-skills/agents/openai.yaml +5 -0
  270. package/template/.hermes/skills/yss-cache/SKILL.md +44 -0
  271. package/template/.hermes/skills/yss-cache/agents/openai.yaml +5 -0
  272. package/template/.hermes/skills/yss-cache/references/annotations.md +39 -0
  273. package/template/.hermes/skills/yss-cache/references/architecture.md +25 -0
  274. package/template/.hermes/skills/yss-cache/references/configuration.md +34 -0
  275. package/template/.hermes/skills/yss-cache/references/redis-fallback.md +23 -0
  276. package/template/.hermes/skills/yss-cache/references/redis-topology.md +62 -0
  277. package/template/.hermes/skills/yss-cache/references/serialization.md +17 -0
  278. package/template/.hermes/skills/yss-cache/references/source-index.md +64 -0
  279. package/template/.hermes/skills/yss-cache/references/troubleshooting.md +33 -0
  280. package/template/.hermes/skills/yss-cache/references/verification.md +34 -0
  281. package/template/.hermes/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  282. package/template/.hermes/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  283. package/template/.hermes/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  284. package/template/.obsidian/app.json +3 -0
  285. package/template/.obsidian/appearance.json +5 -0
  286. package/template/.obsidian/community-plugins.json +4 -0
  287. package/template/.obsidian/core-plugins.json +33 -0
  288. package/template/.obsidian/graph.json +22 -0
  289. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +1085 -0
  290. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +30 -0
  291. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +12 -0
  292. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +1 -0
  293. package/template/.obsidian/plugins/obsidian-git/main.js +415 -0
  294. package/template/.obsidian/plugins/obsidian-git/manifest.json +10 -0
  295. package/template/.obsidian/plugins/obsidian-git/styles.css +705 -0
  296. package/template/.obsidian/workspace.json +222 -0
  297. package/template/.pi/skills/ask-matt/SKILL.md +8 -4
  298. package/template/.pi/skills/ask-matt/agents/openai.yaml +5 -0
  299. package/template/.pi/skills/code-review/SKILL.md +4 -4
  300. package/template/.pi/skills/code-review/agents/openai.yaml +3 -0
  301. package/template/.pi/skills/codebase-design/agents/openai.yaml +3 -0
  302. package/template/.pi/skills/competitive-intelligence/SKILL.md +5 -5
  303. package/template/.pi/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  304. package/template/.pi/skills/domain-modeling/agents/openai.yaml +3 -0
  305. package/template/.pi/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  306. package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  307. package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  308. package/template/.pi/skills/grill-me/agents/openai.yaml +5 -0
  309. package/template/.pi/skills/grill-with-docs/agents/openai.yaml +5 -0
  310. package/template/.pi/skills/grilling/SKILL.md +4 -4
  311. package/template/.pi/skills/grilling/agents/openai.yaml +3 -0
  312. package/template/.pi/skills/handoff/SKILL.md +1 -1
  313. package/template/.pi/skills/handoff/agents/openai.yaml +5 -0
  314. package/template/.pi/skills/implement/SKILL.md +2 -2
  315. package/template/.pi/skills/implement/agents/openai.yaml +5 -0
  316. package/template/.pi/skills/improve-codebase-architecture/SKILL.md +6 -1
  317. package/template/.pi/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  318. package/template/.pi/skills/prototype/LOGIC.md +3 -3
  319. package/template/.pi/skills/prototype/SKILL.md +2 -6
  320. package/template/.pi/skills/prototype/UI.md +4 -4
  321. package/template/.pi/skills/prototype/agents/openai.yaml +3 -0
  322. package/template/.pi/skills/research/agents/openai.yaml +3 -0
  323. package/template/.pi/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  324. package/template/.pi/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  325. package/template/.pi/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  326. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  327. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  328. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  329. package/template/.pi/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  330. package/template/.pi/skills/tdd/agents/openai.yaml +3 -0
  331. package/template/.pi/skills/teach/GLOSSARY-FORMAT.md +35 -0
  332. package/template/.pi/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  333. package/template/.pi/skills/teach/MISSION-FORMAT.md +31 -0
  334. package/template/.pi/skills/teach/RESOURCES-FORMAT.md +32 -0
  335. package/template/.pi/skills/teach/SKILL.md +140 -0
  336. package/template/.pi/skills/teach/agents/openai.yaml +5 -0
  337. package/template/.pi/skills/to-spec/SKILL.md +58 -0
  338. package/template/.pi/skills/to-spec/agents/openai.yaml +5 -0
  339. package/template/.pi/skills/to-tickets/SKILL.md +62 -0
  340. package/template/.pi/skills/to-tickets/agents/openai.yaml +5 -0
  341. package/template/.pi/skills/triage/SKILL.md +4 -4
  342. package/template/.pi/skills/triage/agents/openai.yaml +5 -0
  343. package/template/.pi/skills/wayfinder/SKILL.md +128 -0
  344. package/template/.pi/skills/wayfinder/agents/openai.yaml +5 -0
  345. package/template/.pi/skills/web-design-engineer/SKILL.md +2 -2
  346. package/template/.pi/skills/writing-great-skills/GLOSSARY.md +201 -0
  347. package/template/.pi/skills/writing-great-skills/SKILL.md +83 -0
  348. package/template/.pi/skills/writing-great-skills/agents/openai.yaml +5 -0
  349. package/template/.pi/skills/yss-cache/SKILL.md +44 -0
  350. package/template/.pi/skills/yss-cache/agents/openai.yaml +5 -0
  351. package/template/.pi/skills/yss-cache/references/annotations.md +39 -0
  352. package/template/.pi/skills/yss-cache/references/architecture.md +25 -0
  353. package/template/.pi/skills/yss-cache/references/configuration.md +34 -0
  354. package/template/.pi/skills/yss-cache/references/redis-fallback.md +23 -0
  355. package/template/.pi/skills/yss-cache/references/redis-topology.md +62 -0
  356. package/template/.pi/skills/yss-cache/references/serialization.md +17 -0
  357. package/template/.pi/skills/yss-cache/references/source-index.md +64 -0
  358. package/template/.pi/skills/yss-cache/references/troubleshooting.md +33 -0
  359. package/template/.pi/skills/yss-cache/references/verification.md +34 -0
  360. package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  361. package/template/.pi/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  362. package/template/.pi/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  363. package/template/.trae/skills/ask-matt/SKILL.md +8 -4
  364. package/template/.trae/skills/ask-matt/agents/openai.yaml +5 -0
  365. package/template/.trae/skills/code-review/SKILL.md +4 -4
  366. package/template/.trae/skills/code-review/agents/openai.yaml +3 -0
  367. package/template/.trae/skills/codebase-design/agents/openai.yaml +3 -0
  368. package/template/.trae/skills/competitive-intelligence/SKILL.md +5 -5
  369. package/template/.trae/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  370. package/template/.trae/skills/domain-modeling/agents/openai.yaml +3 -0
  371. package/template/.trae/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  372. package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  373. package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  374. package/template/.trae/skills/grill-me/agents/openai.yaml +5 -0
  375. package/template/.trae/skills/grill-with-docs/agents/openai.yaml +5 -0
  376. package/template/.trae/skills/grilling/SKILL.md +4 -4
  377. package/template/.trae/skills/grilling/agents/openai.yaml +3 -0
  378. package/template/.trae/skills/handoff/SKILL.md +1 -1
  379. package/template/.trae/skills/handoff/agents/openai.yaml +5 -0
  380. package/template/.trae/skills/implement/SKILL.md +2 -2
  381. package/template/.trae/skills/implement/agents/openai.yaml +5 -0
  382. package/template/.trae/skills/improve-codebase-architecture/SKILL.md +6 -1
  383. package/template/.trae/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  384. package/template/.trae/skills/prototype/LOGIC.md +3 -3
  385. package/template/.trae/skills/prototype/SKILL.md +2 -6
  386. package/template/.trae/skills/prototype/UI.md +4 -4
  387. package/template/.trae/skills/prototype/agents/openai.yaml +3 -0
  388. package/template/.trae/skills/research/agents/openai.yaml +3 -0
  389. package/template/.trae/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  390. package/template/.trae/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  391. package/template/.trae/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  392. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  393. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  394. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  395. package/template/.trae/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  396. package/template/.trae/skills/tdd/agents/openai.yaml +3 -0
  397. package/template/.trae/skills/teach/GLOSSARY-FORMAT.md +35 -0
  398. package/template/.trae/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  399. package/template/.trae/skills/teach/MISSION-FORMAT.md +31 -0
  400. package/template/.trae/skills/teach/RESOURCES-FORMAT.md +32 -0
  401. package/template/.trae/skills/teach/SKILL.md +140 -0
  402. package/template/.trae/skills/teach/agents/openai.yaml +5 -0
  403. package/template/.trae/skills/to-spec/SKILL.md +58 -0
  404. package/template/.trae/skills/to-spec/agents/openai.yaml +5 -0
  405. package/template/.trae/skills/to-tickets/SKILL.md +62 -0
  406. package/template/.trae/skills/to-tickets/agents/openai.yaml +5 -0
  407. package/template/.trae/skills/triage/SKILL.md +4 -4
  408. package/template/.trae/skills/triage/agents/openai.yaml +5 -0
  409. package/template/.trae/skills/wayfinder/SKILL.md +128 -0
  410. package/template/.trae/skills/wayfinder/agents/openai.yaml +5 -0
  411. package/template/.trae/skills/web-design-engineer/SKILL.md +2 -2
  412. package/template/.trae/skills/writing-great-skills/GLOSSARY.md +201 -0
  413. package/template/.trae/skills/writing-great-skills/SKILL.md +83 -0
  414. package/template/.trae/skills/writing-great-skills/agents/openai.yaml +5 -0
  415. package/template/.trae/skills/yss-cache/SKILL.md +44 -0
  416. package/template/.trae/skills/yss-cache/agents/openai.yaml +5 -0
  417. package/template/.trae/skills/yss-cache/references/annotations.md +39 -0
  418. package/template/.trae/skills/yss-cache/references/architecture.md +25 -0
  419. package/template/.trae/skills/yss-cache/references/configuration.md +34 -0
  420. package/template/.trae/skills/yss-cache/references/redis-fallback.md +23 -0
  421. package/template/.trae/skills/yss-cache/references/redis-topology.md +62 -0
  422. package/template/.trae/skills/yss-cache/references/serialization.md +17 -0
  423. package/template/.trae/skills/yss-cache/references/source-index.md +64 -0
  424. package/template/.trae/skills/yss-cache/references/troubleshooting.md +33 -0
  425. package/template/.trae/skills/yss-cache/references/verification.md +34 -0
  426. package/template/.trae/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  427. package/template/.trae/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  428. package/template/.trae/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  429. package/template/AGENTS.md +89 -258
  430. package/template/CONTEXT.md +24 -11
  431. package/template/README.md +31 -45
  432. package/template/docs/adr/{adr-product-design-prototype-entrypoint.md → 0001-product-design-prototype-entrypoint.md} +3 -3
  433. package/template/docs/adr/0002-yss-project-repository-mode.md +3 -0
  434. package/template/docs/agents/README.md +4 -5
  435. package/template/docs/agents/domain.md +13 -15
  436. package/template/docs/agents/gitlab-workflow-skills.md +5 -5
  437. package/template/docs/agents/issue-tracker.md +15 -14
  438. package/template/docs/agents/skills-maintenance.md +44 -109
  439. package/template/docs/agents/triage-labels.md +10 -12
  440. package/template/docs/api/templates/openapi-draft-review-checklist.md +4 -4
  441. package/template/docs/api/templates/openapi-freeze-record-template.md +5 -5
  442. package/template/docs/architecture/README.md +4 -4
  443. package/template/docs/architecture/templates/architecture-review-checklist.md +4 -4
  444. package/template/docs/architecture/templates/business-architecture-template.md +7 -7
  445. package/template/docs/architecture/templates/data-architecture-template.md +4 -4
  446. package/template/docs/architecture/templates/engineering-baseline-review-template.md +4 -3
  447. package/template/docs/architecture/templates/functional-architecture-template.md +7 -7
  448. package/template/docs/architecture/templates/system-overview-design-template.md +5 -6
  449. package/template/docs/architecture/templates/tech-design-template.md +2 -2
  450. package/template/docs/design/README.md +8 -8
  451. package/template/docs/design/design.md +10 -1
  452. package/template/docs/design/diagrams/README.md +1 -1
  453. package/template/docs/design/templates/interaction-spec-template.md +6 -6
  454. package/template/docs/design/templates/product-overview-design-template.md +8 -8
  455. package/template/docs/design/templates/prototype-confirmation-template.md +4 -4
  456. package/template/docs/design/templates/prototype-review-checklist.md +5 -5
  457. package/template/docs/design/templates/state-matrix-template.md +1 -1
  458. package/template/docs/discovery/IDEATION.md +2 -2
  459. package/template/docs/discovery/README.md +4 -4
  460. package/template/docs/discovery/templates/competitive-analysis-template.md +4 -4
  461. package/template/docs/discovery/templates/discovery-template.md +8 -8
  462. package/template/docs/implementation/create-yss-spec-repository-mode-contract.md +59 -0
  463. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +35 -35
  464. package/template/docs/process/harness-automation-candidates.md +10 -13
  465. package/template/docs/process/harness-executive-blueprint.md +11 -11
  466. package/template/docs/process/harness-optimization-backlog.md +6 -6
  467. package/template/docs/process/harness-pilot-retro-metrics.md +8 -8
  468. package/template/docs/process/harness-pilot-selection.md +8 -8
  469. package/template/docs/process/harness-process-tailoring.md +31 -19
  470. package/template/docs/process/harness-work-unit-map.md +9 -9
  471. package/template/docs/process/implementation-repo-integration.md +25 -11
  472. package/template/docs/process/lifecycle-artifact-map.md +60 -42
  473. package/template/docs/process/product-prototype-workflow.md +10 -10
  474. package/template/docs/process/skill-governance.md +12 -4
  475. package/template/docs/process/subagent-collaboration-validation.md +53 -0
  476. package/template/docs/process/subagent-collaboration.md +111 -0
  477. package/template/docs/process/template-governance-grilling-record.md +38 -0
  478. package/template/docs/process/template-governance-skill-validation.md +44 -0
  479. package/template/docs/process/templates/stage-checkpoint-template.md +42 -7
  480. package/template/docs/releases/next-major-template-governance.md +32 -0
  481. package/template/docs/requirements/README.md +11 -11
  482. package/template/docs/{adr/template.md → templates/adr-template.md} +2 -2
  483. package/template/docs/templates/agent-brief-template.md +5 -5
  484. package/template/docs/templates/build-architecture-checklist-template.md +41 -11
  485. package/template/docs/templates/implementation-repo-registry-template.md +8 -3
  486. package/template/docs/templates/implementation-routing-template.md +85 -19
  487. package/template/docs/templates/requirement-freeze-template.md +8 -8
  488. package/template/docs/templates/review-report-template.md +50 -0
  489. package/template/docs/templates/spec-delta-template.md +5 -5
  490. package/template/docs/templates/{prd-template.md → spec-template.md} +19 -9
  491. package/template/docs/templates/subagent-task-package-template.md +93 -0
  492. package/template/docs/templates/verification-record-template.md +2 -2
  493. package/template/docs/templates/vertical-slice-ticket-template.md +88 -0
  494. package/template/docs/user-guide/README.md +2 -2
  495. package/template/docs/user-guide/create-yss-spec-cli-guide.md +27 -209
  496. package/template/docs/user-guide/excalidraw-diagram-generator-guide.md +8 -8
  497. package/template/docs/user-guide/grill-with-docs-best-practices.md +16 -16
  498. package/template/docs/user-guide/grill-with-docs-guide.md +19 -19
  499. package/template/docs/user-guide/lifecycle-best-practices.md +40 -40
  500. package/template/docs/user-guide/product-lifecycle-workflow.md +31 -31
  501. package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +121 -121
  502. package/template/docs/user-guide/spec-ticket-migration-guide.md +35 -0
  503. package/template/scripts/sync-skills +126 -0
  504. package/template/scripts/update-skill-lock +202 -0
  505. package/template/scripts/verify-lifecycle-scenarios +136 -0
  506. package/template/scripts/verify-template +148 -141
  507. package/template/skills-lock.json +1068 -108
  508. package/template/yss-project.yaml +2 -0
  509. package/template.manifest.json +3 -16
  510. package/template/.agent/skills/ask-matt/SKILL.md +0 -74
  511. package/template/.agent/skills/code-review/SKILL.md +0 -89
  512. package/template/.agent/skills/codebase-design/DEEPENING.md +0 -37
  513. package/template/.agent/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
  514. package/template/.agent/skills/codebase-design/SKILL.md +0 -114
  515. package/template/.agent/skills/competitive-intelligence/SKILL.md +0 -94
  516. package/template/.agent/skills/diagnosing-bugs/SKILL.md +0 -134
  517. package/template/.agent/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
  518. package/template/.agent/skills/domain-modeling/ADR-FORMAT.md +0 -47
  519. package/template/.agent/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  520. package/template/.agent/skills/domain-modeling/SKILL.md +0 -74
  521. package/template/.agent/skills/grill-with-docs/SKILL.md +0 -7
  522. package/template/.agent/skills/implement/SKILL.md +0 -15
  523. package/template/.agent/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
  524. package/template/.agent/skills/improve-codebase-architecture/SKILL.md +0 -66
  525. package/template/.agent/skills/prototype/LOGIC.md +0 -79
  526. package/template/.agent/skills/prototype/SKILL.md +0 -30
  527. package/template/.agent/skills/prototype/UI.md +0 -112
  528. package/template/.agent/skills/research/SKILL.md +0 -12
  529. package/template/.agent/skills/resolving-merge-conflicts/SKILL.md +0 -14
  530. package/template/.agent/skills/setup-matt-pocock-skills/SKILL.md +0 -127
  531. package/template/.agent/skills/setup-matt-pocock-skills/domain.md +0 -51
  532. package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
  533. package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
  534. package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
  535. package/template/.agent/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
  536. package/template/.agent/skills/tdd/SKILL.md +0 -36
  537. package/template/.agent/skills/tdd/mocking.md +0 -59
  538. package/template/.agent/skills/tdd/tests.md +0 -77
  539. package/template/.agent/skills/to-issues/SKILL.md +0 -84
  540. package/template/.agent/skills/to-prd/SKILL.md +0 -75
  541. package/template/.agent/skills/triage/AGENT-BRIEF.md +0 -207
  542. package/template/.agent/skills/triage/OUT-OF-SCOPE.md +0 -105
  543. package/template/.agent/skills/triage/SKILL.md +0 -112
  544. package/template/.agents/skills/to-issues/SKILL.md +0 -84
  545. package/template/.agents/skills/to-prd/SKILL.md +0 -75
  546. package/template/.claude/skills/to-issues/SKILL.md +0 -84
  547. package/template/.claude/skills/to-prd/SKILL.md +0 -75
  548. package/template/.codex/skills/to-issues/SKILL.md +0 -84
  549. package/template/.codex/skills/to-prd/SKILL.md +0 -75
  550. package/template/.codex/skills/yss-cache/assets/ClearCache.java +0 -34
  551. package/template/.codex/skills/yss-cache/assets/QueryCache.java +0 -36
  552. package/template/.codex/skills/yss-cache/assets/UpdateCache.java +0 -34
  553. package/template/.codex/skills/yss-cache/references/README.md +0 -5
  554. package/template/.hermes/skills/to-issues/SKILL.md +0 -84
  555. package/template/.hermes/skills/to-prd/SKILL.md +0 -75
  556. package/template/.pi/skills/to-issues/SKILL.md +0 -84
  557. package/template/.pi/skills/to-prd/SKILL.md +0 -75
  558. package/template/.trae/skills/to-issues/SKILL.md +0 -84
  559. package/template/.trae/skills/to-prd/SKILL.md +0 -75
  560. package/template/docs/templates/vertical-slice-issue-template.md +0 -61
  561. /package/template/docs/requirements/{issues → tickets}/.gitkeep +0 -0
@@ -0,0 +1,23 @@
1
+ # Redis 故障降级与恢复
2
+
3
+ ## 状态流
4
+
5
+ ```text
6
+ Redis 健康 -> 命令或健康检查失败 -> 标记不健康 -> 跳过 Redis
7
+ -> 可选 fallback -> 周期健康检查 -> Redis 可连接
8
+ -> 清理脏 Redis cache 与本地 fallback cache -> 恢复 Redis
9
+ ```
10
+
11
+ - fallback 默认关闭,默认目标是 Caffeine。
12
+ - Redis 健康检查当前每 20 秒执行一次。
13
+ - Redis 命令级连接故障也会立即报告不健康,不必等待下一轮检查。
14
+ - 只读 fallback 不标记 Redis cache 为脏。
15
+ - put、putIfAbsent、evict、clear、invalidate 和 valueLoader 产生的回退写入会标记为脏。
16
+ - 恢复时先清理降级期间发生写操作的 Redis cache,再清理本地 fallback cache。
17
+ - Redis 失效失败时继续保持不健康状态并在后续检查重试,不能提前切回旧 Redis 数据。
18
+
19
+ ## 一致性判断
20
+
21
+ - Caffeine fallback 是每节点独立数据,不能保证跨节点读到相同值。
22
+ - `clear-fallback-on-recovery=false` 会跳过恢复清理,可能重新暴露 Redis 旧值;除非业务明确接受,不要关闭。
23
+ - 强一致、锁、幂等状态或余额类数据不应依赖缓存 fallback 保证正确性。
@@ -0,0 +1,62 @@
1
+ # Redis 拓扑
2
+
3
+ 框架使用 Spring Boot `spring.redis` 属性和 Jedis 客户端。
4
+
5
+ ## Standalone
6
+
7
+ ```yaml
8
+ spring:
9
+ redis:
10
+ host: localhost
11
+ port: 6379
12
+ database: 10
13
+ username: ${REDIS_USERNAME:}
14
+ password: ${REDIS_PASSWORD:}
15
+ connect-timeout: 5s
16
+ timeout: 10s
17
+ client-type: jedis
18
+ jedis:
19
+ pool:
20
+ enabled: true
21
+ max-active: 16
22
+ max-idle: 8
23
+ min-idle: 2
24
+ max-wait: 2s
25
+ ```
26
+
27
+ ## Sentinel
28
+
29
+ ```yaml
30
+ spring:
31
+ redis:
32
+ database: 10
33
+ username: ${REDIS_USERNAME:}
34
+ password: ${REDIS_PASSWORD:}
35
+ sentinel:
36
+ master: mymaster
37
+ nodes: host1:26379,host2:26379,host3:26379
38
+ username: ${SENTINEL_USERNAME:}
39
+ password: ${SENTINEL_PASSWORD:}
40
+ ```
41
+
42
+ 业务 Redis 认证与 Sentinel 自身认证相互独立。
43
+
44
+ ## Cluster
45
+
46
+ ```yaml
47
+ spring:
48
+ redis:
49
+ database: 0
50
+ username: ${REDIS_USERNAME:}
51
+ password: ${REDIS_PASSWORD:}
52
+ cluster:
53
+ nodes: host1:6379,host2:6379,host3:6379
54
+ max-redirects: 5
55
+ ```
56
+
57
+ ## 强制约束
58
+
59
+ - Sentinel 和 Cluster 不能同时配置,违反时启动失败。
60
+ - Redis Cluster 只允许 DB 0,非零 `spring.redis.database` 会启动失败。
61
+ - username/password、SSL、client-name、连接/读取超时和 Jedis pool 参数会传入连接配置。
62
+ - 不要提供 Lettuce 专属调优参数;当前实现明确使用 Jedis。
@@ -0,0 +1,17 @@
1
+ # 序列化兼容
2
+
3
+ 当前存在两条不同数据路径:
4
+
5
+ - 框架 `RedisTemplate` 使用 Jackson JSON serializer。
6
+ - Spring `RedisCacheManager` 沿用默认 JDK value serialization。
7
+
8
+ 两者的数据不可假设互相可读。`RedisTemplate` 的历史泛型声明与通用 JSON 行为也不完全一致,修改前必须检查消费方注入类型和实际操作。
9
+
10
+ 以下变化都属于 Redis 数据协议变更:
11
+
12
+ - 修改 value/hash serializer。
13
+ - 修改 key serializer 或 cache prefix。
14
+ - 重命名 cache name。
15
+ - 改变 key 的字段、顺序、归一化或版本。
16
+
17
+ 实施协议迁移前至少选择一种策略:双读单写、双写、版本化前缀、灰度清理或停机迁移。必须验证旧值读取、新值写入、回滚和混合版本节点;禁止把“统一 serializer”当作无风险重构。
@@ -0,0 +1,64 @@
1
+ # yss-cache Source Index
2
+
3
+ Generated: 2026-07-17T10:08:00+00:00
4
+ Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT` to reproduce or refresh.
5
+
6
+ This file is generated by `yss-source-index/scripts/refresh-yss-skill-index.py`. Do not hand-edit generated sections.
7
+
8
+ Paths below are source path hints captured at refresh time. If they do not exist in the current workspace, locate sources using `YSS_SOURCE_ROOT`, CodeGraph, package/class names, Maven artifact names, or repository search before assuming the source is unavailable.
9
+
10
+ ## Component Path Hints
11
+
12
+ - `yss-microservice-components/yss-component-cache-parent` (existed when indexed)
13
+
14
+ ## Documentation Files
15
+
16
+ - `yss-microservice-components/yss-component-cache-parent/readme.md`
17
+
18
+ ## Maven Modules
19
+
20
+ - `yss-microservice-components/yss-component-cache-parent`
21
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-cache-starter`
22
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache`
23
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache`
24
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-jetcache`
25
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache`
26
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache`
27
+
28
+ ## Key Java Entry Points
29
+
30
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache/src/main/java/com/yss/cloud/cache/caffeine/config/CacheCaffeineManagerConfig.java`
31
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache/src/main/java/com/yss/cloud/cache/caffeine/config/CacheCaffeineResolver.java`
32
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache/src/main/java/com/yss/cloud/cache/caffeine/config/CaffeineCacheBackendProvider.java`
33
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache/src/main/java/com/yss/cloud/cache/hazelcast/config/CacheHazelcastManagerConfig.java`
34
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache/src/main/java/com/yss/cloud/cache/hazelcast/config/HazelcastCacheBackendProvider.java`
35
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache/src/main/java/com/yss/cloud/cache/hazelcast/config/YssCacheHazelcastProperties.java`
36
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-jetcache/src/main/java/com/yss/cloud/cache/jetcache/CacheManagerCompose.java`
37
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisCacheBackendProvider.java`
38
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisConnFactoryConfig.java`
39
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisTemplateConfig.java`
40
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/SafeRedisCache.java`
41
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/YssCacheRedisResolver.java`
42
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/repository/BaseRedisRepository.java`
43
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/repository/YssDatamiddle.java`
44
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/ApplicationContextCacheHelper.java`
45
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheComposeResolver.java`
46
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheManagerCompose.java`
47
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheMemResolver.java`
48
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheRedisResolver.java`
49
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/EnableYssCloudCache.java`
50
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/EnableYssCloudRedisCache.java`
51
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheBackendProvider.java`
52
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheInterceptor.java`
53
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheProperties.java`
54
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/ClearCache.java`
55
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/QueryCache.java`
56
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/UpdateCache.java`
57
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/YssCacheAnnotationParser.java`
58
+ - `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/config/CacheOperationSourceConfiguration.java`
59
+
60
+ ## Recommended Next Reads
61
+
62
+ - Start with the documentation files above when learning component usage.
63
+ - Search the key Java entry points for annotations, auto configuration, properties, aspects, interceptors, handlers, and result objects before changing application code.
64
+ - Prefer existing component extension points over rewriting framework logic in business modules.
@@ -0,0 +1,33 @@
1
+ # 证据化排障
2
+
3
+ ## 缓存未命中
4
+
5
+ 1. 检查 starter/后端依赖和 `@EnableYssCloudCache`。
6
+ 2. 检查 `active-type` 与实际 Provider/CacheManager Bean。
7
+ 3. 确认调用经过 Spring 代理,不是同类自调用。
8
+ 4. 检查 SpEL 参数名、null、集合顺序和租户维度。
9
+ 5. 比较两次调用生成的 cache name/key,并检查 Redis 实际 key。
10
+ 6. 检查 `condition`、`unless`、TTL 和序列化异常。
11
+
12
+ ## 更新后仍读旧值
13
+
14
+ 1. 列出所有写、删、状态变更入口,确认每条路径都更新或清理相同 cache/key。
15
+ 2. 检查事务是否尚未提交;YSS 写/删/清理可能在 `afterCommit` 执行。
16
+ 3. 检查是否误用了 Caffeine、fallback 或 JetCache local cache。
17
+ 4. 检查 `allEntries`、`beforeInvocation` 和空 key 产生的 `SimpleKey.EMPTY`。
18
+
19
+ ## Redis 启动或连接失败
20
+
21
+ 1. 判定 Standalone/Sentinel/Cluster,检查拓扑互斥和 Cluster DB 0。
22
+ 2. 分别核对 Redis 数据节点与 Sentinel 认证。
23
+ 3. 检查 SSL、DNS、端口、connect/read timeout 和 Jedis pool。
24
+ 4. 检查用户自定义连接工厂是否使默认配置回退。
25
+
26
+ ## Redis 故障后行为异常
27
+
28
+ 1. 检查 fallback 是否明确开启、目标 Provider 是否存在且 available。
29
+ 2. 区分只读回退与脏写回退。
30
+ 3. 查看恢复时 Redis 清理失败日志;失败时框架应保持降级并重试。
31
+ 4. 多节点差异优先按 fallback 一致性窗口分析,不要误判为 Redis 广播失效。
32
+
33
+ 可先运行 `scripts/inspect-cache-usage.sh <project-root>` 取得静态证据,再进入源码路径。
@@ -0,0 +1,34 @@
1
+ # 验证与完成标准
2
+
3
+ ## 组件
4
+
5
+ ```bash
6
+ ./mvnw -f yss-microservice-components/yss-component-cache-parent/pom.xml verify
7
+ ```
8
+
9
+ 跨模块测试使用父 reactor 的 `-pl <module> -am`,避免解析本地旧 SNAPSHOT。也可运行:
10
+
11
+ ```bash
12
+ scripts/verify-cache-component.sh --source-root /path/to/yss-cloud-microservice
13
+ ```
14
+
15
+ ## 消费项目
16
+
17
+ ```bash
18
+ ./mvnw -pl <starter-module> -am -DskipTests package
19
+ ```
20
+
21
+ 完整启动依赖数据库、注册中心等外部服务时,构建验证与启动验证分开报告。
22
+
23
+ ## 验收矩阵
24
+
25
+ - 首次调用执行业务,第二次相同 key 命中缓存。
26
+ - 不同租户/业务 key 不串值。
27
+ - 更新、删除、状态变更后旧值失效。
28
+ - `condition`、`unless` 和异常返回行为符合预期。
29
+ - 默认 TTL 和枚举覆盖 TTL 在后端物理存在。
30
+ - Redis 停止后行为符合 fallback 配置;恢复后旧 Redis 值不会重新出现。
31
+ - Sentinel/Cluster 创建正确连接工厂,Cluster 使用 DB 0。
32
+ - Docker 可用时真实 Redis 认证、JSON template、JDK cache serialization 和 TTL 测试实际执行。
33
+ - Java 8 组件 class major version 为 52。
34
+ - `git diff --check` 通过,消费 starter 构建通过。
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env bash
2
+ set -u
3
+
4
+ skill_dir=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
5
+
6
+ locate_source() {
7
+ if [ "$#" -gt 0 ] && [ -n "$1" ]; then
8
+ if [ -d "$1/yss-microservice-components/yss-component-cache-parent" ]; then
9
+ echo "$1"
10
+ return 0
11
+ fi
12
+ return 1
13
+ fi
14
+ if [ -n "${YSS_SOURCE_ROOT:-}" ] && [ -d "$YSS_SOURCE_ROOT/yss-microservice-components/yss-component-cache-parent" ]; then
15
+ echo "$YSS_SOURCE_ROOT"
16
+ return 0
17
+ fi
18
+ for candidate in "$PWD" "$PWD/.." "$HOME/Projects/yss-cloud-microservice" "$HOME/Documents/yss-project/yss-cloud-microservice"; do
19
+ if [ -d "$candidate/yss-microservice-components/yss-component-cache-parent" ]; then
20
+ (CDPATH= cd -- "$candidate" && pwd)
21
+ return 0
22
+ fi
23
+ done
24
+ return 1
25
+ }
26
+
27
+ source_root=$(locate_source "${1:-}") || {
28
+ echo "ERROR: cannot locate yss-component-cache-parent; pass source root or set YSS_SOURCE_ROOT" >&2
29
+ exit 2
30
+ }
31
+
32
+ parent="$source_root/yss-microservice-components/yss-component-cache-parent"
33
+ annotation="$parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/ClearCache.java"
34
+ properties="$parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheProperties.java"
35
+ connection="$parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisConnFactoryConfig.java"
36
+ index="$skill_dir/references/source-index.md"
37
+ fail=0
38
+
39
+ require_text() {
40
+ file=$1
41
+ pattern=$2
42
+ label=$3
43
+ if ! grep -Eq "$pattern" "$file"; then
44
+ echo "STALE: $label not found in $file"
45
+ fail=1
46
+ fi
47
+ }
48
+
49
+ require_text "$annotation" 'boolean allEntries\(\)' 'ClearCache.allEntries'
50
+ require_text "$annotation" 'boolean beforeInvocation\(\)' 'ClearCache.beforeInvocation'
51
+ require_text "$properties" 'private Duration defaultTtl' 'yss.cache.default-ttl'
52
+ require_text "$properties" 'private boolean fallbackEnabled' 'Redis fallback-enabled'
53
+ require_text "$properties" 'private String fallbackType' 'Redis fallback-type'
54
+ require_text "$properties" 'private boolean clearFallbackOnRecovery' 'Redis clear-fallback-on-recovery'
55
+ require_text "$connection" 'cannot be configured together' 'Sentinel/Cluster mutual exclusion'
56
+ require_text "$connection" 'database must be 0' 'Cluster database 0 guard'
57
+
58
+ for module in yss-component-spring-cache yss-component-redis-cache yss-component-caffeine-cache yss-component-cache-starter yss-component-jetcache; do
59
+ if ! grep -q "$module" "$index"; then
60
+ echo "STALE: source-index is missing module $module"
61
+ fail=1
62
+ fi
63
+ done
64
+
65
+ generated=$(sed -n 's/^Generated: //p' "$index" | head -1)
66
+ if [ -z "$generated" ]; then
67
+ echo "STALE: source-index has no Generated timestamp"
68
+ fail=1
69
+ else
70
+ echo "INFO: source-index generated at $generated"
71
+ fi
72
+
73
+ if [ "$annotation" -nt "$index" ] || [ "$properties" -nt "$index" ] || [ "$connection" -nt "$index" ]; then
74
+ echo "STALE: critical cache source is newer than source-index"
75
+ fail=1
76
+ fi
77
+
78
+ if [ "$fail" -ne 0 ]; then
79
+ echo "RESULT: skill/source contract drift detected; refresh with yss-source-index and review semantic references"
80
+ exit 1
81
+ fi
82
+
83
+ echo "RESULT: yss-cache critical contracts match source at $source_root"
84
+ exit 0
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env bash
2
+ set -u
3
+
4
+ usage() {
5
+ echo "Usage: $0 <project-root>" >&2
6
+ }
7
+
8
+ if [ "$#" -ne 1 ]; then
9
+ usage
10
+ exit 2
11
+ fi
12
+
13
+ root=$1
14
+ if [ ! -d "$root" ]; then
15
+ echo "ERROR: project root does not exist: $root" >&2
16
+ exit 2
17
+ fi
18
+
19
+ if command -v rg >/dev/null 2>&1; then
20
+ search() { rg -n --hidden --glob '!target/**' --glob '!.git/**' --glob '*.java' --glob '*.yml' --glob '*.yaml' --glob '*.properties' --glob 'pom.xml' "$1" "$root" 2>/dev/null || true; }
21
+ files() { rg --files "$root" -g '*.yml' -g '*.yaml' -g '*.properties' -g '*.java' -g 'pom.xml'; }
22
+ else
23
+ search() { grep -REn "$1" "$root" --include='*.java' --include='*.yml' --include='*.yaml' --include='*.properties' --include='pom.xml' 2>/dev/null || true; }
24
+ files() { find "$root" -type f \( -name '*.java' -o -name '*.yml' -o -name '*.yaml' -o -name '*.properties' -o -name 'pom.xml' \); }
25
+ fi
26
+
27
+ tmp=${TMPDIR:-/tmp}/yss-cache-inspect.$$
28
+ trap 'rm -f "$tmp"' EXIT HUP INT TERM
29
+ files >"$tmp"
30
+ if [ ! -s "$tmp" ]; then
31
+ echo "ERROR: no Java, Maven, or configuration files found under $root" >&2
32
+ exit 2
33
+ fi
34
+
35
+ fail=0
36
+ echo "YSS cache usage inspection: $root"
37
+
38
+ report() {
39
+ level=$1
40
+ title=$2
41
+ pattern=$3
42
+ result=$(search "$pattern")
43
+ if [ -n "$result" ]; then
44
+ echo
45
+ echo "[$level] $title"
46
+ echo "$result" | sed -n '1,20p'
47
+ fi
48
+ }
49
+
50
+ report INFO "Cache component dependencies" 'yss-component-(cache-starter|spring-cache|redis-cache|caffeine-cache|hazelcast-cache|jetcache)'
51
+ report INFO "Cache enable annotations" '@EnableYssCloud(Cache|RedisCache)'
52
+ report INFO "YSS cache annotations" '@(QueryCache|UpdateCache|ClearCache)'
53
+ report INFO "Configured backend and TTL" 'yss\.cache\.(active-type|default-ttl)|active-type:|default-ttl:'
54
+ report INFO "Redis fallback configuration" 'fallback-(enabled|type)|clear-fallback-on-recovery'
55
+ report INFO "RedisTemplate injection contracts" 'RedisTemplate[[:space:]]*<'
56
+
57
+ sentinel=$(search 'spring\.redis\.sentinel|sentinel:')
58
+ cluster=$(search 'spring\.redis\.cluster|cluster:')
59
+ if [ -n "$sentinel" ] && [ -n "$cluster" ]; then
60
+ echo
61
+ echo "[ERROR] Both Redis Sentinel and Cluster configuration markers were found. Confirm they are not active in the same profile."
62
+ fail=1
63
+ fi
64
+
65
+ if [ -n "$cluster" ]; then
66
+ nonzero=$(search 'spring\.redis\.database[[:space:]]*=[[:space:]]*[1-9][0-9]*|database:[[:space:]]*[1-9][0-9]*')
67
+ if [ -n "$nonzero" ]; then
68
+ echo
69
+ echo "[ERROR] Redis Cluster requires database 0."
70
+ echo "$nonzero" | sed -n '1,20p'
71
+ fail=1
72
+ fi
73
+ fi
74
+
75
+ clear_without_key=$(search '@ClearCache[[:space:]]*(\([^)]*\))?')
76
+ if [ -n "$clear_without_key" ]; then
77
+ echo
78
+ echo "[REVIEW] ClearCache usages found. Verify each use has a stable key or explicit allEntries=true; no-arg methods produce SimpleKey.EMPTY."
79
+ fi
80
+
81
+ query=$(search '@QueryCache')
82
+ update=$(search '@(UpdateCache|ClearCache)')
83
+ if [ -n "$query" ] && [ -z "$update" ]; then
84
+ echo
85
+ echo "[REVIEW] QueryCache is used but no UpdateCache/ClearCache annotation was found. Inspect explicit invalidation paths."
86
+ fi
87
+
88
+ if [ "$fail" -ne 0 ]; then
89
+ echo
90
+ echo "RESULT: blocking cache configuration defects found"
91
+ exit 1
92
+ fi
93
+
94
+ echo
95
+ echo "RESULT: no statically provable blocking cache defect found; REVIEW items still require code inspection"
96
+ exit 0
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env bash
2
+ set -u
3
+
4
+ source_root=""
5
+ consumer_root=""
6
+ consumer_module=""
7
+
8
+ usage() {
9
+ echo "Usage: $0 [--source-root PATH] [--consumer-root PATH --consumer-module MODULE]" >&2
10
+ }
11
+
12
+ while [ "$#" -gt 0 ]; do
13
+ case "$1" in
14
+ --source-root) [ "$#" -ge 2 ] || { usage; exit 2; }; source_root=$2; shift 2 ;;
15
+ --consumer-root) [ "$#" -ge 2 ] || { usage; exit 2; }; consumer_root=$2; shift 2 ;;
16
+ --consumer-module) [ "$#" -ge 2 ] || { usage; exit 2; }; consumer_module=$2; shift 2 ;;
17
+ -h|--help) usage; exit 0 ;;
18
+ *) usage; exit 2 ;;
19
+ esac
20
+ done
21
+
22
+ if [ -z "$source_root" ]; then
23
+ source_root=${YSS_SOURCE_ROOT:-}
24
+ fi
25
+ if [ -z "$source_root" ]; then
26
+ for candidate in "$PWD" "$PWD/.." "$HOME/Projects/yss-cloud-microservice" "$HOME/Documents/yss-project/yss-cloud-microservice"; do
27
+ if [ -d "$candidate/yss-microservice-components/yss-component-cache-parent" ]; then
28
+ source_root=$candidate
29
+ break
30
+ fi
31
+ done
32
+ fi
33
+
34
+ parent="${source_root%/}/yss-microservice-components/yss-component-cache-parent"
35
+ if [ -z "$source_root" ] || [ ! -f "$parent/pom.xml" ]; then
36
+ echo "ERROR: cannot locate cache parent; use --source-root or YSS_SOURCE_ROOT" >&2
37
+ exit 2
38
+ fi
39
+ if [ ! -x "$source_root/mvnw" ]; then
40
+ echo "ERROR: Maven wrapper is missing or not executable: $source_root/mvnw" >&2
41
+ exit 2
42
+ fi
43
+ if { [ -n "$consumer_root" ] && [ -z "$consumer_module" ]; } || { [ -z "$consumer_root" ] && [ -n "$consumer_module" ]; }; then
44
+ echo "ERROR: --consumer-root and --consumer-module must be provided together" >&2
45
+ exit 2
46
+ fi
47
+
48
+ echo "== Cache reactor verify =="
49
+ (cd "$source_root" && ./mvnw -f "$parent/pom.xml" verify) || exit 1
50
+
51
+ echo "== Docker integration status =="
52
+ report="$parent/yss-component-redis-cache/target/surefire-reports/TEST-com.yss.cloud.cache.redis.config.RedisStandaloneIntegrationTest.xml"
53
+ if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
54
+ if [ ! -f "$report" ]; then
55
+ echo "ERROR: Docker is available but Redis integration report is missing" >&2
56
+ exit 1
57
+ fi
58
+ if grep -Eq 'skipped="[1-9]' "$report"; then
59
+ echo "ERROR: Docker is available but Redis integration test was skipped" >&2
60
+ exit 1
61
+ fi
62
+ echo "PASS: real Redis integration test executed"
63
+ else
64
+ echo "SKIP: Docker is unavailable; Redis integration test may be skipped by assumption"
65
+ fi
66
+
67
+ echo "== Diff whitespace =="
68
+ if command -v git >/dev/null 2>&1 && git -C "$source_root" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
69
+ git -C "$source_root" diff --check || exit 1
70
+ else
71
+ echo "SKIP: source root is not a Git worktree"
72
+ fi
73
+
74
+ echo "== Java 8 bytecode =="
75
+ classes=$(find "$parent" -path '*/target/classes/*.class' -type f | head -1)
76
+ if [ -z "$classes" ]; then
77
+ echo "ERROR: no compiled cache class found" >&2
78
+ exit 1
79
+ fi
80
+ if ! command -v javap >/dev/null 2>&1; then
81
+ echo "ERROR: javap is required for bytecode verification" >&2
82
+ exit 2
83
+ fi
84
+ majors=$(find "$parent" -path '*/target/classes/*.class' -type f -exec javap -verbose {} \; 2>/dev/null | sed -n 's/.*major version: *//p' | sort -u)
85
+ if [ "$majors" != "52" ]; then
86
+ echo "ERROR: expected only Java 8 major version 52, found: $majors" >&2
87
+ exit 1
88
+ fi
89
+ echo "PASS: all cache classes use major version 52"
90
+
91
+ if [ -n "$consumer_root" ]; then
92
+ echo "== Consumer build =="
93
+ if [ ! -x "$consumer_root/mvnw" ] || [ ! -f "$consumer_root/pom.xml" ]; then
94
+ echo "ERROR: invalid consumer root: $consumer_root" >&2
95
+ exit 2
96
+ fi
97
+ (cd "$consumer_root" && ./mvnw -pl "$consumer_module" -am -DskipTests package) || exit 1
98
+ fi
99
+
100
+ echo "RESULT: cache verification passed"
101
+ exit 0
@@ -20,16 +20,16 @@ The route most work travels. You have an idea and want it built.
20
20
  - **`/prototype`** to answer the question with throwaway code,
21
21
  - **`/handoff`** back what you learned, and reference it from the original idea thread.
22
22
  3. **Branch — is this a multi-session build?**
23
- - **Yes** → **`/to-prd`** (turn the thread into a PRD) → **`/to-issues`** (split the PRD into independently-grabbable issues). Because the issues are independent, **clear context between each one**: start a fresh session per issue and kick off **`/implement`** by passing it the PRD and the single issue to work on.
23
+ - **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 `.scratch/<feature>/tickets/`, 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, **clearing context between each one**.
24
24
  - **No** → **`/implement`** right here, in the same context window.
25
25
 
26
26
  Either way, **`/implement`** builds each issue by driving **`/tdd`** internally — one red-green slice at a time — then closes out by running **`/code-review`**, a two-axis review (Standards + Spec) of the diff, before committing. 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.
27
27
 
28
28
  ### Context hygiene
29
29
 
30
- Keep steps 1–3 in **one unbroken context window** — don't compact or clear until after `/to-issues` — so the grilling, PRD, and issues all build on the same thinking. Each `/implement` then starts fresh, working from the issue.
30
+ 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.
31
31
 
32
- The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~120k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-issues`, don't push on degraded — `/handoff` and continue in a fresh thread.
32
+ The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~120k 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 — `/handoff` and continue in a fresh thread.
33
33
 
34
34
  ## On-ramps
35
35
 
@@ -37,10 +37,14 @@ A starting situation that generates work, then merges onto the main flow.
37
37
 
38
38
  - **Bugs and requests piling up** → **`/triage`**. It moves issues through triage roles and produces agent-ready issues, which **`/implement`** later picks up.
39
39
 
40
- Triage is only for issues **you didn't create** — bug reports, incoming feature requests, anything that arrives raw. Issues that `/to-issues` produced are already agent-ready, so **don't triage them**.
40
+ 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**.
41
41
 
42
42
  - **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.
43
43
 
44
+ - **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.
45
+
46
+ 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.
47
+
44
48
  ## Codebase health
45
49
 
46
50
  Not feature work — upkeep.
@@ -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
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: code-review
3
- description: Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/PRD asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to "review since X".
3
+ description: Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/Spec asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to "review since X".
4
4
  ---
5
5
 
6
6
  Two-axis review of the diff between `HEAD` and a fixed point the user supplies:
7
7
 
8
8
  - **Standards** — does the code conform to this repo's documented coding standards?
9
- - **Spec** — does the code faithfully implement the originating issue / PRD / spec?
9
+ - **Spec** — does the code faithfully implement the originating Ticket / Spec?
10
10
 
11
11
  Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings.
12
12
 
@@ -26,9 +26,9 @@ Before going further, confirm the fixed point resolves (`git rev-parse <fixed-po
26
26
 
27
27
  Look for the originating spec, in this order:
28
28
 
29
- 1. Issue references in the commit messages (`#123`, `Closes #45`, GitLab `!67`, etc.) — fetch via the workflow in `docs/agents/issue-tracker.md`.
29
+ 1. Ticket references in the commit messages (`#123`, `Closes #45`, GitLab `!67`, etc.) — fetch via the workflow in `docs/agents/issue-tracker.md`.
30
30
  2. A path the user passed as an argument.
31
- 3. A PRD/spec file under `docs/`, `specs/`, or `.scratch/` matching the branch name or feature.
31
+ 3. A Spec file under `docs/`, `specs/`, or `.scratch/` matching the branch name or feature.
32
32
  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".
33
33
 
34
34
  ### 3. Identify the standards sources
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "Code Review"
3
+ short_description: "Review a diff on standards and spec"
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "Codebase Design"
3
+ short_description: "Vocabulary for deep-module design"
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: competitive-intelligence
3
- description: Use when researching competitors, market positioning, pricing, feature gaps, customer sentiment, or category trends before Discovery, PRD, product strategy, or roadmap decisions.
3
+ description: Use when researching competitors, market positioning, pricing, feature gaps, customer sentiment, or category trends before Discovery, Spec, product strategy, or roadmap decisions.
4
4
  ---
5
5
 
6
6
  # Competitive Intelligence
7
7
 
8
8
  Source requested for this project: `anthropics/knowledge-work-plugins`, `sales/skills/competitive-intelligence`.
9
9
 
10
- Use this skill when competitive or market facts are needed to shape product Discovery, PRD scope, positioning, differentiation, pricing assumptions, or roadmap tradeoffs.
10
+ Use this skill when competitive or market facts are needed to shape product Discovery, Spec scope, positioning, differentiation, pricing assumptions, or roadmap tradeoffs.
11
11
 
12
12
  ## Core Rules
13
13
 
@@ -43,11 +43,11 @@ Use this skill when competitive or market facts are needed to shape product Disc
43
43
  - Differentiators and defensibility.
44
44
  - Gaps and underserved jobs-to-be-done.
45
45
  - Risks if we copy the competitor too closely.
46
- - Product opportunities for PRD or roadmap.
46
+ - Product opportunities for Spec or roadmap.
47
47
  5. Hand off to lifecycle assets:
48
48
  - Update Discovery findings in `docs/discovery/`.
49
49
  - Create or update a competitor matrix in `docs/discovery/reports/`.
50
- - Feed stable user, pain, MVP, non-goal, and success criteria into `grill-with-docs` and `to-prd`.
50
+ - Feed stable user, pain, MVP, non-goal, and success criteria into `grill-with-docs` and `to-spec`.
51
51
  - Record uncertain claims as assumptions, not requirements.
52
52
 
53
53
  ## Output Shape
@@ -76,7 +76,7 @@ For a quick brief:
76
76
  | 维度 | 竞品 A | 竞品 B | 我们的机会 |
77
77
  |---|---|---|---|
78
78
 
79
- ### PRD 输入
79
+ ### Spec 输入
80
80
  - 用户 / 痛点:
81
81
  - MVP 建议:
82
82
  - 非目标范围: