@bonesofspring/ai-rules 0.2.30 → 0.2.32

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 (752) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/docs/LOCAL-OVERLAY.md +14 -0
  3. package/package.json +1 -1
  4. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +6 -4
  5. package/presets/_shared/core/agent-team/agent-task-metrics.md +14 -1
  6. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +3 -1
  7. package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +2 -2
  8. package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +2 -2
  9. package/presets/claude/android-kotlin/agents/build-verifier.md +1 -1
  10. package/presets/claude/android-kotlin/agents/ci-investigator.md +2 -2
  11. package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -2
  12. package/presets/claude/android-kotlin/agents/debugger.md +2 -2
  13. package/presets/claude/android-kotlin/agents/feature-developer.md +2 -2
  14. package/presets/claude/android-kotlin/agents/migration-specialist.md +2 -2
  15. package/presets/claude/android-kotlin/agents/mockup-reviewer.md +2 -2
  16. package/presets/claude/android-kotlin/agents/openspec-author.md +2 -2
  17. package/presets/claude/android-kotlin/agents/performance-auditor.md +2 -2
  18. package/presets/claude/android-kotlin/agents/qa-tester.md +2 -2
  19. package/presets/claude/android-kotlin/agents/security-reviewer.md +2 -2
  20. package/presets/claude/android-kotlin/agents/task-analyst.md +1 -1
  21. package/presets/claude/android-kotlin/agents/task-router.md +1 -1
  22. package/presets/claude/android-kotlin/agents/tech-writer.md +2 -2
  23. package/presets/claude/android-kotlin/agents/unit-test-generator.md +2 -2
  24. package/presets/claude/android-kotlin/agents/unit-test-healer.md +2 -2
  25. package/presets/claude/android-kotlin/agents/unit-test-planner.md +2 -2
  26. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
  27. package/presets/claude/go/agents/build-verifier.md +2 -2
  28. package/presets/claude/go/agents/code-reviewer.md +2 -2
  29. package/presets/claude/go/agents/feature-developer.md +2 -2
  30. package/presets/claude/go/agents/openspec-author.md +2 -2
  31. package/presets/claude/go/agents/task-analyst.md +1 -1
  32. package/presets/claude/go/agents/task-router.md +1 -1
  33. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  34. package/presets/claude/ios-swift/agents/build-verifier.md +2 -2
  35. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -2
  36. package/presets/claude/ios-swift/agents/feature-developer.md +2 -2
  37. package/presets/claude/ios-swift/agents/mockup-reviewer.md +2 -2
  38. package/presets/claude/ios-swift/agents/openspec-author.md +2 -2
  39. package/presets/claude/ios-swift/agents/task-analyst.md +1 -1
  40. package/presets/claude/ios-swift/agents/task-router.md +1 -1
  41. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
  42. package/presets/claude/java/agents/build-verifier.md +2 -2
  43. package/presets/claude/java/agents/code-reviewer.md +2 -2
  44. package/presets/claude/java/agents/feature-developer.md +2 -2
  45. package/presets/claude/java/agents/openspec-author.md +2 -2
  46. package/presets/claude/java/agents/task-analyst.md +1 -1
  47. package/presets/claude/java/agents/task-router.md +1 -1
  48. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  49. package/presets/claude/mcp-ts/agents/build-verifier.md +2 -2
  50. package/presets/claude/mcp-ts/agents/feature-developer.md +2 -2
  51. package/presets/claude/mcp-ts/agents/task-analyst.md +1 -1
  52. package/presets/claude/mcp-ts/agents/task-router.md +1 -1
  53. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  54. package/presets/claude/next/REPO_AGENTS.md +11 -1
  55. package/presets/claude/next/agents/accessibility-reviewer.md +2 -2
  56. package/presets/claude/next/agents/api-contract-reviewer.md +2 -2
  57. package/presets/claude/next/agents/build-verifier.md +3 -2
  58. package/presets/claude/next/agents/ci-investigator.md +2 -2
  59. package/presets/claude/next/agents/code-reviewer.md +3 -2
  60. package/presets/claude/next/agents/debugger.md +2 -2
  61. package/presets/claude/next/agents/feature-developer.md +3 -2
  62. package/presets/claude/next/agents/migration-specialist.md +2 -2
  63. package/presets/claude/next/agents/mockup-reviewer.md +2 -2
  64. package/presets/claude/next/agents/openspec-author.md +4 -2
  65. package/presets/claude/next/agents/performance-auditor.md +2 -2
  66. package/presets/claude/next/agents/qa-tester.md +2 -2
  67. package/presets/claude/next/agents/security-reviewer.md +2 -2
  68. package/presets/claude/next/agents/solution-architect.md +2 -2
  69. package/presets/claude/next/agents/task-analyst.md +8 -1
  70. package/presets/claude/next/agents/task-router.md +2 -1
  71. package/presets/claude/next/agents/tech-writer.md +2 -2
  72. package/presets/claude/next/agents/unit-test-generator.md +2 -2
  73. package/presets/claude/next/agents/unit-test-healer.md +2 -2
  74. package/presets/claude/next/agents/unit-test-planner.md +2 -2
  75. package/presets/claude/next/hooks/chain-team-phases.sh +46 -1
  76. package/presets/claude/next/rules/README.md +3 -0
  77. package/presets/claude/next/rules/anti-hallucination/react-next-anti-hallucination.md +10 -0
  78. package/presets/claude/next/rules/api-and-data/store-rtk.md +6 -0
  79. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +5 -1
  80. package/presets/claude/next/rules/architecture/product-specs-authoring.md +1 -0
  81. package/presets/claude/next/rules/architecture/product-specs.md +1 -0
  82. package/presets/claude/next/rules/architecture/reference-features.md +5 -0
  83. package/presets/claude/next/rules/stack/next-app-core.md +3 -0
  84. package/presets/claude/next/rules/stack/next-static-export.md +36 -0
  85. package/presets/claude/next/rules/testing/tests-e2e-structure.md +1 -0
  86. package/presets/claude/next/rules/testing/tests-unit.md +1 -0
  87. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  88. package/presets/claude/next/rules/tooling-and-review/ai-local-overlay.md +16 -2
  89. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +4 -0
  90. package/presets/claude/next/rules/tooling-and-review/mcp-usage.md +1 -0
  91. package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +4 -0
  92. package/presets/claude/next/rules/tooling-and-review/security-next.md +13 -0
  93. package/presets/claude/next/rules/ui-and-accessibility/component-catalog-gate.md +39 -0
  94. package/presets/claude/next/rules/ui-and-accessibility/design-tokens-binding.md +1 -1
  95. package/presets/claude/next/rules/ui-and-accessibility/forms-validation.md +35 -0
  96. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +19 -1
  97. package/presets/claude/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
  98. package/presets/claude/nuxt/agents/accessibility-reviewer.md +2 -2
  99. package/presets/claude/nuxt/agents/api-contract-reviewer.md +2 -2
  100. package/presets/claude/nuxt/agents/build-verifier.md +2 -2
  101. package/presets/claude/nuxt/agents/ci-investigator.md +2 -2
  102. package/presets/claude/nuxt/agents/code-reviewer.md +2 -2
  103. package/presets/claude/nuxt/agents/debugger.md +2 -2
  104. package/presets/claude/nuxt/agents/feature-developer.md +2 -2
  105. package/presets/claude/nuxt/agents/migration-specialist.md +2 -2
  106. package/presets/claude/nuxt/agents/mockup-reviewer.md +2 -2
  107. package/presets/claude/nuxt/agents/openspec-author.md +2 -2
  108. package/presets/claude/nuxt/agents/performance-auditor.md +2 -2
  109. package/presets/claude/nuxt/agents/qa-tester.md +2 -2
  110. package/presets/claude/nuxt/agents/security-reviewer.md +2 -2
  111. package/presets/claude/nuxt/agents/solution-architect.md +2 -2
  112. package/presets/claude/nuxt/agents/task-analyst.md +1 -1
  113. package/presets/claude/nuxt/agents/task-router.md +1 -1
  114. package/presets/claude/nuxt/agents/tech-writer.md +2 -2
  115. package/presets/claude/nuxt/agents/unit-test-generator.md +2 -2
  116. package/presets/claude/nuxt/agents/unit-test-healer.md +2 -2
  117. package/presets/claude/nuxt/agents/unit-test-planner.md +2 -2
  118. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  119. package/presets/claude/php-hexagonal/agents/build-verifier.md +2 -2
  120. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -2
  121. package/presets/claude/php-hexagonal/agents/feature-developer.md +2 -2
  122. package/presets/claude/php-hexagonal/agents/openspec-author.md +2 -2
  123. package/presets/claude/php-hexagonal/agents/task-analyst.md +1 -1
  124. package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
  125. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  126. package/presets/claude/php-laravel/agents/build-verifier.md +2 -2
  127. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -2
  128. package/presets/claude/php-laravel/agents/feature-developer.md +2 -2
  129. package/presets/claude/php-laravel/agents/openspec-author.md +2 -2
  130. package/presets/claude/php-laravel/agents/task-analyst.md +1 -1
  131. package/presets/claude/php-laravel/agents/task-router.md +1 -1
  132. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  133. package/presets/claude/svelte/agents/accessibility-reviewer.md +2 -2
  134. package/presets/claude/svelte/agents/api-contract-reviewer.md +2 -2
  135. package/presets/claude/svelte/agents/build-verifier.md +2 -2
  136. package/presets/claude/svelte/agents/ci-investigator.md +2 -2
  137. package/presets/claude/svelte/agents/code-reviewer.md +2 -2
  138. package/presets/claude/svelte/agents/debugger.md +2 -2
  139. package/presets/claude/svelte/agents/feature-developer.md +2 -2
  140. package/presets/claude/svelte/agents/migration-specialist.md +2 -2
  141. package/presets/claude/svelte/agents/mockup-reviewer.md +2 -2
  142. package/presets/claude/svelte/agents/openspec-author.md +2 -2
  143. package/presets/claude/svelte/agents/performance-auditor.md +2 -2
  144. package/presets/claude/svelte/agents/qa-tester.md +2 -2
  145. package/presets/claude/svelte/agents/security-reviewer.md +2 -2
  146. package/presets/claude/svelte/agents/solution-architect.md +2 -2
  147. package/presets/claude/svelte/agents/task-analyst.md +1 -1
  148. package/presets/claude/svelte/agents/task-router.md +1 -1
  149. package/presets/claude/svelte/agents/tech-writer.md +2 -2
  150. package/presets/claude/svelte/agents/unit-test-generator.md +2 -2
  151. package/presets/claude/svelte/agents/unit-test-healer.md +2 -2
  152. package/presets/claude/svelte/agents/unit-test-planner.md +2 -2
  153. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
  154. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +2 -2
  155. package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +2 -2
  156. package/presets/cursor/android-kotlin/agents/build-verifier.md +1 -1
  157. package/presets/cursor/android-kotlin/agents/ci-investigator.md +2 -2
  158. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -2
  159. package/presets/cursor/android-kotlin/agents/debugger.md +2 -2
  160. package/presets/cursor/android-kotlin/agents/feature-developer.md +2 -2
  161. package/presets/cursor/android-kotlin/agents/migration-specialist.md +2 -2
  162. package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +2 -2
  163. package/presets/cursor/android-kotlin/agents/openspec-author.md +2 -2
  164. package/presets/cursor/android-kotlin/agents/performance-auditor.md +2 -2
  165. package/presets/cursor/android-kotlin/agents/qa-tester.md +2 -2
  166. package/presets/cursor/android-kotlin/agents/security-reviewer.md +2 -2
  167. package/presets/cursor/android-kotlin/agents/task-analyst.md +1 -1
  168. package/presets/cursor/android-kotlin/agents/task-router.md +1 -1
  169. package/presets/cursor/android-kotlin/agents/tech-writer.md +2 -2
  170. package/presets/cursor/android-kotlin/agents/unit-test-generator.md +2 -2
  171. package/presets/cursor/android-kotlin/agents/unit-test-healer.md +2 -2
  172. package/presets/cursor/android-kotlin/agents/unit-test-planner.md +2 -2
  173. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +1 -1
  174. package/presets/cursor/go/agents/build-verifier.md +2 -2
  175. package/presets/cursor/go/agents/code-reviewer.md +2 -2
  176. package/presets/cursor/go/agents/feature-developer.md +2 -2
  177. package/presets/cursor/go/agents/openspec-author.md +2 -2
  178. package/presets/cursor/go/agents/task-analyst.md +1 -1
  179. package/presets/cursor/go/agents/task-router.md +1 -1
  180. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +3 -1
  181. package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
  182. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -2
  183. package/presets/cursor/ios-swift/agents/feature-developer.md +2 -2
  184. package/presets/cursor/ios-swift/agents/mockup-reviewer.md +2 -2
  185. package/presets/cursor/ios-swift/agents/openspec-author.md +2 -2
  186. package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
  187. package/presets/cursor/ios-swift/agents/task-router.md +1 -1
  188. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
  189. package/presets/cursor/java/agents/build-verifier.md +2 -2
  190. package/presets/cursor/java/agents/code-reviewer.md +2 -2
  191. package/presets/cursor/java/agents/feature-developer.md +2 -2
  192. package/presets/cursor/java/agents/openspec-author.md +2 -2
  193. package/presets/cursor/java/agents/task-analyst.md +1 -1
  194. package/presets/cursor/java/agents/task-router.md +1 -1
  195. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +3 -1
  196. package/presets/cursor/mcp-ts/agents/build-verifier.md +2 -2
  197. package/presets/cursor/mcp-ts/agents/feature-developer.md +2 -2
  198. package/presets/cursor/mcp-ts/agents/task-analyst.md +1 -1
  199. package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
  200. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +3 -1
  201. package/presets/cursor/next/REPO_AGENTS.md +11 -1
  202. package/presets/cursor/next/agents/accessibility-reviewer.md +2 -2
  203. package/presets/cursor/next/agents/api-contract-reviewer.md +2 -2
  204. package/presets/cursor/next/agents/build-verifier.md +3 -2
  205. package/presets/cursor/next/agents/ci-investigator.md +2 -2
  206. package/presets/cursor/next/agents/code-reviewer.md +3 -2
  207. package/presets/cursor/next/agents/debugger.md +2 -2
  208. package/presets/cursor/next/agents/feature-developer.md +3 -2
  209. package/presets/cursor/next/agents/migration-specialist.md +2 -2
  210. package/presets/cursor/next/agents/mockup-reviewer.md +2 -2
  211. package/presets/cursor/next/agents/openspec-author.md +4 -2
  212. package/presets/cursor/next/agents/performance-auditor.md +2 -2
  213. package/presets/cursor/next/agents/qa-tester.md +2 -2
  214. package/presets/cursor/next/agents/security-reviewer.md +2 -2
  215. package/presets/cursor/next/agents/solution-architect.md +2 -2
  216. package/presets/cursor/next/agents/task-analyst.md +8 -1
  217. package/presets/cursor/next/agents/task-router.md +2 -1
  218. package/presets/cursor/next/agents/tech-writer.md +2 -2
  219. package/presets/cursor/next/agents/unit-test-generator.md +2 -2
  220. package/presets/cursor/next/agents/unit-test-healer.md +2 -2
  221. package/presets/cursor/next/agents/unit-test-planner.md +2 -2
  222. package/presets/cursor/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +41 -8
  223. package/presets/cursor/next/ai-local/rules-library/agent-pipeline-gates.md +19 -0
  224. package/presets/cursor/next/ai-local/rules-library/analytics-events.md +18 -0
  225. package/presets/cursor/next/ai-local/rules-library/api-contract-source.md +14 -0
  226. package/presets/cursor/next/ai-local/rules-library/artifact-lifecycle.md +17 -0
  227. package/presets/cursor/next/ai-local/rules-library/code-style.md +68 -0
  228. package/presets/cursor/next/ai-local/rules-library/component-child-decomposition.md +81 -0
  229. package/presets/cursor/next/ai-local/rules-library/feature-flags-experiments.md +15 -0
  230. package/presets/cursor/next/ai-local/rules-library/mcp-required-for-ui-layout.md +1 -1
  231. package/presets/cursor/next/ai-local/rules-library/no-react-fc.md +46 -0
  232. package/presets/cursor/next/ai-local/rules-library/no-test-driven-behavior-change.md +1 -1
  233. package/presets/cursor/next/ai-local/rules-library/pwa-service-worker.md +15 -0
  234. package/presets/cursor/next/ai-local/rules-library/qa-test-cases.md +14 -0
  235. package/presets/cursor/next/ai-local/rules-library/router-pages.md +4 -2
  236. package/presets/cursor/next/ai-local/rules-library/single-source-copy-constants.md +3 -1
  237. package/presets/cursor/next/ai-local/rules-library/storybook-catalog-structure.md +62 -0
  238. package/presets/cursor/next/ai-local/rules-library/storybook-cleanup-temp-screenshots.md +40 -0
  239. package/presets/cursor/next/ai-local/rules-library/storybook-csf-authoring.md +100 -0
  240. package/presets/cursor/next/ai-local/rules-library/storybook-dev-compare-figma.md +67 -0
  241. package/presets/cursor/next/ai-local/rules-library/storybook-keep-tests-current.md +75 -0
  242. package/presets/cursor/next/ai-local/rules-library/storybook-modals.md +64 -0
  243. package/presets/cursor/next/ai-local/rules-library/storybook-no-app-node-modules.md +40 -0
  244. package/presets/cursor/next/ai-local/rules-library/storybook-ui-quality-gate.md +38 -0
  245. package/presets/cursor/next/ai-local/rules-library/task-levels.md +28 -0
  246. package/presets/cursor/next/ai-local/rules-library/ui-change-review-gate.md +14 -0
  247. package/presets/cursor/next/hooks/chain-team-phases.sh +46 -1
  248. package/presets/cursor/next/rules/README.md +4 -1
  249. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +3 -1
  250. package/presets/cursor/next/rules/ai-local-overlay.mdc +16 -2
  251. package/presets/cursor/next/rules/code-review-mr.mdc +4 -0
  252. package/presets/cursor/next/rules/component-catalog-gate.mdc +38 -0
  253. package/presets/cursor/next/rules/design-tokens-binding.mdc +1 -1
  254. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +5 -1
  255. package/presets/cursor/next/rules/forms-validation.mdc +33 -0
  256. package/presets/cursor/next/rules/mcp-usage.mdc +1 -0
  257. package/presets/cursor/next/rules/next-app-core.mdc +3 -0
  258. package/presets/cursor/next/rules/next-static-export.mdc +35 -0
  259. package/presets/cursor/next/rules/post-change-lint.mdc +4 -0
  260. package/presets/cursor/next/rules/product-specs-authoring.mdc +1 -0
  261. package/presets/cursor/next/rules/product-specs.mdc +1 -0
  262. package/presets/cursor/next/rules/react-next-anti-hallucination.mdc +10 -0
  263. package/presets/cursor/next/rules/react-ui.mdc +19 -1
  264. package/presets/cursor/next/rules/reference-features.mdc +5 -0
  265. package/presets/cursor/next/rules/security-next.mdc +12 -0
  266. package/presets/cursor/next/rules/store-rtk.mdc +6 -0
  267. package/presets/cursor/next/rules/tests-e2e-structure.mdc +1 -0
  268. package/presets/cursor/next/rules/tests-unit.mdc +1 -0
  269. package/presets/cursor/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
  270. package/presets/cursor/nuxt/agents/accessibility-reviewer.md +2 -2
  271. package/presets/cursor/nuxt/agents/api-contract-reviewer.md +2 -2
  272. package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
  273. package/presets/cursor/nuxt/agents/ci-investigator.md +2 -2
  274. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -2
  275. package/presets/cursor/nuxt/agents/debugger.md +2 -2
  276. package/presets/cursor/nuxt/agents/feature-developer.md +2 -2
  277. package/presets/cursor/nuxt/agents/migration-specialist.md +2 -2
  278. package/presets/cursor/nuxt/agents/mockup-reviewer.md +2 -2
  279. package/presets/cursor/nuxt/agents/openspec-author.md +2 -2
  280. package/presets/cursor/nuxt/agents/performance-auditor.md +2 -2
  281. package/presets/cursor/nuxt/agents/qa-tester.md +2 -2
  282. package/presets/cursor/nuxt/agents/security-reviewer.md +2 -2
  283. package/presets/cursor/nuxt/agents/solution-architect.md +2 -2
  284. package/presets/cursor/nuxt/agents/task-analyst.md +1 -1
  285. package/presets/cursor/nuxt/agents/task-router.md +1 -1
  286. package/presets/cursor/nuxt/agents/tech-writer.md +2 -2
  287. package/presets/cursor/nuxt/agents/unit-test-generator.md +2 -2
  288. package/presets/cursor/nuxt/agents/unit-test-healer.md +2 -2
  289. package/presets/cursor/nuxt/agents/unit-test-planner.md +2 -2
  290. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +3 -1
  291. package/presets/cursor/php-hexagonal/agents/build-verifier.md +2 -2
  292. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -2
  293. package/presets/cursor/php-hexagonal/agents/feature-developer.md +2 -2
  294. package/presets/cursor/php-hexagonal/agents/openspec-author.md +2 -2
  295. package/presets/cursor/php-hexagonal/agents/task-analyst.md +1 -1
  296. package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
  297. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +3 -1
  298. package/presets/cursor/php-laravel/agents/build-verifier.md +2 -2
  299. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -2
  300. package/presets/cursor/php-laravel/agents/feature-developer.md +2 -2
  301. package/presets/cursor/php-laravel/agents/openspec-author.md +2 -2
  302. package/presets/cursor/php-laravel/agents/task-analyst.md +1 -1
  303. package/presets/cursor/php-laravel/agents/task-router.md +1 -1
  304. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +3 -1
  305. package/presets/cursor/svelte/agents/accessibility-reviewer.md +2 -2
  306. package/presets/cursor/svelte/agents/api-contract-reviewer.md +2 -2
  307. package/presets/cursor/svelte/agents/build-verifier.md +2 -2
  308. package/presets/cursor/svelte/agents/ci-investigator.md +2 -2
  309. package/presets/cursor/svelte/agents/code-reviewer.md +2 -2
  310. package/presets/cursor/svelte/agents/debugger.md +2 -2
  311. package/presets/cursor/svelte/agents/feature-developer.md +2 -2
  312. package/presets/cursor/svelte/agents/migration-specialist.md +2 -2
  313. package/presets/cursor/svelte/agents/mockup-reviewer.md +2 -2
  314. package/presets/cursor/svelte/agents/openspec-author.md +2 -2
  315. package/presets/cursor/svelte/agents/performance-auditor.md +2 -2
  316. package/presets/cursor/svelte/agents/qa-tester.md +2 -2
  317. package/presets/cursor/svelte/agents/security-reviewer.md +2 -2
  318. package/presets/cursor/svelte/agents/solution-architect.md +2 -2
  319. package/presets/cursor/svelte/agents/task-analyst.md +1 -1
  320. package/presets/cursor/svelte/agents/task-router.md +1 -1
  321. package/presets/cursor/svelte/agents/tech-writer.md +2 -2
  322. package/presets/cursor/svelte/agents/unit-test-generator.md +2 -2
  323. package/presets/cursor/svelte/agents/unit-test-healer.md +2 -2
  324. package/presets/cursor/svelte/agents/unit-test-planner.md +2 -2
  325. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +3 -1
  326. package/presets/mavis/android-kotlin/adapter-map.json +1 -1
  327. package/presets/mavis/android-kotlin/agents/accessibility-reviewer.md +2 -2
  328. package/presets/mavis/android-kotlin/agents/api-contract-reviewer.md +2 -2
  329. package/presets/mavis/android-kotlin/agents/build-verifier.md +1 -1
  330. package/presets/mavis/android-kotlin/agents/ci-investigator.md +2 -2
  331. package/presets/mavis/android-kotlin/agents/code-reviewer.md +2 -2
  332. package/presets/mavis/android-kotlin/agents/debugger.md +2 -2
  333. package/presets/mavis/android-kotlin/agents/feature-developer.md +2 -2
  334. package/presets/mavis/android-kotlin/agents/migration-specialist.md +2 -2
  335. package/presets/mavis/android-kotlin/agents/mockup-reviewer.md +2 -2
  336. package/presets/mavis/android-kotlin/agents/openspec-author.md +2 -2
  337. package/presets/mavis/android-kotlin/agents/performance-auditor.md +2 -2
  338. package/presets/mavis/android-kotlin/agents/qa-tester.md +2 -2
  339. package/presets/mavis/android-kotlin/agents/security-reviewer.md +2 -2
  340. package/presets/mavis/android-kotlin/agents/task-analyst.md +1 -1
  341. package/presets/mavis/android-kotlin/agents/task-router.md +1 -1
  342. package/presets/mavis/android-kotlin/agents/tech-writer.md +2 -2
  343. package/presets/mavis/android-kotlin/agents/unit-test-generator.md +2 -2
  344. package/presets/mavis/android-kotlin/agents/unit-test-healer.md +2 -2
  345. package/presets/mavis/android-kotlin/agents/unit-test-planner.md +2 -2
  346. package/presets/mavis/android-kotlin/rules/agent-team-orchestrator.md +3 -1
  347. package/presets/mavis/android-kotlin/rules/code-review-mr.md +6 -6
  348. package/presets/mavis/go/adapter-map.json +1 -1
  349. package/presets/mavis/go/agents/build-verifier.md +2 -2
  350. package/presets/mavis/go/agents/code-reviewer.md +2 -2
  351. package/presets/mavis/go/agents/feature-developer.md +2 -2
  352. package/presets/mavis/go/agents/openspec-author.md +2 -2
  353. package/presets/mavis/go/agents/task-analyst.md +1 -1
  354. package/presets/mavis/go/agents/task-router.md +1 -1
  355. package/presets/mavis/go/rules/agent-team-orchestrator.md +3 -1
  356. package/presets/mavis/go/rules/code-quality-and-refactoring.md +1 -1
  357. package/presets/mavis/ios-swift/adapter-map.json +1 -1
  358. package/presets/mavis/ios-swift/agents/build-verifier.md +2 -2
  359. package/presets/mavis/ios-swift/agents/code-reviewer.md +2 -2
  360. package/presets/mavis/ios-swift/agents/feature-developer.md +2 -2
  361. package/presets/mavis/ios-swift/agents/mockup-reviewer.md +2 -2
  362. package/presets/mavis/ios-swift/agents/openspec-author.md +2 -2
  363. package/presets/mavis/ios-swift/agents/task-analyst.md +1 -1
  364. package/presets/mavis/ios-swift/agents/task-router.md +1 -1
  365. package/presets/mavis/ios-swift/rules/agent-team-orchestrator.md +3 -1
  366. package/presets/mavis/ios-swift/rules/code-quality-and-refactoring.md +1 -1
  367. package/presets/mavis/ios-swift/rules/code-review-mr.md +6 -6
  368. package/presets/mavis/ios-swift/rules/feature-delivery-workflow.md +14 -14
  369. package/presets/mavis/ios-swift/rules/reference-features.md +3 -3
  370. package/presets/mavis/java/adapter-map.json +1 -1
  371. package/presets/mavis/java/agents/build-verifier.md +2 -2
  372. package/presets/mavis/java/agents/code-reviewer.md +2 -2
  373. package/presets/mavis/java/agents/feature-developer.md +2 -2
  374. package/presets/mavis/java/agents/openspec-author.md +2 -2
  375. package/presets/mavis/java/agents/task-analyst.md +1 -1
  376. package/presets/mavis/java/agents/task-router.md +1 -1
  377. package/presets/mavis/java/rules/agent-team-orchestrator.md +3 -1
  378. package/presets/mavis/java/rules/code-quality-and-refactoring.md +1 -1
  379. package/presets/mavis/mcp-ts/adapter-map.json +1 -1
  380. package/presets/mavis/mcp-ts/agents/build-verifier.md +2 -2
  381. package/presets/mavis/mcp-ts/agents/feature-developer.md +2 -2
  382. package/presets/mavis/mcp-ts/agents/task-analyst.md +1 -1
  383. package/presets/mavis/mcp-ts/agents/task-router.md +1 -1
  384. package/presets/mavis/mcp-ts/rules/agent-team-orchestrator.md +3 -1
  385. package/presets/mavis/next/REPO_AGENTS.md +11 -1
  386. package/presets/mavis/next/adapter-map.json +192 -8
  387. package/presets/mavis/next/agents/accessibility-reviewer.md +2 -2
  388. package/presets/mavis/next/agents/api-contract-reviewer.md +2 -2
  389. package/presets/mavis/next/agents/build-verifier.md +3 -2
  390. package/presets/mavis/next/agents/ci-investigator.md +2 -2
  391. package/presets/mavis/next/agents/code-reviewer.md +3 -2
  392. package/presets/mavis/next/agents/debugger.md +2 -2
  393. package/presets/mavis/next/agents/feature-developer.md +3 -2
  394. package/presets/mavis/next/agents/migration-specialist.md +2 -2
  395. package/presets/mavis/next/agents/mockup-reviewer.md +2 -2
  396. package/presets/mavis/next/agents/openspec-author.md +4 -2
  397. package/presets/mavis/next/agents/performance-auditor.md +2 -2
  398. package/presets/mavis/next/agents/qa-tester.md +2 -2
  399. package/presets/mavis/next/agents/security-reviewer.md +2 -2
  400. package/presets/mavis/next/agents/solution-architect.md +2 -2
  401. package/presets/mavis/next/agents/task-analyst.md +8 -1
  402. package/presets/mavis/next/agents/task-router.md +2 -1
  403. package/presets/mavis/next/agents/tech-writer.md +2 -2
  404. package/presets/mavis/next/agents/unit-test-generator.md +2 -2
  405. package/presets/mavis/next/agents/unit-test-healer.md +2 -2
  406. package/presets/mavis/next/agents/unit-test-planner.md +2 -2
  407. package/presets/mavis/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +41 -8
  408. package/presets/mavis/next/ai-local/rules-library/agent-pipeline-gates.md +19 -0
  409. package/presets/mavis/next/ai-local/rules-library/analytics-events.md +18 -0
  410. package/presets/mavis/next/ai-local/rules-library/api-contract-source.md +14 -0
  411. package/presets/mavis/next/ai-local/rules-library/artifact-lifecycle.md +17 -0
  412. package/presets/mavis/next/ai-local/rules-library/code-style.md +68 -0
  413. package/presets/mavis/next/ai-local/rules-library/component-child-decomposition.md +81 -0
  414. package/presets/mavis/next/ai-local/rules-library/feature-flags-experiments.md +15 -0
  415. package/presets/mavis/next/ai-local/rules-library/mcp-required-for-ui-layout.md +1 -1
  416. package/presets/mavis/next/ai-local/rules-library/no-react-fc.md +46 -0
  417. package/presets/mavis/next/ai-local/rules-library/no-test-driven-behavior-change.md +1 -1
  418. package/presets/mavis/next/ai-local/rules-library/pwa-service-worker.md +15 -0
  419. package/presets/mavis/next/ai-local/rules-library/qa-test-cases.md +14 -0
  420. package/presets/mavis/next/ai-local/rules-library/router-pages.md +4 -2
  421. package/presets/mavis/next/ai-local/rules-library/single-source-copy-constants.md +3 -1
  422. package/presets/mavis/next/ai-local/rules-library/storybook-catalog-structure.md +62 -0
  423. package/presets/mavis/next/ai-local/rules-library/storybook-cleanup-temp-screenshots.md +40 -0
  424. package/presets/mavis/next/ai-local/rules-library/storybook-csf-authoring.md +100 -0
  425. package/presets/mavis/next/ai-local/rules-library/storybook-dev-compare-figma.md +67 -0
  426. package/presets/mavis/next/ai-local/rules-library/storybook-keep-tests-current.md +75 -0
  427. package/presets/mavis/next/ai-local/rules-library/storybook-modals.md +64 -0
  428. package/presets/mavis/next/ai-local/rules-library/storybook-no-app-node-modules.md +40 -0
  429. package/presets/mavis/next/ai-local/rules-library/storybook-ui-quality-gate.md +38 -0
  430. package/presets/mavis/next/ai-local/rules-library/task-levels.md +28 -0
  431. package/presets/mavis/next/ai-local/rules-library/ui-change-review-gate.md +14 -0
  432. package/presets/mavis/next/hooks/chain-team-phases.sh +46 -1
  433. package/presets/mavis/next/rules/agent-team-orchestrator.md +3 -1
  434. package/presets/mavis/next/rules/ai-local-overlay.md +16 -2
  435. package/presets/mavis/next/rules/code-quality-and-refactoring.md +2 -2
  436. package/presets/mavis/next/rules/code-review-mr.md +11 -7
  437. package/presets/mavis/next/rules/component-catalog-gate.md +31 -0
  438. package/presets/mavis/next/rules/design-tokens-binding.md +1 -1
  439. package/presets/mavis/next/rules/feature-delivery-workflow.md +22 -18
  440. package/presets/mavis/next/rules/forms-validation.md +26 -0
  441. package/presets/mavis/next/rules/mcp-usage.md +1 -0
  442. package/presets/mavis/next/rules/mockup-review.md +1 -1
  443. package/presets/mavis/next/rules/next-app-core.md +3 -0
  444. package/presets/mavis/next/rules/next-static-export.md +28 -0
  445. package/presets/mavis/next/rules/post-change-lint.md +4 -0
  446. package/presets/mavis/next/rules/product-specs-authoring.md +1 -0
  447. package/presets/mavis/next/rules/product-specs.md +1 -0
  448. package/presets/mavis/next/rules/react-next-anti-hallucination.md +10 -0
  449. package/presets/mavis/next/rules/react-ui.md +19 -1
  450. package/presets/mavis/next/rules/reference-features.md +7 -2
  451. package/presets/mavis/next/rules/security-next.md +12 -0
  452. package/presets/mavis/next/rules/store-rtk.md +6 -0
  453. package/presets/mavis/next/rules/tests-e2e-structure.md +2 -1
  454. package/presets/mavis/next/rules/tests-unit.md +1 -0
  455. package/presets/mavis/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
  456. package/presets/mavis/nuxt/adapter-map.json +1 -1
  457. package/presets/mavis/nuxt/agents/accessibility-reviewer.md +2 -2
  458. package/presets/mavis/nuxt/agents/api-contract-reviewer.md +2 -2
  459. package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
  460. package/presets/mavis/nuxt/agents/ci-investigator.md +2 -2
  461. package/presets/mavis/nuxt/agents/code-reviewer.md +2 -2
  462. package/presets/mavis/nuxt/agents/debugger.md +2 -2
  463. package/presets/mavis/nuxt/agents/feature-developer.md +2 -2
  464. package/presets/mavis/nuxt/agents/migration-specialist.md +2 -2
  465. package/presets/mavis/nuxt/agents/mockup-reviewer.md +2 -2
  466. package/presets/mavis/nuxt/agents/openspec-author.md +2 -2
  467. package/presets/mavis/nuxt/agents/performance-auditor.md +2 -2
  468. package/presets/mavis/nuxt/agents/qa-tester.md +2 -2
  469. package/presets/mavis/nuxt/agents/security-reviewer.md +2 -2
  470. package/presets/mavis/nuxt/agents/solution-architect.md +2 -2
  471. package/presets/mavis/nuxt/agents/task-analyst.md +1 -1
  472. package/presets/mavis/nuxt/agents/task-router.md +1 -1
  473. package/presets/mavis/nuxt/agents/tech-writer.md +2 -2
  474. package/presets/mavis/nuxt/agents/unit-test-generator.md +2 -2
  475. package/presets/mavis/nuxt/agents/unit-test-healer.md +2 -2
  476. package/presets/mavis/nuxt/agents/unit-test-planner.md +2 -2
  477. package/presets/mavis/nuxt/rules/agent-team-orchestrator.md +3 -1
  478. package/presets/mavis/nuxt/rules/code-review-mr.md +6 -6
  479. package/presets/mavis/nuxt/rules/feature-delivery-workflow.md +15 -15
  480. package/presets/mavis/nuxt/rules/reference-features.md +2 -2
  481. package/presets/mavis/nuxt/rules/tests-e2e-structure.md +1 -1
  482. package/presets/mavis/php-hexagonal/adapter-map.json +1 -1
  483. package/presets/mavis/php-hexagonal/agents/build-verifier.md +2 -2
  484. package/presets/mavis/php-hexagonal/agents/code-reviewer.md +2 -2
  485. package/presets/mavis/php-hexagonal/agents/feature-developer.md +2 -2
  486. package/presets/mavis/php-hexagonal/agents/openspec-author.md +2 -2
  487. package/presets/mavis/php-hexagonal/agents/task-analyst.md +1 -1
  488. package/presets/mavis/php-hexagonal/agents/task-router.md +1 -1
  489. package/presets/mavis/php-hexagonal/rules/agent-team-orchestrator.md +3 -1
  490. package/presets/mavis/php-hexagonal/rules/code-quality-and-refactoring.md +1 -1
  491. package/presets/mavis/php-laravel/adapter-map.json +1 -1
  492. package/presets/mavis/php-laravel/agents/build-verifier.md +2 -2
  493. package/presets/mavis/php-laravel/agents/code-reviewer.md +2 -2
  494. package/presets/mavis/php-laravel/agents/feature-developer.md +2 -2
  495. package/presets/mavis/php-laravel/agents/openspec-author.md +2 -2
  496. package/presets/mavis/php-laravel/agents/task-analyst.md +1 -1
  497. package/presets/mavis/php-laravel/agents/task-router.md +1 -1
  498. package/presets/mavis/php-laravel/rules/agent-team-orchestrator.md +3 -1
  499. package/presets/mavis/php-laravel/rules/code-quality-and-refactoring.md +1 -1
  500. package/presets/mavis/svelte/adapter-map.json +1 -1
  501. package/presets/mavis/svelte/agents/accessibility-reviewer.md +2 -2
  502. package/presets/mavis/svelte/agents/api-contract-reviewer.md +2 -2
  503. package/presets/mavis/svelte/agents/build-verifier.md +2 -2
  504. package/presets/mavis/svelte/agents/ci-investigator.md +2 -2
  505. package/presets/mavis/svelte/agents/code-reviewer.md +2 -2
  506. package/presets/mavis/svelte/agents/debugger.md +2 -2
  507. package/presets/mavis/svelte/agents/feature-developer.md +2 -2
  508. package/presets/mavis/svelte/agents/migration-specialist.md +2 -2
  509. package/presets/mavis/svelte/agents/mockup-reviewer.md +2 -2
  510. package/presets/mavis/svelte/agents/openspec-author.md +2 -2
  511. package/presets/mavis/svelte/agents/performance-auditor.md +2 -2
  512. package/presets/mavis/svelte/agents/qa-tester.md +2 -2
  513. package/presets/mavis/svelte/agents/security-reviewer.md +2 -2
  514. package/presets/mavis/svelte/agents/solution-architect.md +2 -2
  515. package/presets/mavis/svelte/agents/task-analyst.md +1 -1
  516. package/presets/mavis/svelte/agents/task-router.md +1 -1
  517. package/presets/mavis/svelte/agents/tech-writer.md +2 -2
  518. package/presets/mavis/svelte/agents/unit-test-generator.md +2 -2
  519. package/presets/mavis/svelte/agents/unit-test-healer.md +2 -2
  520. package/presets/mavis/svelte/agents/unit-test-planner.md +2 -2
  521. package/presets/mavis/svelte/rules/agent-team-orchestrator.md +3 -1
  522. package/presets/mavis/svelte/rules/code-review-mr.md +6 -6
  523. package/presets/mavis/svelte/rules/feature-delivery-workflow.md +1 -1
  524. package/presets/mavis/svelte/rules/reference-features.md +2 -2
  525. package/presets/mavis/svelte/rules/tests-e2e-structure.md +1 -1
  526. package/presets/opencode/android-kotlin/adapter-map.json +1 -1
  527. package/presets/opencode/android-kotlin/agents/accessibility-reviewer.md +2 -2
  528. package/presets/opencode/android-kotlin/agents/api-contract-reviewer.md +2 -2
  529. package/presets/opencode/android-kotlin/agents/build-verifier.md +1 -1
  530. package/presets/opencode/android-kotlin/agents/ci-investigator.md +2 -2
  531. package/presets/opencode/android-kotlin/agents/code-reviewer.md +2 -2
  532. package/presets/opencode/android-kotlin/agents/debugger.md +2 -2
  533. package/presets/opencode/android-kotlin/agents/feature-developer.md +2 -2
  534. package/presets/opencode/android-kotlin/agents/migration-specialist.md +2 -2
  535. package/presets/opencode/android-kotlin/agents/mockup-reviewer.md +2 -2
  536. package/presets/opencode/android-kotlin/agents/openspec-author.md +2 -2
  537. package/presets/opencode/android-kotlin/agents/performance-auditor.md +2 -2
  538. package/presets/opencode/android-kotlin/agents/qa-tester.md +2 -2
  539. package/presets/opencode/android-kotlin/agents/security-reviewer.md +2 -2
  540. package/presets/opencode/android-kotlin/agents/task-analyst.md +1 -1
  541. package/presets/opencode/android-kotlin/agents/task-router.md +1 -1
  542. package/presets/opencode/android-kotlin/agents/tech-writer.md +2 -2
  543. package/presets/opencode/android-kotlin/agents/unit-test-generator.md +2 -2
  544. package/presets/opencode/android-kotlin/agents/unit-test-healer.md +2 -2
  545. package/presets/opencode/android-kotlin/agents/unit-test-planner.md +2 -2
  546. package/presets/opencode/android-kotlin/rules/agent-team-orchestrator.md +3 -1
  547. package/presets/opencode/android-kotlin/rules/code-review-mr.md +6 -6
  548. package/presets/opencode/go/adapter-map.json +1 -1
  549. package/presets/opencode/go/agents/build-verifier.md +2 -2
  550. package/presets/opencode/go/agents/code-reviewer.md +2 -2
  551. package/presets/opencode/go/agents/feature-developer.md +2 -2
  552. package/presets/opencode/go/agents/openspec-author.md +2 -2
  553. package/presets/opencode/go/agents/task-analyst.md +1 -1
  554. package/presets/opencode/go/agents/task-router.md +1 -1
  555. package/presets/opencode/go/rules/agent-team-orchestrator.md +3 -1
  556. package/presets/opencode/go/rules/code-quality-and-refactoring.md +1 -1
  557. package/presets/opencode/ios-swift/adapter-map.json +1 -1
  558. package/presets/opencode/ios-swift/agents/build-verifier.md +2 -2
  559. package/presets/opencode/ios-swift/agents/code-reviewer.md +2 -2
  560. package/presets/opencode/ios-swift/agents/feature-developer.md +2 -2
  561. package/presets/opencode/ios-swift/agents/mockup-reviewer.md +2 -2
  562. package/presets/opencode/ios-swift/agents/openspec-author.md +2 -2
  563. package/presets/opencode/ios-swift/agents/task-analyst.md +1 -1
  564. package/presets/opencode/ios-swift/agents/task-router.md +1 -1
  565. package/presets/opencode/ios-swift/rules/agent-team-orchestrator.md +3 -1
  566. package/presets/opencode/ios-swift/rules/code-quality-and-refactoring.md +1 -1
  567. package/presets/opencode/ios-swift/rules/code-review-mr.md +6 -6
  568. package/presets/opencode/ios-swift/rules/feature-delivery-workflow.md +14 -14
  569. package/presets/opencode/ios-swift/rules/reference-features.md +3 -3
  570. package/presets/opencode/java/adapter-map.json +1 -1
  571. package/presets/opencode/java/agents/build-verifier.md +2 -2
  572. package/presets/opencode/java/agents/code-reviewer.md +2 -2
  573. package/presets/opencode/java/agents/feature-developer.md +2 -2
  574. package/presets/opencode/java/agents/openspec-author.md +2 -2
  575. package/presets/opencode/java/agents/task-analyst.md +1 -1
  576. package/presets/opencode/java/agents/task-router.md +1 -1
  577. package/presets/opencode/java/rules/agent-team-orchestrator.md +3 -1
  578. package/presets/opencode/java/rules/code-quality-and-refactoring.md +1 -1
  579. package/presets/opencode/mcp-ts/adapter-map.json +1 -1
  580. package/presets/opencode/mcp-ts/agents/build-verifier.md +2 -2
  581. package/presets/opencode/mcp-ts/agents/feature-developer.md +2 -2
  582. package/presets/opencode/mcp-ts/agents/task-analyst.md +1 -1
  583. package/presets/opencode/mcp-ts/agents/task-router.md +1 -1
  584. package/presets/opencode/mcp-ts/rules/agent-team-orchestrator.md +3 -1
  585. package/presets/opencode/next/REPO_AGENTS.md +11 -1
  586. package/presets/opencode/next/adapter-map.json +192 -8
  587. package/presets/opencode/next/agents/accessibility-reviewer.md +2 -2
  588. package/presets/opencode/next/agents/api-contract-reviewer.md +2 -2
  589. package/presets/opencode/next/agents/build-verifier.md +3 -2
  590. package/presets/opencode/next/agents/ci-investigator.md +2 -2
  591. package/presets/opencode/next/agents/code-reviewer.md +3 -2
  592. package/presets/opencode/next/agents/debugger.md +2 -2
  593. package/presets/opencode/next/agents/feature-developer.md +3 -2
  594. package/presets/opencode/next/agents/migration-specialist.md +2 -2
  595. package/presets/opencode/next/agents/mockup-reviewer.md +2 -2
  596. package/presets/opencode/next/agents/openspec-author.md +4 -2
  597. package/presets/opencode/next/agents/performance-auditor.md +2 -2
  598. package/presets/opencode/next/agents/qa-tester.md +2 -2
  599. package/presets/opencode/next/agents/security-reviewer.md +2 -2
  600. package/presets/opencode/next/agents/solution-architect.md +2 -2
  601. package/presets/opencode/next/agents/task-analyst.md +8 -1
  602. package/presets/opencode/next/agents/task-router.md +2 -1
  603. package/presets/opencode/next/agents/tech-writer.md +2 -2
  604. package/presets/opencode/next/agents/unit-test-generator.md +2 -2
  605. package/presets/opencode/next/agents/unit-test-healer.md +2 -2
  606. package/presets/opencode/next/agents/unit-test-planner.md +2 -2
  607. package/presets/opencode/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +41 -8
  608. package/presets/opencode/next/ai-local/rules-library/agent-pipeline-gates.md +19 -0
  609. package/presets/opencode/next/ai-local/rules-library/analytics-events.md +18 -0
  610. package/presets/opencode/next/ai-local/rules-library/api-contract-source.md +14 -0
  611. package/presets/opencode/next/ai-local/rules-library/artifact-lifecycle.md +17 -0
  612. package/presets/opencode/next/ai-local/rules-library/code-style.md +68 -0
  613. package/presets/opencode/next/ai-local/rules-library/component-child-decomposition.md +81 -0
  614. package/presets/opencode/next/ai-local/rules-library/feature-flags-experiments.md +15 -0
  615. package/presets/opencode/next/ai-local/rules-library/mcp-required-for-ui-layout.md +1 -1
  616. package/presets/opencode/next/ai-local/rules-library/no-react-fc.md +46 -0
  617. package/presets/opencode/next/ai-local/rules-library/no-test-driven-behavior-change.md +1 -1
  618. package/presets/opencode/next/ai-local/rules-library/pwa-service-worker.md +15 -0
  619. package/presets/opencode/next/ai-local/rules-library/qa-test-cases.md +14 -0
  620. package/presets/opencode/next/ai-local/rules-library/router-pages.md +4 -2
  621. package/presets/opencode/next/ai-local/rules-library/single-source-copy-constants.md +3 -1
  622. package/presets/opencode/next/ai-local/rules-library/storybook-catalog-structure.md +62 -0
  623. package/presets/opencode/next/ai-local/rules-library/storybook-cleanup-temp-screenshots.md +40 -0
  624. package/presets/opencode/next/ai-local/rules-library/storybook-csf-authoring.md +100 -0
  625. package/presets/opencode/next/ai-local/rules-library/storybook-dev-compare-figma.md +67 -0
  626. package/presets/opencode/next/ai-local/rules-library/storybook-keep-tests-current.md +75 -0
  627. package/presets/opencode/next/ai-local/rules-library/storybook-modals.md +64 -0
  628. package/presets/opencode/next/ai-local/rules-library/storybook-no-app-node-modules.md +40 -0
  629. package/presets/opencode/next/ai-local/rules-library/storybook-ui-quality-gate.md +38 -0
  630. package/presets/opencode/next/ai-local/rules-library/task-levels.md +28 -0
  631. package/presets/opencode/next/ai-local/rules-library/ui-change-review-gate.md +14 -0
  632. package/presets/opencode/next/hooks/chain-team-phases.sh +46 -1
  633. package/presets/opencode/next/rules/agent-team-orchestrator.md +3 -1
  634. package/presets/opencode/next/rules/ai-local-overlay.md +16 -2
  635. package/presets/opencode/next/rules/code-quality-and-refactoring.md +2 -2
  636. package/presets/opencode/next/rules/code-review-mr.md +11 -7
  637. package/presets/opencode/next/rules/component-catalog-gate.md +31 -0
  638. package/presets/opencode/next/rules/design-tokens-binding.md +1 -1
  639. package/presets/opencode/next/rules/feature-delivery-workflow.md +22 -18
  640. package/presets/opencode/next/rules/forms-validation.md +26 -0
  641. package/presets/opencode/next/rules/mcp-usage.md +1 -0
  642. package/presets/opencode/next/rules/mockup-review.md +1 -1
  643. package/presets/opencode/next/rules/next-app-core.md +3 -0
  644. package/presets/opencode/next/rules/next-static-export.md +28 -0
  645. package/presets/opencode/next/rules/post-change-lint.md +4 -0
  646. package/presets/opencode/next/rules/product-specs-authoring.md +1 -0
  647. package/presets/opencode/next/rules/product-specs.md +1 -0
  648. package/presets/opencode/next/rules/react-next-anti-hallucination.md +10 -0
  649. package/presets/opencode/next/rules/react-ui.md +19 -1
  650. package/presets/opencode/next/rules/reference-features.md +7 -2
  651. package/presets/opencode/next/rules/security-next.md +12 -0
  652. package/presets/opencode/next/rules/store-rtk.md +6 -0
  653. package/presets/opencode/next/rules/tests-e2e-structure.md +2 -1
  654. package/presets/opencode/next/rules/tests-unit.md +1 -0
  655. package/presets/opencode/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
  656. package/presets/opencode/nuxt/adapter-map.json +1 -1
  657. package/presets/opencode/nuxt/agents/accessibility-reviewer.md +2 -2
  658. package/presets/opencode/nuxt/agents/api-contract-reviewer.md +2 -2
  659. package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
  660. package/presets/opencode/nuxt/agents/ci-investigator.md +2 -2
  661. package/presets/opencode/nuxt/agents/code-reviewer.md +2 -2
  662. package/presets/opencode/nuxt/agents/debugger.md +2 -2
  663. package/presets/opencode/nuxt/agents/feature-developer.md +2 -2
  664. package/presets/opencode/nuxt/agents/migration-specialist.md +2 -2
  665. package/presets/opencode/nuxt/agents/mockup-reviewer.md +2 -2
  666. package/presets/opencode/nuxt/agents/openspec-author.md +2 -2
  667. package/presets/opencode/nuxt/agents/performance-auditor.md +2 -2
  668. package/presets/opencode/nuxt/agents/qa-tester.md +2 -2
  669. package/presets/opencode/nuxt/agents/security-reviewer.md +2 -2
  670. package/presets/opencode/nuxt/agents/solution-architect.md +2 -2
  671. package/presets/opencode/nuxt/agents/task-analyst.md +1 -1
  672. package/presets/opencode/nuxt/agents/task-router.md +1 -1
  673. package/presets/opencode/nuxt/agents/tech-writer.md +2 -2
  674. package/presets/opencode/nuxt/agents/unit-test-generator.md +2 -2
  675. package/presets/opencode/nuxt/agents/unit-test-healer.md +2 -2
  676. package/presets/opencode/nuxt/agents/unit-test-planner.md +2 -2
  677. package/presets/opencode/nuxt/rules/agent-team-orchestrator.md +3 -1
  678. package/presets/opencode/nuxt/rules/code-review-mr.md +6 -6
  679. package/presets/opencode/nuxt/rules/feature-delivery-workflow.md +15 -15
  680. package/presets/opencode/nuxt/rules/reference-features.md +2 -2
  681. package/presets/opencode/nuxt/rules/tests-e2e-structure.md +1 -1
  682. package/presets/opencode/php-hexagonal/adapter-map.json +1 -1
  683. package/presets/opencode/php-hexagonal/agents/build-verifier.md +2 -2
  684. package/presets/opencode/php-hexagonal/agents/code-reviewer.md +2 -2
  685. package/presets/opencode/php-hexagonal/agents/feature-developer.md +2 -2
  686. package/presets/opencode/php-hexagonal/agents/openspec-author.md +2 -2
  687. package/presets/opencode/php-hexagonal/agents/task-analyst.md +1 -1
  688. package/presets/opencode/php-hexagonal/agents/task-router.md +1 -1
  689. package/presets/opencode/php-hexagonal/rules/agent-team-orchestrator.md +3 -1
  690. package/presets/opencode/php-hexagonal/rules/code-quality-and-refactoring.md +1 -1
  691. package/presets/opencode/php-laravel/adapter-map.json +1 -1
  692. package/presets/opencode/php-laravel/agents/build-verifier.md +2 -2
  693. package/presets/opencode/php-laravel/agents/code-reviewer.md +2 -2
  694. package/presets/opencode/php-laravel/agents/feature-developer.md +2 -2
  695. package/presets/opencode/php-laravel/agents/openspec-author.md +2 -2
  696. package/presets/opencode/php-laravel/agents/task-analyst.md +1 -1
  697. package/presets/opencode/php-laravel/agents/task-router.md +1 -1
  698. package/presets/opencode/php-laravel/rules/agent-team-orchestrator.md +3 -1
  699. package/presets/opencode/php-laravel/rules/code-quality-and-refactoring.md +1 -1
  700. package/presets/opencode/svelte/adapter-map.json +1 -1
  701. package/presets/opencode/svelte/agents/accessibility-reviewer.md +2 -2
  702. package/presets/opencode/svelte/agents/api-contract-reviewer.md +2 -2
  703. package/presets/opencode/svelte/agents/build-verifier.md +2 -2
  704. package/presets/opencode/svelte/agents/ci-investigator.md +2 -2
  705. package/presets/opencode/svelte/agents/code-reviewer.md +2 -2
  706. package/presets/opencode/svelte/agents/debugger.md +2 -2
  707. package/presets/opencode/svelte/agents/feature-developer.md +2 -2
  708. package/presets/opencode/svelte/agents/migration-specialist.md +2 -2
  709. package/presets/opencode/svelte/agents/mockup-reviewer.md +2 -2
  710. package/presets/opencode/svelte/agents/openspec-author.md +2 -2
  711. package/presets/opencode/svelte/agents/performance-auditor.md +2 -2
  712. package/presets/opencode/svelte/agents/qa-tester.md +2 -2
  713. package/presets/opencode/svelte/agents/security-reviewer.md +2 -2
  714. package/presets/opencode/svelte/agents/solution-architect.md +2 -2
  715. package/presets/opencode/svelte/agents/task-analyst.md +1 -1
  716. package/presets/opencode/svelte/agents/task-router.md +1 -1
  717. package/presets/opencode/svelte/agents/tech-writer.md +2 -2
  718. package/presets/opencode/svelte/agents/unit-test-generator.md +2 -2
  719. package/presets/opencode/svelte/agents/unit-test-healer.md +2 -2
  720. package/presets/opencode/svelte/agents/unit-test-planner.md +2 -2
  721. package/presets/opencode/svelte/rules/agent-team-orchestrator.md +3 -1
  722. package/presets/opencode/svelte/rules/code-review-mr.md +6 -6
  723. package/presets/opencode/svelte/rules/feature-delivery-workflow.md +1 -1
  724. package/presets/opencode/svelte/rules/reference-features.md +2 -2
  725. package/presets/opencode/svelte/rules/tests-e2e-structure.md +1 -1
  726. package/scripts/check-generated-drift.mjs +42 -2
  727. package/scripts/check-local-overlay.sh +39 -0
  728. package/scripts/fixtures/cli-golden/claude/next.json +44 -41
  729. package/scripts/fixtures/cli-golden/cursor/next.json +69 -46
  730. package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +21 -21
  731. package/scripts/fixtures/cli-golden/mavis/go.json +8 -8
  732. package/scripts/fixtures/cli-golden/mavis/ios-swift.json +12 -12
  733. package/scripts/fixtures/cli-golden/mavis/java.json +8 -8
  734. package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +5 -5
  735. package/scripts/fixtures/cli-golden/mavis/next.json +70 -47
  736. package/scripts/fixtures/cli-golden/mavis/nuxt.json +25 -25
  737. package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +8 -8
  738. package/scripts/fixtures/cli-golden/mavis/php-laravel.json +8 -8
  739. package/scripts/fixtures/cli-golden/mavis/svelte.json +25 -25
  740. package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +21 -21
  741. package/scripts/fixtures/cli-golden/opencode/go.json +8 -8
  742. package/scripts/fixtures/cli-golden/opencode/ios-swift.json +12 -12
  743. package/scripts/fixtures/cli-golden/opencode/java.json +8 -8
  744. package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +5 -5
  745. package/scripts/fixtures/cli-golden/opencode/next.json +70 -47
  746. package/scripts/fixtures/cli-golden/opencode/nuxt.json +25 -25
  747. package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +8 -8
  748. package/scripts/fixtures/cli-golden/opencode/php-laravel.json +8 -8
  749. package/scripts/fixtures/cli-golden/opencode/svelte.json +25 -25
  750. package/scripts/lib/generate-adapter-common.mjs +17 -0
  751. package/scripts/lib/generate-mavis-adapter.mjs +9 -3
  752. package/scripts/lib/generate-opencode-adapter.mjs +9 -3
@@ -0,0 +1,19 @@
1
+ glob: always
2
+
3
+ ## Body
4
+
5
+ # Agent pipeline gates (local overlay)
6
+
7
+ These gates are **agent-enforced** (local rules; the preset hook/router is not edited). Treat them as MUST, not advisory. Acknowledge: `Using .ai.local: agent-pipeline-gates(, …)*`.
8
+
9
+ ## Gates
10
+
11
+ - **UI scope** (`app/src/ui/**`): the pipeline MUST include `mockup-reviewer` — not only when a `figma.com` URL is present. A terminal `mockup-review.md` with verdict `PASS`/`PASS_WITH_NOTES` is required before the task is complete. Missing artifact = **blocked**, not a warning. (See `ui-change-review-gate`.)
12
+ - **DTO/type scope**: `api-contract-reviewer` is blocking per `api-contract-source`.
13
+ - **build-verifier**: when `storybook/**` or `app/src/ui/**` changed, run targeted storybook tests and require green **without** `--update`.
14
+ - **code-reviewer**: (a) a behaviour change under `app/src/**` without a matching `docs/qa/**` or `*.cases.md` update → WARN (REQUEST_CHANGES when AC names the case); (b) a production behaviour change made to satisfy a test → **blocker**; (c) every review artifact states the reviewed revision (sha or `working tree @ <date>`).
15
+ - **single writer**: do not rewrite a block shipped the same day without a new review artifact and an owner.
16
+
17
+ ## Why local, not preset
18
+
19
+ The mechanical hook/router gate would live in the preset-managed hook + router, which `init` overwrites. Per project decision, all gate changes stay in `.ai.local` (agent-enforced).
@@ -0,0 +1,18 @@
1
+ globs: app/src/analytics/**/*.{ts,tsx},app/src/ui/**/*.{ts,tsx}
2
+
3
+ ## Body
4
+
5
+ # Analytics / telemetry events (team conventions template)
6
+
7
+ When emitting or changing an analytics/telemetry event, acknowledge: `Using .ai.local: analytics-events(, …)*`.
8
+
9
+ Events go through one owned module per domain — not scattered `pushEvent` / `track` calls in components.
10
+
11
+ ## Rules
12
+
13
+ - Event modules live under `app/src/analytics/events/<domain>/` and expose `logX(...)` functions wrapping the analytics client (`pushEvent` or repo equivalent); payload types live in a sibling `*.types.ts`.
14
+ - Components emit events via a hook or store slice (`_complexSlices/Analytics` analog), not by importing the analytics client directly.
15
+ - Respect the repo's gating flag (e.g. `NEXT_PUBLIC_*_ANALYTICS_DISABLED`) and the init in the app root; do not initialize adapters twice.
16
+ - Deduplicate repeated events with the repo's cache idiom when it exists.
17
+ - **Never** put PD, medical/record text, raw auth tokens, or full URL search params into a payload. See the security rule's compliance section.
18
+ - Analytics is a side effect: cross-slice event emission belongs in listener middleware, not in a reducer (see `store-rtk`).
@@ -0,0 +1,14 @@
1
+ globs: app/src/api/**/*.{ts,tsx},app/src/types/**/*.{ts,tsx},app/src/mocks/**/*.{ts,tsx}
2
+
3
+ ## Body
4
+
5
+ # API contract source is mandatory (no invented DTOs)
6
+
7
+ When changing DTOs, response types, mappers, or mocks, acknowledge: `Using .ai.local: api-contract-source(, …)*`.
8
+
9
+ ## Rules
10
+
11
+ - Any new/changed DTO, response type, response mapper, or shared type **names its contract source** in the task brief: an OpenAPI path + schema (or the project's equivalent contract), or an explicit `no in-repo contract — capture is provisional` risk.
12
+ - The API-contract reviewer is **blocking** when the contract source is a capture and the DTO is new/changed → emit `changes_requested`, not advisory notes.
13
+ - Map only fields present in the contract source. Do not add a field that exists only in mockup copy or a guessed payload.
14
+ - Watch nullability / object-vs-scalar: verify against the contract schema, not a single capture (a capture cannot show absent/empty cases).
@@ -0,0 +1,17 @@
1
+ glob: always
2
+
3
+ ## Body
4
+
5
+ # Agent artifact lifecycle
6
+
7
+ When writing team artifacts, acknowledge: `Using .ai.local: artifact-lifecycle(, …)*`.
8
+
9
+ Task-folder artifacts (`.ai.local/team/tasks/<slug>/**`) are an **audit trail**, not a second source of truth. Durable knowledge (decisions, contracts, product behaviour) belongs in `docs/specs/**` or `openspec/**`.
10
+
11
+ ## Rules
12
+
13
+ - `.ai.local/team/tasks/**` stays **tracked in git** by default; do not add a gitignore entry. Committing task artifacts is the human's choice at the commit step.
14
+ - Keep artifacts **small**: no host paths (see `agent-artifacts-no-local-paths`), no raw diff dumps, no duplicate copies (`* (1).*`), no screenshots beyond intentional baselines.
15
+ - **Never bulk-purge** committed artifacts to "clean up". Deleting does not remove git history. Prevention only.
16
+ - Durable output (approved spec, ADR, contract, QA cases) is copied into `docs/specs/**` / `openspec/**`; the task folder is not the SoT.
17
+ - Follow `commit-hygiene`: artifact/doc churn does not share a commit with `app/src/**`.
@@ -0,0 +1,68 @@
1
+ globs: app/src/**/*.{ts,tsx},app/__tests__/**/*.{ts,tsx}
2
+
3
+ ## Body
4
+
5
+ # Code style (team conventions template)
6
+
7
+ When editing TS/TSX, acknowledge: `Using .ai.local: code-style(, …)*`.
8
+
9
+ The preset is generic. This repo has its own naming and file shapes — **open the nearest analog in the same layer and mirror it**. Where a preset example differs, this rule wins.
10
+
11
+ ## Reference analogs (mirror these)
12
+
13
+ | Layer | Analog |
14
+ |-------|--------|
15
+ | UI page | `app/src/ui/pages/<Domain>/` |
16
+ | UI component | `app/src/ui/components/<Name>/` |
17
+ | Store slice | `app/src/store/slices/<Domain>/` |
18
+ | API service | `app/src/api/services/<Service>/<Domain>/` |
19
+ | Types | `app/src/types/<Entity>.types.ts` |
20
+ | Unit tests | `app/__tests__/unit/<mirrored path>/` |
21
+
22
+ ## Naming
23
+
24
+ - Domain types — `T` prefix: `TAnalysis`, `TUserProfile`. Transport/response types — `T…Response` (`TAnalysisResponse`).
25
+ - Interfaces / props — `I` prefix: `interface IProps`, `IRootState`.
26
+ - DTO → domain mappers — verb `format`: `formatAnalysis`, `formatBiomarkers`. Not `map…`.
27
+ - Endpoint constants — `SCREAMING_SNAKE` + `_ENDPOINT` (`DOMAIN_ANALYSIS_ENDPOINT`); dynamic — `prepare…Endpoint`.
28
+ - No `FC` / `React.FC` (see `no-react-fc`).
29
+
30
+ ## Components
31
+
32
+ - `export const X = ({ ... }: IProps) => (...)`; no `FC`.
33
+ - Styles: a sibling styles module; root export `Root`.
34
+ - Local children in `./components/<Name>/`: `Name.tsx` + `styles.ts` (or `Name.styles.ts` when the parent already has a `styles.ts`) + optional `Name.data.ts` / `Name.utils.ts` / `Name.hooks.ts` + `index.ts`. **Strictly forbidden:** declaring a subcomponent in the same file as the parent — see `component-child-decomposition`.
35
+ - Layout sizes of one component (skeleton `height` / `width` / `maxWidth`, one-off `px`) stay as literals in the JSX prop or in `styles.ts`. Do not hoist them into `SCREAMING_SNAKE` constants or a `*.data.ts`.
36
+ - `*.data.ts` is for copy, labels, lookup maps, and values imported by another module. A file that only names pixels is overhead — delete it and inline.
37
+
38
+ ## API layer (`app/src/api/services/<Service>/<Domain>/`)
39
+
40
+ - `<Domain>.apiMethods.ts` — `export const XxxApiMethods = { fetchX, createX, saveX, deleteX: async (...) => { … } }`.
41
+ - `<Domain>.endpoints.ts` — path constants.
42
+ - `<Domain>.responseTypes.ts` — `T…Response` (DTO).
43
+ - `<Domain>.responseMappers.ts` — `formatXxx(data: T…Response): T…`.
44
+ - `index.ts` — re-export the four above.
45
+ - Cross-entity mappers — `_shared/<Entity>/<Entity>.responseMappers.ts`.
46
+ - Outside the layer, import only from the `@/api` barrel.
47
+
48
+ ## Store (`app/src/store/slices/<Domain>/`)
49
+
50
+ - Folder: `<Domain>.ts` (slice + thunks + selectors), `types.ts`, `utils.ts`, `index.ts` barrel.
51
+ - Slice named `xxxSlice`, re-exported via the barrel; not a default export.
52
+ - Thunks: `fetchX` / `createX` / `saveX` / `deleteX`; error typing via `rejectWithValue`.
53
+ - Selectors: curried `xxxSelector = (args) => (state: IRootState) => …`; memoize derived values with `createSelector`.
54
+ - Local `interface IRootState { <sliceName>: TState }` in the slice file; state shape typed in `types.ts`.
55
+ - Errors: follow the existing slice pattern; do not rewrite the error model in a point task.
56
+ - Domain comments — in the project language.
57
+
58
+ ## Types (`app/src/types`)
59
+
60
+ - Project-language JSDoc; `[computed]` prefix on frontend-derived fields; `Xxx.types.ts` or a folder + barrel `index.ts`.
61
+
62
+ ## Tests
63
+
64
+ - Mirrored path `app/__tests__/unit/<rel>`, `*.spec.ts(x)`; project-language `describe` / `it`.
65
+
66
+ ## Format
67
+
68
+ - Prettier: no semicolons, single quotes, trailing commas, width 100. The linter enforces it — run the post-change gate.
@@ -0,0 +1,81 @@
1
+ globs: app/src/**/*.{ts,tsx},storybook/stories/**/*.stories.tsx
2
+
3
+ ## Body
4
+
5
+ # Component child decomposition (strict)
6
+
7
+ When this rule applies, acknowledge: `Using .ai.local: component-child-decomposition(, …)*`.
8
+
9
+ A subcomponent of a parent UI component **must** live in a dedicated `components/<Name>/` subfolder of the parent. Defining a subcomponent in the same file as the parent is a **forbidden** shortcut — it breaks the convention used by every other modal/card in the repo, makes the parent file mix orchestration with detail rendering, and prevents re-use of the child from sibling features.
10
+
11
+ This is enforced by the file structure visible in the working tree. A reviewer or `code-reviewer` agent who finds a subcomponent declared alongside the parent's main export must request changes with reference to this rule.
12
+
13
+ ## File structure
14
+
15
+ ```
16
+ Parent/
17
+ ├── Parent.tsx ← public export, thin composition only
18
+ ├── Parent.styles.ts ← only styles used directly by Parent (Root, Title, layout shell, list)
19
+ ├── index.ts ← re-export of Parent
20
+ └── components/
21
+ └── Child/
22
+ ├── Child.tsx ← public export of the subcomponent
23
+ ├── Child.styles.ts ← styles specific to the child (its own Card, Icon, Title, etc.)
24
+ ├── Child.utils.ts ← OPTIONAL: pure helpers
25
+ ├── Child.data.ts ← OPTIONAL: lookup maps / constants
26
+ └── index.ts ← re-export of Child
27
+ ```
28
+
29
+ - Child file name: `Child.tsx` (PascalCase, same as folder name). Styles: `Child.styles.ts` (prefixed with child name) to avoid collision when the parent also has a `styles.ts`.
30
+ - Parent uses `import { Child } from './components/Child'` (or `./components/Child/index`); never imports from `../Child.tsx` or `../../Child`.
31
+ - The child does not import from the parent's `styles.ts`. If both share a token, they each import it from the design-token source directly.
32
+ - `Child.utils.ts` / `Child.data.ts` are optional and only added when there are real helpers/maps. Do not create empty files.
33
+
34
+ ## Subcomponents
35
+
36
+ A **subcomponent** is any JSX `<X .../>` (a) the parent repeats, (b) the parent passes resolved props to (instead of letting the child compute them), or (c) that owns its own layout/typography/visual contract. Inline JSX like `<s.Icon><img/></s.Icon>` is a styled element, not a subcomponent.
37
+
38
+ When the parent has more than one or two branches, several repeated JSX subtrees, or any non-trivial rendering block, that block **must** be extracted to a subcomponent in `./components/<Name>/`. The parent then becomes a thin switch — it owns the wiring, the wrapper, and the iteration that maps data into `<Child>` instances.
39
+
40
+ ## Forbidden
41
+
42
+ ```tsx
43
+ // ❌ Parent file with a co-located subcomponent
44
+ export const ItemsModal = () => (
45
+ <Modal>
46
+ {items.map((item) => (
47
+ <s.Card key={item.id}>
48
+ <s.Icon><s.IconImage src={...} /></s.Icon>
49
+ <s.Body><s.Title>{item.title}</s.Title>...</s.Body>
50
+ </s.Card>
51
+ ))}
52
+ </Modal>
53
+ )
54
+
55
+ // Declared in the same file — file structure is wrong
56
+ const CardItem = ({ item }) => <s.Card>...</s.Card>
57
+ ```
58
+
59
+ ## Correct
60
+
61
+ ```tsx
62
+ // ItemsModal/ItemsModal.tsx
63
+ import { CardItem } from './components/CardItem'
64
+
65
+ export const ItemsModal = () => (
66
+ <Modal>{items.map((i) => <CardItem key={i.id} item={i} />)}</Modal>
67
+ )
68
+
69
+ // ItemsModal/components/CardItem/CardItem.tsx
70
+ import * as s from './CardItem.styles'
71
+
72
+ export const CardItem = ({ item }: { item: TItem }) => <s.Card>...</s.Card>
73
+ ```
74
+
75
+ ## Why the rule is strict, not a preference
76
+
77
+ - **Diffability:** a change to the child shows up in `components/Child/Child.tsx`, not as noise in the parent file.
78
+ - **Reviewability:** the parent file stays short (~50 lines) and the reviewer reads orchestration without scrolling past detail rendering.
79
+ - **Re-use:** the child can be imported by other stories, modals, or pages without copy-paste.
80
+ - **Tests:** a child-only story (visual regression of the card alone) is possible without re-rendering the whole modal.
81
+ - **Lint / IDE:** per-folder patterns scale better than 200-line parent files mixing styles + helpers + subcomponents + data.
@@ -0,0 +1,15 @@
1
+ globs: app/src/constants/**/*.{ts,tsx},app/src/ui/**/*.{ts,tsx}
2
+
3
+ ## Body
4
+
5
+ # Feature flags & experiments (team conventions template)
6
+
7
+ When gating UI/behaviour by a flag or A/B experiment, acknowledge: `Using .ai.local: feature-flags-experiments(, …)*`.
8
+
9
+ ## Rules
10
+
11
+ - Local flags live in one module (e.g. `app/src/constants/localFeatureFlags.ts`) as `isFeature…Enabled`; remote experiments come from the experiments client (`@sh/experiments` analog).
12
+ - Read a flag through the repo's access path — a store slice / provider / singleton mounted at the app root — not by scattering `process.env` checks or ad-hoc constants.
13
+ - Experiment-gated routes are registered in the repo's allowlist (e.g. `EXPERIMENT_PAGES`); do not invent a parallel mechanism.
14
+ - Experimental / legacy page variants are **non-canonical** — do not copy them as the reference for new work, and do not delete a flag without the paired spec / story / e2e sync (flag removal is a cross-cutting change).
15
+ - A flag that flips layout or visual identity is still one purpose per component after the flag is removed — do not bake the flag into a universal branchy component (`react-ui`).
@@ -1,4 +1,4 @@
1
- globs: src/ui/**
1
+ globs: app/src/ui/**
2
2
 
3
3
  ## Body
4
4
 
@@ -0,0 +1,46 @@
1
+ globs: **/*.{tsx,ts}
2
+
3
+ ## Body
4
+
5
+ # No `FC` / `React.FC`
6
+
7
+ When this rule applies, acknowledge: `Using .ai.local: no-react-fc(, …)*`.
8
+
9
+ Do **not** type React components as `FC`, `React.FC`, `FunctionComponent`, or `React.FunctionComponent`.
10
+
11
+ `FC` adds implicit `children`, is outdated for React 18+, and the rest of a typical repo already uses a plain arrow + props type.
12
+
13
+ ## Required shape
14
+
15
+ ```tsx
16
+ interface IProps {
17
+ title: string
18
+ }
19
+
20
+ export const Example = ({ title }: IProps) => {
21
+ return <s.Root>{title}</s.Root>
22
+ }
23
+ ```
24
+
25
+ If there are no props:
26
+
27
+ ```tsx
28
+ export const Example = () => <s.Root />
29
+ ```
30
+
31
+ ## Forbidden
32
+
33
+ ```tsx
34
+ import { type FC } from 'react'
35
+
36
+ export const Example: FC<IProps> = ({ title }) => { /* … */ }
37
+ ```
38
+
39
+ ```tsx
40
+ export const Example: React.FC<IProps> = ({ title }) => { /* … */ }
41
+ ```
42
+
43
+ ## Notes
44
+
45
+ - Type props with `interface IProps` / `type TProps` (match the neighboring file).
46
+ - If the component accepts `children`, declare `children` explicitly on the props type — do not get it from `FC`.
@@ -1,4 +1,4 @@
1
- globs: src/**/*.{ts,tsx}
1
+ globs: app/src/**/*.{ts,tsx},app/__tests__/**/*.{ts,tsx},storybook/**/*.stories.tsx
2
2
 
3
3
  ## Body
4
4
 
@@ -0,0 +1,15 @@
1
+ globs: app/src/lib/pwa/**/*.{ts,tsx},app/public/**
2
+
3
+ ## Body
4
+
5
+ # PWA / service worker (team conventions template)
6
+
7
+ When touching the service worker, manifest, or offline behaviour, acknowledge: `Using .ai.local: pwa-service-worker(, …)*`.
8
+
9
+ ## Rules
10
+
11
+ - Service worker and web manifest are wired through the app root / document head via one init hook; do not register a second service worker or add a competing `<link rel="manifest">`.
12
+ - Service-worker scope and asset paths are derived from `basePath` / `assetPrefix` — a hardcoded `/` breaks scoped deployments.
13
+ - A dev-only `Service-Worker-Allowed` header (or equivalent) is a dev concern; do not assume it exists in production.
14
+ - Do not introduce `next-pwa`-style tooling unless the repo already uses it; follow the existing registration path.
15
+ - Offline/caching changes are behaviour changes: update the spec / e2e / QA case that covers offline flows.
@@ -0,0 +1,14 @@
1
+ globs: docs/qa/**/*.md,app/__tests__/e2e/**/*.cases.md
2
+
3
+ ## Body
4
+
5
+ # Consolidated QA test cases (`docs/qa/**`)
6
+
7
+ When editing QA case docs or the matching e2e plan, acknowledge: `Using .ai.local: qa-test-cases(, …)*`.
8
+
9
+ ## Rules
10
+
11
+ - A consolidated QA doc (`docs/qa/<area>-test-cases.md`) is a **derived view** of the spec + `*.cases.md` — not a second source of truth. Cite the source (spec path / scenario id) per case.
12
+ - Keep the route table, PREFIX map, and grouping in sync with the executable plan; mark each case `as-is` (characterization) or `target` (planned).
13
+ - On a behaviour change, update the QA doc in the same changeset as the `*.cases.md` / spec.
14
+ - Do not weaken or delete cases to match an unintended behaviour change — fix the implementation or file a task (`no-test-driven-behavior-change`).
@@ -1,5 +1,5 @@
1
1
  override: kill next-app-router
2
- globs: src/pages/**/*.{ts,tsx},src/ui/**/*.{ts,tsx},next.config.ts
2
+ globs: app/src/pages/**/*.{ts,tsx},app/src/ui/**/*.{ts,tsx},app/next.config.ts
3
3
 
4
4
  ## Body
5
5
 
@@ -15,9 +15,11 @@ This rule drops the preset's `next-app-router` rule from context for repos using
15
15
  - Domain UI lives in `src/ui/pages/<Name>Page`; route files do not contain layout/business logic.
16
16
  - Navigation: `next/router` (`useRouter`) and `next/link`. **Never** `next/navigation`.
17
17
  - `_app.tsx` / `_document.tsx` stay in `src/pages/`.
18
+ - Dynamic routes: the dynamic segment is **last**, `[id].tsx` → `[id].html`; do **not** add catch-all `[...slug]` routes. Read a dynamic param only after the router is ready (`useRouterReady()` analog) and parse it with the repo's slug helper; push `/404` when it is invalid.
18
19
 
19
20
  ## Forbidden
20
21
 
21
22
  - Creating App Router files (`src/app/**`, `page.tsx`, `layout.tsx`, `loading.tsx`, `error.tsx`, `route.ts`).
22
23
  - Importing `next/navigation` or App Router server APIs (`cookies()`, `headers()`, `redirect()`).
23
- - `getServerSideProps` / `getStaticProps` — the app is a client-rendered static export; data goes through the store/`@/api`.
24
+ - `getServerSideProps` / `getStaticProps` — the app is a client-rendered static export; data goes through the store/`@/api`.
25
+ - Reading `router.query` before `router.isReady` (cold-load crash); non-integer / non-final dynamic segments (nginx serves only integer slugs at the end).
@@ -1,4 +1,4 @@
1
- globs: src/**/*.{ts,tsx}
1
+ globs: app/src/**/*.{ts,tsx}
2
2
 
3
3
  ## Body
4
4
 
@@ -11,6 +11,8 @@ Copy (button labels, headings, alt text, aria-labels), constants, enums, and rou
11
11
  ## Rules
12
12
 
13
13
  - User-visible copy: inline unless the same string is used in ≥2 distinct places OR is consumed by tests/stories that need a shared reference. Multi-instance refactors belong to a dedicated task.
14
+ - A new inline data table (dictionary/map) larger than ~50 entries requires a cited source (spec, mockup node, or contract) in the task artifact — otherwise it is invented content.
15
+ - Copy changes cite a spec or mockup node.
14
16
  - Numeric / pixel / token aliases: inline directly; do not re-wrap into a named constant when used exactly once in the same file.
15
17
  - Counters and derived single-use values: inline (`array.length`, computed expressions).
16
18
  - Layout sizes of one component (skeleton `height`/`width`/`maxWidth`, one-off `px`) stay as literals in the JSX prop or in `styles.ts`. Do not hoist them into named constants or a `*.data.ts`, even when the same number is repeated in that component's JSX and its styles.
@@ -0,0 +1,62 @@
1
+ globs: storybook/stories/**/*.stories.tsx, storybook/stories/**/README.md, storybook/stories/**/*
2
+
3
+ ## Body
4
+
5
+ # Storybook catalog structure
6
+
7
+ When editing Storybook catalog files, acknowledge: `Using .ai.local: storybook-catalog-structure(, …)*`.
8
+
9
+ ## Before you add a story
10
+
11
+ - UI develop/refactor starts with **`storybook-ui-quality-gate`** (preview vs mockup + story tests) — stories are not post-hoc docs.
12
+ - Read the folder README: `storybook/stories/pages/README.md`, `components/README.md`, `modals/README.md`.
13
+ - Copy the nearest analog file; do not invent a new sidebar branch.
14
+ - After add/edit (and after UI refactors that stories cover): **`storybook-keep-tests-current`** — tests + baselines green.
15
+
16
+ ## Sidebar roots (fixed)
17
+
18
+ | Title pattern | Path | Notes |
19
+ |---------------|------|-------|
20
+ | `UI/Pages/<ShortName>` | `pages/<Page>/<Page>.stories.tsx` | Full page; `layout: 'fullscreen'`, `defaultViewport: 'desktop'`. |
21
+ | `UI/Pages/<Page>/Components/<Block>` | `pages/<Page>/Components/<Block>.stories.tsx` | **Required** for page-level blocks. |
22
+ | `UI/Pages/<Page>/Cards/<Card>` | `pages/<Page>/Cards/` | List cards only. |
23
+ | `UI/Components/<Name>` | `components/` | Reusable `app/src/ui/components/**`. |
24
+ | `UI/Modals/<Domain>/<Modal>` | `modals/<Domain>/` | Isolated dialogs only. |
25
+
26
+ ## Page Components section (required)
27
+
28
+ When a page has distinct blocks (summary, side panel, files, skeletons, etc.):
29
+
30
+ - Add `storybook/stories/pages/<Page>/Components/<BlockName>.stories.tsx`.
31
+ - Title: `UI/Pages/<ShortName>/Components/<BlockName>`.
32
+ - Cover **every code-implemented visual state** (loading skeleton, empty, error, feature-flag variants).
33
+ - Document in page `README.md`: block × state → export name → fixture/mock id.
34
+ - Nested modals inside blocks: story the **block** or use existing `UI/Modals/*` — not a separate modal story.
35
+ - Pure skeleton/presentational blocks: single default export is OK.
36
+ - White-card blocks: apply the grey-canvas decorator so the card edge is visible. Skip grey/primary/secondary roots (see `storybook-csf-authoring`).
37
+ - If the page CSF grows: extract a block into `Components/` — **never** `PageName.p1.stories.tsx`.
38
+
39
+ ## Placement rules
40
+
41
+ - Reusable across pages → `storybook/stories/components/` (see components README out-of-scope table).
42
+ - Modal/dialog → `storybook/stories/modals/` only.
43
+ - Page-only block → page `Components/` (not `UI/Components/`).
44
+ - List cards → `pages/<Page>/Cards/` (not modal wrappers).
45
+
46
+ ## README requirement
47
+
48
+ Each page folder keeps `README.md`: mock id map, state vocabulary, vitest validation path, Components catalog when present.
49
+
50
+ Example validation (from `storybook/`):
51
+
52
+ ```bash
53
+ yarn vitest run --project=storybook stories/pages/<Page>/Components/<Block>.stories.tsx
54
+ ```
55
+
56
+ ## Forbidden
57
+
58
+ - Duplicating a modal under page/Components when `UI/Modals/...` already exists.
59
+ - New `*Modal*` titles under `UI/Components/`.
60
+ - New flat page-block files at page root — use `Components/`.
61
+ - **No** `*.p1.stories.tsx`, `*.p2.stories.tsx`, or any `*.pN.stories.tsx` — one CSF per `title`.
62
+ - **No** viewport-duplicate stories: `Mobile*`, `Mobile_*`, `defaultViewport: 'mobile*'`, `isMobile` preloads.
@@ -0,0 +1,40 @@
1
+ glob: always
2
+
3
+ ## Body
4
+
5
+ # Storybook temp screenshot cleanup
6
+
7
+ When this rule applies, acknowledge: `Using .ai.local: storybook-cleanup-temp-screenshots(, …)*`.
8
+
9
+ ## When (mandatory)
10
+
11
+ Before declaring Storybook or UI work complete, and after any browser / Figma / Playwright / Storybook MCP screenshot: delete files **this turn created** that are not product assets or vis baselines.
12
+
13
+ Leaving dump PNGs in the repo is incomplete work — same severity as red Storybook tests.
14
+
15
+ ## Delete
16
+
17
+ Typical dumps (names vary):
18
+
19
+ - Repo-root images: `*-after.png`, `*-before.png`, `positive-story.png`, and any other untracked `*.png` / `*.jpg` / `*.webp` at the workspace root that you created.
20
+ - `/tmp/**` review dumps.
21
+ - Workspace copies of Figma screenshots, browser screenshots, or Playwright traces/screenshots written **into the git worktree** (not CI artifacts).
22
+
23
+ ## Keep
24
+
25
+ - `storybook/__vis__/<platform>/__baselines__` — CI vis; refresh via `--update`, never `rm` to hide drift.
26
+ - `storybook/__vis__/local` — gitignored local baselines; still refresh, do not wipe.
27
+ - Product assets: `app/public/**`, component `images/`, committed mocks.
28
+ - Files the user explicitly asked to keep.
29
+
30
+ ## How
31
+
32
+ 1. `git status --short` (and `ls` repo root) for untracked/modified images from this turn.
33
+ 2. Delete **only those paths**. No `git clean -fd`, no `git checkout` of vis baselines.
34
+ 3. Confirm gone. Do not `git add` temp screenshots.
35
+
36
+ ## Forbidden
37
+
38
+ - Committing verification / MCP / Playwright dump images.
39
+ - Leaving repo-root PNGs "for the user to review" unless they asked.
40
+ - Deleting vis baselines instead of `--update`.
@@ -0,0 +1,100 @@
1
+ globs: storybook/**/*.stories.tsx, storybook/**/*.fixtures.ts, storybook/**/*.fixtures.data.ts, storybook/**/*.stories.meta.ts
2
+
3
+ ## Body
4
+
5
+ # Storybook CSF authoring
6
+
7
+ When editing CSF/fixtures, acknowledge: `Using .ai.local: storybook-csf-authoring(, …)*`.
8
+
9
+ ## CSF3 skeleton
10
+
11
+ ```tsx
12
+ import type { Meta, StoryObj } from '@storybook/react';
13
+
14
+ const meta = {
15
+ title: 'UI/Pages/ExamplePage',
16
+ component: ExamplePage,
17
+ tags: ['test', 'snapshot'],
18
+ decorators: [withStoreProvider({ preloadedState })],
19
+ parameters: { layout: 'fullscreen', viewport: { defaultViewport: 'desktop' } },
20
+ } satisfies Meta<typeof ExamplePage>;
21
+
22
+ export default meta;
23
+ type TStory = StoryObj<typeof meta>;
24
+
25
+ /** S01 — default loaded state */
26
+ export const Default: TStory = { /* … */ };
27
+ ```
28
+
29
+ ## Imports
30
+
31
+ - Production: `@/ui/...`, `@/store/...`, `@/types/...`.
32
+ - Storybook: the project's shared decorators/helpers (`withStoreProvider`, `withGreyCanvas`, `withStorybookSearchParams`, `withDocumentReferrer`), the shared MSW helper, and the test utilities (`expect`, `within`, `userEvent`, `fn`, `waitFor`).
33
+ - Play helpers: co-locate in `*.stories.meta.ts` or `*.fixtures.ts` — do not duplicate selectors.
34
+
35
+ ## Data & decorators
36
+
37
+ - MSW: `parameters: { ...storyMsw(handlers) }` from the shared MSW helper.
38
+ - Store: `decorators: [withStoreProvider({ preloadedState })]` — use fixture builders.
39
+ - Search params: `withStorybookSearchParams({ key: 'value' })`.
40
+ - Browser globals (render-time): `withDocumentReferrer('')` — `document.referrer` and in-app list session signals are **story fixtures**, not play-only setup. Reset session keys when production reads them at render.
41
+ - White-card isolated blocks **only** (a solid white surface token): `withGreyCanvas`. Do not use on grey primary/secondary roots.
42
+ - **Never** `parameters.nextjs.appDirectory`. Do not null-guard production `useSearchParams`.
43
+
44
+ ## Fixtures
45
+
46
+ Split: handlers/ids (`*.fixtures.ts`), static data (`*.fixtures.data.ts`), play constants (`*.stories.meta.ts`).
47
+ Reuse page fixtures before inventing ids. Document story-local id ranges in the README.
48
+
49
+ ## One CSF file per `title` (strict)
50
+
51
+ Allowed: `PageName.stories.tsx`, `Components/<Block>.stories.tsx`, `modals/<Domain>/<Modal>.stories.tsx`.
52
+
53
+ **Forbidden:**
54
+
55
+ - New `*.p1.stories.tsx`, `*.p2.stories.tsx`, or any `*.pN.stories.tsx`.
56
+ - Adding exports to existing p1/p2 files.
57
+ - Numbered overflow siblings sharing the same `title`.
58
+
59
+ Existing p1/p2 in a repo are **legacy — do not copy or extend**. If the main file is large, extract a page block into `Components/` (new `title`).
60
+
61
+ ## No mobile/viewport duplicates (strict)
62
+
63
+ One desktop canvas per logical state; reviewers use the Storybook viewport toolbar.
64
+
65
+ **Ban:** `export const Mobile*`, `Mobile_*`, `defaultViewport: 'mobile1'` / `'mobile2'`, `isMobile: true` preloads, `*MobileMediaPreload` fixtures, dedicated `*Mobile*.stories.tsx` for viewport variants.
66
+
67
+ **Keep only** product UI whose name is Mobile (a distinct component, not a second viewport of a page).
68
+
69
+ ## Play vs visual
70
+
71
+ - Every snapshot story has a `play` asserting primary `data-testid`s or visible copy.
72
+ - Call the visual-settle helper after icon/header paint (~300ms) when flaking — use it on isolated blocks/modals with masked icons before vis.
73
+ - Portals: assert `within(canvasElement.ownerDocument.body)`.
74
+ - **Loading / spinner vis:** preload the store slice (`loadingStatus: 'loading'`) or MSW `delay('infinite')`. **Forbidden:** click download/submit then vis the in-flight frame without pinning the request.
75
+ - Freeze animations only on spinner/QR/skeleton stories, as the last line of `play`; then `--update -t` that story only.
76
+ - **Intentional** `LoadFailed` export (MSW 500) ≠ an accidental "failed to load the page" (missing API mocking).
77
+
78
+ ## Tags & layout
79
+
80
+ - `tags: ['test', 'snapshot']` on visual catalog entries.
81
+ - Page: `layout: 'fullscreen'`, `viewport.defaultViewport: 'desktop'`.
82
+ - Isolated block: `layout: 'centered'` unless the block needs width.
83
+
84
+ ## Grey canvas (white cards only)
85
+
86
+ Apply the grey-canvas decorator **only** when the production root is a solid white surface. Use the project's grey-surface token. Never hex.
87
+
88
+ ```tsx
89
+ import { withGreyCanvas } from '<shared-decorators>' // adjust depth
90
+
91
+ decorators: [withGreyCanvas], // outer; width shells stay inside
92
+ ```
93
+
94
+ **Do not apply** when the root is already grey, transparent, a fullscreen page, or a modal. Grey-on-grey hides radius and rest/hover fills.
95
+
96
+ **Forbidden:** `parameters.backgrounds` hex lists; a grey wrapper the same size as the card (edge still invisible).
97
+
98
+ ## After batch
99
+
100
+ Mandatory: **`storybook-ui-quality-gate`** — preview stories, compare canvas vs mockup, then run story tests. Then **`storybook-keep-tests-current`**: fix play/fixtures, targeted vitest, `--update` vis after intentional visual changes, re-run green. Then **`storybook-cleanup-temp-screenshots`** — delete dump PNGs from this turn; do not commit them.
@@ -0,0 +1,67 @@
1
+ globs: app/src/ui/**/*.tsx, app/src/ui/**/*.ts, storybook/stories/**/*.stories.tsx
2
+
3
+ ## Body
4
+
5
+ # Storybook dev-time Figma visual compare (mandatory)
6
+
7
+ When this rule applies, acknowledge: `Using .ai.local: storybook-dev-compare-figma(, …)*`.
8
+
9
+ While implementing or refactoring `app/src/ui/**` (new component, visual/interaction change, layout, styles, copy, hover/open), the **source of visual truth is Figma** — not Storybook vis-baselines. Vis-baselines are a **regression detector** (they catch "you broke what was working"), not a design spec (they do not validate "this matches the Figma mockup"). They can lock in a wrong implementation as the baseline if `--update` is run before the implementation is correct.
10
+
11
+ This rule makes the dev-loop **mandatory** and forbids the failure mode where an agent captures a `--update` baseline against a wrong implementation, the wrong implementation becomes the "correct" baseline, and the next round of changes is compared against the wrong baseline — drift is hidden forever.
12
+
13
+ ## The required loop (every visual change)
14
+
15
+ 1. **Read Figma first** — `figma_get_metadata` for the node structure, `figma_get_design_context` for the actual styles/tokens, `figma_get_variable_defs` for design tokens, `figma_get_screenshot` for the visual reference. Do not pick the wrong reference node (e.g. a wrapper frame instead of the card component). Pick the **innermost** matching node.
16
+ 2. **Implement to spec** — every token (color, padding, gap, font, radius) must come from `figma_get_design_context` / `figma_get_variable_defs`, not from memory or from guessing. If a style is not in the Figma spec, the implementation is wrong; do not invent.
17
+ 3. **Open the story in a browser** — navigate to the story URL (e.g. `http://localhost:6006/?path=/story/<story-id>`). If Storybook is not running, start it with `yarn storybook` from `storybook/`.
18
+ 4. **Take a screenshot** — of the **opened dialog / visible state**, not the Storybook iframe placeholder.
19
+ 5. **Visual compare with Figma** — open the Figma screenshot in the same view (saved PNG of the Figma node). Compare element-by-element:
20
+ - Title (font, size, weight, color, line-height, letter-spacing)
21
+ - Subtitle / supporting text (same)
22
+ - Container (background, border, radius, padding, gap)
23
+ - Icon (image content, size, container styling)
24
+ - Status / state (text + color)
25
+ - Disclosure / actions (icon, size, position)
26
+ - Hover state (compare in both the Figma "Hover" variant AND Storybook hover)
27
+ 6. **Diff and fix** — if the Storybook render does not match the Figma, fix the production code (or fixture, if the data was wrong) and re-screenshot. Do not `--update` the baseline until the Figma match is confirmed by a human-readable visual side-by-side.
28
+ 7. **Only then `--update`** — `yarn vitest run --project=storybook <path> --update` records the now-correct baseline. After the rewrite, run **without** `--update` once to confirm the new baseline is stable.
29
+
30
+ ## Why baselines are NOT enough
31
+
32
+ A baseline is a pixel diff against an existing image. If the existing image is wrong, the baseline silently approves future wrongness.
33
+
34
+ The failure mode this guards against: an agent implements UI with wrong border, wrong icon, wrong font, and wrong background; captures a `--update` baseline; vis-tests go green. The next round tightens tokens but keeps the wrong icon; `--update` again; still green. An operator later opens the story and it looks nothing like Figma. The "green" vis-tests had been comparing to a wrong baseline for two rounds.
35
+
36
+ The fix is not "more `--update` discipline". The fix is a **mandatory dev-time visual compare with Figma** before any `--update`.
37
+
38
+ ## Forbidden
39
+
40
+ - Running `yarn vitest -u` against a story that has not been visually compared with Figma in the current session.
41
+ - "Vis-tests are green" used as evidence the UI matches Figma.
42
+ - Comparing only via a single Figma screenshot and then trusting memory for the rest of the change.
43
+ - Using a Figma screenshot of a **different node** as the reference (e.g. the outer modal instead of the card component, the empty state instead of the loaded state, the desktop variant instead of the mobile variant).
44
+ - Skipping the dev-time compare and relying on the operator to spot drift after the fact.
45
+
46
+ ## Required when
47
+
48
+ Mandatory for any change under `app/src/ui/**` that affects:
49
+
50
+ - Layout, padding, gap, alignment
51
+ - Typography (font, size, weight, color)
52
+ - Color, background, border, radius, shadow
53
+ - Icon / image / illustration
54
+ - Hover / open / focused / error / empty / loading visual states
55
+ - Storybook vis-baseline first capture (`--update`) or any intentional change to baselines
56
+
57
+ ## MCP wiring
58
+
59
+ - `chrome-devtools_*` (in the session MCP catalog) is the preferred browser navigation / screenshot tool for the dev-time compare. If it is `error` / `needsAuth` / `loading`, **stop** and report the block, do not approximate.
60
+ - `playwright` MCP can be used as a substitute **only if** `chrome-devtools` is unavailable — but `chrome-devtools` is preferred because it gives a real DOM + screenshot of the running app.
61
+ - A `localhost:6006` reached via a browser MCP is the right way; a screenshot of the production Next.js route is **not** an acceptable substitute (per `mcp-required-for-ui-layout.md`).
62
+
63
+ ## Reference
64
+
65
+ - `storybook-ui-quality-gate.md` — this rule makes its "compare with mockup" step mandatory and dev-time, not at-the-end.
66
+ - `storybook-keep-tests-current.md` — the post-change half (play + baseline refresh); this rule is the pre-`--update` half.
67
+ - `mcp-required-for-ui-layout.md` — Figma + Storybook MCP gate.