@bonesofspring/ai-rules 0.2.26 → 0.2.27

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 (874) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1 -1
  4. package/bin/cli.js +262 -44
  5. package/bin/lib/safe-path.js +93 -0
  6. package/bin/lib/seed-ai-local-team.js +5 -0
  7. package/bin/mavis-install.js +35 -8
  8. package/bin/opencode-install.js +34 -11
  9. package/docs/LOCAL-OVERLAY.md +186 -0
  10. package/docs/MAVIS-COMPATIBILITY.md +174 -0
  11. package/docs/MAVIS.md +120 -0
  12. package/docs/OPENCODE-COMPATIBILITY.md +54 -0
  13. package/docs/OPENCODE.md +123 -0
  14. package/docs/PRESET-CONTRIBUTION.md +431 -0
  15. package/docs/PRESET-ENGLISH-STYLE.md +91 -0
  16. package/docs/specs/INDEX.md +9 -0
  17. package/docs/specs/_templates/feature.md +32 -0
  18. package/docs/specs/_templates/page.md +47 -0
  19. package/package.json +6 -1
  20. package/presets/_shared/core/meta/preset-layering.md +1 -1
  21. package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
  22. package/presets/_shared/core/meta/preset-token-budget.md +10 -10
  23. package/presets/_shared/core/quality/code-quality-and-refactoring.md +6 -0
  24. package/presets/claude/android-kotlin/agents/build-verifier.md +2 -2
  25. package/presets/claude/android-kotlin/commands/task.md +1 -1
  26. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +32 -3
  27. package/presets/claude/android-kotlin/hooks/examples/README.md +5 -3
  28. package/presets/claude/android-kotlin/hooks/examples/test-on-save.example.sh +6 -4
  29. package/presets/claude/android-kotlin/rules/README.md +1 -1
  30. package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +6 -0
  31. package/presets/claude/android-kotlin/rules/tooling-and-review/mcp-usage.md +1 -1
  32. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +2 -2
  33. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  34. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  35. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +11 -11
  36. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +1 -1
  37. package/presets/claude/android-kotlin/rules/ui-and-accessibility/compose.md +2 -0
  38. package/presets/claude/go/CLAUDE.md +1 -1
  39. package/presets/claude/go/agents/build-verifier.md +1 -1
  40. package/presets/claude/go/commands/task.md +1 -1
  41. package/presets/claude/go/hooks/chain-team-phases.sh +32 -3
  42. package/presets/claude/go/hooks/examples/README.md +5 -3
  43. package/presets/claude/go/rules/README.md +1 -1
  44. package/presets/claude/go/rules/api-and-data/adapters-driven.md +3 -3
  45. package/presets/claude/go/rules/api-and-data/adapters-driving.md +2 -2
  46. package/presets/claude/go/rules/api-and-data/api-grpc.md +2 -2
  47. package/presets/claude/go/rules/api-and-data/api-http.md +3 -3
  48. package/presets/claude/go/rules/api-and-data/messaging-adapters.md +1 -1
  49. package/presets/claude/go/rules/api-and-data/persistence-adapters.md +2 -2
  50. package/presets/claude/go/rules/architecture/application-usecases.md +1 -1
  51. package/presets/claude/go/rules/architecture/domain-layer.md +1 -1
  52. package/presets/claude/go/rules/architecture/feature-delivery.md +1 -1
  53. package/presets/claude/go/rules/architecture/ports-interfaces.md +2 -2
  54. package/presets/claude/go/rules/stack/go-conventions.md +1 -1
  55. package/presets/claude/go/rules/testing/e2e.md +2 -2
  56. package/presets/claude/go/rules/testing/integration.md +2 -2
  57. package/presets/claude/go/rules/testing/unit.md +1 -1
  58. package/presets/claude/go/rules/tooling-and-review/agent-team-intake.md +1 -1
  59. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
  60. package/presets/claude/go/rules/tooling-and-review/code-quality.md +6 -0
  61. package/presets/claude/go/rules/tooling-and-review/code-review.md +1 -1
  62. package/presets/claude/go/rules/tooling-and-review/go-tooling.md +1 -1
  63. package/presets/claude/go/rules/tooling-and-review/mcp-usage.md +1 -1
  64. package/presets/claude/go/rules/tooling-and-review/post-change-test.md +1 -1
  65. package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
  66. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  67. package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +10 -10
  68. package/presets/claude/go/rules/tooling-and-review/security-go.md +3 -3
  69. package/presets/claude/go/rules/tooling-and-review/technical-retro.md +1 -1
  70. package/presets/claude/ios-swift/agents/build-verifier.md +3 -3
  71. package/presets/claude/ios-swift/commands/task.md +1 -1
  72. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +32 -3
  73. package/presets/claude/ios-swift/hooks/examples/README.md +5 -3
  74. package/presets/claude/ios-swift/rules/README.md +1 -1
  75. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +3 -3
  76. package/presets/claude/ios-swift/rules/architecture/reference-features.md +1 -1
  77. package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +6 -0
  78. package/presets/claude/ios-swift/rules/tooling-and-review/mcp-usage.md +1 -1
  79. package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +2 -2
  80. package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +2 -2
  81. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  82. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  83. package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +11 -11
  84. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +1 -1
  85. package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +7 -0
  86. package/presets/claude/java/CLAUDE.md +2 -2
  87. package/presets/claude/java/agents/build-verifier.md +1 -1
  88. package/presets/claude/java/commands/task.md +1 -1
  89. package/presets/claude/java/hooks/chain-team-phases.sh +32 -3
  90. package/presets/claude/java/hooks/examples/README.md +5 -3
  91. package/presets/claude/java/rules/README.md +1 -1
  92. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
  93. package/presets/claude/java/rules/tooling-and-review/code-quality.md +6 -0
  94. package/presets/claude/java/rules/tooling-and-review/mcp-usage.md +1 -1
  95. package/presets/claude/java/rules/tooling-and-review/preset-layering.md +1 -1
  96. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  97. package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +10 -10
  98. package/presets/claude/mcp-ts/CLAUDE.md +1 -1
  99. package/presets/claude/mcp-ts/agents/build-verifier.md +1 -1
  100. package/presets/claude/mcp-ts/commands/task.md +1 -1
  101. package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +32 -3
  102. package/presets/claude/mcp-ts/rules/README.md +1 -1
  103. package/presets/claude/mcp-ts/rules/api-and-data/mcp-auth-secrets.md +4 -4
  104. package/presets/claude/mcp-ts/rules/api-and-data/mcp-contract-testing.md +2 -2
  105. package/presets/claude/mcp-ts/rules/api-and-data/mcp-tool-design.md +1 -1
  106. package/presets/claude/mcp-ts/rules/api-and-data/mcp-transport-packaging.md +2 -2
  107. package/presets/claude/mcp-ts/rules/architecture/mcp-server-boundaries.md +1 -1
  108. package/presets/claude/mcp-ts/rules/testing/unit.md +2 -2
  109. package/presets/claude/mcp-ts/rules/tooling-and-review/anti-sycophancy-discipline.md +2 -2
  110. package/presets/claude/mcp-ts/rules/tooling-and-review/code-quality.md +6 -0
  111. package/presets/claude/mcp-ts/rules/tooling-and-review/mcp-ts-tooling.md +3 -3
  112. package/presets/claude/mcp-ts/rules/tooling-and-review/post-change-test.md +1 -1
  113. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +1 -1
  114. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  115. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +10 -10
  116. package/presets/claude/mcp-ts/rules/tooling-and-review/security-mcp.md +1 -1
  117. package/presets/claude/next/README.md +1 -1
  118. package/presets/claude/next/agents/build-verifier.md +2 -2
  119. package/presets/claude/next/commands/task.md +1 -1
  120. package/presets/claude/next/hooks/chain-team-phases.sh +32 -3
  121. package/presets/claude/next/hooks/examples/README.md +5 -3
  122. package/presets/claude/next/rules/README.md +1 -1
  123. package/presets/claude/next/rules/api-and-data/api-services.md +6 -4
  124. package/presets/claude/next/rules/api-and-data/store-rtk.md +6 -5
  125. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +4 -0
  126. package/presets/claude/next/rules/architecture/reference-features.md +1 -1
  127. package/presets/claude/next/rules/stack/next-app-core.md +2 -1
  128. package/presets/claude/next/rules/testing/tests-unit.md +1 -0
  129. package/presets/claude/next/rules/tooling-and-review/code-quality.md +6 -0
  130. package/presets/claude/next/rules/tooling-and-review/preset-layering.md +2 -2
  131. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  132. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  133. package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +11 -11
  134. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +1 -1
  135. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +37 -1
  136. package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  137. package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  138. package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  139. package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  140. package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  141. package/presets/claude/next/team/fixtures/metrics.example.json +54 -0
  142. package/presets/claude/nuxt/agents/build-verifier.md +2 -2
  143. package/presets/claude/nuxt/commands/task.md +1 -1
  144. package/presets/claude/nuxt/hooks/chain-team-phases.sh +32 -3
  145. package/presets/claude/nuxt/hooks/examples/README.md +5 -3
  146. package/presets/claude/nuxt/hooks/examples/format-edited.example.sh +8 -7
  147. package/presets/claude/nuxt/hooks/examples/test-on-save.example.sh +8 -3
  148. package/presets/claude/nuxt/rules/README.md +1 -1
  149. package/presets/claude/nuxt/rules/architecture/layer-barrel-exports.md +1 -1
  150. package/presets/claude/nuxt/rules/architecture/reference-features.md +1 -1
  151. package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +6 -0
  152. package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +2 -2
  153. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  154. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  155. package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +11 -11
  156. package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +1 -1
  157. package/presets/claude/nuxt/rules/ui-and-accessibility/vue-ui.md +7 -0
  158. package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  159. package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  160. package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  161. package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  162. package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  163. package/presets/claude/nuxt/team/fixtures/metrics.example.json +54 -0
  164. package/presets/claude/php-hexagonal/CLAUDE.md +2 -2
  165. package/presets/claude/php-hexagonal/agents/build-verifier.md +1 -1
  166. package/presets/claude/php-hexagonal/commands/task.md +1 -1
  167. package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +32 -3
  168. package/presets/claude/php-hexagonal/hooks/examples/README.md +5 -3
  169. package/presets/claude/php-hexagonal/rules/README.md +1 -1
  170. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
  171. package/presets/claude/php-hexagonal/rules/tooling-and-review/code-quality.md +6 -0
  172. package/presets/claude/php-hexagonal/rules/tooling-and-review/mcp-usage.md +1 -1
  173. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +1 -1
  174. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  175. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +10 -10
  176. package/presets/claude/php-laravel/agents/build-verifier.md +1 -1
  177. package/presets/claude/php-laravel/commands/task.md +1 -1
  178. package/presets/claude/php-laravel/hooks/chain-team-phases.sh +32 -3
  179. package/presets/claude/php-laravel/hooks/examples/README.md +5 -3
  180. package/presets/claude/php-laravel/rules/README.md +1 -1
  181. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
  182. package/presets/claude/php-laravel/rules/tooling-and-review/code-quality.md +6 -0
  183. package/presets/claude/php-laravel/rules/tooling-and-review/mcp-usage.md +1 -1
  184. package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +1 -1
  185. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  186. package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +10 -10
  187. package/presets/claude/svelte/agents/build-verifier.md +2 -2
  188. package/presets/claude/svelte/commands/task.md +1 -1
  189. package/presets/claude/svelte/hooks/chain-team-phases.sh +32 -3
  190. package/presets/claude/svelte/hooks/examples/README.md +5 -3
  191. package/presets/claude/svelte/rules/README.md +1 -1
  192. package/presets/claude/svelte/rules/api-and-data/store-svelte.md +1 -1
  193. package/presets/claude/svelte/rules/architecture/layer-barrel-exports.md +1 -1
  194. package/presets/claude/svelte/rules/architecture/reference-features.md +1 -1
  195. package/presets/claude/svelte/rules/tooling-and-review/code-quality.md +6 -0
  196. package/presets/claude/svelte/rules/tooling-and-review/mcp-usage.md +1 -1
  197. package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +2 -2
  198. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  199. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  200. package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +11 -11
  201. package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +1 -1
  202. package/presets/claude/svelte/rules/ui-and-accessibility/no-rest-props-spread.md +1 -1
  203. package/presets/claude/svelte/rules/ui-and-accessibility/svelte-ui.md +7 -0
  204. package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  205. package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  206. package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  207. package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  208. package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  209. package/presets/claude/svelte/team/fixtures/metrics.example.json +54 -0
  210. package/presets/cursor/android-kotlin/agents/build-verifier.md +2 -2
  211. package/presets/cursor/android-kotlin/commands/task.md +1 -1
  212. package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +32 -3
  213. package/presets/cursor/android-kotlin/hooks/examples/test-on-save.example.sh +6 -4
  214. package/presets/cursor/android-kotlin/rules/README.md +1 -1
  215. package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +6 -0
  216. package/presets/cursor/android-kotlin/rules/compose-ui.mdc +2 -0
  217. package/presets/cursor/android-kotlin/rules/preset-layering.mdc +2 -2
  218. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +1 -1
  219. package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +2 -2
  220. package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +11 -11
  221. package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +1 -1
  222. package/presets/cursor/go/README.md +1 -1
  223. package/presets/cursor/go/agents/build-verifier.md +1 -1
  224. package/presets/cursor/go/commands/task.md +1 -1
  225. package/presets/cursor/go/hooks/chain-team-phases.sh +32 -3
  226. package/presets/cursor/go/rules/README.md +2 -2
  227. package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +6 -0
  228. package/presets/cursor/go/rules/preset-layering.mdc +1 -1
  229. package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
  230. package/presets/cursor/go/rules/preset-token-budget.mdc +10 -10
  231. package/presets/cursor/ios-swift/README.md +1 -1
  232. package/presets/cursor/ios-swift/agents/build-verifier.md +3 -3
  233. package/presets/cursor/ios-swift/commands/task.md +1 -1
  234. package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +32 -3
  235. package/presets/cursor/ios-swift/rules/README.md +2 -2
  236. package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +6 -0
  237. package/presets/cursor/ios-swift/rules/preset-layering.mdc +2 -2
  238. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +1 -1
  239. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -2
  240. package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +11 -11
  241. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +1 -1
  242. package/presets/cursor/ios-swift/rules/reference-features.mdc +1 -1
  243. package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +7 -0
  244. package/presets/cursor/java/AGENTS.md +1 -1
  245. package/presets/cursor/java/agents/build-verifier.md +1 -1
  246. package/presets/cursor/java/commands/task.md +1 -1
  247. package/presets/cursor/java/hooks/chain-team-phases.sh +32 -3
  248. package/presets/cursor/java/rules/README.md +2 -2
  249. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +1 -1
  250. package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +6 -0
  251. package/presets/cursor/java/rules/preset-layering.mdc +1 -1
  252. package/presets/cursor/java/rules/preset-pr-checklist.mdc +1 -1
  253. package/presets/cursor/java/rules/preset-token-budget.mdc +10 -10
  254. package/presets/cursor/mcp-ts/agents/build-verifier.md +1 -1
  255. package/presets/cursor/mcp-ts/commands/task.md +1 -1
  256. package/presets/cursor/mcp-ts/hooks/chain-team-phases.sh +32 -3
  257. package/presets/cursor/mcp-ts/rules/README.md +2 -2
  258. package/presets/cursor/mcp-ts/rules/anti-sycophancy-discipline.mdc +2 -2
  259. package/presets/cursor/mcp-ts/rules/code-quality-and-refactoring.mdc +6 -0
  260. package/presets/cursor/mcp-ts/rules/mcp-auth-secrets.mdc +4 -4
  261. package/presets/cursor/mcp-ts/rules/mcp-contract-testing.mdc +2 -2
  262. package/presets/cursor/mcp-ts/rules/mcp-server-boundaries.mdc +1 -1
  263. package/presets/cursor/mcp-ts/rules/mcp-tool-design.mdc +1 -1
  264. package/presets/cursor/mcp-ts/rules/mcp-transport-packaging.mdc +2 -2
  265. package/presets/cursor/mcp-ts/rules/mcp-ts-tooling.mdc +3 -3
  266. package/presets/cursor/mcp-ts/rules/preset-layering.mdc +1 -1
  267. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +1 -1
  268. package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +10 -10
  269. package/presets/cursor/mcp-ts/rules/security-mcp.mdc +1 -1
  270. package/presets/cursor/mcp-ts/rules/tests-unit.mdc +2 -2
  271. package/presets/cursor/next/README.md +2 -2
  272. package/presets/cursor/next/agents/build-verifier.md +2 -2
  273. package/presets/cursor/next/commands/task.md +1 -1
  274. package/presets/cursor/next/hooks/chain-team-phases.sh +32 -3
  275. package/presets/cursor/next/rules/README.md +1 -1
  276. package/presets/cursor/next/rules/api-services.mdc +6 -4
  277. package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +6 -0
  278. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +4 -0
  279. package/presets/cursor/next/rules/next-app-core.mdc +2 -1
  280. package/presets/cursor/next/rules/preset-layering.mdc +2 -2
  281. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +1 -1
  282. package/presets/cursor/next/rules/preset-pr-checklist.mdc +2 -2
  283. package/presets/cursor/next/rules/preset-token-budget.mdc +11 -11
  284. package/presets/cursor/next/rules/preset-twin-sync.mdc +1 -1
  285. package/presets/cursor/next/rules/react-ui.mdc +37 -1
  286. package/presets/cursor/next/rules/reference-features.mdc +1 -1
  287. package/presets/cursor/next/rules/store-rtk.mdc +6 -5
  288. package/presets/cursor/next/rules/tests-unit.mdc +1 -0
  289. package/presets/cursor/nuxt/README.md +1 -1
  290. package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
  291. package/presets/cursor/nuxt/commands/task.md +1 -1
  292. package/presets/cursor/nuxt/hooks/chain-team-phases.sh +32 -3
  293. package/presets/cursor/nuxt/hooks/examples/format-edited.example.sh +8 -7
  294. package/presets/cursor/nuxt/hooks/examples/test-on-save.example.sh +8 -3
  295. package/presets/cursor/nuxt/rules/anti-sycophancy-discipline.mdc +1 -1
  296. package/presets/cursor/nuxt/rules/code-quality-and-refactoring.mdc +6 -0
  297. package/presets/cursor/nuxt/rules/design-guidance.mdc +1 -1
  298. package/presets/cursor/nuxt/rules/layer-barrel-exports.mdc +1 -1
  299. package/presets/cursor/nuxt/rules/preset-layering.mdc +2 -2
  300. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +1 -1
  301. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +2 -2
  302. package/presets/cursor/nuxt/rules/preset-token-budget.mdc +11 -11
  303. package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +1 -1
  304. package/presets/cursor/nuxt/rules/reference-features.mdc +1 -1
  305. package/presets/cursor/nuxt/rules/vue-ui.mdc +7 -0
  306. package/presets/cursor/php-hexagonal/AGENTS.md +1 -1
  307. package/presets/cursor/php-hexagonal/agents/build-verifier.md +1 -1
  308. package/presets/cursor/php-hexagonal/commands/task.md +1 -1
  309. package/presets/cursor/php-hexagonal/hooks/chain-team-phases.sh +32 -3
  310. package/presets/cursor/php-hexagonal/rules/README.md +2 -2
  311. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +1 -1
  312. package/presets/cursor/php-hexagonal/rules/code-quality-and-refactoring.mdc +6 -0
  313. package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +1 -1
  314. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +1 -1
  315. package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +10 -10
  316. package/presets/cursor/php-laravel/AGENTS.md +1 -1
  317. package/presets/cursor/php-laravel/agents/build-verifier.md +1 -1
  318. package/presets/cursor/php-laravel/commands/task.md +1 -1
  319. package/presets/cursor/php-laravel/hooks/chain-team-phases.sh +32 -3
  320. package/presets/cursor/php-laravel/rules/README.md +2 -2
  321. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +1 -1
  322. package/presets/cursor/php-laravel/rules/code-quality-and-refactoring.mdc +6 -0
  323. package/presets/cursor/php-laravel/rules/preset-layering.mdc +1 -1
  324. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +1 -1
  325. package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +10 -10
  326. package/presets/cursor/svelte/README.md +1 -1
  327. package/presets/cursor/svelte/agents/build-verifier.md +2 -2
  328. package/presets/cursor/svelte/commands/task.md +1 -1
  329. package/presets/cursor/svelte/hooks/chain-team-phases.sh +32 -3
  330. package/presets/cursor/svelte/rules/code-quality-and-refactoring.mdc +6 -0
  331. package/presets/cursor/svelte/rules/layer-barrel-exports.mdc +1 -1
  332. package/presets/cursor/svelte/rules/preset-layering.mdc +2 -2
  333. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +1 -1
  334. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +2 -2
  335. package/presets/cursor/svelte/rules/preset-token-budget.mdc +11 -11
  336. package/presets/cursor/svelte/rules/preset-twin-sync.mdc +1 -1
  337. package/presets/cursor/svelte/rules/reference-features.mdc +1 -1
  338. package/presets/cursor/svelte/rules/svelte-ui.mdc +7 -0
  339. package/presets/mavis/android-kotlin/adapter-map.json +1 -1
  340. package/presets/mavis/android-kotlin/agents/build-verifier.md +2 -2
  341. package/presets/mavis/android-kotlin/commands/spec-start.md +2 -2
  342. package/presets/mavis/android-kotlin/commands/task.md +6 -6
  343. package/presets/mavis/android-kotlin/hooks/chain-team-phases.sh +32 -3
  344. package/presets/mavis/android-kotlin/rules/code-quality-and-refactoring.md +14 -0
  345. package/presets/mavis/android-kotlin/rules/code-review-mr.md +39 -0
  346. package/presets/mavis/android-kotlin/rules/compose-ui.md +2 -0
  347. package/presets/mavis/android-kotlin/rules/design-guidance.md +5 -0
  348. package/presets/mavis/android-kotlin/rules/mcp-usage.md +8 -0
  349. package/presets/mavis/android-kotlin/rules/mockup-review.md +4 -0
  350. package/presets/mavis/android-kotlin/rules/preset-layering.md +1 -1
  351. package/presets/mavis/android-kotlin/rules/preset-no-cross-stack-leakage.md +4 -0
  352. package/presets/mavis/android-kotlin/rules/preset-pr-checklist.md +1 -1
  353. package/presets/mavis/android-kotlin/rules/preset-token-budget.md +10 -10
  354. package/presets/mavis/android-kotlin/rules/product-specs-authoring.md +6 -0
  355. package/presets/mavis/android-kotlin/rules/product-specs.md +5 -0
  356. package/presets/mavis/android-kotlin/rules/ux-design.md +4 -0
  357. package/presets/mavis/android-kotlin/skills/debug-investigation/SKILL.md +39 -0
  358. package/presets/mavis/go/adapter-map.json +1 -1
  359. package/presets/mavis/go/agents/build-verifier.md +1 -1
  360. package/presets/mavis/go/commands/spec-start.md +2 -2
  361. package/presets/mavis/go/commands/task.md +6 -6
  362. package/presets/mavis/go/hooks/chain-team-phases.sh +32 -3
  363. package/presets/mavis/go/rules/agent-team-intake.md +4 -0
  364. package/presets/mavis/go/rules/code-quality-and-refactoring.md +15 -0
  365. package/presets/mavis/go/rules/code-review-mr.md +7 -0
  366. package/presets/mavis/go/rules/design-guidance.md +5 -0
  367. package/presets/mavis/go/rules/mcp-usage.md +7 -0
  368. package/presets/mavis/go/rules/preset-layering.md +1 -1
  369. package/presets/mavis/go/rules/preset-pr-checklist.md +1 -1
  370. package/presets/mavis/go/rules/preset-token-budget.md +10 -10
  371. package/presets/mavis/go/rules/product-specs-authoring.md +6 -0
  372. package/presets/mavis/go/rules/product-specs.md +6 -0
  373. package/presets/mavis/go/skills/debug-investigation/SKILL.md +20 -0
  374. package/presets/mavis/ios-swift/adapter-map.json +1 -1
  375. package/presets/mavis/ios-swift/agents/build-verifier.md +3 -3
  376. package/presets/mavis/ios-swift/commands/spec-start.md +2 -2
  377. package/presets/mavis/ios-swift/commands/task.md +6 -6
  378. package/presets/mavis/ios-swift/hooks/chain-team-phases.sh +32 -3
  379. package/presets/mavis/ios-swift/rules/code-quality-and-refactoring.md +14 -0
  380. package/presets/mavis/ios-swift/rules/code-review-mr.md +39 -0
  381. package/presets/mavis/ios-swift/rules/design-guidance.md +5 -0
  382. package/presets/mavis/ios-swift/rules/feature-delivery-workflow.md +66 -0
  383. package/presets/mavis/ios-swift/rules/mcp-usage.md +8 -0
  384. package/presets/mavis/ios-swift/rules/mockup-review.md +4 -0
  385. package/presets/mavis/ios-swift/rules/preset-layering.md +1 -1
  386. package/presets/mavis/ios-swift/rules/preset-pr-checklist.md +1 -1
  387. package/presets/mavis/ios-swift/rules/preset-token-budget.md +10 -10
  388. package/presets/mavis/ios-swift/rules/product-specs-authoring.md +6 -0
  389. package/presets/mavis/ios-swift/rules/product-specs.md +5 -0
  390. package/presets/mavis/ios-swift/rules/reference-features.md +49 -0
  391. package/presets/mavis/ios-swift/rules/swiftui-ui.md +7 -0
  392. package/presets/mavis/ios-swift/rules/ux-design.md +4 -0
  393. package/presets/mavis/ios-swift/skills/debug-investigation/SKILL.md +39 -0
  394. package/presets/mavis/java/adapter-map.json +1 -1
  395. package/presets/mavis/java/agents/build-verifier.md +1 -1
  396. package/presets/mavis/java/commands/spec-start.md +2 -2
  397. package/presets/mavis/java/commands/task.md +6 -6
  398. package/presets/mavis/java/hooks/chain-team-phases.sh +32 -3
  399. package/presets/mavis/java/rules/agent-team-intake.md +4 -0
  400. package/presets/mavis/java/rules/code-quality-and-refactoring.md +15 -0
  401. package/presets/mavis/java/rules/code-review-mr.md +9 -0
  402. package/presets/mavis/java/rules/design-guidance.md +6 -0
  403. package/presets/mavis/java/rules/mcp-usage.md +6 -0
  404. package/presets/mavis/java/rules/preset-layering.md +1 -1
  405. package/presets/mavis/java/rules/preset-pr-checklist.md +1 -1
  406. package/presets/mavis/java/rules/preset-token-budget.md +10 -10
  407. package/presets/mavis/java/rules/product-specs-authoring.md +6 -0
  408. package/presets/mavis/java/rules/product-specs.md +6 -0
  409. package/presets/mavis/java/skills/debug-investigation/SKILL.md +20 -0
  410. package/presets/mavis/mcp-ts/adapter-map.json +1 -1
  411. package/presets/mavis/mcp-ts/agents/build-verifier.md +1 -1
  412. package/presets/mavis/mcp-ts/commands/spec-start.md +2 -2
  413. package/presets/mavis/mcp-ts/commands/task.md +6 -6
  414. package/presets/mavis/mcp-ts/hooks/chain-team-phases.sh +32 -3
  415. package/presets/mavis/mcp-ts/rules/agent-team-intake.md +5 -0
  416. package/presets/mavis/mcp-ts/rules/anti-sycophancy-discipline.md +4 -0
  417. package/presets/mavis/mcp-ts/rules/code-quality-and-refactoring.md +15 -0
  418. package/presets/mavis/mcp-ts/rules/code-review-mr.md +6 -0
  419. package/presets/mavis/mcp-ts/rules/design-guidance.md +5 -0
  420. package/presets/mavis/mcp-ts/rules/mcp-usage.md +7 -0
  421. package/presets/mavis/mcp-ts/rules/preset-layering.md +1 -1
  422. package/presets/mavis/mcp-ts/rules/preset-pr-checklist.md +1 -1
  423. package/presets/mavis/mcp-ts/rules/preset-token-budget.md +10 -10
  424. package/presets/mavis/mcp-ts/rules/product-specs-authoring.md +6 -0
  425. package/presets/mavis/mcp-ts/rules/product-specs.md +6 -0
  426. package/presets/mavis/mcp-ts/skills/debug-investigation/SKILL.md +15 -0
  427. package/presets/mavis/next/adapter-map.json +1 -1
  428. package/presets/mavis/next/agents/build-verifier.md +2 -2
  429. package/presets/mavis/next/commands/spec-start.md +2 -2
  430. package/presets/mavis/next/commands/task.md +6 -6
  431. package/presets/mavis/next/hooks/chain-team-phases.sh +32 -3
  432. package/presets/mavis/next/rules/api-services.md +6 -4
  433. package/presets/mavis/next/rules/code-quality-and-refactoring.md +13 -0
  434. package/presets/mavis/next/rules/code-review-mr.md +13 -0
  435. package/presets/mavis/next/rules/design-guidance.md +5 -0
  436. package/presets/mavis/next/rules/feature-delivery-workflow.md +85 -0
  437. package/presets/mavis/next/rules/mcp-usage.md +9 -0
  438. package/presets/mavis/next/rules/mockup-review.md +4 -0
  439. package/presets/mavis/next/rules/next-app-core.md +2 -1
  440. package/presets/mavis/next/rules/preset-layering.md +1 -1
  441. package/presets/mavis/next/rules/preset-pr-checklist.md +1 -1
  442. package/presets/mavis/next/rules/preset-token-budget.md +10 -10
  443. package/presets/mavis/next/rules/product-specs-authoring.md +6 -0
  444. package/presets/mavis/next/rules/product-specs.md +6 -0
  445. package/presets/mavis/next/rules/react-ui.md +37 -1
  446. package/presets/mavis/next/rules/reference-features.md +36 -0
  447. package/presets/mavis/next/rules/store-rtk.md +6 -5
  448. package/presets/mavis/next/rules/tests-e2e-structure.md +15 -0
  449. package/presets/mavis/next/rules/tests-unit.md +33 -0
  450. package/presets/mavis/next/rules/ux-design.md +4 -0
  451. package/presets/mavis/next/skills/debug-investigation/SKILL.md +28 -0
  452. package/presets/mavis/nuxt/adapter-map.json +1 -1
  453. package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
  454. package/presets/mavis/nuxt/commands/spec-start.md +2 -2
  455. package/presets/mavis/nuxt/commands/task.md +6 -6
  456. package/presets/mavis/nuxt/hooks/chain-team-phases.sh +32 -3
  457. package/presets/mavis/nuxt/rules/code-quality-and-refactoring.md +13 -0
  458. package/presets/mavis/nuxt/rules/code-review-mr.md +13 -0
  459. package/presets/mavis/nuxt/rules/design-guidance.md +5 -0
  460. package/presets/mavis/nuxt/rules/feature-delivery-workflow.md +82 -0
  461. package/presets/mavis/nuxt/rules/mcp-usage.md +9 -0
  462. package/presets/mavis/nuxt/rules/mockup-review.md +4 -0
  463. package/presets/mavis/nuxt/rules/preset-layering.md +1 -1
  464. package/presets/mavis/nuxt/rules/preset-pr-checklist.md +1 -1
  465. package/presets/mavis/nuxt/rules/preset-token-budget.md +10 -10
  466. package/presets/mavis/nuxt/rules/product-specs-authoring.md +6 -0
  467. package/presets/mavis/nuxt/rules/product-specs.md +5 -0
  468. package/presets/mavis/nuxt/rules/reference-features.md +36 -0
  469. package/presets/mavis/nuxt/rules/tests-e2e-structure.md +16 -0
  470. package/presets/mavis/nuxt/rules/tests-unit.md +11 -0
  471. package/presets/mavis/nuxt/rules/ux-design.md +4 -0
  472. package/presets/mavis/nuxt/rules/vue-ui.md +7 -0
  473. package/presets/mavis/nuxt/skills/debug-investigation/SKILL.md +30 -0
  474. package/presets/mavis/php-hexagonal/adapter-map.json +1 -1
  475. package/presets/mavis/php-hexagonal/agents/build-verifier.md +1 -1
  476. package/presets/mavis/php-hexagonal/commands/spec-start.md +2 -2
  477. package/presets/mavis/php-hexagonal/commands/task.md +6 -6
  478. package/presets/mavis/php-hexagonal/hooks/chain-team-phases.sh +32 -3
  479. package/presets/mavis/php-hexagonal/rules/agent-team-intake.md +4 -0
  480. package/presets/mavis/php-hexagonal/rules/code-quality-and-refactoring.md +15 -0
  481. package/presets/mavis/php-hexagonal/rules/code-review-mr.md +9 -0
  482. package/presets/mavis/php-hexagonal/rules/design-guidance.md +6 -0
  483. package/presets/mavis/php-hexagonal/rules/mcp-usage.md +6 -0
  484. package/presets/mavis/php-hexagonal/rules/preset-layering.md +1 -1
  485. package/presets/mavis/php-hexagonal/rules/preset-pr-checklist.md +1 -1
  486. package/presets/mavis/php-hexagonal/rules/preset-token-budget.md +10 -10
  487. package/presets/mavis/php-hexagonal/rules/product-specs-authoring.md +6 -0
  488. package/presets/mavis/php-hexagonal/rules/product-specs.md +6 -0
  489. package/presets/mavis/php-hexagonal/skills/debug-investigation/SKILL.md +20 -0
  490. package/presets/mavis/php-laravel/adapter-map.json +1 -1
  491. package/presets/mavis/php-laravel/agents/build-verifier.md +1 -1
  492. package/presets/mavis/php-laravel/commands/spec-start.md +2 -2
  493. package/presets/mavis/php-laravel/commands/task.md +6 -6
  494. package/presets/mavis/php-laravel/hooks/chain-team-phases.sh +32 -3
  495. package/presets/mavis/php-laravel/rules/agent-team-intake.md +4 -0
  496. package/presets/mavis/php-laravel/rules/code-quality-and-refactoring.md +15 -0
  497. package/presets/mavis/php-laravel/rules/code-review-mr.md +10 -0
  498. package/presets/mavis/php-laravel/rules/design-guidance.md +6 -0
  499. package/presets/mavis/php-laravel/rules/mcp-usage.md +6 -0
  500. package/presets/mavis/php-laravel/rules/preset-layering.md +1 -1
  501. package/presets/mavis/php-laravel/rules/preset-pr-checklist.md +1 -1
  502. package/presets/mavis/php-laravel/rules/preset-token-budget.md +10 -10
  503. package/presets/mavis/php-laravel/rules/product-specs-authoring.md +6 -0
  504. package/presets/mavis/php-laravel/rules/product-specs.md +6 -0
  505. package/presets/mavis/php-laravel/skills/debug-investigation/SKILL.md +20 -0
  506. package/presets/mavis/svelte/adapter-map.json +1 -1
  507. package/presets/mavis/svelte/agents/build-verifier.md +2 -2
  508. package/presets/mavis/svelte/commands/spec-start.md +2 -2
  509. package/presets/mavis/svelte/commands/task.md +6 -6
  510. package/presets/mavis/svelte/hooks/chain-team-phases.sh +32 -3
  511. package/presets/mavis/svelte/rules/code-quality-and-refactoring.md +13 -0
  512. package/presets/mavis/svelte/rules/code-review-mr.md +13 -0
  513. package/presets/mavis/svelte/rules/design-guidance.md +5 -0
  514. package/presets/mavis/svelte/rules/feature-delivery-workflow.md +54 -0
  515. package/presets/mavis/svelte/rules/mcp-usage.md +9 -0
  516. package/presets/mavis/svelte/rules/mockup-review.md +4 -0
  517. package/presets/mavis/svelte/rules/preset-layering.md +1 -1
  518. package/presets/mavis/svelte/rules/preset-pr-checklist.md +1 -1
  519. package/presets/mavis/svelte/rules/preset-token-budget.md +10 -10
  520. package/presets/mavis/svelte/rules/product-specs-authoring.md +6 -0
  521. package/presets/mavis/svelte/rules/product-specs.md +5 -0
  522. package/presets/mavis/svelte/rules/reference-features.md +37 -0
  523. package/presets/mavis/svelte/rules/svelte-ui.md +7 -0
  524. package/presets/mavis/svelte/rules/tests-e2e-structure.md +16 -0
  525. package/presets/mavis/svelte/rules/tests-unit.md +11 -0
  526. package/presets/mavis/svelte/rules/ux-design.md +4 -0
  527. package/presets/mavis/svelte/skills/debug-investigation/SKILL.md +30 -0
  528. package/presets/opencode/android-kotlin/adapter-map.json +1 -1
  529. package/presets/opencode/android-kotlin/agents/build-verifier.md +2 -2
  530. package/presets/opencode/android-kotlin/commands/spec-start.md +1 -1
  531. package/presets/opencode/android-kotlin/commands/task-continue.md +1 -1
  532. package/presets/opencode/android-kotlin/commands/task.md +1 -1
  533. package/presets/opencode/android-kotlin/commands/technical-retro.md +1 -1
  534. package/presets/opencode/android-kotlin/hooks/chain-team-phases.sh +32 -3
  535. package/presets/opencode/android-kotlin/rules/code-quality-and-refactoring.md +14 -0
  536. package/presets/opencode/android-kotlin/rules/code-review-mr.md +39 -0
  537. package/presets/opencode/android-kotlin/rules/compose-ui.md +2 -0
  538. package/presets/opencode/android-kotlin/rules/design-guidance.md +5 -0
  539. package/presets/opencode/android-kotlin/rules/mcp-usage.md +8 -0
  540. package/presets/opencode/android-kotlin/rules/mockup-review.md +4 -0
  541. package/presets/opencode/android-kotlin/rules/preset-layering.md +1 -1
  542. package/presets/opencode/android-kotlin/rules/preset-no-cross-stack-leakage.md +4 -0
  543. package/presets/opencode/android-kotlin/rules/preset-pr-checklist.md +1 -1
  544. package/presets/opencode/android-kotlin/rules/preset-token-budget.md +10 -10
  545. package/presets/opencode/android-kotlin/rules/product-specs-authoring.md +6 -0
  546. package/presets/opencode/android-kotlin/rules/product-specs.md +5 -0
  547. package/presets/opencode/android-kotlin/rules/ux-design.md +4 -0
  548. package/presets/opencode/android-kotlin/skills/ci-investigation/SKILL.md +1 -1
  549. package/presets/opencode/android-kotlin/skills/code-review/SKILL.md +1 -1
  550. package/presets/opencode/android-kotlin/skills/debug-investigation/SKILL.md +1 -1
  551. package/presets/opencode/android-kotlin/skills/feature-delivery/SKILL.md +1 -1
  552. package/presets/opencode/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +1 -1
  553. package/presets/opencode/android-kotlin/skills/mockup-review/SKILL.md +1 -1
  554. package/presets/opencode/android-kotlin/skills/spec-authoring/SKILL.md +1 -1
  555. package/presets/opencode/android-kotlin/skills/spec-discovery/SKILL.md +1 -1
  556. package/presets/opencode/android-kotlin/skills/technical-retro/SKILL.md +1 -1
  557. package/presets/opencode/android-kotlin/skills/unit-testing/SKILL.md +1 -1
  558. package/presets/opencode/android-kotlin/skills/ux-design/SKILL.md +1 -1
  559. package/presets/opencode/android-kotlin/skills/write-adr/SKILL.md +1 -1
  560. package/presets/opencode/go/adapter-map.json +1 -1
  561. package/presets/opencode/go/agents/build-verifier.md +1 -1
  562. package/presets/opencode/go/commands/spec-start.md +1 -1
  563. package/presets/opencode/go/commands/task-continue.md +1 -1
  564. package/presets/opencode/go/commands/task.md +1 -1
  565. package/presets/opencode/go/commands/technical-retro.md +1 -1
  566. package/presets/opencode/go/hooks/chain-team-phases.sh +32 -3
  567. package/presets/opencode/go/rules/agent-team-intake.md +4 -0
  568. package/presets/opencode/go/rules/code-quality-and-refactoring.md +15 -0
  569. package/presets/opencode/go/rules/code-review-mr.md +7 -0
  570. package/presets/opencode/go/rules/design-guidance.md +5 -0
  571. package/presets/opencode/go/rules/mcp-usage.md +7 -0
  572. package/presets/opencode/go/rules/preset-layering.md +1 -1
  573. package/presets/opencode/go/rules/preset-pr-checklist.md +1 -1
  574. package/presets/opencode/go/rules/preset-token-budget.md +10 -10
  575. package/presets/opencode/go/rules/product-specs-authoring.md +6 -0
  576. package/presets/opencode/go/rules/product-specs.md +6 -0
  577. package/presets/opencode/go/skills/ci-investigation/SKILL.md +1 -1
  578. package/presets/opencode/go/skills/code-review/SKILL.md +1 -1
  579. package/presets/opencode/go/skills/debug-investigation/SKILL.md +1 -1
  580. package/presets/opencode/go/skills/feature-delivery/SKILL.md +1 -1
  581. package/presets/opencode/go/skills/integration-testing/SKILL.md +1 -1
  582. package/presets/opencode/go/skills/spec-authoring/SKILL.md +1 -1
  583. package/presets/opencode/go/skills/spec-discovery/SKILL.md +1 -1
  584. package/presets/opencode/go/skills/technical-retro/SKILL.md +1 -1
  585. package/presets/opencode/go/skills/unit-testing/SKILL.md +1 -1
  586. package/presets/opencode/go/skills/write-adr/SKILL.md +1 -1
  587. package/presets/opencode/ios-swift/adapter-map.json +1 -1
  588. package/presets/opencode/ios-swift/agents/build-verifier.md +3 -3
  589. package/presets/opencode/ios-swift/commands/spec-start.md +1 -1
  590. package/presets/opencode/ios-swift/commands/task-continue.md +1 -1
  591. package/presets/opencode/ios-swift/commands/task.md +1 -1
  592. package/presets/opencode/ios-swift/commands/technical-retro.md +1 -1
  593. package/presets/opencode/ios-swift/hooks/chain-team-phases.sh +32 -3
  594. package/presets/opencode/ios-swift/rules/code-quality-and-refactoring.md +14 -0
  595. package/presets/opencode/ios-swift/rules/code-review-mr.md +39 -0
  596. package/presets/opencode/ios-swift/rules/design-guidance.md +5 -0
  597. package/presets/opencode/ios-swift/rules/feature-delivery-workflow.md +66 -0
  598. package/presets/opencode/ios-swift/rules/mcp-usage.md +8 -0
  599. package/presets/opencode/ios-swift/rules/mockup-review.md +4 -0
  600. package/presets/opencode/ios-swift/rules/preset-layering.md +1 -1
  601. package/presets/opencode/ios-swift/rules/preset-pr-checklist.md +1 -1
  602. package/presets/opencode/ios-swift/rules/preset-token-budget.md +10 -10
  603. package/presets/opencode/ios-swift/rules/product-specs-authoring.md +6 -0
  604. package/presets/opencode/ios-swift/rules/product-specs.md +5 -0
  605. package/presets/opencode/ios-swift/rules/reference-features.md +49 -0
  606. package/presets/opencode/ios-swift/rules/swiftui-ui.md +7 -0
  607. package/presets/opencode/ios-swift/rules/ux-design.md +4 -0
  608. package/presets/opencode/ios-swift/skills/ci-investigation/SKILL.md +1 -1
  609. package/presets/opencode/ios-swift/skills/code-review/SKILL.md +1 -1
  610. package/presets/opencode/ios-swift/skills/debug-investigation/SKILL.md +1 -1
  611. package/presets/opencode/ios-swift/skills/feature-delivery/SKILL.md +1 -1
  612. package/presets/opencode/ios-swift/skills/mockup-review/SKILL.md +1 -1
  613. package/presets/opencode/ios-swift/skills/spec-authoring/SKILL.md +1 -1
  614. package/presets/opencode/ios-swift/skills/spec-discovery/SKILL.md +1 -1
  615. package/presets/opencode/ios-swift/skills/technical-retro/SKILL.md +1 -1
  616. package/presets/opencode/ios-swift/skills/unit-testing/SKILL.md +1 -1
  617. package/presets/opencode/ios-swift/skills/ux-design/SKILL.md +1 -1
  618. package/presets/opencode/ios-swift/skills/write-adr/SKILL.md +1 -1
  619. package/presets/opencode/ios-swift/skills/xcuitest-e2e/SKILL.md +1 -1
  620. package/presets/opencode/java/adapter-map.json +1 -1
  621. package/presets/opencode/java/agents/build-verifier.md +1 -1
  622. package/presets/opencode/java/commands/spec-start.md +1 -1
  623. package/presets/opencode/java/commands/task-continue.md +1 -1
  624. package/presets/opencode/java/commands/task.md +1 -1
  625. package/presets/opencode/java/commands/technical-retro.md +1 -1
  626. package/presets/opencode/java/hooks/chain-team-phases.sh +32 -3
  627. package/presets/opencode/java/rules/agent-team-intake.md +4 -0
  628. package/presets/opencode/java/rules/code-quality-and-refactoring.md +15 -0
  629. package/presets/opencode/java/rules/code-review-mr.md +9 -0
  630. package/presets/opencode/java/rules/design-guidance.md +6 -0
  631. package/presets/opencode/java/rules/mcp-usage.md +6 -0
  632. package/presets/opencode/java/rules/preset-layering.md +1 -1
  633. package/presets/opencode/java/rules/preset-pr-checklist.md +1 -1
  634. package/presets/opencode/java/rules/preset-token-budget.md +10 -10
  635. package/presets/opencode/java/rules/product-specs-authoring.md +6 -0
  636. package/presets/opencode/java/rules/product-specs.md +6 -0
  637. package/presets/opencode/java/skills/ci-investigation/SKILL.md +1 -1
  638. package/presets/opencode/java/skills/code-review/SKILL.md +1 -1
  639. package/presets/opencode/java/skills/debug-investigation/SKILL.md +1 -1
  640. package/presets/opencode/java/skills/feature-delivery/SKILL.md +1 -1
  641. package/presets/opencode/java/skills/integration-testing/SKILL.md +1 -1
  642. package/presets/opencode/java/skills/spec-authoring/SKILL.md +1 -1
  643. package/presets/opencode/java/skills/spec-discovery/SKILL.md +1 -1
  644. package/presets/opencode/java/skills/technical-retro/SKILL.md +1 -1
  645. package/presets/opencode/java/skills/unit-testing/SKILL.md +1 -1
  646. package/presets/opencode/java/skills/write-adr/SKILL.md +1 -1
  647. package/presets/opencode/mcp-ts/adapter-map.json +1 -1
  648. package/presets/opencode/mcp-ts/agents/build-verifier.md +1 -1
  649. package/presets/opencode/mcp-ts/commands/spec-start.md +1 -1
  650. package/presets/opencode/mcp-ts/commands/task-continue.md +1 -1
  651. package/presets/opencode/mcp-ts/commands/task.md +1 -1
  652. package/presets/opencode/mcp-ts/commands/technical-retro.md +1 -1
  653. package/presets/opencode/mcp-ts/hooks/chain-team-phases.sh +32 -3
  654. package/presets/opencode/mcp-ts/rules/agent-team-intake.md +5 -0
  655. package/presets/opencode/mcp-ts/rules/anti-sycophancy-discipline.md +4 -0
  656. package/presets/opencode/mcp-ts/rules/code-quality-and-refactoring.md +15 -0
  657. package/presets/opencode/mcp-ts/rules/code-review-mr.md +6 -0
  658. package/presets/opencode/mcp-ts/rules/design-guidance.md +5 -0
  659. package/presets/opencode/mcp-ts/rules/mcp-usage.md +7 -0
  660. package/presets/opencode/mcp-ts/rules/preset-layering.md +1 -1
  661. package/presets/opencode/mcp-ts/rules/preset-pr-checklist.md +1 -1
  662. package/presets/opencode/mcp-ts/rules/preset-token-budget.md +10 -10
  663. package/presets/opencode/mcp-ts/rules/product-specs-authoring.md +6 -0
  664. package/presets/opencode/mcp-ts/rules/product-specs.md +6 -0
  665. package/presets/opencode/mcp-ts/skills/code-review/SKILL.md +1 -1
  666. package/presets/opencode/mcp-ts/skills/debug-investigation/SKILL.md +1 -1
  667. package/presets/opencode/mcp-ts/skills/feature-delivery/SKILL.md +1 -1
  668. package/presets/opencode/mcp-ts/skills/spec-authoring/SKILL.md +1 -1
  669. package/presets/opencode/mcp-ts/skills/spec-discovery/SKILL.md +1 -1
  670. package/presets/opencode/mcp-ts/skills/unit-testing/SKILL.md +1 -1
  671. package/presets/opencode/next/adapter-map.json +1 -1
  672. package/presets/opencode/next/agents/build-verifier.md +2 -2
  673. package/presets/opencode/next/commands/spec-start.md +1 -1
  674. package/presets/opencode/next/commands/task-continue.md +1 -1
  675. package/presets/opencode/next/commands/task.md +1 -1
  676. package/presets/opencode/next/commands/technical-retro.md +1 -1
  677. package/presets/opencode/next/hooks/chain-team-phases.sh +32 -3
  678. package/presets/opencode/next/rules/api-services.md +6 -4
  679. package/presets/opencode/next/rules/code-quality-and-refactoring.md +13 -0
  680. package/presets/opencode/next/rules/code-review-mr.md +13 -0
  681. package/presets/opencode/next/rules/design-guidance.md +5 -0
  682. package/presets/opencode/next/rules/feature-delivery-workflow.md +85 -0
  683. package/presets/opencode/next/rules/mcp-usage.md +9 -0
  684. package/presets/opencode/next/rules/mockup-review.md +4 -0
  685. package/presets/opencode/next/rules/next-app-core.md +2 -1
  686. package/presets/opencode/next/rules/preset-layering.md +1 -1
  687. package/presets/opencode/next/rules/preset-pr-checklist.md +1 -1
  688. package/presets/opencode/next/rules/preset-token-budget.md +10 -10
  689. package/presets/opencode/next/rules/product-specs-authoring.md +6 -0
  690. package/presets/opencode/next/rules/product-specs.md +6 -0
  691. package/presets/opencode/next/rules/react-ui.md +37 -1
  692. package/presets/opencode/next/rules/reference-features.md +36 -0
  693. package/presets/opencode/next/rules/store-rtk.md +6 -5
  694. package/presets/opencode/next/rules/tests-e2e-structure.md +15 -0
  695. package/presets/opencode/next/rules/tests-unit.md +33 -0
  696. package/presets/opencode/next/rules/ux-design.md +4 -0
  697. package/presets/opencode/next/skills/ci-investigation/SKILL.md +1 -1
  698. package/presets/opencode/next/skills/code-review/SKILL.md +1 -1
  699. package/presets/opencode/next/skills/debug-investigation/SKILL.md +1 -1
  700. package/presets/opencode/next/skills/feature-delivery/SKILL.md +1 -1
  701. package/presets/opencode/next/skills/mockup-review/SKILL.md +1 -1
  702. package/presets/opencode/next/skills/playwright-e2e/SKILL.md +1 -1
  703. package/presets/opencode/next/skills/react-performance/SKILL.md +1 -1
  704. package/presets/opencode/next/skills/spec-authoring/SKILL.md +1 -1
  705. package/presets/opencode/next/skills/spec-discovery/SKILL.md +1 -1
  706. package/presets/opencode/next/skills/technical-retro/SKILL.md +1 -1
  707. package/presets/opencode/next/skills/unit-testing/SKILL.md +1 -1
  708. package/presets/opencode/next/skills/ux-design/SKILL.md +1 -1
  709. package/presets/opencode/next/skills/write-adr/SKILL.md +1 -1
  710. package/presets/opencode/nuxt/adapter-map.json +1 -1
  711. package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
  712. package/presets/opencode/nuxt/commands/spec-start.md +1 -1
  713. package/presets/opencode/nuxt/commands/task-continue.md +1 -1
  714. package/presets/opencode/nuxt/commands/task.md +1 -1
  715. package/presets/opencode/nuxt/commands/technical-retro.md +1 -1
  716. package/presets/opencode/nuxt/hooks/chain-team-phases.sh +32 -3
  717. package/presets/opencode/nuxt/rules/code-quality-and-refactoring.md +13 -0
  718. package/presets/opencode/nuxt/rules/code-review-mr.md +13 -0
  719. package/presets/opencode/nuxt/rules/design-guidance.md +5 -0
  720. package/presets/opencode/nuxt/rules/feature-delivery-workflow.md +82 -0
  721. package/presets/opencode/nuxt/rules/mcp-usage.md +9 -0
  722. package/presets/opencode/nuxt/rules/mockup-review.md +4 -0
  723. package/presets/opencode/nuxt/rules/preset-layering.md +1 -1
  724. package/presets/opencode/nuxt/rules/preset-pr-checklist.md +1 -1
  725. package/presets/opencode/nuxt/rules/preset-token-budget.md +10 -10
  726. package/presets/opencode/nuxt/rules/product-specs-authoring.md +6 -0
  727. package/presets/opencode/nuxt/rules/product-specs.md +5 -0
  728. package/presets/opencode/nuxt/rules/reference-features.md +36 -0
  729. package/presets/opencode/nuxt/rules/tests-e2e-structure.md +16 -0
  730. package/presets/opencode/nuxt/rules/tests-unit.md +11 -0
  731. package/presets/opencode/nuxt/rules/ux-design.md +4 -0
  732. package/presets/opencode/nuxt/rules/vue-ui.md +7 -0
  733. package/presets/opencode/nuxt/skills/ci-investigation/SKILL.md +1 -1
  734. package/presets/opencode/nuxt/skills/code-review/SKILL.md +1 -1
  735. package/presets/opencode/nuxt/skills/debug-investigation/SKILL.md +1 -1
  736. package/presets/opencode/nuxt/skills/feature-delivery/SKILL.md +1 -1
  737. package/presets/opencode/nuxt/skills/mockup-review/SKILL.md +1 -1
  738. package/presets/opencode/nuxt/skills/playwright-e2e/SKILL.md +1 -1
  739. package/presets/opencode/nuxt/skills/spec-authoring/SKILL.md +1 -1
  740. package/presets/opencode/nuxt/skills/spec-discovery/SKILL.md +1 -1
  741. package/presets/opencode/nuxt/skills/technical-retro/SKILL.md +1 -1
  742. package/presets/opencode/nuxt/skills/unit-testing/SKILL.md +1 -1
  743. package/presets/opencode/nuxt/skills/ux-design/SKILL.md +1 -1
  744. package/presets/opencode/nuxt/skills/vue-performance/SKILL.md +1 -1
  745. package/presets/opencode/nuxt/skills/write-adr/SKILL.md +1 -1
  746. package/presets/opencode/php-hexagonal/adapter-map.json +1 -1
  747. package/presets/opencode/php-hexagonal/agents/build-verifier.md +1 -1
  748. package/presets/opencode/php-hexagonal/commands/spec-start.md +1 -1
  749. package/presets/opencode/php-hexagonal/commands/task-continue.md +1 -1
  750. package/presets/opencode/php-hexagonal/commands/task.md +1 -1
  751. package/presets/opencode/php-hexagonal/commands/technical-retro.md +1 -1
  752. package/presets/opencode/php-hexagonal/hooks/chain-team-phases.sh +32 -3
  753. package/presets/opencode/php-hexagonal/rules/agent-team-intake.md +4 -0
  754. package/presets/opencode/php-hexagonal/rules/code-quality-and-refactoring.md +15 -0
  755. package/presets/opencode/php-hexagonal/rules/code-review-mr.md +9 -0
  756. package/presets/opencode/php-hexagonal/rules/design-guidance.md +6 -0
  757. package/presets/opencode/php-hexagonal/rules/mcp-usage.md +6 -0
  758. package/presets/opencode/php-hexagonal/rules/preset-layering.md +1 -1
  759. package/presets/opencode/php-hexagonal/rules/preset-pr-checklist.md +1 -1
  760. package/presets/opencode/php-hexagonal/rules/preset-token-budget.md +10 -10
  761. package/presets/opencode/php-hexagonal/rules/product-specs-authoring.md +6 -0
  762. package/presets/opencode/php-hexagonal/rules/product-specs.md +6 -0
  763. package/presets/opencode/php-hexagonal/skills/ci-investigation/SKILL.md +1 -1
  764. package/presets/opencode/php-hexagonal/skills/code-review/SKILL.md +1 -1
  765. package/presets/opencode/php-hexagonal/skills/debug-investigation/SKILL.md +1 -1
  766. package/presets/opencode/php-hexagonal/skills/feature-delivery/SKILL.md +1 -1
  767. package/presets/opencode/php-hexagonal/skills/integration-testing/SKILL.md +1 -1
  768. package/presets/opencode/php-hexagonal/skills/spec-authoring/SKILL.md +1 -1
  769. package/presets/opencode/php-hexagonal/skills/spec-discovery/SKILL.md +1 -1
  770. package/presets/opencode/php-hexagonal/skills/technical-retro/SKILL.md +1 -1
  771. package/presets/opencode/php-hexagonal/skills/unit-testing/SKILL.md +1 -1
  772. package/presets/opencode/php-hexagonal/skills/write-adr/SKILL.md +1 -1
  773. package/presets/opencode/php-laravel/adapter-map.json +1 -1
  774. package/presets/opencode/php-laravel/agents/build-verifier.md +1 -1
  775. package/presets/opencode/php-laravel/commands/spec-start.md +1 -1
  776. package/presets/opencode/php-laravel/commands/task-continue.md +1 -1
  777. package/presets/opencode/php-laravel/commands/task.md +1 -1
  778. package/presets/opencode/php-laravel/commands/technical-retro.md +1 -1
  779. package/presets/opencode/php-laravel/hooks/chain-team-phases.sh +32 -3
  780. package/presets/opencode/php-laravel/rules/agent-team-intake.md +4 -0
  781. package/presets/opencode/php-laravel/rules/code-quality-and-refactoring.md +15 -0
  782. package/presets/opencode/php-laravel/rules/code-review-mr.md +10 -0
  783. package/presets/opencode/php-laravel/rules/design-guidance.md +6 -0
  784. package/presets/opencode/php-laravel/rules/mcp-usage.md +6 -0
  785. package/presets/opencode/php-laravel/rules/preset-layering.md +1 -1
  786. package/presets/opencode/php-laravel/rules/preset-pr-checklist.md +1 -1
  787. package/presets/opencode/php-laravel/rules/preset-token-budget.md +10 -10
  788. package/presets/opencode/php-laravel/rules/product-specs-authoring.md +6 -0
  789. package/presets/opencode/php-laravel/rules/product-specs.md +6 -0
  790. package/presets/opencode/php-laravel/skills/ci-investigation/SKILL.md +1 -1
  791. package/presets/opencode/php-laravel/skills/code-review/SKILL.md +1 -1
  792. package/presets/opencode/php-laravel/skills/debug-investigation/SKILL.md +1 -1
  793. package/presets/opencode/php-laravel/skills/feature-delivery/SKILL.md +1 -1
  794. package/presets/opencode/php-laravel/skills/integration-testing/SKILL.md +1 -1
  795. package/presets/opencode/php-laravel/skills/spec-authoring/SKILL.md +1 -1
  796. package/presets/opencode/php-laravel/skills/spec-discovery/SKILL.md +1 -1
  797. package/presets/opencode/php-laravel/skills/technical-retro/SKILL.md +1 -1
  798. package/presets/opencode/php-laravel/skills/unit-testing/SKILL.md +1 -1
  799. package/presets/opencode/php-laravel/skills/write-adr/SKILL.md +1 -1
  800. package/presets/opencode/svelte/adapter-map.json +1 -1
  801. package/presets/opencode/svelte/agents/build-verifier.md +2 -2
  802. package/presets/opencode/svelte/commands/spec-start.md +1 -1
  803. package/presets/opencode/svelte/commands/task-continue.md +1 -1
  804. package/presets/opencode/svelte/commands/task.md +1 -1
  805. package/presets/opencode/svelte/commands/technical-retro.md +1 -1
  806. package/presets/opencode/svelte/hooks/chain-team-phases.sh +32 -3
  807. package/presets/opencode/svelte/rules/code-quality-and-refactoring.md +13 -0
  808. package/presets/opencode/svelte/rules/code-review-mr.md +13 -0
  809. package/presets/opencode/svelte/rules/design-guidance.md +5 -0
  810. package/presets/opencode/svelte/rules/feature-delivery-workflow.md +54 -0
  811. package/presets/opencode/svelte/rules/mcp-usage.md +9 -0
  812. package/presets/opencode/svelte/rules/mockup-review.md +4 -0
  813. package/presets/opencode/svelte/rules/preset-layering.md +1 -1
  814. package/presets/opencode/svelte/rules/preset-pr-checklist.md +1 -1
  815. package/presets/opencode/svelte/rules/preset-token-budget.md +10 -10
  816. package/presets/opencode/svelte/rules/product-specs-authoring.md +6 -0
  817. package/presets/opencode/svelte/rules/product-specs.md +5 -0
  818. package/presets/opencode/svelte/rules/reference-features.md +37 -0
  819. package/presets/opencode/svelte/rules/svelte-ui.md +7 -0
  820. package/presets/opencode/svelte/rules/tests-e2e-structure.md +16 -0
  821. package/presets/opencode/svelte/rules/tests-unit.md +11 -0
  822. package/presets/opencode/svelte/rules/ux-design.md +4 -0
  823. package/presets/opencode/svelte/skills/ci-investigation/SKILL.md +1 -1
  824. package/presets/opencode/svelte/skills/code-review/SKILL.md +1 -1
  825. package/presets/opencode/svelte/skills/debug-investigation/SKILL.md +1 -1
  826. package/presets/opencode/svelte/skills/feature-delivery/SKILL.md +1 -1
  827. package/presets/opencode/svelte/skills/mockup-review/SKILL.md +1 -1
  828. package/presets/opencode/svelte/skills/playwright-e2e/SKILL.md +1 -1
  829. package/presets/opencode/svelte/skills/spec-authoring/SKILL.md +1 -1
  830. package/presets/opencode/svelte/skills/spec-discovery/SKILL.md +1 -1
  831. package/presets/opencode/svelte/skills/svelte-performance/SKILL.md +1 -1
  832. package/presets/opencode/svelte/skills/technical-retro/SKILL.md +1 -1
  833. package/presets/opencode/svelte/skills/unit-testing/SKILL.md +1 -1
  834. package/presets/opencode/svelte/skills/ux-design/SKILL.md +1 -1
  835. package/presets/opencode/svelte/skills/write-adr/SKILL.md +1 -1
  836. package/scripts/capture-cli-golden.mjs +8 -5
  837. package/scripts/check-frontmatter.mjs +83 -0
  838. package/scripts/check-generated-drift.mjs +106 -0
  839. package/scripts/check-mavis-token-budget.mjs +1 -1
  840. package/scripts/check-opencode-token-budget.mjs +1 -1
  841. package/scripts/check-preset-structure.sh +27 -0
  842. package/scripts/check-preset-token-budget.sh +16 -17
  843. package/scripts/check-shared-core-drift.sh +10 -5
  844. package/scripts/close-agent-task-human-gate.mjs +6 -4
  845. package/scripts/fixtures/cli-golden/claude/next.json +24 -18
  846. package/scripts/fixtures/cli-golden/cursor/next.json +17 -17
  847. package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +18 -18
  848. package/scripts/fixtures/cli-golden/mavis/go.json +15 -15
  849. package/scripts/fixtures/cli-golden/mavis/ios-swift.json +19 -19
  850. package/scripts/fixtures/cli-golden/mavis/java.json +15 -15
  851. package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +16 -16
  852. package/scripts/fixtures/cli-golden/mavis/next.json +24 -24
  853. package/scripts/fixtures/cli-golden/mavis/nuxt.json +21 -21
  854. package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +15 -15
  855. package/scripts/fixtures/cli-golden/mavis/php-laravel.json +15 -15
  856. package/scripts/fixtures/cli-golden/mavis/svelte.json +21 -21
  857. package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +31 -31
  858. package/scripts/fixtures/cli-golden/opencode/go.json +26 -26
  859. package/scripts/fixtures/cli-golden/opencode/ios-swift.json +32 -32
  860. package/scripts/fixtures/cli-golden/opencode/java.json +26 -26
  861. package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +23 -23
  862. package/scripts/fixtures/cli-golden/opencode/next.json +38 -38
  863. package/scripts/fixtures/cli-golden/opencode/nuxt.json +35 -35
  864. package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +26 -26
  865. package/scripts/fixtures/cli-golden/opencode/php-laravel.json +26 -26
  866. package/scripts/fixtures/cli-golden/opencode/svelte.json +35 -35
  867. package/scripts/lib/generate-adapter-common.mjs +11 -0
  868. package/scripts/lib/generate-mavis-adapter.mjs +20 -10
  869. package/scripts/lib/generate-opencode-adapter.mjs +19 -4
  870. package/scripts/test-agent-task-metrics-hooks.mjs +5 -5
  871. package/scripts/test-chain-team-phases-coverage.mjs +176 -1
  872. package/scripts/test-cli-init-clean.mjs +165 -34
  873. package/scripts/test-mavis-context-budget.mjs +1 -1
  874. package/scripts/test-opencode-context-budget.mjs +1 -1
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Frontmatter validity gate (dependency-free heuristic).
4
+ *
5
+ * Flags the YAML failure modes that shipped silently before: unquoted scalars
6
+ * containing `: ` / ` #`, and unquoted list items starting with a YAML-special
7
+ * character (`*`, `&`, `!`, `{`, `[`, `|`, `>`, `@`, `%`, backtick). Also flags
8
+ * tab indentation. Exit 1 on any finding.
9
+ *
10
+ * Full YAML parsing is intentionally avoided: the published package has zero
11
+ * runtime dependencies and the structure workflow does not install dev deps.
12
+ */
13
+ import fs from 'node:fs';
14
+ import path from 'node:path';
15
+ import { fileURLToPath } from 'node:url';
16
+
17
+ const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
18
+ const packageDirectory = path.resolve(scriptDirectory, '..');
19
+ const presetsRoot = path.join(packageDirectory, 'presets');
20
+
21
+ const SCALAR_KEYS = /^([A-Za-z0-9_-]+):[ \t]*(.*)$/;
22
+ const LIST_ITEM = /^([ \t]*-[ \t]+)(.*)$/;
23
+ const SAFE_SCALAR = /^(['"]).*\1$|^(true|false|null|~)$|^-?\d+(\.\d+)?$|^[|>][-+]?$|^\[\]$|^\{\}$/;
24
+ const SPECIAL_LEAD = /^[*&!%@`]/;
25
+
26
+ const problems = [];
27
+
28
+ function checkLine(file, lineNumber, line) {
29
+ if (/^\t|^[ \t]*\t/.test(line)) {
30
+ problems.push(`${file}:${lineNumber}: tab indentation is not valid YAML`);
31
+ return;
32
+ }
33
+ const kv = line.match(SCALAR_KEYS);
34
+ if (kv && kv[2] !== '' && !SAFE_SCALAR.test(kv[2])) {
35
+ const value = kv[2];
36
+ if (/: /.test(value) || /:[ \t]*$/.test(value) || /\s#/.test(value) || SPECIAL_LEAD.test(value)) {
37
+ problems.push(
38
+ `${file}:${lineNumber}: unquoted YAML value needs quoting: ${line.trim()}`,
39
+ );
40
+ }
41
+ return;
42
+ }
43
+ const item = line.match(LIST_ITEM);
44
+ if (item && !SAFE_SCALAR.test(item[2]) && SPECIAL_LEAD.test(item[2])) {
45
+ problems.push(`${file}:${lineNumber}: unquoted YAML list item needs quoting: ${line.trim()}`);
46
+ }
47
+ }
48
+
49
+ function walk(dir) {
50
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
51
+ const full = path.join(dir, entry.name);
52
+ if (entry.isDirectory()) {
53
+ walk(full);
54
+ } else if (/\.(md|mdc)$/.test(entry.name)) {
55
+ const text = fs.readFileSync(full, 'utf8');
56
+ if (!text.startsWith('---\n')) {
57
+ continue;
58
+ }
59
+ const end = text.indexOf('\n---\n', 4);
60
+ if (end < 0) {
61
+ continue;
62
+ }
63
+ const frontmatter = text.slice(4, end);
64
+ const rel = path.relative(packageDirectory, full);
65
+ frontmatter.split('\n').forEach((line, index) => checkLine(rel, index + 2, line));
66
+ }
67
+ }
68
+ }
69
+
70
+ walk(presetsRoot);
71
+
72
+ if (problems.length > 0) {
73
+ console.error(`Frontmatter check: ${problems.length} problem(s)`);
74
+ for (const problem of problems.slice(0, 50)) {
75
+ console.error(` ${problem}`);
76
+ }
77
+ if (problems.length > 50) {
78
+ console.error(` ... and ${problems.length - 50} more`);
79
+ }
80
+ process.exit(1);
81
+ }
82
+
83
+ console.log('Frontmatter check: OK');
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Generated-tree drift gate.
4
+ *
5
+ * Regenerates `presets/mavis/<stack>` and `presets/opencode/<stack>` from the
6
+ * Cursor sources into a temp root and byte-compares them with the committed
7
+ * trees. Catches two classes of drift that the adapter-map checks cannot:
8
+ * - hand-edits to a generated file;
9
+ * - generator logic changes that were not followed by a regeneration.
10
+ *
11
+ * Exit 1 on any drift; prints the offending paths.
12
+ */
13
+ import crypto from 'node:crypto';
14
+ import fs from 'node:fs';
15
+ import os from 'node:os';
16
+ import path from 'node:path';
17
+ import { fileURLToPath } from 'node:url';
18
+ import { generateMavisStack } from './lib/generate-mavis-adapter.mjs';
19
+ import { generateOpencodeStack } from './lib/generate-opencode-adapter.mjs';
20
+ import { loadReleasedStacks } from './lib/generate-adapter-common.mjs';
21
+
22
+ const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
23
+ const packageDirectory = path.resolve(scriptDirectory, '..');
24
+ const presetsRoot = path.join(packageDirectory, 'presets');
25
+
26
+ function walkRelative(root) {
27
+ const out = [];
28
+ const visit = (dir) => {
29
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
30
+ const full = path.join(dir, entry.name);
31
+ if (entry.isDirectory()) {
32
+ visit(full);
33
+ } else if (entry.isFile()) {
34
+ out.push(path.relative(root, full).split(path.sep).join('/'));
35
+ }
36
+ }
37
+ };
38
+ if (fs.existsSync(root)) {
39
+ visit(root);
40
+ }
41
+ return out.sort();
42
+ }
43
+
44
+ function sha256File(filePath) {
45
+ return crypto.createHash('sha256').update(fs.readFileSync(filePath)).digest('hex');
46
+ }
47
+
48
+ function compareTrees(expectedRoot, actualRoot, label, drift) {
49
+ const expected = walkRelative(expectedRoot);
50
+ const actual = walkRelative(actualRoot);
51
+ const expectedSet = new Set(expected);
52
+ const actualSet = new Set(actual);
53
+ for (const rel of expected) {
54
+ if (!actualSet.has(rel)) {
55
+ drift.push(`${label}: committed file missing from generator output: ${rel}`);
56
+ } else if (sha256File(path.join(expectedRoot, rel)) !== sha256File(path.join(actualRoot, rel))) {
57
+ drift.push(`${label}: content drift in ${rel}`);
58
+ }
59
+ }
60
+ for (const rel of actual) {
61
+ if (!expectedSet.has(rel)) {
62
+ drift.push(`${label}: generator output has an uncommitted file: ${rel}`);
63
+ }
64
+ }
65
+ }
66
+
67
+ const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-generated-drift-'));
68
+ const drift = [];
69
+ try {
70
+ fs.mkdirSync(path.join(tempRoot, 'presets'), { recursive: true });
71
+ fs.cpSync(path.join(presetsRoot, 'cursor'), path.join(tempRoot, 'presets', 'cursor'), {
72
+ recursive: true,
73
+ });
74
+ fs.cpSync(path.join(presetsRoot, '_shared'), path.join(tempRoot, 'presets', '_shared'), {
75
+ recursive: true,
76
+ });
77
+
78
+ for (const [platform, generate] of [
79
+ ['mavis', generateMavisStack],
80
+ ['opencode', generateOpencodeStack],
81
+ ]) {
82
+ const stacks = loadReleasedStacks(presetsRoot, platform);
83
+ for (const stack of stacks) {
84
+ generate(stack, { root: tempRoot });
85
+ compareTrees(
86
+ path.join(presetsRoot, platform, stack),
87
+ path.join(tempRoot, 'presets', platform, stack),
88
+ `${platform}/${stack}`,
89
+ drift,
90
+ );
91
+ }
92
+ }
93
+ } finally {
94
+ fs.rmSync(tempRoot, { recursive: true, force: true });
95
+ }
96
+
97
+ if (drift.length > 0) {
98
+ console.error(`Generated-tree drift detected (${drift.length} issue(s)):`);
99
+ for (const line of drift) {
100
+ console.error(` ${line}`);
101
+ }
102
+ console.error('Run: node scripts/generate-mavis.mjs --stack <stack> and generate-opencode.mjs --stack <stack>');
103
+ process.exit(1);
104
+ }
105
+
106
+ console.log('Generated-tree drift check: OK (mavis + opencode match generator output)');
@@ -10,7 +10,7 @@ import { loadReleasedMavisStacks } from './lib/discover-hooks.mjs';
10
10
 
11
11
  const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
12
12
  const presetsRoot = path.join(scriptDirectory, '..', 'presets');
13
- const ROOT_ENTRY_CAP = 4;
13
+ const ROOT_ENTRY_CAP = 5;
14
14
 
15
15
  const stacks = loadReleasedMavisStacks(presetsRoot);
16
16
  if (stacks.length === 0) {
@@ -10,7 +10,7 @@ import { loadReleasedOpencodeStacks } from './lib/discover-hooks.mjs';
10
10
 
11
11
  const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
12
12
  const presetsRoot = path.join(scriptDirectory, '..', 'presets');
13
- const ROOT_ENTRY_CAP = 4;
13
+ const ROOT_ENTRY_CAP = 5;
14
14
 
15
15
  const stacks = loadReleasedOpencodeStacks(presetsRoot);
16
16
  if (stacks.length === 0) {
@@ -47,6 +47,15 @@ else
47
47
  fi
48
48
  echo
49
49
 
50
+ echo ">>> generated-drift"
51
+ if node "$SCRIPT_DIR/check-generated-drift.mjs"; then
52
+ echo "<<< generated-drift: OK"
53
+ else
54
+ echo "<<< generated-drift: FAIL"
55
+ status=1
56
+ fi
57
+ echo
58
+
50
59
  echo ">>> opencode-token-budget"
51
60
  if node "$SCRIPT_DIR/check-opencode-token-budget.mjs"; then
52
61
  echo "<<< opencode-token-budget: OK"
@@ -138,6 +147,24 @@ run_gate "chain-hook-coverage" "$SCRIPT_DIR/check-chain-hook-coverage.sh"
138
147
  run_gate "task-router-intents" "$SCRIPT_DIR/check-task-router-intents.sh"
139
148
  run_gate "i18n" "$SCRIPT_DIR/check-preset-i18n.sh" AI_RULES_I18N_FAIL=1 AI_RULES_I18N_SOFT=0
140
149
 
150
+ echo ">>> frontmatter"
151
+ if node "$SCRIPT_DIR/check-frontmatter.mjs"; then
152
+ echo "<<< frontmatter: OK"
153
+ else
154
+ echo "<<< frontmatter: FAIL"
155
+ status=1
156
+ fi
157
+ echo
158
+
159
+ echo ">>> probe-mavis-capabilities"
160
+ if node "$SCRIPT_DIR/test-probe-mavis-capabilities.mjs"; then
161
+ echo "<<< probe-mavis-capabilities: OK"
162
+ else
163
+ echo "<<< probe-mavis-capabilities: FAIL"
164
+ status=1
165
+ fi
166
+ echo
167
+
141
168
  echo ">>> cli-mcp-merge"
142
169
  if node "$SCRIPT_DIR/test-cli-mcp-merge.mjs"; then
143
170
  echo "<<< cli-mcp-merge: OK"
@@ -16,8 +16,10 @@ from pathlib import Path
16
16
 
17
17
  presets = Path(os.environ["AI_RULES_PRESETS_ROOT"])
18
18
  STACKS = ("next", "nuxt", "svelte", "ios-swift", "android-kotlin", "go", "java", "mcp-ts", "php-hexagonal", "php-laravel")
19
- BODY_CAP = 140 # applied to 3-rule trios (Claude session-start, Cursor trio when len==3)
20
- BODY_CAP_CURSOR_4 = 170 # Cursor now allows 4 always-on (next-app-core, package-manager, code-quality, ai-local-overlay)
19
+ MIN_ALWAYS_ON = 3 # base invariants every stack must keep session-start
20
+ MAX_ALWAYS_ON = 5 # aligned cap for Cursor / Claude / Mavis / OpenCode always-on rules
21
+ BODY_CAP = 200 # session-start body-sum cap (Cursor and Claude)
22
+ BODY_CAP_STRETCH = 170 # informational stretch target
21
23
  # Slim-companion rules (UI-edit bundle, slim app-cores, slim tooling) may be
22
24
  # shorter than 15 lines **if and only if** their stem is in the allow-list and
23
25
  # body is <= MIN_SLIM_BODY_LINES. A slim rule whose body grows past this cap
@@ -134,7 +136,7 @@ failed = 0
134
136
 
135
137
  print("Preset token / session-start budget (Option A)")
136
138
  print(f"Presets: {presets}")
137
- print(f"Body line cap (Claude trio): {BODY_CAP}; (Cursor 4-set): {BODY_CAP_CURSOR_4}")
139
+ print(f"Always-on count: {MIN_ALWAYS_ON}..{MAX_ALWAYS_ON}; body cap: {BODY_CAP} (stretch {BODY_CAP_STRETCH})")
138
140
  print()
139
141
 
140
142
  for stack in STACKS:
@@ -151,14 +153,13 @@ for stack in STACKS:
151
153
  print(f"FAIL: meta preset-* must not be alwaysApply: {p.name}")
152
154
  failed += 1
153
155
 
154
- if len(always) not in (3, 4):
155
- print(f"FAIL: Cursor alwaysApply count is {len(always)}, expected 3 or 4 (4th slot reserved for ai-local-overlay)")
156
+ if not (MIN_ALWAYS_ON <= len(always) <= MAX_ALWAYS_ON):
157
+ print(f"FAIL: Cursor alwaysApply count is {len(always)}, expected {MIN_ALWAYS_ON}..{MAX_ALWAYS_ON}")
156
158
  failed += 1
157
- elif len(always) == 4:
158
- # 4-set: ensure the 4th rule is ai-local-overlay (or declares itself as such).
159
- extra = [p for p in always if p.stem not in {"code-quality-and-refactoring", "package-manager", "next-app-core", "nuxt-app-core", "svelte-app-core", "ios-app-core", "android-app-core", "go-app-core", "java-app-core", "mcp-ts-app-core", "php-app-core", "laravel-app-core", "architecture-boundaries", "mcp-server-boundaries"}]
160
- if not any(p.stem == "ai-local-overlay" for p in always) and extra:
161
- print(f"FAIL: Cursor alwaysApply=4 but no ai-local-overlay.mdc; the 4th slot is reserved for the local overlay rule")
159
+ elif len(always) > 3:
160
+ # Slots beyond the base invariants are reserved for ai-local-overlay.
161
+ if not any(p.stem == "ai-local-overlay" for p in always):
162
+ print(f"FAIL: Cursor alwaysApply={len(always)} but no ai-local-overlay.mdc; extra slots are reserved for the local overlay rule")
162
163
  failed += 1
163
164
 
164
165
  # --- Claude no-paths (excl README) ---
@@ -171,19 +172,17 @@ for stack in STACKS:
171
172
  print(f"FAIL: meta preset-* must not be session-start: {rel}")
172
173
  failed += 1
173
174
 
174
- if len(session) != 3:
175
+ if not (MIN_ALWAYS_ON <= len(session) <= MAX_ALWAYS_ON):
175
176
  print(
176
177
  f"FAIL: Claude session-start count is {len(session)}, "
177
- "expected exactly 3 (Option A excludes **/README.md)"
178
+ f"expected {MIN_ALWAYS_ON}..{MAX_ALWAYS_ON} (Option A excludes **/README.md)"
178
179
  )
179
180
  failed += 1
180
181
 
181
182
  # --- Body sum of intended session-start set (Cursor alwaysApply + Claude session) ---
182
- # Cursor allows 3 or 4 rules (4th slot reserved for ai-local-overlay); Claude is exactly 3.
183
+ # Cursor and Claude allow 3..5 always-on rules; extra slots reserved for ai-local-overlay.
183
184
  for label, files in (("Cursor", always), ("Claude", session)):
184
- if label == "Cursor" and len(files) not in (3, 4):
185
- continue
186
- if label == "Claude" and len(files) != 3:
185
+ if not (MIN_ALWAYS_ON <= len(files) <= MAX_ALWAYS_ON):
187
186
  continue
188
187
  total = 0
189
188
  for path in files:
@@ -193,7 +192,7 @@ for stack in STACKS:
193
192
  total += n
194
193
  name = path.name if label == "Cursor" else path.relative_to(claude_rules).as_posix()
195
194
  print(f" {label} body lines {name}: {n}")
196
- cap = BODY_CAP_CURSOR_4 if label == "Cursor" and len(always) == 4 else BODY_CAP
195
+ cap = BODY_CAP
197
196
  print(f" {label} session-start body sum: {total} (cap {cap}, files={len(files)})")
198
197
  if total > cap:
199
198
  print(
@@ -80,15 +80,20 @@ def consumers(stem: str) -> list[Path]:
80
80
  out.append(path)
81
81
  except OSError:
82
82
  continue
83
- contract_path = presets / "mavis" / "platform-contract.json"
84
- if contract_path.is_file():
83
+ # Generated platform trees are driven by their own contracts. Scan every
84
+ # released stack for both mavis and opencode so a core change that is not
85
+ # regenerated cannot slip through unnoticed.
86
+ for platform in ("mavis", "opencode"):
87
+ contract_path = presets / platform / "platform-contract.json"
88
+ if not contract_path.is_file():
89
+ continue
85
90
  try:
86
91
  contract = json.loads(contract_path.read_text(encoding="utf-8"))
87
92
  for stack in contract.get("releasedStacks") or []:
88
- mavis_base = presets / "mavis" / stack
89
- if not mavis_base.is_dir():
93
+ platform_base = presets / platform / stack
94
+ if not platform_base.is_dir():
90
95
  continue
91
- for path in mavis_base.rglob("*"):
96
+ for path in platform_base.rglob("*"):
92
97
  if path.suffix not in {".md", ".mdc"}:
93
98
  continue
94
99
  try:
@@ -4,7 +4,7 @@
4
4
  * Prefer invoking the hook directly from /task-continue (see command Metrics section).
5
5
  *
6
6
  * Usage:
7
- * node close-agent-task-human-gate.mjs [--cwd <repo>] [--platform cursor|claude|mavis|opencode] [--slug <slug>]
7
+ * node close-agent-task-human-gate.mjs [--cwd <repo>] [--platform cursor|claude|mavis|opencode] [--slug <slug>] [--no-activate-next]
8
8
  */
9
9
 
10
10
  import { execFileSync } from 'node:child_process';
@@ -14,7 +14,7 @@ import path from 'node:path';
14
14
  const PLATFORMS = new Set(['cursor', 'claude', 'mavis', 'opencode']);
15
15
 
16
16
  function parseArgs(argv) {
17
- const options = { cwd: process.cwd(), platform: 'cursor', slug: null };
17
+ const options = { cwd: process.cwd(), platform: 'cursor', slug: null, activateNext: true };
18
18
  function nextValue(flag, i) {
19
19
  const next = argv[i + 1];
20
20
  if (next === undefined || next.startsWith('-')) {
@@ -35,7 +35,9 @@ function parseArgs(argv) {
35
35
  options.slug = nextValue(arg, i);
36
36
  i += 1;
37
37
  } else if (arg === '--activate-next') {
38
- /* always activate via hook payload */
38
+ options.activateNext = true;
39
+ } else if (arg === '--no-activate-next') {
40
+ options.activateNext = false;
39
41
  } else if (arg === '--team-root') {
40
42
  const teamRoot = path.resolve(nextValue(arg, i));
41
43
  options.cwd = path.resolve(teamRoot, '..', '..');
@@ -76,7 +78,7 @@ if (options.slug) {
76
78
  const payload = JSON.stringify({
77
79
  status: 'completed',
78
80
  action: 'end_human_gate',
79
- activateNext: true,
81
+ activateNext: options.activateNext,
80
82
  });
81
83
 
82
84
  const output = execFileSync('bash', [hookPath], {
@@ -12,6 +12,12 @@
12
12
  ".ai.local/team/fixtures/feature-with-figma-url.json": "8aec2ac11ba552bc9135721678af58c73ca5a74b3038c5f4dc878b1080ade9be",
13
13
  ".ai.local/team/fixtures/feature-with-ux-no-figma.json": "526c103a26c83afef60ebadd289735b6dfea14c8191acd9780fc72e72da2ff45",
14
14
  ".ai.local/team/fixtures/memlog.example.md": "53d281ddd383e0337b038a0dc6dd4e14f84743066a1a99bf45fc2e7064cce222",
15
+ ".ai.local/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json": "6642b2ae310cdb89eb80fce7bb01d69a428c9ca8072651af7397f4f19eb0a724",
16
+ ".ai.local/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json": "c27b87afa3c82d7d0d4b0e8385b8ebb245e17c10e3fe00f94938141f5843e9d7",
17
+ ".ai.local/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json": "66294d7fb22a50eca3cc98692c27bd740959dc361245dc8d382e2086a4d847ca",
18
+ ".ai.local/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json": "8bcf7904c072927212a24aa9036019a8bf84a8e92f17275ace86001ad7896ca6",
19
+ ".ai.local/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json": "f0ad432a4f73a6ef7ced550c20e662726025b46776f349693cbc3cd547bc5112",
20
+ ".ai.local/team/fixtures/metrics.example.json": "ec056907da840e11477afabd1401aef30773af833617d2f68b3f1db825f62d0a",
15
21
  ".ai.local/team/fixtures/mockup-review-fail-embedded-status.json": "2e1f3ff8e5e3668f20f2b0e329f26b884c79e426dd6b5952c0896bd4f0c7f9a4",
16
22
  ".ai.local/team/fixtures/mockup-review-standalone.json": "edda49b1298e94f9a33496317e9f6ccbbb047659e044e05ba35669bfe800eda6",
17
23
  ".ai.local/team/fixtures/ux-design-standalone.json": "528aeb9db4c310d1b5e3eacae0ad39a4fd1dd49c04154b064e7027981488a07a",
@@ -21,7 +27,7 @@
21
27
  ".claude/agents/README.md": "98fd8018a96eb924977217f81eb9cf966e88dee151b60af2c7c94ae2a8b32730",
22
28
  ".claude/agents/accessibility-reviewer.md": "2dfe18461dde7517fc2c1ea9c74f13985b4b3c041737795c5dafa0f13eb7d252",
23
29
  ".claude/agents/api-contract-reviewer.md": "4def3aa919c617f5da68ae082f9fe914bad849c76af76b8b10eecb1ff3b13804",
24
- ".claude/agents/build-verifier.md": "1412b094be89e24603248276a9d0847057df845595ec92ab95915d5552794dc7",
30
+ ".claude/agents/build-verifier.md": "c8e03d50d9cbcfc9facc5df83f3b1307b16785fa6e389803bc424c98e1ab9b0b",
25
31
  ".claude/agents/ci-investigator.md": "3707b479fa868cee38c7514244610397e6e668dc5f038159d960df321b2dca95",
26
32
  ".claude/agents/code-reviewer.md": "b7f334ea4d83a1d06c4e923fd74e026f840e3124e5b7e748535b09bc69288697",
27
33
  ".claude/agents/codebase-analyzer.md": "cae5586fd9a5fc0ea12a7578c5a9f5a4c72229b1e5c4f1eeb9ff9b6b243becf0",
@@ -46,59 +52,59 @@
46
52
  ".claude/commands/README.md": "30574717de5deb51a4f5bbe8da7373e560403cc4710acaf0c730d27dd1cf964f",
47
53
  ".claude/commands/spec-start.md": "4c6ca849ea2d8835a9cc0902a4e39749510db1021fbc0b1a623a46c9644afbf1",
48
54
  ".claude/commands/task-continue.md": "8c2bec3c204c25910e8fc349c571778275905380e90d8bd02c0092c83ecfe6f6",
49
- ".claude/commands/task.md": "1f327f836917795945bb4b26722e67ae8c1bbe71f222029cb7cae548556f7721",
55
+ ".claude/commands/task.md": "4db4b9245e7d5d0d56fb06d86196502aa8fa6487c747c2c103d09da27b02941e",
50
56
  ".claude/commands/technical-retro.md": "6195206cc687645fadcbe011306f6c62f1d082508c9182d880e5e4485d17214c",
51
57
  ".claude/hooks/README.md": "2d76085d8319a9c6cf579800fba52288bd43e29d2434df31a28d34d2a4a6a61d",
52
- ".claude/hooks/chain-team-phases.sh": "4766a5daf49509ae0dbf9d6156c11aeeb285258479e917c972cdaeec3873bf39",
53
- ".claude/hooks/examples/README.md": "337b1f81fb3add28f6fd24a0433f5578077b031d649bd5200996eb44f9e43e22",
58
+ ".claude/hooks/chain-team-phases.sh": "ab0f689747f3f79b6cbb598c0d2b8cba8a694322f9902d7d853be6862565f5fc",
59
+ ".claude/hooks/examples/README.md": "e287392fe719476053a1998d35fe08924be58f065e9d2bfdab7727a050ba7efe",
54
60
  ".claude/hooks/examples/format-edited.example.sh": "fd4df1d6c2a5673f963febd4f3f21ec8c42899645bdc53144d713c66b2affc76",
55
61
  ".claude/hooks/examples/secret-guard.example.sh": "51cbc95c3a1b64dfc5b19901932b4e3a047ade9332451282f254bf5f8d45a58f",
56
62
  ".claude/hooks/examples/test-on-save.example.sh": "ae185e383811e2f8f89ae5f631993705c06fc8cf7216cf8f0862a5b55c64ca2a",
57
63
  ".claude/hooks/guard-shell-command.sh": "d1eae59b78aac8155668528ceb87abaf54624466a60f7d2df8716c25aad3fe96",
58
- ".claude/rules/README.md": "4e9da22700a5b941a91aaa2c2398a68e34f9ad66485089fc9fe68455ee9b564e",
64
+ ".claude/rules/README.md": "f047c1fb6cd7ffbeee5cd8e7dd958db41a404c275c50a16e1b02ce6b5754caf4",
59
65
  ".claude/rules/anti-hallucination/react-next-anti-hallucination.md": "021d22a4178aad43b8ba8b332cc677dbe8130a0cf673407acbb34d47c5367d32",
60
66
  ".claude/rules/api-and-data/README.md": "1caace24921f00d60a58bea551988abd15c32f13a2711ae799ce1e689b838de2",
61
- ".claude/rules/api-and-data/api-services.md": "a55d55680543256adafac7b86b323e75e03b1f2a72fd97b97f4b918da77fa497",
67
+ ".claude/rules/api-and-data/api-services.md": "30b50d49c4281c4e0f9169d453c285f7dfc828d9991520e0c204101b5b634cb9",
62
68
  ".claude/rules/api-and-data/http-client.md": "437a97b8b533b6df8ae29d346f68a86e49fa0a66fe7ad3bec4b3874403ea6c09",
63
- ".claude/rules/api-and-data/store-rtk.md": "392cc33c5ffec0301ee5e27ce75a8002194a01e91b71564aeade65fe73e35c76",
69
+ ".claude/rules/api-and-data/store-rtk.md": "a60d51e97639bcf4d6908bc0d8631fdceb3b343e2b79391a5446c33b3e345ed7",
64
70
  ".claude/rules/architecture/README.md": "289158e67b7048545c69efdb4d5e03cc721dbf23d66e0cfe5830093d281d2326",
65
71
  ".claude/rules/architecture/architecture-boundaries-ui.md": "fefaf65f6893d087064a14602bdac7a13f8ca7dafec5af286ecc7d0ec4e332ba",
66
72
  ".claude/rules/architecture/architecture-boundaries.md": "05214891d47a286761390afb7109a6d7c10d715f84aca2d0df98960075b78b57",
67
- ".claude/rules/architecture/feature-delivery-workflow.md": "d664c6aa288170187b6b18bef5210ed2d75ce18ba9c7de9f35a16917d1c1a3c0",
73
+ ".claude/rules/architecture/feature-delivery-workflow.md": "553aad442b2fb97e0dbdc8a465cf6e565ae6acf37c18fb77e386a1ba8575010b",
68
74
  ".claude/rules/architecture/layer-barrel-exports.md": "c0339a15b5c161bde70107b9dbbd02817d603dcd00d84b43cdd72528c63b4c22",
69
75
  ".claude/rules/architecture/product-specs-authoring.md": "2266a429713741e0653204df04516bbd5c2f95da146d7c813c7a84bb7fcd9bfe",
70
76
  ".claude/rules/architecture/product-specs.md": "83ca98fd58c32504eef5745f986b82a6a5ddae202a3d357891e9f0f8233caab9",
71
77
  ".claude/rules/architecture/public-imports.md": "da67712b2bb2462967d0869555fb145063fd7ecce53e4b0a08ffc7e53ffac6f3",
72
- ".claude/rules/architecture/reference-features.md": "31ff422b9e29d585b65a9d8bd4cc6f7e6761d0e4eba77c7b828ab9216fdedb34",
78
+ ".claude/rules/architecture/reference-features.md": "be494597fcb93e43ab91c1ec1ae7d1c0ecbb9624bd0ca0725af512dbffa0d495",
73
79
  ".claude/rules/stack/README.md": "8dda2a6cacc3346300ea445bcb87d157c898fabdc820ca202667b915f9088de2",
74
80
  ".claude/rules/stack/arrow-functions.md": "4e382cc791c2d057431830baccff4f7043c4a39424370fe2fa0c57c62a646ea4",
75
81
  ".claude/rules/stack/navigation-router-ui.md": "8cabe15ed92ae9574c152dd1c001f4771ac1e1d287b0d2f2b12b7f84ddd5fa73",
76
82
  ".claude/rules/stack/navigation-router.md": "67e2198e7100fe96764acf47810839f8c169b118a2da71ecc172f1569a2571d6",
77
- ".claude/rules/stack/next-app-core.md": "f6742178b1de0be258826375ba93874a3180160df36977fca1b37762b5a25e00",
83
+ ".claude/rules/stack/next-app-core.md": "c87b3b2d73f9510d7b2c1c8892854f950c46e68a284edc492125c781000028cb",
78
84
  ".claude/rules/stack/next-app-router.md": "bb5b0a77fdd17f6643cdf825732e985fa41beea410fe5d6060bc259e507c4446",
79
85
  ".claude/rules/stack/no-type-assertion.md": "6fb33fa61bceea2fad7cde3361d82c9655b6fd84d43d863033d039b78e6af210",
80
86
  ".claude/rules/stack/types-jsdoc.md": "1c9b63c5c2230ef7dc8fbb224cecb7b0a99d2235ae17f720b5a92fcd0291ffc5",
81
87
  ".claude/rules/testing/README.md": "0018e4e37f60352fafac64cad74209aedf88e9129d9bbbd3016a6cb36efe7e0a",
82
88
  ".claude/rules/testing/playwright-agents.md": "c1d5ce31222bd2dc4ccebea2be79180fe1632a69eedaca1cbf37604b7e783219",
83
89
  ".claude/rules/testing/tests-e2e-structure.md": "bf0833d342a0c856e89f67c6a2f78e29499b56f00c4d145df53f9e9b1803e253",
84
- ".claude/rules/testing/tests-unit.md": "a123d75a6c6f128b01f55e801f596c4b875d4f0841662e4d39a62dbf51846e7d",
90
+ ".claude/rules/testing/tests-unit.md": "40001c22345b6423149db0d80bd573bc7c09b120177544091f3a29808d60eac9",
85
91
  ".claude/rules/tooling-and-review/README.md": "27a956fa7fa68c58cd17a9b598580b06cb2241aadef29e3b647a31ab418d99ec",
86
92
  ".claude/rules/tooling-and-review/agent-team-intake.md": "e05a5879d587a9c4774e9e36cfcadca5664eedaabe02051745fb6c87a6143e42",
87
93
  ".claude/rules/tooling-and-review/agent-team-orchestrator.md": "810afc6e3d3a97b652af215bbc03433727b87c063d79613e3588e1d955d192d6",
88
94
  ".claude/rules/tooling-and-review/ai-local-overlay.md": "2b8373351357a6df002e714302c130c6e79dd90c5a9cc852e45271f09b7d2726",
89
95
  ".claude/rules/tooling-and-review/anti-sycophancy-discipline.md": "6d359631dde6dbe6588397aa1108752cfdad9764d90d6d9da31606a463b72226",
90
- ".claude/rules/tooling-and-review/code-quality.md": "9aee7805102788d8a9d21504127f2fe94209d98abd1c880719097a42fb70bf94",
96
+ ".claude/rules/tooling-and-review/code-quality.md": "fc764e9fbf7101475fc709a4610d09758a3a959f2fe82d3d1a487f2c8556c1b4",
91
97
  ".claude/rules/tooling-and-review/code-review-mr.md": "30b31277be1f6df878712d79cb54bc157edb97640e3bc7e77c0121273821ab03",
92
98
  ".claude/rules/tooling-and-review/design-guidance.md": "6eb8a48f9d9f69896c047c9418577e47eda6d2ad6bf18b3dff761c6de675f7d3",
93
99
  ".claude/rules/tooling-and-review/mcp-usage.md": "37cafc7c5271f3d846223e1f82eef5f8a85b88e6f1ff00603d39849e154033e2",
94
100
  ".claude/rules/tooling-and-review/mockup-review.md": "a8305658ed3db90154ad9ce612785c4704b8d54fe65abb8f7ab69c9af23b826e",
95
101
  ".claude/rules/tooling-and-review/package-manager.md": "1e80459ac986a61eee45a6d0aef67177aa449279784848397c32ac0511b0c208",
96
102
  ".claude/rules/tooling-and-review/post-change-lint.md": "ea16a0311ef354c101efc697e738d852742f74f60f49f421b776ccf0e19ad53c",
97
- ".claude/rules/tooling-and-review/preset-layering.md": "6e5f905249d35b0fa1749cf275481ab7c75f80571a7672c439ea8efde373a832",
98
- ".claude/rules/tooling-and-review/preset-no-cross-stack-leakage.md": "f243dd9a5790512a5ceadcf9fd542bdea100403e788c5823926161363bdf5aa7",
99
- ".claude/rules/tooling-and-review/preset-pr-checklist.md": "9cf71779411aa773a11e7339d0ea12193379a75e2a64efe1dd28b63ef98f0182",
100
- ".claude/rules/tooling-and-review/preset-token-budget.md": "4dd2910a8077410e8f41599c3df469fb0e71c69befcaa71dbd13fd7a849852f0",
101
- ".claude/rules/tooling-and-review/preset-twin-sync.md": "f3b13d83df63d813394d59e89bc9424e3d34c5466c00c23eff1141863482e595",
103
+ ".claude/rules/tooling-and-review/preset-layering.md": "006b9ea97f55d039debc16847ac9b0bfae6b26b56f44e812081ddd65760289ca",
104
+ ".claude/rules/tooling-and-review/preset-no-cross-stack-leakage.md": "01e045b7f6f5a472581804499ec97dc4296264da90e3a6e3a25807501a300dad",
105
+ ".claude/rules/tooling-and-review/preset-pr-checklist.md": "d89e936da90b0f5a8ee23292a5f78946dc10fb53ae55f9aad20d6674d378fa40",
106
+ ".claude/rules/tooling-and-review/preset-token-budget.md": "bc22059a066d3ba21d8813f5e50d5cc9eef3a28860372d122d31b50977438e18",
107
+ ".claude/rules/tooling-and-review/preset-twin-sync.md": "bdd98171bc8218fdd84834aa8051e8c899f87bb1063f9a5fd539af1154cb618f",
102
108
  ".claude/rules/tooling-and-review/security-next.md": "3e5c733925a0040928a9fbb7d841e69a471a03c5cb02d2fa986b81d29d7e31ca",
103
109
  ".claude/rules/tooling-and-review/technical-retro.md": "45e059219204712dbaaeda860b553eb557a539ff164e425ff4181da43c86f24a",
104
110
  ".claude/rules/tooling-and-review/ux-design.md": "df354f533cb2c3593758a68d2e276d9fa89f9ae15d408fb94b49040a3545be6c",
@@ -106,7 +112,7 @@
106
112
  ".claude/rules/ui-and-accessibility/css-property-order.md": "1f3ed3e5891adb0114e203e26a4ad86c12d0bfeeadb7d425104e92fd5bf20dc1",
107
113
  ".claude/rules/ui-and-accessibility/no-props-spread.md": "60aa9ca9c94db981bcceb05a090734e540644febfa88f4e40089f5d16a8a5d7f",
108
114
  ".claude/rules/ui-and-accessibility/react-a11y-coding.md": "8709f43c13f7071b2cd645c29b171de218551c3895479901efa1a817585b245d",
109
- ".claude/rules/ui-and-accessibility/react-ui.md": "b5e3c8875f0fd9b8325f4bc9a10fad75bda56bf87c8be7a7993f4e593c055d07",
115
+ ".claude/rules/ui-and-accessibility/react-ui.md": "06233a81f4eb4d6686f5a5ced351ddde43aed2cf753d6a6be072e6507b71572f",
110
116
  ".claude/skills/README.md": "1aeac616a5270d0ce6be132a3dff3e0bbca1371191503f0ecf3eeeeea5b4e9f3",
111
117
  ".claude/skills/ci-investigation/SKILL.md": "b13ed9de0716671b7d192dc2ba7fec139466a933b52f25c075623dcdef38b399",
112
118
  ".claude/skills/code-review/SKILL.md": "068f995e00e4baa4baf02098cef865fd837f3dad33a5c063b778aa84b0878b02",
@@ -28,7 +28,7 @@
28
28
  ".cursor/agents/README.md": "40fd5a5e52f360eb0bc5d0a9496a1f1bd4404c28b73fe3d22f5478e7373322f1",
29
29
  ".cursor/agents/accessibility-reviewer.md": "0dae0c489cc167423cf00bb82a657ce6ff31365b1ad101541477c8cd3302e5a1",
30
30
  ".cursor/agents/api-contract-reviewer.md": "e4ecd88b323bd8b30d41d81940ad002e049cbed9eeb6fa3bb6ee4d5dc35554b5",
31
- ".cursor/agents/build-verifier.md": "6210e53e4e0e98589a1d67f0d7fff89ae98b4f2d5decb12a243637591e5b31d5",
31
+ ".cursor/agents/build-verifier.md": "8e04cae24302300e71896ea88c5139b17f3a93e217325ee0a36fdcb248c04d2b",
32
32
  ".cursor/agents/ci-investigator.md": "b7a50388e700db2e21c49e584d8cb84a0df9674a82a5edcb6da6f45d373af1d9",
33
33
  ".cursor/agents/code-reviewer.md": "b88c397e90911cbefe6cef41221b488ab383e5a616397a51231dcf5b7bb7c410",
34
34
  ".cursor/agents/codebase-analyzer.md": "cae5586fd9a5fc0ea12a7578c5a9f5a4c72229b1e5c4f1eeb9ff9b6b243becf0",
@@ -53,61 +53,61 @@
53
53
  ".cursor/commands/README.md": "18b409819457cc1e92aad1f964862eaf0ffdc69a6f46bbe2f95763d5c302292d",
54
54
  ".cursor/commands/spec-start.md": "4c6ca849ea2d8835a9cc0902a4e39749510db1021fbc0b1a623a46c9644afbf1",
55
55
  ".cursor/commands/task-continue.md": "88b936600cc42f3b76dc85e4baf9a075ee45b9ed07d71a4cf007400f024b4725",
56
- ".cursor/commands/task.md": "847c0a77e82a20b10a161bd7e85bf897e8b7781d53549a589f3383e4f55910be",
56
+ ".cursor/commands/task.md": "b1308b3d5e129347548800eaba23b6e70447efcdb1f3c0d2579d0305386e41c1",
57
57
  ".cursor/commands/technical-retro.md": "fc23e7bb1eebf8e7b4cae9ecd49471c65f419bcb7e969a91aac8f289182c3559",
58
58
  ".cursor/hooks.json": "fbe392afb84951ed9e30739fdcfddd18b5b7f68a8e129e874497e85dbd80e252",
59
59
  ".cursor/hooks/README.md": "29c0925184215b45f2edddb42f44749ca0192257ef5e653cc8961b1b8fb5d129",
60
- ".cursor/hooks/chain-team-phases.sh": "08f14525d1d00012980e1f6a98436f9e4fc75b1d02ee786ae4172c6e05c0d847",
60
+ ".cursor/hooks/chain-team-phases.sh": "21d9e5d987550651aa3c1119e01edb4f3209b6af056de4932d29d5ac1e550425",
61
61
  ".cursor/hooks/examples/README.md": "337b1f81fb3add28f6fd24a0433f5578077b031d649bd5200996eb44f9e43e22",
62
62
  ".cursor/hooks/examples/format-edited.example.sh": "fd4df1d6c2a5673f963febd4f3f21ec8c42899645bdc53144d713c66b2affc76",
63
63
  ".cursor/hooks/examples/secret-guard.example.sh": "51cbc95c3a1b64dfc5b19901932b4e3a047ade9332451282f254bf5f8d45a58f",
64
64
  ".cursor/hooks/examples/test-on-save.example.sh": "ae185e383811e2f8f89ae5f631993705c06fc8cf7216cf8f0862a5b55c64ca2a",
65
65
  ".cursor/hooks/guard-shell-command.sh": "1ff08e0a65f128134019713ea32af7a5c1cdf2f9b6279f1908b9e5109c55dee1",
66
66
  ".cursor/mcp.json": "1c395aec4abe8dc63e1c14e49295210f6bf54536344a5479b3eb1429678f7814",
67
- ".cursor/rules/README.md": "2eeeea34d27ef0e84335674f3b4be94f19403f3d8859ad57294e06b8bb481967",
67
+ ".cursor/rules/README.md": "fe61278824f31610dd5e562b6c2f74047c22774ca54b3b97fa387bc152ea6fb7",
68
68
  ".cursor/rules/agent-team-intake.mdc": "7d8925e60ffecb4ae0c95236f013b750e4fbe14782a4de4729db71c5667fa958",
69
69
  ".cursor/rules/agent-team-orchestrator.mdc": "6e844187855f4180435b9bf45649571da1a330ea3ce09af24671910ed1e12b5b",
70
70
  ".cursor/rules/ai-local-overlay.mdc": "8f1baeaa4a35f1efc77316a7a04c0b612d88ae380b3b7e61bc561b8dfd4396d2",
71
71
  ".cursor/rules/anti-sycophancy-discipline.mdc": "20c9dc8da47240f3f5b6a1c355d0bd83265cf7f1e080a6025b824d1b7ac2d36d",
72
- ".cursor/rules/api-services.mdc": "22214ec8a30bdc04d8099b7e97daf7baa0b772eb401ce95750faf10f19dd8770",
72
+ ".cursor/rules/api-services.mdc": "f500016a6129fcb765e9653e3775c36a41c2c4da6b25a90e83dbb2d413b53807",
73
73
  ".cursor/rules/architecture-boundaries-ui.mdc": "8697315b586b4d9e993fb5895617cf23943ad3b4a87f592a975df3c3f31f5bb8",
74
74
  ".cursor/rules/architecture-boundaries.mdc": "7361d9691140737af5c59a616f8efc894dd8cf8eca4175fbded1fb7dc24a0f62",
75
75
  ".cursor/rules/arrow-functions.mdc": "39ab6897e54c6f10cefc67829b64619ec12d6a1a7ac2d40aca9358efe4a428a1",
76
- ".cursor/rules/code-quality-and-refactoring.mdc": "82786a44f3d31244327c6f69502bf7468e15052b77968b9f0d9e929353d6092b",
76
+ ".cursor/rules/code-quality-and-refactoring.mdc": "09783c96a2cc954525000629724876cd0f5402d229d420f695a1837e8eb3695e",
77
77
  ".cursor/rules/code-review-mr.mdc": "bc99aab8bfe17600f691a77aba318910b711d76042a410dc00253938e5c9a4ff",
78
78
  ".cursor/rules/css-property-order-stylelint.mdc": "7369961a5d1a05603c69a5e1de607dc2cb7b579711d981385433fe0913deb132",
79
79
  ".cursor/rules/design-guidance.mdc": "143ea1da195a5298375b9b48ac82d12b639fc2af1ac90c31423e6c6d3a97fddd",
80
- ".cursor/rules/feature-delivery-workflow.mdc": "a81b6e8b86aa707223d5306403903131f38fe1c51c09bfba00cf0d0c558225f1",
80
+ ".cursor/rules/feature-delivery-workflow.mdc": "3cb98b9ae92a0a3a8a694e7eaeed1635bc95395a7deca8762f77846f54c0722f",
81
81
  ".cursor/rules/http-client.mdc": "2aaa3d6c04d1b086d77e3db6ae3d29d3c22382357d9b83a2e7fdb9fe1f1f6bf2",
82
82
  ".cursor/rules/layer-barrel-exports.mdc": "410446639d437e36e46819fcb27db6d0ec417f7eb356eacd3157964a6616fd17",
83
83
  ".cursor/rules/mcp-usage.mdc": "9cbbb65de906b67b8c5502168209ddd74e58b4fcd2309d2d491e13e9361b93fd",
84
84
  ".cursor/rules/mockup-review.mdc": "a3a80df557862e87826ca52bb29312cba15036729155bf7a90dd11feda96dad9",
85
85
  ".cursor/rules/navigation-router-stack.mdc": "2fdc0a40a266f6737a25d4a9012ef1d534fc3c26851a5740d29e6eeac138e726",
86
86
  ".cursor/rules/navigation-router-ui.mdc": "82b1a6f6f42bdc36cf7670f25306ae723d49f29746c3960751a2e8021079098b",
87
- ".cursor/rules/next-app-core.mdc": "d33e3f26bd393d8dd7e274d73e03b6bf346a55a7cb9e09af7408889464881782",
87
+ ".cursor/rules/next-app-core.mdc": "76a505ee2659fb891415640bf3197ffc8185612b6df626b7b97f3c5213ecadf2",
88
88
  ".cursor/rules/next-app-router.mdc": "a89943202e2e97f2975b4701e4fbd0de1312df6d26ad463b3cc627305a3f48fc",
89
89
  ".cursor/rules/no-props-spread.mdc": "673b47cc40a6a1b3f30236cb89deb79430d225205545e20d7afb8ad8ce62aae9",
90
90
  ".cursor/rules/no-type-assertion-as-import-export.mdc": "78a7625b80353c8d52ca537e3c33d78f72c426b93748c7b988f6afe8706f0315",
91
91
  ".cursor/rules/package-manager.mdc": "ff639e2957f359d60adbc8daf2fbdecf9d7be0b6b9664860697a50b1eb855aab",
92
92
  ".cursor/rules/playwright-agents.mdc": "088c4aaf50c5d6fa1846ec73f32878ec51f795bf3eafb0daccdb6355e56e7e65",
93
93
  ".cursor/rules/post-change-lint.mdc": "2f9398a6ae81636d7a401e5fc38bb300579e10d29df9a375a3ed592dfb028529",
94
- ".cursor/rules/preset-layering.mdc": "2fddf65b86c6e7888905758fd86efd2fbfe5365454385d3c2705eb80e94b3907",
95
- ".cursor/rules/preset-no-cross-stack-leakage.mdc": "9de9d22066fc37cbb8ffcb3e14cf5acce9dba8681cb5793ca4a63340a9b47120",
96
- ".cursor/rules/preset-pr-checklist.mdc": "1d329b4b57bdc897976f547ff506bd65491b6ef7aa29310770141976b1c5282f",
97
- ".cursor/rules/preset-token-budget.mdc": "1497a5594503813f559244d46347c68ead0aa96888dd7a589bb853750f33bb46",
98
- ".cursor/rules/preset-twin-sync.mdc": "ea1b92cfd711c3429a6c791880bf4bde3526a85306784841b384a0921fa90581",
94
+ ".cursor/rules/preset-layering.mdc": "13f3c7781219c18766b5fdc73aafa31769a85843f2d0ba4e175b2091baf1bcb1",
95
+ ".cursor/rules/preset-no-cross-stack-leakage.mdc": "fe9a63a1c63b329d9954bcbf8f60e5786ae77cc937c31e106adbaba7404e4f1e",
96
+ ".cursor/rules/preset-pr-checklist.mdc": "b41059caf4764301a3a4626f6c20440a724a70641118da8c205adc2cdf7ced14",
97
+ ".cursor/rules/preset-token-budget.mdc": "65eb11910cc2c31b1be2d568417af33f556d88df322dab4e9a028933af5dc482",
98
+ ".cursor/rules/preset-twin-sync.mdc": "336b018e2ff10dbe31ffe2354c22fbd87d330d43cf7359e5a8a1d5a9c53772aa",
99
99
  ".cursor/rules/product-specs-authoring.mdc": "590bbfe9f1d3c6b9acd363cd9658f9bb509702071410ef753a49d9a0a90122d2",
100
100
  ".cursor/rules/product-specs.mdc": "6f0e09b2f6c1b9ed63e23c50c9e2a4a481e7b102f821d1c94a0077bd2cf606ff",
101
101
  ".cursor/rules/public-imports.mdc": "efa02180236610417b5f08b63e4d4babc982bc9c6aa81fa464e0be948109fe26",
102
102
  ".cursor/rules/react-a11y-coding.mdc": "05d36f721f42b3effacc9a436701c5dcec5ec8889bf0a2662a4a307e5c27fe8a",
103
103
  ".cursor/rules/react-next-anti-hallucination.mdc": "357808c678eed984c185e5574fae889fdb89c499d353d069540e113493493466",
104
- ".cursor/rules/react-ui.mdc": "1462aba0a51ba502e5eaba34491a06beab72e2e4f366e72c18590cb52189ec01",
105
- ".cursor/rules/reference-features.mdc": "cd2cce1129572c9eabe49fceead151c56a2ae5b694603c5f8f5d6c4983a875e5",
104
+ ".cursor/rules/react-ui.mdc": "a0874c78782d7de08096cd6291b698fc57d188fa11103ad7dbeac589d45be69c",
105
+ ".cursor/rules/reference-features.mdc": "383991f5b32e19bb33d8631459406b91302382e57ca0fa06ff58339be561e9c9",
106
106
  ".cursor/rules/security-next.mdc": "284a483f997732ca7946dde7632544bc472682c47e26e86621ae1981e91ce8b0",
107
- ".cursor/rules/store-rtk.mdc": "02a79f96fcc93aa2602ba1e4bd5af207f4349a913d7aeb1d432ae0b7a8a356f7",
107
+ ".cursor/rules/store-rtk.mdc": "b8cee115b3f561161425014cd83fc825a6e050852d34843f158cd7255ee2165b",
108
108
  ".cursor/rules/technical-retro.mdc": "ebe50f727b88c81494183941da90f79a6ef22ddf166095cd9d9fb42f1a62998b",
109
109
  ".cursor/rules/tests-e2e-structure.mdc": "61d8e86c5c861dc00f73052927ab9141c70154e03b53ce4c9fb4c222ff682898",
110
- ".cursor/rules/tests-unit.mdc": "8c9b08db8074e9596dc40e1774e183b07bc501caf6f483c840ca60ed8319f919",
110
+ ".cursor/rules/tests-unit.mdc": "c3f5a0d62ff63204bfe65fc27157768695ec53b66b473ee91e08cd98d81d8799",
111
111
  ".cursor/rules/types-jsdoc.mdc": "8993a3cde232e0761272c2e24cbc632bdc4f99ecabb7c4edcd0467856fd55b80",
112
112
  ".cursor/rules/ux-design.mdc": "7952757d40b6b579d7ec150d8b5a178042c44d0bc1afbee16bb4aaff35208122",
113
113
  ".cursor/skills/README.md": "0e425013d80d1ca813dd39c66783bed915c21f1aa13f4e53508183db9b86a221",