create-yss-spec 1.1.3 → 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 (574) 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 +4 -4
  13. package/template/.agents/skills/grill-me/SKILL.md +7 -0
  14. package/template/.agents/skills/grill-me/agents/openai.yaml +5 -0
  15. package/template/.agents/skills/grill-with-docs/agents/openai.yaml +5 -0
  16. package/template/.agents/skills/grilling/SKILL.md +12 -0
  17. package/template/.agents/skills/grilling/agents/openai.yaml +3 -0
  18. package/template/.agents/skills/handoff/SKILL.md +16 -0
  19. package/template/.agents/skills/handoff/agents/openai.yaml +5 -0
  20. package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +6 -6
  21. package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
  22. package/template/.agents/skills/implement/SKILL.md +2 -2
  23. package/template/.agents/skills/implement/agents/openai.yaml +5 -0
  24. package/template/.agents/skills/improve-codebase-architecture/SKILL.md +6 -1
  25. package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  26. package/template/.agents/skills/lombok/SKILL.md +345 -0
  27. package/template/.agents/skills/mapstruct/SKILL.md +328 -0
  28. package/template/.agents/skills/prototype/LOGIC.md +3 -3
  29. package/template/.agents/skills/prototype/SKILL.md +2 -6
  30. package/template/.agents/skills/prototype/UI.md +4 -4
  31. package/template/.agents/skills/prototype/agents/openai.yaml +3 -0
  32. package/template/.agents/skills/research/agents/openai.yaml +3 -0
  33. package/template/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  34. package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  35. package/template/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  36. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  37. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  38. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  39. package/template/.agents/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  40. package/template/.agents/skills/tdd/agents/openai.yaml +3 -0
  41. package/template/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
  42. package/template/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  43. package/template/.agents/skills/teach/MISSION-FORMAT.md +31 -0
  44. package/template/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
  45. package/template/.agents/skills/teach/SKILL.md +140 -0
  46. package/template/.agents/skills/teach/agents/openai.yaml +5 -0
  47. package/template/.agents/skills/to-spec/SKILL.md +58 -0
  48. package/template/.agents/skills/to-spec/agents/openai.yaml +5 -0
  49. package/template/.agents/skills/to-tickets/SKILL.md +62 -0
  50. package/template/.agents/skills/to-tickets/agents/openai.yaml +5 -0
  51. package/template/.agents/skills/triage/SKILL.md +4 -4
  52. package/template/.agents/skills/triage/agents/openai.yaml +5 -0
  53. package/template/.agents/skills/wayfinder/SKILL.md +128 -0
  54. package/template/.agents/skills/wayfinder/agents/openai.yaml +5 -0
  55. package/template/.agents/skills/web-design-engineer/SKILL.md +2 -2
  56. package/template/.agents/skills/writing-great-skills/GLOSSARY.md +201 -0
  57. package/template/.agents/skills/writing-great-skills/SKILL.md +83 -0
  58. package/template/.agents/skills/writing-great-skills/agents/openai.yaml +5 -0
  59. package/template/.agents/skills/yss-cache/SKILL.md +44 -0
  60. package/template/.agents/skills/yss-cache/agents/openai.yaml +5 -0
  61. package/template/.agents/skills/yss-cache/references/annotations.md +39 -0
  62. package/template/.agents/skills/yss-cache/references/architecture.md +25 -0
  63. package/template/.agents/skills/yss-cache/references/configuration.md +34 -0
  64. package/template/.agents/skills/yss-cache/references/redis-fallback.md +23 -0
  65. package/template/.agents/skills/yss-cache/references/redis-topology.md +62 -0
  66. package/template/.agents/skills/yss-cache/references/serialization.md +17 -0
  67. package/template/.agents/skills/yss-cache/references/source-index.md +64 -0
  68. package/template/.agents/skills/yss-cache/references/troubleshooting.md +33 -0
  69. package/template/.agents/skills/yss-cache/references/verification.md +34 -0
  70. package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  71. package/template/.agents/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  72. package/template/.agents/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  73. package/template/.claude/skills/ask-matt/SKILL.md +8 -4
  74. package/template/.claude/skills/ask-matt/agents/openai.yaml +5 -0
  75. package/template/.claude/skills/code-review/SKILL.md +4 -4
  76. package/template/.claude/skills/code-review/agents/openai.yaml +3 -0
  77. package/template/.claude/skills/codebase-design/agents/openai.yaml +3 -0
  78. package/template/.claude/skills/competitive-intelligence/SKILL.md +5 -5
  79. package/template/.claude/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  80. package/template/.claude/skills/domain-modeling/agents/openai.yaml +3 -0
  81. package/template/.claude/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  82. package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  83. package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  84. package/template/.claude/skills/grill-me/SKILL.md +7 -0
  85. package/template/.claude/skills/grill-me/agents/openai.yaml +5 -0
  86. package/template/.claude/skills/grill-with-docs/agents/openai.yaml +5 -0
  87. package/template/.claude/skills/grilling/SKILL.md +12 -0
  88. package/template/.claude/skills/grilling/agents/openai.yaml +3 -0
  89. package/template/.claude/skills/handoff/SKILL.md +16 -0
  90. package/template/.claude/skills/handoff/agents/openai.yaml +5 -0
  91. package/template/.claude/skills/implement/SKILL.md +2 -2
  92. package/template/.claude/skills/implement/agents/openai.yaml +5 -0
  93. package/template/.claude/skills/improve-codebase-architecture/SKILL.md +6 -1
  94. package/template/.claude/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  95. package/template/.claude/skills/prototype/LOGIC.md +3 -3
  96. package/template/.claude/skills/prototype/SKILL.md +2 -6
  97. package/template/.claude/skills/prototype/UI.md +4 -4
  98. package/template/.claude/skills/prototype/agents/openai.yaml +3 -0
  99. package/template/.claude/skills/research/agents/openai.yaml +3 -0
  100. package/template/.claude/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  101. package/template/.claude/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  102. package/template/.claude/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  103. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  104. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  105. package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  106. package/template/.claude/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  107. package/template/.claude/skills/tdd/agents/openai.yaml +3 -0
  108. package/template/.claude/skills/teach/GLOSSARY-FORMAT.md +35 -0
  109. package/template/.claude/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  110. package/template/.claude/skills/teach/MISSION-FORMAT.md +31 -0
  111. package/template/.claude/skills/teach/RESOURCES-FORMAT.md +32 -0
  112. package/template/.claude/skills/teach/SKILL.md +140 -0
  113. package/template/.claude/skills/teach/agents/openai.yaml +5 -0
  114. package/template/.claude/skills/to-spec/SKILL.md +58 -0
  115. package/template/.claude/skills/to-spec/agents/openai.yaml +5 -0
  116. package/template/.claude/skills/to-tickets/SKILL.md +62 -0
  117. package/template/.claude/skills/to-tickets/agents/openai.yaml +5 -0
  118. package/template/.claude/skills/triage/SKILL.md +4 -4
  119. package/template/.claude/skills/triage/agents/openai.yaml +5 -0
  120. package/template/.claude/skills/wayfinder/SKILL.md +128 -0
  121. package/template/.claude/skills/wayfinder/agents/openai.yaml +5 -0
  122. package/template/.claude/skills/web-design-engineer/SKILL.md +2 -2
  123. package/template/.claude/skills/writing-great-skills/GLOSSARY.md +201 -0
  124. package/template/.claude/skills/writing-great-skills/SKILL.md +83 -0
  125. package/template/.claude/skills/writing-great-skills/agents/openai.yaml +5 -0
  126. package/template/.claude/skills/yss-cache/SKILL.md +44 -0
  127. package/template/.claude/skills/yss-cache/agents/openai.yaml +5 -0
  128. package/template/.claude/skills/yss-cache/references/annotations.md +39 -0
  129. package/template/.claude/skills/yss-cache/references/architecture.md +25 -0
  130. package/template/.claude/skills/yss-cache/references/configuration.md +34 -0
  131. package/template/.claude/skills/yss-cache/references/redis-fallback.md +23 -0
  132. package/template/.claude/skills/yss-cache/references/redis-topology.md +62 -0
  133. package/template/.claude/skills/yss-cache/references/serialization.md +17 -0
  134. package/template/.claude/skills/yss-cache/references/source-index.md +64 -0
  135. package/template/.claude/skills/yss-cache/references/troubleshooting.md +33 -0
  136. package/template/.claude/skills/yss-cache/references/verification.md +34 -0
  137. package/template/.claude/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  138. package/template/.claude/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  139. package/template/.claude/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  140. package/template/.codex/config.toml +3 -0
  141. package/template/.codex/skills/ask-matt/SKILL.md +8 -4
  142. package/template/.codex/skills/ask-matt/agents/openai.yaml +5 -0
  143. package/template/.codex/skills/code-review/SKILL.md +4 -4
  144. package/template/.codex/skills/code-review/agents/openai.yaml +3 -0
  145. package/template/.codex/skills/code-review-process/references/automation-and-standards.md +1 -1
  146. package/template/.codex/skills/codebase-design/agents/openai.yaml +3 -0
  147. package/template/.codex/skills/competitive-intelligence/SKILL.md +5 -5
  148. package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +2 -2
  149. package/template/.codex/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  150. package/template/.codex/skills/domain-modeling/agents/openai.yaml +3 -0
  151. package/template/.codex/skills/grill-with-docs/agents/openai.yaml +5 -0
  152. package/template/.codex/skills/handoff/SKILL.md +16 -0
  153. package/template/.codex/skills/handoff/agents/openai.yaml +5 -0
  154. package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +6 -6
  155. package/template/.codex/skills/implement/SKILL.md +2 -2
  156. package/template/.codex/skills/implement/agents/openai.yaml +5 -0
  157. package/template/.codex/skills/improve-codebase-architecture/SKILL.md +6 -1
  158. package/template/.codex/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  159. package/template/.codex/skills/product-design-prototype/SKILL.md +14 -10
  160. package/template/.codex/skills/product-design-prototype/agents/openai.yaml +1 -1
  161. package/template/.codex/skills/prototype/LOGIC.md +3 -3
  162. package/template/.codex/skills/prototype/SKILL.md +2 -6
  163. package/template/.codex/skills/prototype/UI.md +4 -4
  164. package/template/.codex/skills/prototype/agents/openai.yaml +3 -0
  165. package/template/.codex/skills/prototype-review/SKILL.md +6 -6
  166. package/template/.codex/skills/prototype-review/agents/openai.yaml +2 -2
  167. package/template/.codex/skills/research/agents/openai.yaml +3 -0
  168. package/template/.codex/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  169. package/template/.codex/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  170. package/template/.codex/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  171. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  172. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  173. package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  174. package/template/.codex/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  175. package/template/.codex/skills/tdd/agents/openai.yaml +3 -0
  176. package/template/.codex/skills/to-spec/SKILL.md +58 -0
  177. package/template/.codex/skills/to-spec/agents/openai.yaml +5 -0
  178. package/template/.codex/skills/to-tickets/SKILL.md +62 -0
  179. package/template/.codex/skills/to-tickets/agents/openai.yaml +5 -0
  180. package/template/.codex/skills/triage/SKILL.md +4 -4
  181. package/template/.codex/skills/triage/agents/openai.yaml +5 -0
  182. package/template/.codex/skills/wayfinder/SKILL.md +128 -0
  183. package/template/.codex/skills/wayfinder/agents/openai.yaml +5 -0
  184. package/template/.codex/skills/writing-great-skills/GLOSSARY.md +201 -0
  185. package/template/.codex/skills/writing-great-skills/SKILL.md +83 -0
  186. package/template/.codex/skills/writing-great-skills/agents/openai.yaml +5 -0
  187. package/template/.codex/skills/yss-api-integration/SKILL.md +1 -1
  188. package/template/.codex/skills/yss-cache/SKILL.md +29 -58
  189. package/template/.codex/skills/yss-cache/agents/openai.yaml +2 -2
  190. package/template/.codex/skills/yss-cache/references/annotations.md +39 -0
  191. package/template/.codex/skills/yss-cache/references/architecture.md +25 -0
  192. package/template/.codex/skills/yss-cache/references/configuration.md +34 -0
  193. package/template/.codex/skills/yss-cache/references/redis-fallback.md +23 -0
  194. package/template/.codex/skills/yss-cache/references/redis-topology.md +62 -0
  195. package/template/.codex/skills/yss-cache/references/serialization.md +17 -0
  196. package/template/.codex/skills/yss-cache/references/source-index.md +1 -1
  197. package/template/.codex/skills/yss-cache/references/troubleshooting.md +33 -0
  198. package/template/.codex/skills/yss-cache/references/verification.md +34 -0
  199. package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  200. package/template/.codex/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  201. package/template/.codex/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  202. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -0
  203. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +2 -2
  204. package/template/.codex/skills/yss-design-system/SKILL.md +9 -2
  205. package/template/.codex/skills/yss-design-system/references/design-system.md +12 -0
  206. package/template/.codex/skills/yss-domain-modeling/SKILL.md +3 -3
  207. package/template/.codex/skills/yss-domain-modeling/agents/openai.yaml +1 -1
  208. package/template/.codex/skills/yss-domain-modeling/references/modeling-workflow.md +2 -2
  209. package/template/.codex/skills/yss-filerunner/SKILL.md +1 -1
  210. package/template/.codex/skills/yss-openapi/SKILL.md +35 -47
  211. package/template/.codex/skills/yss-openapi/img.png +0 -0
  212. package/template/.codex/skills/yss-openapi/img_1.png +0 -0
  213. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +3 -3
  214. package/template/.codex/skills/yss-openapi-governance/SKILL.md +4 -4
  215. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +57 -34
  216. package/template/.codex/skills/yss-product-lifecycle/references/artifact-checklist.md +23 -21
  217. package/template/.codex/skills/yss-product-lifecycle/references/stage-routing.md +15 -15
  218. package/template/.codex/skills/yss-product-lifecycle/references/yss-skill-routing.md +13 -8
  219. package/template/.codex/skills/yss-repository/SKILL.md +11 -3
  220. package/template/.codex/skills/yss-router/SKILL.md +2 -3
  221. package/template/.codex/skills/yss-router/references/boundaries.md +0 -1
  222. package/template/.codex/skills/yss-source-index/references/source-map-config.md +0 -1
  223. package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -3
  224. package/template/.codex/skills/yss-web-controller/SKILL.md +9 -3
  225. package/template/.hermes/skills/ask-matt/SKILL.md +8 -4
  226. package/template/.hermes/skills/ask-matt/agents/openai.yaml +5 -0
  227. package/template/.hermes/skills/code-review/SKILL.md +4 -4
  228. package/template/.hermes/skills/code-review/agents/openai.yaml +3 -0
  229. package/template/.hermes/skills/codebase-design/agents/openai.yaml +3 -0
  230. package/template/.hermes/skills/competitive-intelligence/SKILL.md +5 -5
  231. package/template/.hermes/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  232. package/template/.hermes/skills/domain-modeling/agents/openai.yaml +3 -0
  233. package/template/.hermes/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  234. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  235. package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  236. package/template/.hermes/skills/grill-me/SKILL.md +7 -0
  237. package/template/.hermes/skills/grill-me/agents/openai.yaml +5 -0
  238. package/template/.hermes/skills/grill-with-docs/agents/openai.yaml +5 -0
  239. package/template/.hermes/skills/grilling/SKILL.md +12 -0
  240. package/template/.hermes/skills/grilling/agents/openai.yaml +3 -0
  241. package/template/.hermes/skills/handoff/SKILL.md +16 -0
  242. package/template/.hermes/skills/handoff/agents/openai.yaml +5 -0
  243. package/template/.hermes/skills/implement/SKILL.md +2 -2
  244. package/template/.hermes/skills/implement/agents/openai.yaml +5 -0
  245. package/template/.hermes/skills/improve-codebase-architecture/SKILL.md +6 -1
  246. package/template/.hermes/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  247. package/template/.hermes/skills/prototype/LOGIC.md +3 -3
  248. package/template/.hermes/skills/prototype/SKILL.md +2 -6
  249. package/template/.hermes/skills/prototype/UI.md +4 -4
  250. package/template/.hermes/skills/prototype/agents/openai.yaml +3 -0
  251. package/template/.hermes/skills/research/agents/openai.yaml +3 -0
  252. package/template/.hermes/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  253. package/template/.hermes/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  254. package/template/.hermes/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  255. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  256. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  257. package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  258. package/template/.hermes/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  259. package/template/.hermes/skills/tdd/agents/openai.yaml +3 -0
  260. package/template/.hermes/skills/teach/GLOSSARY-FORMAT.md +35 -0
  261. package/template/.hermes/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  262. package/template/.hermes/skills/teach/MISSION-FORMAT.md +31 -0
  263. package/template/.hermes/skills/teach/RESOURCES-FORMAT.md +32 -0
  264. package/template/.hermes/skills/teach/SKILL.md +140 -0
  265. package/template/.hermes/skills/teach/agents/openai.yaml +5 -0
  266. package/template/.hermes/skills/to-spec/SKILL.md +58 -0
  267. package/template/.hermes/skills/to-spec/agents/openai.yaml +5 -0
  268. package/template/.hermes/skills/to-tickets/SKILL.md +62 -0
  269. package/template/.hermes/skills/to-tickets/agents/openai.yaml +5 -0
  270. package/template/.hermes/skills/triage/SKILL.md +4 -4
  271. package/template/.hermes/skills/triage/agents/openai.yaml +5 -0
  272. package/template/.hermes/skills/wayfinder/SKILL.md +128 -0
  273. package/template/.hermes/skills/wayfinder/agents/openai.yaml +5 -0
  274. package/template/.hermes/skills/web-design-engineer/SKILL.md +2 -2
  275. package/template/.hermes/skills/writing-great-skills/GLOSSARY.md +201 -0
  276. package/template/.hermes/skills/writing-great-skills/SKILL.md +83 -0
  277. package/template/.hermes/skills/writing-great-skills/agents/openai.yaml +5 -0
  278. package/template/.hermes/skills/yss-cache/SKILL.md +44 -0
  279. package/template/.hermes/skills/yss-cache/agents/openai.yaml +5 -0
  280. package/template/.hermes/skills/yss-cache/references/annotations.md +39 -0
  281. package/template/.hermes/skills/yss-cache/references/architecture.md +25 -0
  282. package/template/.hermes/skills/yss-cache/references/configuration.md +34 -0
  283. package/template/.hermes/skills/yss-cache/references/redis-fallback.md +23 -0
  284. package/template/.hermes/skills/yss-cache/references/redis-topology.md +62 -0
  285. package/template/.hermes/skills/yss-cache/references/serialization.md +17 -0
  286. package/template/.hermes/skills/yss-cache/references/source-index.md +64 -0
  287. package/template/.hermes/skills/yss-cache/references/troubleshooting.md +33 -0
  288. package/template/.hermes/skills/yss-cache/references/verification.md +34 -0
  289. package/template/.hermes/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  290. package/template/.hermes/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  291. package/template/.hermes/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  292. package/template/.obsidian/app.json +3 -0
  293. package/template/.obsidian/appearance.json +5 -0
  294. package/template/.obsidian/community-plugins.json +4 -0
  295. package/template/.obsidian/core-plugins.json +33 -0
  296. package/template/.obsidian/graph.json +22 -0
  297. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +1085 -0
  298. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +30 -0
  299. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +12 -0
  300. package/template/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +1 -0
  301. package/template/.obsidian/plugins/obsidian-git/main.js +415 -0
  302. package/template/.obsidian/plugins/obsidian-git/manifest.json +10 -0
  303. package/template/.obsidian/plugins/obsidian-git/styles.css +705 -0
  304. package/template/.obsidian/workspace.json +222 -0
  305. package/template/.pi/skills/ask-matt/SKILL.md +8 -4
  306. package/template/.pi/skills/ask-matt/agents/openai.yaml +5 -0
  307. package/template/.pi/skills/code-review/SKILL.md +4 -4
  308. package/template/.pi/skills/code-review/agents/openai.yaml +3 -0
  309. package/template/.pi/skills/codebase-design/agents/openai.yaml +3 -0
  310. package/template/.pi/skills/competitive-intelligence/SKILL.md +5 -5
  311. package/template/.pi/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  312. package/template/.pi/skills/domain-modeling/agents/openai.yaml +3 -0
  313. package/template/.pi/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  314. package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  315. package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  316. package/template/.pi/skills/grill-me/SKILL.md +7 -0
  317. package/template/.pi/skills/grill-me/agents/openai.yaml +5 -0
  318. package/template/.pi/skills/grill-with-docs/agents/openai.yaml +5 -0
  319. package/template/.pi/skills/grilling/SKILL.md +12 -0
  320. package/template/.pi/skills/grilling/agents/openai.yaml +3 -0
  321. package/template/.pi/skills/handoff/SKILL.md +16 -0
  322. package/template/.pi/skills/handoff/agents/openai.yaml +5 -0
  323. package/template/.pi/skills/implement/SKILL.md +2 -2
  324. package/template/.pi/skills/implement/agents/openai.yaml +5 -0
  325. package/template/.pi/skills/improve-codebase-architecture/SKILL.md +6 -1
  326. package/template/.pi/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  327. package/template/.pi/skills/prototype/LOGIC.md +3 -3
  328. package/template/.pi/skills/prototype/SKILL.md +2 -6
  329. package/template/.pi/skills/prototype/UI.md +4 -4
  330. package/template/.pi/skills/prototype/agents/openai.yaml +3 -0
  331. package/template/.pi/skills/research/agents/openai.yaml +3 -0
  332. package/template/.pi/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  333. package/template/.pi/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  334. package/template/.pi/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  335. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  336. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  337. package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  338. package/template/.pi/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  339. package/template/.pi/skills/tdd/agents/openai.yaml +3 -0
  340. package/template/.pi/skills/teach/GLOSSARY-FORMAT.md +35 -0
  341. package/template/.pi/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  342. package/template/.pi/skills/teach/MISSION-FORMAT.md +31 -0
  343. package/template/.pi/skills/teach/RESOURCES-FORMAT.md +32 -0
  344. package/template/.pi/skills/teach/SKILL.md +140 -0
  345. package/template/.pi/skills/teach/agents/openai.yaml +5 -0
  346. package/template/.pi/skills/to-spec/SKILL.md +58 -0
  347. package/template/.pi/skills/to-spec/agents/openai.yaml +5 -0
  348. package/template/.pi/skills/to-tickets/SKILL.md +62 -0
  349. package/template/.pi/skills/to-tickets/agents/openai.yaml +5 -0
  350. package/template/.pi/skills/triage/SKILL.md +4 -4
  351. package/template/.pi/skills/triage/agents/openai.yaml +5 -0
  352. package/template/.pi/skills/wayfinder/SKILL.md +128 -0
  353. package/template/.pi/skills/wayfinder/agents/openai.yaml +5 -0
  354. package/template/.pi/skills/web-design-engineer/SKILL.md +2 -2
  355. package/template/.pi/skills/writing-great-skills/GLOSSARY.md +201 -0
  356. package/template/.pi/skills/writing-great-skills/SKILL.md +83 -0
  357. package/template/.pi/skills/writing-great-skills/agents/openai.yaml +5 -0
  358. package/template/.pi/skills/yss-cache/SKILL.md +44 -0
  359. package/template/.pi/skills/yss-cache/agents/openai.yaml +5 -0
  360. package/template/.pi/skills/yss-cache/references/annotations.md +39 -0
  361. package/template/.pi/skills/yss-cache/references/architecture.md +25 -0
  362. package/template/.pi/skills/yss-cache/references/configuration.md +34 -0
  363. package/template/.pi/skills/yss-cache/references/redis-fallback.md +23 -0
  364. package/template/.pi/skills/yss-cache/references/redis-topology.md +62 -0
  365. package/template/.pi/skills/yss-cache/references/serialization.md +17 -0
  366. package/template/.pi/skills/yss-cache/references/source-index.md +64 -0
  367. package/template/.pi/skills/yss-cache/references/troubleshooting.md +33 -0
  368. package/template/.pi/skills/yss-cache/references/verification.md +34 -0
  369. package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  370. package/template/.pi/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  371. package/template/.pi/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  372. package/template/.trae/skills/ask-matt/SKILL.md +8 -4
  373. package/template/.trae/skills/ask-matt/agents/openai.yaml +5 -0
  374. package/template/.trae/skills/code-review/SKILL.md +4 -4
  375. package/template/.trae/skills/code-review/agents/openai.yaml +3 -0
  376. package/template/.trae/skills/codebase-design/agents/openai.yaml +3 -0
  377. package/template/.trae/skills/competitive-intelligence/SKILL.md +5 -5
  378. package/template/.trae/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  379. package/template/.trae/skills/domain-modeling/agents/openai.yaml +3 -0
  380. package/template/.trae/skills/excalidraw-diagram-generator/SKILL.md +37 -16
  381. package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
  382. package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
  383. package/template/.trae/skills/grill-me/SKILL.md +7 -0
  384. package/template/.trae/skills/grill-me/agents/openai.yaml +5 -0
  385. package/template/.trae/skills/grill-with-docs/agents/openai.yaml +5 -0
  386. package/template/.trae/skills/grilling/SKILL.md +12 -0
  387. package/template/.trae/skills/grilling/agents/openai.yaml +3 -0
  388. package/template/.trae/skills/handoff/SKILL.md +16 -0
  389. package/template/.trae/skills/handoff/agents/openai.yaml +5 -0
  390. package/template/.trae/skills/implement/SKILL.md +2 -2
  391. package/template/.trae/skills/implement/agents/openai.yaml +5 -0
  392. package/template/.trae/skills/improve-codebase-architecture/SKILL.md +6 -1
  393. package/template/.trae/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  394. package/template/.trae/skills/prototype/LOGIC.md +3 -3
  395. package/template/.trae/skills/prototype/SKILL.md +2 -6
  396. package/template/.trae/skills/prototype/UI.md +4 -4
  397. package/template/.trae/skills/prototype/agents/openai.yaml +3 -0
  398. package/template/.trae/skills/research/agents/openai.yaml +3 -0
  399. package/template/.trae/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  400. package/template/.trae/skills/setup-matt-pocock-skills/SKILL.md +21 -32
  401. package/template/.trae/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  402. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
  403. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
  404. package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
  405. package/template/.trae/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
  406. package/template/.trae/skills/tdd/agents/openai.yaml +3 -0
  407. package/template/.trae/skills/teach/GLOSSARY-FORMAT.md +35 -0
  408. package/template/.trae/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  409. package/template/.trae/skills/teach/MISSION-FORMAT.md +31 -0
  410. package/template/.trae/skills/teach/RESOURCES-FORMAT.md +32 -0
  411. package/template/.trae/skills/teach/SKILL.md +140 -0
  412. package/template/.trae/skills/teach/agents/openai.yaml +5 -0
  413. package/template/.trae/skills/to-spec/SKILL.md +58 -0
  414. package/template/.trae/skills/to-spec/agents/openai.yaml +5 -0
  415. package/template/.trae/skills/to-tickets/SKILL.md +62 -0
  416. package/template/.trae/skills/to-tickets/agents/openai.yaml +5 -0
  417. package/template/.trae/skills/triage/SKILL.md +4 -4
  418. package/template/.trae/skills/triage/agents/openai.yaml +5 -0
  419. package/template/.trae/skills/wayfinder/SKILL.md +128 -0
  420. package/template/.trae/skills/wayfinder/agents/openai.yaml +5 -0
  421. package/template/.trae/skills/web-design-engineer/SKILL.md +2 -2
  422. package/template/.trae/skills/writing-great-skills/GLOSSARY.md +201 -0
  423. package/template/.trae/skills/writing-great-skills/SKILL.md +83 -0
  424. package/template/.trae/skills/writing-great-skills/agents/openai.yaml +5 -0
  425. package/template/.trae/skills/yss-cache/SKILL.md +44 -0
  426. package/template/.trae/skills/yss-cache/agents/openai.yaml +5 -0
  427. package/template/.trae/skills/yss-cache/references/annotations.md +39 -0
  428. package/template/.trae/skills/yss-cache/references/architecture.md +25 -0
  429. package/template/.trae/skills/yss-cache/references/configuration.md +34 -0
  430. package/template/.trae/skills/yss-cache/references/redis-fallback.md +23 -0
  431. package/template/.trae/skills/yss-cache/references/redis-topology.md +62 -0
  432. package/template/.trae/skills/yss-cache/references/serialization.md +17 -0
  433. package/template/.trae/skills/yss-cache/references/source-index.md +64 -0
  434. package/template/.trae/skills/yss-cache/references/troubleshooting.md +33 -0
  435. package/template/.trae/skills/yss-cache/references/verification.md +34 -0
  436. package/template/.trae/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
  437. package/template/.trae/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
  438. package/template/.trae/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
  439. package/template/AGENTS.md +89 -250
  440. package/template/CONTEXT.md +24 -11
  441. package/template/README.md +31 -45
  442. package/template/docs/adr/{adr-product-design-prototype-entrypoint.md → 0001-product-design-prototype-entrypoint.md} +3 -3
  443. package/template/docs/adr/0002-yss-project-repository-mode.md +3 -0
  444. package/template/docs/agents/README.md +4 -5
  445. package/template/docs/agents/domain.md +13 -15
  446. package/template/docs/agents/gitlab-workflow-skills.md +5 -5
  447. package/template/docs/agents/issue-tracker.md +15 -14
  448. package/template/docs/agents/skills-maintenance.md +44 -109
  449. package/template/docs/agents/triage-labels.md +10 -12
  450. package/template/docs/api/templates/openapi-draft-review-checklist.md +4 -4
  451. package/template/docs/api/templates/openapi-freeze-record-template.md +5 -5
  452. package/template/docs/architecture/README.md +4 -4
  453. package/template/docs/architecture/templates/architecture-review-checklist.md +4 -4
  454. package/template/docs/architecture/templates/business-architecture-template.md +7 -7
  455. package/template/docs/architecture/templates/data-architecture-template.md +4 -4
  456. package/template/docs/architecture/templates/engineering-baseline-review-template.md +4 -3
  457. package/template/docs/architecture/templates/functional-architecture-template.md +7 -7
  458. package/template/docs/architecture/templates/system-overview-design-template.md +5 -6
  459. package/template/docs/architecture/templates/tech-design-template.md +2 -2
  460. package/template/docs/design/README.md +8 -8
  461. package/template/docs/design/design.md +10 -1
  462. package/template/docs/design/diagrams/README.md +1 -1
  463. package/template/docs/design/templates/interaction-spec-template.md +6 -6
  464. package/template/docs/design/templates/product-overview-design-template.md +8 -8
  465. package/template/docs/design/templates/prototype-confirmation-template.md +4 -4
  466. package/template/docs/design/templates/prototype-review-checklist.md +5 -5
  467. package/template/docs/design/templates/state-matrix-template.md +1 -1
  468. package/template/docs/discovery/IDEATION.md +2 -2
  469. package/template/docs/discovery/README.md +4 -4
  470. package/template/docs/discovery/templates/competitive-analysis-template.md +4 -4
  471. package/template/docs/discovery/templates/discovery-template.md +8 -8
  472. package/template/docs/implementation/create-yss-spec-repository-mode-contract.md +59 -0
  473. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +49 -30
  474. package/template/docs/process/harness-automation-candidates.md +10 -13
  475. package/template/docs/process/harness-executive-blueprint.md +11 -11
  476. package/template/docs/process/harness-optimization-backlog.md +6 -6
  477. package/template/docs/process/harness-pilot-retro-metrics.md +8 -8
  478. package/template/docs/process/harness-pilot-selection.md +8 -8
  479. package/template/docs/process/harness-process-tailoring.md +35 -16
  480. package/template/docs/process/harness-work-unit-map.md +9 -9
  481. package/template/docs/process/implementation-repo-integration.md +25 -11
  482. package/template/docs/process/lifecycle-artifact-map.md +66 -40
  483. package/template/docs/process/product-prototype-workflow.md +10 -10
  484. package/template/docs/process/skill-governance.md +12 -4
  485. package/template/docs/process/subagent-collaboration-validation.md +53 -0
  486. package/template/docs/process/subagent-collaboration.md +111 -0
  487. package/template/docs/process/template-governance-grilling-record.md +38 -0
  488. package/template/docs/process/template-governance-skill-validation.md +44 -0
  489. package/template/docs/process/templates/stage-checkpoint-template.md +42 -7
  490. package/template/docs/releases/next-major-template-governance.md +32 -0
  491. package/template/docs/requirements/README.md +11 -11
  492. package/template/docs/{adr/template.md → templates/adr-template.md} +2 -2
  493. package/template/docs/templates/agent-brief-template.md +5 -5
  494. package/template/docs/templates/build-architecture-checklist-template.md +41 -11
  495. package/template/docs/templates/implementation-repo-registry-template.md +8 -3
  496. package/template/docs/templates/implementation-routing-template.md +85 -19
  497. package/template/docs/templates/requirement-freeze-template.md +8 -8
  498. package/template/docs/templates/review-report-template.md +50 -0
  499. package/template/docs/templates/spec-delta-template.md +5 -5
  500. package/template/docs/templates/{prd-template.md → spec-template.md} +19 -9
  501. package/template/docs/templates/subagent-task-package-template.md +93 -0
  502. package/template/docs/templates/verification-record-template.md +2 -2
  503. package/template/docs/templates/vertical-slice-ticket-template.md +88 -0
  504. package/template/docs/user-guide/README.md +2 -2
  505. package/template/docs/user-guide/create-yss-spec-cli-guide.md +27 -209
  506. package/template/docs/user-guide/excalidraw-diagram-generator-guide.md +8 -8
  507. package/template/docs/user-guide/grill-with-docs-best-practices.md +16 -16
  508. package/template/docs/user-guide/grill-with-docs-guide.md +19 -19
  509. package/template/docs/user-guide/lifecycle-best-practices.md +40 -40
  510. package/template/docs/user-guide/product-lifecycle-workflow.md +31 -31
  511. package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +121 -121
  512. package/template/docs/user-guide/spec-ticket-migration-guide.md +35 -0
  513. package/template/scripts/sync-skills +126 -0
  514. package/template/scripts/update-skill-lock +202 -0
  515. package/template/scripts/verify-lifecycle-scenarios +136 -0
  516. package/template/scripts/verify-template +148 -155
  517. package/template/skills-lock.json +1068 -65
  518. package/template/yss-project.yaml +2 -0
  519. package/template.manifest.json +3 -16
  520. package/template/.agent/skills/ask-matt/SKILL.md +0 -74
  521. package/template/.agent/skills/code-review/SKILL.md +0 -89
  522. package/template/.agent/skills/codebase-design/DEEPENING.md +0 -37
  523. package/template/.agent/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
  524. package/template/.agent/skills/codebase-design/SKILL.md +0 -114
  525. package/template/.agent/skills/competitive-intelligence/SKILL.md +0 -94
  526. package/template/.agent/skills/diagnosing-bugs/SKILL.md +0 -134
  527. package/template/.agent/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
  528. package/template/.agent/skills/domain-modeling/ADR-FORMAT.md +0 -47
  529. package/template/.agent/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  530. package/template/.agent/skills/domain-modeling/SKILL.md +0 -74
  531. package/template/.agent/skills/grill-with-docs/SKILL.md +0 -7
  532. package/template/.agent/skills/implement/SKILL.md +0 -15
  533. package/template/.agent/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
  534. package/template/.agent/skills/improve-codebase-architecture/SKILL.md +0 -66
  535. package/template/.agent/skills/prototype/LOGIC.md +0 -79
  536. package/template/.agent/skills/prototype/SKILL.md +0 -30
  537. package/template/.agent/skills/prototype/UI.md +0 -112
  538. package/template/.agent/skills/research/SKILL.md +0 -12
  539. package/template/.agent/skills/resolving-merge-conflicts/SKILL.md +0 -14
  540. package/template/.agent/skills/setup-matt-pocock-skills/SKILL.md +0 -127
  541. package/template/.agent/skills/setup-matt-pocock-skills/domain.md +0 -51
  542. package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
  543. package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
  544. package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
  545. package/template/.agent/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
  546. package/template/.agent/skills/tdd/SKILL.md +0 -36
  547. package/template/.agent/skills/tdd/mocking.md +0 -59
  548. package/template/.agent/skills/tdd/tests.md +0 -77
  549. package/template/.agent/skills/to-issues/SKILL.md +0 -84
  550. package/template/.agent/skills/to-prd/SKILL.md +0 -75
  551. package/template/.agent/skills/triage/AGENT-BRIEF.md +0 -207
  552. package/template/.agent/skills/triage/OUT-OF-SCOPE.md +0 -105
  553. package/template/.agent/skills/triage/SKILL.md +0 -112
  554. package/template/.agents/skills/to-issues/SKILL.md +0 -84
  555. package/template/.agents/skills/to-prd/SKILL.md +0 -75
  556. package/template/.claude/skills/to-issues/SKILL.md +0 -84
  557. package/template/.claude/skills/to-prd/SKILL.md +0 -75
  558. package/template/.codex/skills/to-issues/SKILL.md +0 -84
  559. package/template/.codex/skills/to-prd/SKILL.md +0 -75
  560. package/template/.codex/skills/yss-anti-scheduler/SKILL.md +0 -53
  561. package/template/.codex/skills/yss-anti-scheduler/agents/openai.yaml +0 -4
  562. package/template/.codex/skills/yss-anti-scheduler/references/source-index.md +0 -157
  563. package/template/.codex/skills/yss-cache/assets/ClearCache.java +0 -34
  564. package/template/.codex/skills/yss-cache/assets/QueryCache.java +0 -36
  565. package/template/.codex/skills/yss-cache/assets/UpdateCache.java +0 -34
  566. package/template/.codex/skills/yss-cache/references/README.md +0 -5
  567. package/template/.hermes/skills/to-issues/SKILL.md +0 -84
  568. package/template/.hermes/skills/to-prd/SKILL.md +0 -75
  569. package/template/.pi/skills/to-issues/SKILL.md +0 -84
  570. package/template/.pi/skills/to-prd/SKILL.md +0 -75
  571. package/template/.trae/skills/to-issues/SKILL.md +0 -84
  572. package/template/.trae/skills/to-prd/SKILL.md +0 -75
  573. package/template/docs/templates/vertical-slice-issue-template.md +0 -61
  574. /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
@@ -0,0 +1,3 @@
1
+ {
2
+ "promptDelete": false
3
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "theme": "moonstone",
3
+ "accentColor": "#6158ad",
4
+ "translucency": true
5
+ }
@@ -0,0 +1,4 @@
1
+ [
2
+ "obsidian-git",
3
+ "obsidian-excalidraw-plugin"
4
+ ]
@@ -0,0 +1,33 @@
1
+ {
2
+ "file-explorer": true,
3
+ "global-search": true,
4
+ "switcher": true,
5
+ "graph": true,
6
+ "backlink": true,
7
+ "canvas": true,
8
+ "outgoing-link": true,
9
+ "tag-pane": true,
10
+ "footnotes": true,
11
+ "properties": true,
12
+ "page-preview": true,
13
+ "daily-notes": true,
14
+ "templates": true,
15
+ "note-composer": true,
16
+ "command-palette": true,
17
+ "slash-command": false,
18
+ "editor-status": true,
19
+ "bookmarks": true,
20
+ "markdown-importer": true,
21
+ "zk-prefixer": false,
22
+ "random-note": false,
23
+ "outline": true,
24
+ "word-count": true,
25
+ "slides": false,
26
+ "audio-recorder": false,
27
+ "workspaces": false,
28
+ "file-recovery": true,
29
+ "publish": false,
30
+ "sync": true,
31
+ "bases": true,
32
+ "webviewer": false
33
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "collapse-filter": true,
3
+ "search": "",
4
+ "showTags": false,
5
+ "showAttachments": false,
6
+ "hideUnresolved": false,
7
+ "showOrphans": true,
8
+ "collapse-color-groups": true,
9
+ "colorGroups": [],
10
+ "collapse-display": true,
11
+ "showArrow": false,
12
+ "textFadeMultiplier": 0,
13
+ "nodeSizeMultiplier": 1,
14
+ "lineSizeMultiplier": 1,
15
+ "collapse-forces": true,
16
+ "centerStrength": 0.518713248970312,
17
+ "repelStrength": 10,
18
+ "linkStrength": 1,
19
+ "linkDistance": 250,
20
+ "scale": 2.2305684298600537,
21
+ "close": false
22
+ }