@bonesofspring/ai-rules 0.2.13 → 0.2.14

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 (513) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +6 -2
  3. package/bin/cli.js +4 -0
  4. package/package.json +1 -1
  5. package/presets/_shared/README.md +1 -1
  6. package/presets/_shared/core/meta/preset-layering.md +1 -1
  7. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +15 -1
  8. package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
  9. package/presets/_shared/core/meta/preset-twin-sync.md +4 -0
  10. package/presets/claude/go/agents/build-verifier.md +1 -1
  11. package/presets/claude/go/rules/tooling-and-review/preset-layering.md +2 -1
  12. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  13. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  14. package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +1 -0
  15. package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +5 -0
  16. package/presets/claude/ios-swift/agents/build-verifier.md +2 -2
  17. package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +2 -1
  18. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  19. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  20. package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +1 -0
  21. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +5 -0
  22. package/presets/claude/java/agents/build-verifier.md +1 -1
  23. package/presets/claude/java/rules/tooling-and-review/preset-layering.md +2 -1
  24. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  25. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  26. package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +1 -0
  27. package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +5 -0
  28. package/presets/claude/mcp-ts/agents/build-verifier.md +1 -1
  29. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +2 -1
  30. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  31. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  32. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +1 -0
  33. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +5 -0
  34. package/presets/claude/next/agents/build-verifier.md +3 -3
  35. package/presets/claude/next/rules/tooling-and-review/preset-layering.md +2 -1
  36. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  37. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  38. package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +1 -0
  39. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +5 -0
  40. package/presets/claude/nuxt/CLAUDE.md +39 -0
  41. package/presets/claude/nuxt/MCP.md +16 -0
  42. package/presets/claude/nuxt/README.md +39 -0
  43. package/presets/claude/nuxt/REPO_AGENTS.md +49 -0
  44. package/presets/claude/nuxt/agents/README.md +199 -0
  45. package/presets/claude/nuxt/agents/accessibility-reviewer.md +59 -0
  46. package/presets/claude/nuxt/agents/api-contract-reviewer.md +63 -0
  47. package/presets/claude/nuxt/agents/build-verifier.md +89 -0
  48. package/presets/claude/nuxt/agents/ci-investigator.md +60 -0
  49. package/presets/claude/nuxt/agents/code-reviewer.md +62 -0
  50. package/presets/claude/nuxt/agents/codebase-analyzer.md +28 -0
  51. package/presets/claude/nuxt/agents/debugger.md +65 -0
  52. package/presets/claude/nuxt/agents/feature-developer.md +59 -0
  53. package/presets/claude/nuxt/agents/migration-specialist.md +67 -0
  54. package/presets/claude/nuxt/agents/performance-auditor.md +66 -0
  55. package/presets/claude/nuxt/agents/playwright-test-generator.md +75 -0
  56. package/presets/claude/nuxt/agents/playwright-test-healer.md +61 -0
  57. package/presets/claude/nuxt/agents/playwright-test-planner.md +67 -0
  58. package/presets/claude/nuxt/agents/qa-tester.md +54 -0
  59. package/presets/claude/nuxt/agents/security-reviewer.md +60 -0
  60. package/presets/claude/nuxt/agents/solution-architect.md +68 -0
  61. package/presets/claude/nuxt/agents/task-analyst.md +109 -0
  62. package/presets/claude/nuxt/agents/task-router.md +140 -0
  63. package/presets/claude/nuxt/agents/tech-writer.md +54 -0
  64. package/presets/claude/nuxt/agents/unit-test-generator.md +37 -0
  65. package/presets/claude/nuxt/agents/unit-test-healer.md +38 -0
  66. package/presets/claude/nuxt/agents/unit-test-planner.md +60 -0
  67. package/presets/claude/nuxt/commands/README.md +13 -0
  68. package/presets/claude/nuxt/commands/feature-continue.md +51 -0
  69. package/presets/claude/nuxt/commands/feature-start.md +30 -0
  70. package/presets/claude/nuxt/commands/task-continue.md +50 -0
  71. package/presets/claude/nuxt/commands/task.md +56 -0
  72. package/presets/claude/nuxt/commands/technical-retro.md +62 -0
  73. package/presets/claude/nuxt/hooks/README.md +14 -0
  74. package/presets/claude/nuxt/hooks/chain-team-phases.sh +723 -0
  75. package/presets/claude/nuxt/hooks/examples/README.md +18 -0
  76. package/presets/claude/nuxt/hooks/examples/format-edited.example.sh +11 -0
  77. package/presets/claude/nuxt/hooks/examples/secret-guard.example.sh +10 -0
  78. package/presets/claude/nuxt/hooks/examples/test-on-save.example.sh +8 -0
  79. package/presets/claude/nuxt/hooks/guard-shell-command.sh +77 -0
  80. package/presets/claude/nuxt/mcp.json +20 -0
  81. package/presets/claude/nuxt/rules/README.md +90 -0
  82. package/presets/claude/nuxt/rules/anti-hallucination/vue-nuxt-anti-hallucination.md +72 -0
  83. package/presets/claude/nuxt/rules/api-and-data/README.md +9 -0
  84. package/presets/claude/nuxt/rules/api-and-data/api-services.md +76 -0
  85. package/presets/claude/nuxt/rules/api-and-data/http-client.md +16 -0
  86. package/presets/claude/nuxt/rules/api-and-data/store-pinia.md +67 -0
  87. package/presets/claude/nuxt/rules/architecture/README.md +12 -0
  88. package/presets/claude/nuxt/rules/architecture/architecture-boundaries-ui.md +15 -0
  89. package/presets/claude/nuxt/rules/architecture/architecture-boundaries.md +98 -0
  90. package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +88 -0
  91. package/presets/claude/nuxt/rules/architecture/layer-barrel-exports.md +71 -0
  92. package/presets/claude/nuxt/rules/architecture/public-imports.md +60 -0
  93. package/presets/claude/nuxt/rules/architecture/reference-features.md +49 -0
  94. package/presets/claude/nuxt/rules/stack/README.md +12 -0
  95. package/presets/claude/nuxt/rules/stack/navigation-router-ui.md +14 -0
  96. package/presets/claude/nuxt/rules/stack/navigation-router.md +59 -0
  97. package/presets/claude/nuxt/rules/stack/no-type-assertion.md +61 -0
  98. package/presets/claude/nuxt/rules/stack/nuxt-app-core.md +43 -0
  99. package/presets/claude/nuxt/rules/stack/nuxt-pages-routing.md +39 -0
  100. package/presets/claude/nuxt/rules/stack/script-setup-conventions.md +12 -0
  101. package/presets/claude/nuxt/rules/stack/types-jsdoc.md +40 -0
  102. package/presets/claude/nuxt/rules/testing/README.md +11 -0
  103. package/presets/claude/nuxt/rules/testing/playwright-agents.md +78 -0
  104. package/presets/claude/nuxt/rules/testing/tests-e2e-structure.md +49 -0
  105. package/presets/claude/nuxt/rules/testing/tests-unit.md +75 -0
  106. package/presets/claude/nuxt/rules/tooling-and-review/README.md +15 -0
  107. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-intake.md +15 -0
  108. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +191 -0
  109. package/presets/claude/nuxt/rules/tooling-and-review/anti-sycophancy-discipline.md +33 -0
  110. package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +49 -0
  111. package/presets/claude/nuxt/rules/tooling-and-review/code-review-mr.md +63 -0
  112. package/presets/claude/nuxt/rules/tooling-and-review/design-guidance.md +114 -0
  113. package/presets/claude/nuxt/rules/tooling-and-review/package-manager.md +16 -0
  114. package/presets/claude/nuxt/rules/tooling-and-review/post-change-lint.md +43 -0
  115. package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +32 -0
  116. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +79 -0
  117. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +35 -0
  118. package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +39 -0
  119. package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +50 -0
  120. package/presets/claude/nuxt/rules/tooling-and-review/security-nuxt.md +37 -0
  121. package/presets/claude/nuxt/rules/tooling-and-review/technical-retro.md +15 -0
  122. package/presets/claude/nuxt/rules/ui-and-accessibility/README.md +12 -0
  123. package/presets/claude/nuxt/rules/ui-and-accessibility/css-property-order.md +11 -0
  124. package/presets/claude/nuxt/rules/ui-and-accessibility/no-v-bind-spread.md +12 -0
  125. package/presets/claude/nuxt/rules/ui-and-accessibility/vue-a11y-coding.md +16 -0
  126. package/presets/claude/nuxt/rules/ui-and-accessibility/vue-ui.md +34 -0
  127. package/presets/claude/nuxt/skills/README.md +17 -0
  128. package/presets/claude/nuxt/skills/ci-investigation/SKILL.md +36 -0
  129. package/presets/claude/nuxt/skills/code-review/SKILL.md +38 -0
  130. package/presets/claude/nuxt/skills/debug-investigation/SKILL.md +32 -0
  131. package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +34 -0
  132. package/presets/claude/nuxt/skills/playwright-e2e/SKILL.md +37 -0
  133. package/presets/claude/nuxt/skills/technical-retro/SKILL.md +54 -0
  134. package/presets/claude/nuxt/skills/unit-testing/SKILL.md +32 -0
  135. package/presets/claude/nuxt/skills/vue-performance/SKILL.md +53 -0
  136. package/presets/claude/nuxt/skills/write-adr/SKILL.md +41 -0
  137. package/presets/claude/nuxt/team/README.md +136 -0
  138. package/presets/claude/nuxt/team/conventions.md +21 -0
  139. package/presets/claude/nuxt/team/fixtures/artifact-manifest.example.json +61 -0
  140. package/presets/claude/nuxt/team/fixtures/bugfix-standard.json +25 -0
  141. package/presets/claude/nuxt/team/fixtures/feature-full.json +28 -0
  142. package/presets/claude/nuxt/team/fixtures/feature-light.json +27 -0
  143. package/presets/claude/nuxt/team/tasks/.gitkeep +1 -0
  144. package/presets/claude/php-hexagonal/agents/build-verifier.md +1 -1
  145. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +2 -1
  146. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  147. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  148. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +1 -0
  149. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +5 -0
  150. package/presets/claude/php-laravel/agents/build-verifier.md +1 -1
  151. package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +2 -1
  152. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
  153. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +2 -1
  154. package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +1 -0
  155. package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +5 -0
  156. package/presets/claude/svelte/CLAUDE.md +39 -0
  157. package/presets/claude/svelte/MCP.md +16 -0
  158. package/presets/claude/svelte/README.md +13 -0
  159. package/presets/claude/svelte/REPO_AGENTS.md +49 -0
  160. package/presets/claude/svelte/agents/README.md +199 -0
  161. package/presets/claude/svelte/agents/accessibility-reviewer.md +59 -0
  162. package/presets/claude/svelte/agents/api-contract-reviewer.md +63 -0
  163. package/presets/claude/svelte/agents/build-verifier.md +89 -0
  164. package/presets/claude/svelte/agents/ci-investigator.md +60 -0
  165. package/presets/claude/svelte/agents/code-reviewer.md +62 -0
  166. package/presets/claude/svelte/agents/codebase-analyzer.md +28 -0
  167. package/presets/claude/svelte/agents/debugger.md +65 -0
  168. package/presets/claude/svelte/agents/feature-developer.md +59 -0
  169. package/presets/claude/svelte/agents/migration-specialist.md +67 -0
  170. package/presets/claude/svelte/agents/performance-auditor.md +66 -0
  171. package/presets/claude/svelte/agents/playwright-test-generator.md +75 -0
  172. package/presets/claude/svelte/agents/playwright-test-healer.md +61 -0
  173. package/presets/claude/svelte/agents/playwright-test-planner.md +67 -0
  174. package/presets/claude/svelte/agents/qa-tester.md +54 -0
  175. package/presets/claude/svelte/agents/security-reviewer.md +60 -0
  176. package/presets/claude/svelte/agents/solution-architect.md +68 -0
  177. package/presets/claude/svelte/agents/task-analyst.md +109 -0
  178. package/presets/claude/svelte/agents/task-router.md +140 -0
  179. package/presets/claude/svelte/agents/tech-writer.md +54 -0
  180. package/presets/claude/svelte/agents/unit-test-generator.md +37 -0
  181. package/presets/claude/svelte/agents/unit-test-healer.md +38 -0
  182. package/presets/claude/svelte/agents/unit-test-planner.md +60 -0
  183. package/presets/claude/svelte/commands/README.md +13 -0
  184. package/presets/claude/svelte/commands/feature-continue.md +51 -0
  185. package/presets/claude/svelte/commands/feature-start.md +30 -0
  186. package/presets/claude/svelte/commands/task-continue.md +50 -0
  187. package/presets/claude/svelte/commands/task.md +56 -0
  188. package/presets/claude/svelte/commands/technical-retro.md +62 -0
  189. package/presets/claude/svelte/hooks/README.md +14 -0
  190. package/presets/claude/svelte/hooks/chain-team-phases.sh +723 -0
  191. package/presets/claude/svelte/hooks/examples/README.md +18 -0
  192. package/presets/claude/svelte/hooks/examples/format-edited.example.sh +13 -0
  193. package/presets/claude/svelte/hooks/examples/secret-guard.example.sh +10 -0
  194. package/presets/claude/svelte/hooks/examples/test-on-save.example.sh +14 -0
  195. package/presets/claude/svelte/hooks/guard-shell-command.sh +77 -0
  196. package/presets/claude/svelte/mcp.json +20 -0
  197. package/presets/claude/svelte/rules/README.md +90 -0
  198. package/presets/claude/svelte/rules/anti-hallucination/svelte-sveltekit-anti-hallucination.md +71 -0
  199. package/presets/claude/svelte/rules/api-and-data/README.md +9 -0
  200. package/presets/claude/svelte/rules/api-and-data/api-services.md +45 -0
  201. package/presets/claude/svelte/rules/api-and-data/http-client.md +17 -0
  202. package/presets/claude/svelte/rules/api-and-data/store-svelte.md +67 -0
  203. package/presets/claude/svelte/rules/architecture/README.md +12 -0
  204. package/presets/claude/svelte/rules/architecture/architecture-boundaries-ui.md +16 -0
  205. package/presets/claude/svelte/rules/architecture/architecture-boundaries.md +65 -0
  206. package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +61 -0
  207. package/presets/claude/svelte/rules/architecture/layer-barrel-exports.md +73 -0
  208. package/presets/claude/svelte/rules/architecture/public-imports.md +43 -0
  209. package/presets/claude/svelte/rules/architecture/reference-features.md +50 -0
  210. package/presets/claude/svelte/rules/stack/README.md +12 -0
  211. package/presets/claude/svelte/rules/stack/navigation-router-ui.md +26 -0
  212. package/presets/claude/svelte/rules/stack/navigation-router.md +41 -0
  213. package/presets/claude/svelte/rules/stack/no-type-assertion.md +59 -0
  214. package/presets/claude/svelte/rules/stack/svelte-app-core.md +44 -0
  215. package/presets/claude/svelte/rules/stack/svelte-script-conventions.md +33 -0
  216. package/presets/claude/svelte/rules/stack/sveltekit-routing.md +40 -0
  217. package/presets/claude/svelte/rules/stack/types-jsdoc.md +42 -0
  218. package/presets/claude/svelte/rules/testing/README.md +11 -0
  219. package/presets/claude/svelte/rules/testing/playwright-agents.md +80 -0
  220. package/presets/claude/svelte/rules/testing/tests-e2e-structure.md +51 -0
  221. package/presets/claude/svelte/rules/testing/tests-unit.md +40 -0
  222. package/presets/claude/svelte/rules/tooling-and-review/README.md +15 -0
  223. package/presets/claude/svelte/rules/tooling-and-review/agent-team-intake.md +17 -0
  224. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +193 -0
  225. package/presets/claude/svelte/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  226. package/presets/claude/svelte/rules/tooling-and-review/code-quality.md +50 -0
  227. package/presets/claude/svelte/rules/tooling-and-review/code-review-mr.md +64 -0
  228. package/presets/claude/svelte/rules/tooling-and-review/design-guidance.md +110 -0
  229. package/presets/claude/svelte/rules/tooling-and-review/package-manager.md +17 -0
  230. package/presets/claude/svelte/rules/tooling-and-review/post-change-lint.md +44 -0
  231. package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +36 -0
  232. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +83 -0
  233. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +39 -0
  234. package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +41 -0
  235. package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +54 -0
  236. package/presets/claude/svelte/rules/tooling-and-review/security-sveltekit.md +41 -0
  237. package/presets/claude/svelte/rules/tooling-and-review/technical-retro.md +17 -0
  238. package/presets/claude/svelte/rules/ui-and-accessibility/README.md +12 -0
  239. package/presets/claude/svelte/rules/ui-and-accessibility/css-property-order.md +12 -0
  240. package/presets/claude/svelte/rules/ui-and-accessibility/no-rest-props-spread.md +32 -0
  241. package/presets/claude/svelte/rules/ui-and-accessibility/svelte-a11y-coding.md +28 -0
  242. package/presets/claude/svelte/rules/ui-and-accessibility/svelte-ui.md +38 -0
  243. package/presets/claude/svelte/skills/README.md +17 -0
  244. package/presets/claude/svelte/skills/ci-investigation/SKILL.md +36 -0
  245. package/presets/claude/svelte/skills/code-review/SKILL.md +38 -0
  246. package/presets/claude/svelte/skills/debug-investigation/SKILL.md +32 -0
  247. package/presets/claude/svelte/skills/feature-delivery/SKILL.md +34 -0
  248. package/presets/claude/svelte/skills/playwright-e2e/SKILL.md +37 -0
  249. package/presets/claude/svelte/skills/svelte-performance/SKILL.md +52 -0
  250. package/presets/claude/svelte/skills/technical-retro/SKILL.md +54 -0
  251. package/presets/claude/svelte/skills/unit-testing/SKILL.md +32 -0
  252. package/presets/claude/svelte/skills/write-adr/SKILL.md +41 -0
  253. package/presets/claude/svelte/team/README.md +136 -0
  254. package/presets/claude/svelte/team/conventions.md +21 -0
  255. package/presets/claude/svelte/team/fixtures/artifact-manifest.example.json +61 -0
  256. package/presets/claude/svelte/team/fixtures/bugfix-standard.json +25 -0
  257. package/presets/claude/svelte/team/fixtures/feature-full.json +28 -0
  258. package/presets/claude/svelte/team/fixtures/feature-light.json +27 -0
  259. package/presets/claude/svelte/team/tasks/.gitkeep +1 -0
  260. package/presets/cursor/go/agents/build-verifier.md +1 -1
  261. package/presets/cursor/go/rules/preset-layering.mdc +2 -1
  262. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +16 -1
  263. package/presets/cursor/go/rules/preset-pr-checklist.mdc +2 -1
  264. package/presets/cursor/go/rules/preset-token-budget.mdc +1 -0
  265. package/presets/cursor/go/rules/preset-twin-sync.mdc +5 -0
  266. package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
  267. package/presets/cursor/ios-swift/rules/preset-layering.mdc +2 -1
  268. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +16 -1
  269. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -1
  270. package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +1 -0
  271. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +5 -0
  272. package/presets/cursor/java/agents/build-verifier.md +1 -1
  273. package/presets/cursor/java/rules/preset-layering.mdc +2 -1
  274. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +16 -1
  275. package/presets/cursor/java/rules/preset-pr-checklist.mdc +2 -1
  276. package/presets/cursor/java/rules/preset-token-budget.mdc +1 -0
  277. package/presets/cursor/java/rules/preset-twin-sync.mdc +5 -0
  278. package/presets/cursor/mcp-ts/agents/build-verifier.md +1 -1
  279. package/presets/cursor/mcp-ts/rules/preset-layering.mdc +2 -1
  280. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +16 -1
  281. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +2 -1
  282. package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +1 -0
  283. package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +5 -0
  284. package/presets/cursor/next/agents/build-verifier.md +3 -3
  285. package/presets/cursor/next/rules/preset-layering.mdc +2 -1
  286. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +16 -1
  287. package/presets/cursor/next/rules/preset-pr-checklist.mdc +2 -1
  288. package/presets/cursor/next/rules/preset-token-budget.mdc +1 -0
  289. package/presets/cursor/next/rules/preset-twin-sync.mdc +5 -0
  290. package/presets/cursor/nuxt/AGENTS.md +39 -0
  291. package/presets/cursor/nuxt/BUGBOT.md +14 -0
  292. package/presets/cursor/nuxt/MCP.md +16 -0
  293. package/presets/cursor/nuxt/README.md +47 -0
  294. package/presets/cursor/nuxt/REPO_AGENTS.md +49 -0
  295. package/presets/cursor/nuxt/agents/README.md +206 -0
  296. package/presets/cursor/nuxt/agents/accessibility-reviewer.md +60 -0
  297. package/presets/cursor/nuxt/agents/api-contract-reviewer.md +64 -0
  298. package/presets/cursor/nuxt/agents/build-verifier.md +90 -0
  299. package/presets/cursor/nuxt/agents/ci-investigator.md +61 -0
  300. package/presets/cursor/nuxt/agents/code-reviewer.md +63 -0
  301. package/presets/cursor/nuxt/agents/codebase-analyzer.md +28 -0
  302. package/presets/cursor/nuxt/agents/debugger.md +66 -0
  303. package/presets/cursor/nuxt/agents/feature-developer.md +60 -0
  304. package/presets/cursor/nuxt/agents/migration-specialist.md +68 -0
  305. package/presets/cursor/nuxt/agents/performance-auditor.md +67 -0
  306. package/presets/cursor/nuxt/agents/playwright-test-generator.md +27 -0
  307. package/presets/cursor/nuxt/agents/playwright-test-healer.md +27 -0
  308. package/presets/cursor/nuxt/agents/playwright-test-planner.md +28 -0
  309. package/presets/cursor/nuxt/agents/qa-tester.md +55 -0
  310. package/presets/cursor/nuxt/agents/security-reviewer.md +61 -0
  311. package/presets/cursor/nuxt/agents/solution-architect.md +69 -0
  312. package/presets/cursor/nuxt/agents/task-analyst.md +110 -0
  313. package/presets/cursor/nuxt/agents/task-router.md +141 -0
  314. package/presets/cursor/nuxt/agents/tech-writer.md +55 -0
  315. package/presets/cursor/nuxt/agents/unit-test-generator.md +38 -0
  316. package/presets/cursor/nuxt/agents/unit-test-healer.md +39 -0
  317. package/presets/cursor/nuxt/agents/unit-test-planner.md +61 -0
  318. package/presets/cursor/nuxt/commands/README.md +51 -0
  319. package/presets/cursor/nuxt/commands/feature-continue.md +19 -0
  320. package/presets/cursor/nuxt/commands/feature-start.md +33 -0
  321. package/presets/cursor/nuxt/commands/task-continue.md +50 -0
  322. package/presets/cursor/nuxt/commands/task.md +56 -0
  323. package/presets/cursor/nuxt/commands/technical-retro.md +85 -0
  324. package/presets/cursor/nuxt/hooks/README.md +12 -0
  325. package/presets/cursor/nuxt/hooks/chain-team-phases.sh +727 -0
  326. package/presets/cursor/nuxt/hooks/examples/README.md +18 -0
  327. package/presets/cursor/nuxt/hooks/examples/format-edited.example.sh +11 -0
  328. package/presets/cursor/nuxt/hooks/examples/secret-guard.example.sh +10 -0
  329. package/presets/cursor/nuxt/hooks/examples/test-on-save.example.sh +8 -0
  330. package/presets/cursor/nuxt/hooks/guard-shell-command.sh +77 -0
  331. package/presets/cursor/nuxt/hooks.json +17 -0
  332. package/presets/cursor/nuxt/mcp.json +19 -0
  333. package/presets/cursor/nuxt/rules/README.md +108 -0
  334. package/presets/cursor/nuxt/rules/agent-team-intake.mdc +16 -0
  335. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +192 -0
  336. package/presets/cursor/nuxt/rules/anti-sycophancy-discipline.mdc +30 -0
  337. package/presets/cursor/nuxt/rules/api-services.mdc +79 -0
  338. package/presets/cursor/nuxt/rules/architecture-boundaries-ui.mdc +15 -0
  339. package/presets/cursor/nuxt/rules/architecture-boundaries.mdc +97 -0
  340. package/presets/cursor/nuxt/rules/code-quality-and-refactoring.mdc +51 -0
  341. package/presets/cursor/nuxt/rules/code-review-mr.mdc +58 -0
  342. package/presets/cursor/nuxt/rules/css-property-order-stylelint.mdc +12 -0
  343. package/presets/cursor/nuxt/rules/design-guidance.mdc +111 -0
  344. package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +83 -0
  345. package/presets/cursor/nuxt/rules/http-client.mdc +15 -0
  346. package/presets/cursor/nuxt/rules/layer-barrel-exports.mdc +74 -0
  347. package/presets/cursor/nuxt/rules/navigation-router-stack.mdc +61 -0
  348. package/presets/cursor/nuxt/rules/navigation-router-ui.mdc +16 -0
  349. package/presets/cursor/nuxt/rules/no-type-assertion-as-import-export.mdc +60 -0
  350. package/presets/cursor/nuxt/rules/no-v-bind-spread.mdc +13 -0
  351. package/presets/cursor/nuxt/rules/nuxt-app-core.mdc +45 -0
  352. package/presets/cursor/nuxt/rules/nuxt-pages-routing.mdc +37 -0
  353. package/presets/cursor/nuxt/rules/package-manager.mdc +18 -0
  354. package/presets/cursor/nuxt/rules/playwright-agents.mdc +80 -0
  355. package/presets/cursor/nuxt/rules/post-change-lint.mdc +42 -0
  356. package/presets/cursor/nuxt/rules/preset-layering.mdc +37 -0
  357. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +84 -0
  358. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +40 -0
  359. package/presets/cursor/nuxt/rules/preset-token-budget.mdc +42 -0
  360. package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +55 -0
  361. package/presets/cursor/nuxt/rules/public-imports.mdc +62 -0
  362. package/presets/cursor/nuxt/rules/reference-features.mdc +49 -0
  363. package/presets/cursor/nuxt/rules/script-setup-conventions.mdc +13 -0
  364. package/presets/cursor/nuxt/rules/security-nuxt.mdc +34 -0
  365. package/presets/cursor/nuxt/rules/store-pinia.mdc +68 -0
  366. package/presets/cursor/nuxt/rules/technical-retro.mdc +16 -0
  367. package/presets/cursor/nuxt/rules/tests-e2e-structure.mdc +51 -0
  368. package/presets/cursor/nuxt/rules/tests-unit.mdc +78 -0
  369. package/presets/cursor/nuxt/rules/types-jsdoc.mdc +42 -0
  370. package/presets/cursor/nuxt/rules/vue-a11y-coding.mdc +15 -0
  371. package/presets/cursor/nuxt/rules/vue-nuxt-anti-hallucination.mdc +68 -0
  372. package/presets/cursor/nuxt/rules/vue-ui.mdc +33 -0
  373. package/presets/cursor/nuxt/skills/README.md +17 -0
  374. package/presets/cursor/nuxt/skills/ci-investigation/SKILL.md +36 -0
  375. package/presets/cursor/nuxt/skills/code-review/SKILL.md +38 -0
  376. package/presets/cursor/nuxt/skills/debug-investigation/SKILL.md +32 -0
  377. package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +34 -0
  378. package/presets/cursor/nuxt/skills/playwright-e2e/SKILL.md +37 -0
  379. package/presets/cursor/nuxt/skills/technical-retro/SKILL.md +54 -0
  380. package/presets/cursor/nuxt/skills/unit-testing/SKILL.md +32 -0
  381. package/presets/cursor/nuxt/skills/vue-performance/SKILL.md +53 -0
  382. package/presets/cursor/nuxt/skills/write-adr/SKILL.md +41 -0
  383. package/presets/cursor/nuxt/team/README.md +140 -0
  384. package/presets/cursor/nuxt/team/conventions.md +21 -0
  385. package/presets/cursor/nuxt/team/fixtures/artifact-manifest.example.json +61 -0
  386. package/presets/cursor/nuxt/team/fixtures/bugfix-standard.json +25 -0
  387. package/presets/cursor/nuxt/team/fixtures/feature-full.json +28 -0
  388. package/presets/cursor/nuxt/team/fixtures/feature-light.json +27 -0
  389. package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  390. package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  391. package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  392. package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  393. package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  394. package/presets/cursor/nuxt/team/fixtures/metrics.example.json +54 -0
  395. package/presets/cursor/nuxt/team/tasks/.gitkeep +0 -0
  396. package/presets/cursor/php-hexagonal/agents/build-verifier.md +1 -1
  397. package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +2 -1
  398. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +16 -1
  399. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +2 -1
  400. package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +1 -0
  401. package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +5 -0
  402. package/presets/cursor/php-laravel/agents/build-verifier.md +1 -1
  403. package/presets/cursor/php-laravel/rules/preset-layering.mdc +2 -1
  404. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +16 -1
  405. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +2 -1
  406. package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +1 -0
  407. package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +5 -0
  408. package/presets/cursor/svelte/AGENTS.md +39 -0
  409. package/presets/cursor/svelte/BUGBOT.md +14 -0
  410. package/presets/cursor/svelte/MCP.md +16 -0
  411. package/presets/cursor/svelte/README.md +47 -0
  412. package/presets/cursor/svelte/REPO_AGENTS.md +49 -0
  413. package/presets/cursor/svelte/agents/README.md +206 -0
  414. package/presets/cursor/svelte/agents/accessibility-reviewer.md +60 -0
  415. package/presets/cursor/svelte/agents/api-contract-reviewer.md +64 -0
  416. package/presets/cursor/svelte/agents/build-verifier.md +90 -0
  417. package/presets/cursor/svelte/agents/ci-investigator.md +61 -0
  418. package/presets/cursor/svelte/agents/code-reviewer.md +63 -0
  419. package/presets/cursor/svelte/agents/codebase-analyzer.md +28 -0
  420. package/presets/cursor/svelte/agents/debugger.md +66 -0
  421. package/presets/cursor/svelte/agents/feature-developer.md +60 -0
  422. package/presets/cursor/svelte/agents/migration-specialist.md +68 -0
  423. package/presets/cursor/svelte/agents/performance-auditor.md +67 -0
  424. package/presets/cursor/svelte/agents/playwright-test-generator.md +27 -0
  425. package/presets/cursor/svelte/agents/playwright-test-healer.md +27 -0
  426. package/presets/cursor/svelte/agents/playwright-test-planner.md +28 -0
  427. package/presets/cursor/svelte/agents/qa-tester.md +55 -0
  428. package/presets/cursor/svelte/agents/security-reviewer.md +61 -0
  429. package/presets/cursor/svelte/agents/solution-architect.md +69 -0
  430. package/presets/cursor/svelte/agents/task-analyst.md +110 -0
  431. package/presets/cursor/svelte/agents/task-router.md +141 -0
  432. package/presets/cursor/svelte/agents/tech-writer.md +55 -0
  433. package/presets/cursor/svelte/agents/unit-test-generator.md +38 -0
  434. package/presets/cursor/svelte/agents/unit-test-healer.md +39 -0
  435. package/presets/cursor/svelte/agents/unit-test-planner.md +61 -0
  436. package/presets/cursor/svelte/commands/README.md +51 -0
  437. package/presets/cursor/svelte/commands/feature-continue.md +19 -0
  438. package/presets/cursor/svelte/commands/feature-start.md +33 -0
  439. package/presets/cursor/svelte/commands/task-continue.md +50 -0
  440. package/presets/cursor/svelte/commands/task.md +56 -0
  441. package/presets/cursor/svelte/commands/technical-retro.md +85 -0
  442. package/presets/cursor/svelte/hooks/README.md +12 -0
  443. package/presets/cursor/svelte/hooks/chain-team-phases.sh +727 -0
  444. package/presets/cursor/svelte/hooks/examples/README.md +18 -0
  445. package/presets/cursor/svelte/hooks/examples/format-edited.example.sh +13 -0
  446. package/presets/cursor/svelte/hooks/examples/secret-guard.example.sh +10 -0
  447. package/presets/cursor/svelte/hooks/examples/test-on-save.example.sh +14 -0
  448. package/presets/cursor/svelte/hooks/guard-shell-command.sh +77 -0
  449. package/presets/cursor/svelte/hooks.json +17 -0
  450. package/presets/cursor/svelte/mcp.json +19 -0
  451. package/presets/cursor/svelte/rules/README.md +86 -0
  452. package/presets/cursor/svelte/rules/agent-team-intake.mdc +16 -0
  453. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +192 -0
  454. package/presets/cursor/svelte/rules/anti-sycophancy-discipline.mdc +30 -0
  455. package/presets/cursor/svelte/rules/api-services.mdc +46 -0
  456. package/presets/cursor/svelte/rules/architecture-boundaries-ui.mdc +15 -0
  457. package/presets/cursor/svelte/rules/architecture-boundaries.mdc +61 -0
  458. package/presets/cursor/svelte/rules/code-quality-and-refactoring.mdc +51 -0
  459. package/presets/cursor/svelte/rules/code-review-mr.mdc +58 -0
  460. package/presets/cursor/svelte/rules/css-property-order-stylelint.mdc +12 -0
  461. package/presets/cursor/svelte/rules/design-guidance.mdc +111 -0
  462. package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +55 -0
  463. package/presets/cursor/svelte/rules/http-client.mdc +16 -0
  464. package/presets/cursor/svelte/rules/layer-barrel-exports.mdc +74 -0
  465. package/presets/cursor/svelte/rules/navigation-router-stack.mdc +40 -0
  466. package/presets/cursor/svelte/rules/navigation-router-ui.mdc +25 -0
  467. package/presets/cursor/svelte/rules/no-rest-props-spread.mdc +32 -0
  468. package/presets/cursor/svelte/rules/no-type-assertion-as-import-export.mdc +60 -0
  469. package/presets/cursor/svelte/rules/package-manager.mdc +18 -0
  470. package/presets/cursor/svelte/rules/playwright-agents.mdc +80 -0
  471. package/presets/cursor/svelte/rules/post-change-lint.mdc +42 -0
  472. package/presets/cursor/svelte/rules/preset-layering.mdc +37 -0
  473. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +84 -0
  474. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +40 -0
  475. package/presets/cursor/svelte/rules/preset-token-budget.mdc +42 -0
  476. package/presets/cursor/svelte/rules/preset-twin-sync.mdc +55 -0
  477. package/presets/cursor/svelte/rules/public-imports.mdc +45 -0
  478. package/presets/cursor/svelte/rules/reference-features.mdc +51 -0
  479. package/presets/cursor/svelte/rules/security-sveltekit.mdc +38 -0
  480. package/presets/cursor/svelte/rules/store-svelte.mdc +66 -0
  481. package/presets/cursor/svelte/rules/svelte-a11y-coding.mdc +27 -0
  482. package/presets/cursor/svelte/rules/svelte-app-core.mdc +45 -0
  483. package/presets/cursor/svelte/rules/svelte-script-conventions.mdc +33 -0
  484. package/presets/cursor/svelte/rules/svelte-sveltekit-anti-hallucination.mdc +69 -0
  485. package/presets/cursor/svelte/rules/svelte-ui.mdc +37 -0
  486. package/presets/cursor/svelte/rules/sveltekit-routing.mdc +39 -0
  487. package/presets/cursor/svelte/rules/technical-retro.mdc +16 -0
  488. package/presets/cursor/svelte/rules/tests-e2e-structure.mdc +51 -0
  489. package/presets/cursor/svelte/rules/tests-unit.mdc +42 -0
  490. package/presets/cursor/svelte/rules/types-jsdoc.mdc +42 -0
  491. package/presets/cursor/svelte/skills/README.md +17 -0
  492. package/presets/cursor/svelte/skills/ci-investigation/SKILL.md +36 -0
  493. package/presets/cursor/svelte/skills/code-review/SKILL.md +38 -0
  494. package/presets/cursor/svelte/skills/debug-investigation/SKILL.md +32 -0
  495. package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +34 -0
  496. package/presets/cursor/svelte/skills/playwright-e2e/SKILL.md +37 -0
  497. package/presets/cursor/svelte/skills/svelte-performance/SKILL.md +52 -0
  498. package/presets/cursor/svelte/skills/technical-retro/SKILL.md +54 -0
  499. package/presets/cursor/svelte/skills/unit-testing/SKILL.md +32 -0
  500. package/presets/cursor/svelte/skills/write-adr/SKILL.md +41 -0
  501. package/presets/cursor/svelte/team/README.md +140 -0
  502. package/presets/cursor/svelte/team/conventions.md +21 -0
  503. package/presets/cursor/svelte/team/fixtures/artifact-manifest.example.json +61 -0
  504. package/presets/cursor/svelte/team/fixtures/bugfix-standard.json +25 -0
  505. package/presets/cursor/svelte/team/fixtures/feature-full.json +28 -0
  506. package/presets/cursor/svelte/team/fixtures/feature-light.json +27 -0
  507. package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  508. package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  509. package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  510. package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  511. package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  512. package/presets/cursor/svelte/team/fixtures/metrics.example.json +54 -0
  513. package/presets/cursor/svelte/team/tasks/.gitkeep +0 -0
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: Эталонные фичи репозитория — копировать структуру при реализации новых задач. Заполните пути после init в целевом репо.
3
+ globs:
4
+ - components/**/*
5
+ - stores/**/*
6
+ - api/**/*
7
+ - types/**/*
8
+ alwaysApply: false
9
+ ---
10
+
11
+ <!-- shared-core: architecture/reference-features.template.md -->
12
+
13
+ # Эталонные фичи (reference features)
14
+
15
+ ## Stack notes
16
+
17
+ Перед реализацией найди фичу того же типа и **повтори её структуру**, не изобретая новую организацию файлов.
18
+
19
+ Taxonomy / shared core: [`presets/_shared/README.md`](../../../../_shared/README.md) · [Preset contribution guide](../../../../docs/PRESET-CONTRIBUTION.md).
20
+
21
+ ## Таблица эталонов
22
+
23
+ Замени **TBD** на реальные пути после договорённости в команде (или при `ai-rules init` в целевом репо):
24
+
25
+ | Слой | Эталон | Что копировать |
26
+ |------|--------|----------------|
27
+ | UI page | **TBD** `components/pages/<Example>/` | `components/`, `*.data.ts`, `styles.ts`, barrel |
28
+ | Store | **TBD** `stores/<example>.ts` | `defineStore`, actions, getters, types |
29
+ | API service | **TBD** `api/services/<example>/` | service, mappers, barrel |
30
+ | Types module | **TBD** `types/<example>/` | domain types, JSDoc, barrel export |
31
+ | Unit tests | **TBD** рядом с эталонным mapper/service | `*.spec.ts`, describe/it naming |
32
+ | E2E area | **TBD** `tests/e2e/<Area>/` | `*.cases.md`, page objects, `_shared/` |
33
+
34
+ ## Как использовать
35
+
36
+ 1. Определи затронутые слои из `decomposition.md` или задачи.
37
+ 2. Открой эталон из таблицы (после заполнения путей).
38
+ 3. Зеркаль именование, порядок файлов, паттерны импортов и тестов.
39
+ 4. Если эталона нет — выбери **самую близкую** существующую фичу того же слоя и зафиксируй выбор в handoff.
40
+
41
+ ## Living conventions
42
+
43
+ Post-init gotchas / patterns / decisions: **`.cursor/team/conventions.md`** (and the twin tool path if both Cursor and Claude are installed). Consumer-owned; not always-on. See root `AGENTS.md` § Living conventions.
44
+
45
+ ## Связанные правила
46
+
47
+ - `code-quality-and-refactoring.mdc` — повторять паттерны, не deep-import.
48
+ - `feature-delivery-workflow.mdc` — порядок слоёв.
49
+ - skill `feature-delivery` — end-to-end сценарий.
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Prefer script setup lang=ts and idiomatic Vue function style
3
+ globs: "**/*.{vue,ts}"
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Script setup conventions
8
+
9
+ - Prefer `<script setup lang="ts">` for pages/components/layouts.
10
+ - Named composables / helpers: follow repo naming (`useX`); export functions consistently with neighbors.
11
+ - Prefer `const fn = () =>` / concise handlers where the file already does; do not churn style across untouched files.
12
+ - Auto-imports (`#imports`) OK when Nuxt resolves them — do not invent symbols; verify against `.nuxt/` / docs (`vue-nuxt-anti-hallucination`).
13
+ - Keep business orchestration in composables/stores; keep SFC scripts thin.
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: Nuxt/Nitro security — runtimeConfig, SSR secrets, XSS, CSRF, server routes
3
+ globs: server/**/*,nuxt.config.*,pages/**/*,components/**/*,middleware/**/*
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Security (Nuxt)
8
+
9
+ ## Secrets & config
10
+
11
+ - Private secrets: `runtimeConfig` (server-only). Public: `runtimeConfig.public` only.
12
+ - Never ship API keys / tokens in client bundles, composables without guard, or `public` config.
13
+ - `.env` / `.env.*` — do not commit secrets; document required keys without values.
14
+
15
+ ## Server (Nitro)
16
+
17
+ - Validate/authorize in `server/api/**` and `server/middleware/**`.
18
+ - Do not trust client body/query; sanitize inputs.
19
+ - Prefer server proxies for third-party secrets rather than exposing keys to the browser.
20
+
21
+ ## XSS / templates
22
+
23
+ - Prefer text interpolation; avoid `v-html` unless sanitized and necessary.
24
+ - User-generated content — follow existing sanitize helpers in the repo.
25
+
26
+ ## Auth / CSRF / cookies
27
+
28
+ - Follow project auth middleware / session patterns; do not invent ad-hoc cookie auth.
29
+ - Cookie flags (`HttpOnly`, `Secure`, `SameSite`) — match security baseline of the repo.
30
+ - CSRF: use established Nuxt/server pattern already in the codebase when mutating state.
31
+
32
+ ## Agent requirement
33
+
34
+ When touching auth, forms, env, or `server/api`, load this rule and prefer agent `security-reviewer` for risky changes.
@@ -0,0 +1,68 @@
1
+ ---
2
+ description: Pinia stores и клиентское состояние приложения (Nuxt)
3
+ globs: stores/**/*.ts,stores/**/*.js
4
+ alwaysApply: false
5
+ impact: HIGH
6
+ ---
7
+
8
+ # Общие принципы
9
+
10
+ - Использовать **Pinia** (`defineStore`) — setup или options store, как у соседей в репо.
11
+ - Модуль: `@pinia/nuxt` (или установленный эквивалент) — проверить `package.json` / `nuxt.config`.
12
+ - В store хранить **доменные модели**, не сырые DTO из API.
13
+ - Маппинг DTO → domain — в `api/**` (или server mappers) **до** записи в store.
14
+ - Разделять серверное состояние (данные API) и локальное UI‑состояние (фильтры/флаги) — UI-only можно в composable/`ref` страницы, если так принято в репо.
15
+
16
+ # Запрещено в этом пресете
17
+
18
+ - RTK / Redux: `createSlice`, `createAsyncThunk`, RTK Query, `useDispatch` / `useSelector`, stem `store-rtk`.
19
+ - Сырой `$fetch` / `fetch` из store в обход `~/api` / `@/api` сервисов (кроме узких documented исключений репо).
20
+
21
+ # Структура
22
+
23
+ - Один доменный модуль — свой файл в `stores/**` (например `stores/profile.ts`).
24
+ - Экспорт: `useXStore` через `defineStore('x', …)`.
25
+ - State: явный тип; аккуратная инициализация.
26
+ - Getters — производные от domain state; actions вызывают сервисы из `~/api` / `@/api` (`public-imports`).
27
+
28
+ # Асинхронность
29
+
30
+ ```ts
31
+ // Incorrect — raw HTTP + DTO in state
32
+ export const useProfileStore = defineStore('profile', {
33
+ actions: {
34
+ async load() {
35
+ this.profile = await $fetch('/api/profile')
36
+ },
37
+ },
38
+ })
39
+
40
+ // Correct
41
+ import { profileApi } from '~/api'
42
+
43
+ export const useProfileStore = defineStore('profile', {
44
+ state: (): { profile: Profile | null } => ({ profile: null }),
45
+ actions: {
46
+ async load() {
47
+ this.profile = await profileApi.getProfile()
48
+ },
49
+ },
50
+ })
51
+ ```
52
+
53
+ # Типизация и ошибки
54
+
55
+ - Доменные типы из `~/types` / `@/types`.
56
+ - Ошибки транспорта — контракты из `@/types` / принятый класс ошибки клиента (`http-client`), не выдуманные axios shapes.
57
+ - В UI: `storeToRefs` для state; actions вызывать напрямую с store.
58
+
59
+ # Тестирование
60
+
61
+ - Покрывать важные stores (инициализация, переходы, actions с моком API).
62
+ - Unit: Vitest; мокать `~/api` сервисы.
63
+
64
+ # Требование к агенту
65
+
66
+ - Не класть HTTP/transport в компоненты.
67
+ - Строго типизировать state/actions.
68
+ - Следовать стилю соседних stores.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Роль агента для проведения технического ретроспективы (retro) команды / спринта. On-demand — предпочтительнее slash-команда /technical-retro.
3
+ alwaysApply: false
4
+ ---
5
+
6
+ <!-- shared-core: review/technical-retro.md -->
7
+
8
+ # Техническое ретро — rule alias
9
+
10
+ Полный сценарий (включая блок **«Работа агентов»** для slug из team tasks) — в slash-команде:
11
+
12
+ **`commands/technical-retro.md`** → `/technical-retro`
13
+
14
+ When a task has `metrics.json`, use the local aggregation script and state the cohort, sample size, incomplete artifacts, attribution confidence, active attempt duration, and human-gate wait separately. Do not score malformed artifacts or gate wait as agent work.
15
+
16
+ Используй rule только если command недоступен. Не дублируй содержимое command в ответе — следуй command-файлу и skill `technical-retro`.
@@ -0,0 +1,51 @@
1
+ ---
2
+ description: Структура e2e тестов и планов (Playwright)
3
+ globs: tests/e2e/**/*
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Структура e2e в проекте
8
+
9
+ - Папка e2e: `tests/e2e/**`.
10
+ - Планы сценариев:
11
+ - `*.cases.md` файлы — **канонический источник сценариев**.
12
+ - Тесты:
13
+ - `*.spec.ts` файлы — реализация сценариев на Playwright.
14
+ - Общие утилиты и абстракции:
15
+ - `tests/e2e/_shared/**` — константы, fluent‑интерфейсы, хелперы.
16
+
17
+ # Принципы
18
+
19
+ - Каждый сценарий из `*.cases.md` должен иметь соответствующий тест (или набор тестов).
20
+ - **Нельзя** ослаблять проверки в тестах, если это противоречит бизнес‑ожиданиям из планов.
21
+ - Предпочтительно использовать:
22
+ - page‑objects (например, `OrderHistoryPage.ts`);
23
+ - общие хелперы из `_shared`.
24
+
25
+ # Именование e2e‑тестов
26
+
27
+ - Язык:
28
+ - все названия `test` / `it`, `describe`‑блоков и шагов в `*.cases.md` должны быть сформулированы **на русском языке**, описывая поведение и ожидаемый результат.
29
+ - Формат заголовков e2e‑тестов (`test(...)` / `it(...)`):
30
+ - перед текстовым описанием сценария указывается **префикс с номером** в формате: `ПРЕФИКС-XXX Описание сценария`.
31
+ - `ПРЕФИКС` — аббревиатура из **первых букв слов** тестируемой сущности, записанная **латиницей в верхнем регистре**.
32
+ - пример: `OrderHistory` → `OH`, `BillingReport` → `BR`.
33
+ - `XXX` — порядковый номер теста **с тремя разрядами и лидирующими нулями**: `001`, `002`, `010`, `123` и т.д.
34
+ - пример полного названия e2e‑теста:
35
+ - `test('OH-001 Отображается список заказов', async ({ page }) => { ... })`
36
+ - внутри одной сущности (`ПРЕФИКС`) номера тестов должны образовывать **непротиворечивую последовательность**, без дубликатов номеров.
37
+
38
+ # data-testid для e2e
39
+
40
+ - **Приоритет селекторов:** `data-testid` для стабильных элементов; `getByRole` и `getByLabel` для форм и доступных элементов.
41
+ - **Именование:** схема `{parent}__{element}` (например, `history-page__title`, `history-page__recognition-banner__attach-files-button`).
42
+ - **Где добавлять:** на корневые контейнеры страниц и ключевые интерактивные элементы (кнопки, ссылки, поля), к которым обращаются page objects.
43
+ - **При изменении UI:** обновлять data-testid в компонентах и соответствующие селекторы в page objects; сверять с `*.cases.md`.
44
+
45
+ # Требование к агенту
46
+
47
+ При добавлении/изменении e2e‑тестов:
48
+ - Сначала смотреть соответствующий `*.cases.md` и синхронизировать названия сценариев.
49
+ - Размещать спеки рядом с планами в той же директории.
50
+ - Переиспользовать общие page‑objects и хелперы, а не копировать селекторы напрямую в каждый тест.
51
+
@@ -0,0 +1,78 @@
1
+ ---
2
+ description: Unit и интеграционные тесты (Testing Library и runner проекта)
3
+ globs:
4
+ - **/*.spec.{ts,tsx}
5
+ - **/*.test.{ts,tsx}
6
+ alwaysApply: false
7
+ impact: MEDIUM
8
+ ---
9
+
10
+ # Общие правила тестирования
11
+
12
+ - **Имена файлов:** для **новых** тестов использовать суффикс **`*.spec.ts` / `*.spec.ts`**. Существующие **`*.test.ts` / `*.test.tsx`** не переименовывать без отдельной задачи (легаси).
13
+ - **Runner и матчеры** — как в проекте (часто Jest или Vitest); для компонентов — **@vue/test-utils**.
14
+ - Основная цель тестов:
15
+ - проверять **поведение и бизнес‑правила**, а не реализацию или внутренние детали.
16
+ - **Именование unit‑тестов** (строки в `describe` / `it` / `test`):
17
+ - формулировки **только на русском языке** — понятные бизнес‑фразы (что проверяется и какой ожидается результат);
18
+ - **каждое предложение** в названии **начинается с заглавной буквы** (в том числе после `.`, `!`, `?` и при нескольких предложениях в одной строке); первая буква всей строки — тоже заглавная.
19
+ - **Проверка в CI:** ESLint (`jest/valid-title` в `eslint.config.mjs`) требует, чтобы строка начиналась с русской заглавной (А–Я, Ё), и запрещает пробел после точки, за которым сразу идёт строчная буква (типичный случай нарушения «с заглавной после точки»).
20
+
21
+ ```typescript
22
+ // ✅ Хорошо
23
+ it('Возвращает пустой список. Пользователь не авторизован', () => {})
24
+ it('При ошибке сети показывается сообщение об ошибке', () => {})
25
+
26
+ // ❌ Плохо (не с заглавной после точки; или не русский)
27
+ it('Возвращает пустой список. пользователь не авторизован', () => {})
28
+ it('Returns empty list when user is guest', () => {})
29
+ ```
30
+
31
+ # Тесты компонентов
32
+
33
+ - Использовать `render` из `@vue/test-utils`.
34
+ - Ассерты:
35
+ - матчеры DOM для Testing Library, как подключены в проекте (`toBeInTheDocument`, `toHaveTextContent` и т.п.).
36
+ - Взаимодействия:
37
+ - `userEvent` из `@testing-library/user-event`.
38
+
39
+ # Изоляция и моки
40
+
41
+ - Для работы с API/store:
42
+ - мокать store (через test‑store) или использовать принятый в проекте способ моков HTTP/API.
43
+ - Не мокать то, что является частью публичного контракта фичи, если это ломает смысл теста.
44
+
45
+ # HTTP‑клиент
46
+
47
+ - При изменении **реализации общего HTTP‑клиента** (разбор тел, заголовки, ветки ошибок, 401/refresh, `FormData`, `blob` и т.п.) — **обновить или добавить behavior‑тесты** рядом с модулем клиента в `lib/clients/**` (предпочтительно `*.spec.ts`; легаси `*.test.ts` — не трогать без задачи).
48
+ - Проверять смысловые ветки: успешный JSON, HTTP‑ошибка, сеть, релевантные для проекта сценарии авторизации.
49
+
50
+ # Мапперы и преобразование данных
51
+
52
+ - Функции маппинга данных (DTO -> доменная модель и обратно), особенно содержащие вычисляемые поля и ветвления, должны быть покрыты unit‑тестами.
53
+ - В тестах мапперов особое внимание уделять edge‑кейсам и регрессии бизнес‑правил (например, граничные значения, отсутствие полей, неожиданные комбинации значений).
54
+
55
+ # Требование к агенту
56
+
57
+ При добавлении тестов:
58
+ - Следовать существующей структуре и паттернам тестов в репозитории: файл `*.spec.ts(x)` рядом с модулем или в общем каталоге тестов — как в соседних фичах.
59
+ - Добавлять тесты для критичных веток логики и edge‑кейсов.
60
+ - При работе с данными:
61
+ - использовать **типы респонса** из API (DTO‑типы), а также **целевые доменные типы** из `@/types`, не дублировать интерфейсы в тестах;
62
+ - по возможности опираться на данные и обработчики из `mocks/**` (или аналог в репо), а не плодить случайные тестовые данные "с нуля".
63
+ - Размещение:
64
+ - для **компонентов UI** — **не создавать** поддиректорию `__tests__` внутри папки компонента; тест — соседний `*.spec.ts`.
65
+ - в **других модулях** (например `api/services`) допустима уже существующая схема с `__tests__` — не ломать ради единообразия с UI.
66
+ - **новые** файлы — `*.spec.ts` / `*.spec.ts` (см. блок «Имена файлов» выше).
67
+ ## Incorrect
68
+
69
+ ```ts
70
+ it('returns empty list when guest', () => {})
71
+ it('Возвращает пустой список. пользователь не авторизован', () => {})
72
+ ```
73
+
74
+ ## Correct
75
+
76
+ ```ts
77
+ it('Возвращает пустой список. Пользователь не авторизован', () => {})
78
+ ```
@@ -0,0 +1,42 @@
1
+ ---
2
+ description: Стиль JSDoc для доменных и транспортных типов в types
3
+ globs: types/**/*.ts
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Документация типов в `types`
8
+
9
+ При добавлении или существенном изменении типов в этом слое **следовать уже принятому в репозитории стилю JSDoc** (см. примеры: `User.types.ts`, `Common.types.ts`, `ServerValidation.types.ts`, `TreatmentPlan/*.types.ts`).
10
+
11
+ ## Язык и форма
12
+
13
+ - Текст комментариев — **на русском**, кратко и по делу: что означает тип или поле в предметной области или в контракте с API.
14
+ - **Не опираться** на теги в духе `@param`, `@returns`, `@see`, `@deprecated` для описания типов — в этом слое они **не используются**; достаточно обычного текста в `/** … */`.
15
+
16
+ ## Экспортируемый `type` / `interface`
17
+
18
+ - Сразу **перед объявлением** — блок `/** … */`.
19
+ - Если нужно пояснить источник данных, ограничения или неочевидности — **второй абзац** в том же блоке (в JSDoc для абзаца — пустая строка между строками текста).
20
+ - Для **вложенных** объектов в том же файле каждый такой тип документируется отдельным блоком над своим объявлением.
21
+
22
+ ## Поля
23
+
24
+ - У **каждого** публичного свойства — **однострочный** `/** … */` на строке непосредственно **над** полем.
25
+ - Если поле **не приходит с бэкенда «как есть»**, а вычисляется или дополняется на фронте (маппер, селектор, UI) — начать описание с префикса **`[computed]`** (как в `TUserProfile`, типах плана лечения).
26
+ - Для форматов данных указывать это **в тексте**: например дата `YYYY-MM-DD`, пример отображаемой строки в кавычках.
27
+
28
+ ## Классы и прочие объявления
29
+
30
+ - Для **классов** (например ошибки транспорта) при изменении публичного API — краткий блок над классом и **комментарии к публичным полям** по тем же правилам, что у свойств интерфейса.
31
+
32
+ ## `enum`
33
+
34
+ - В `enums.ts` исторически часто **без JSDoc** на каждом члене; для новых enum допустимо короткое описание **над самим enum**, если назначение неочевидно из имени. Подписи для UI — как принято, через объекты `*Names` рядом с enum.
35
+
36
+ ## Практика для агента
37
+
38
+ - Добавляя новый тип или поле, **не оставлять** новые публичные поля без пояснения, если смысл не равен имени на 100%.
39
+ - Правя файл, где уже есть такие комментарии, **поддерживать тот же стиль**, а не смешивать с англоязычными или «теговыми» блоками.
40
+ - Не раздувать комментарии: одна-две фразы на тип, одна строка на поле — норма; исключение — действительно сложная доменная оговорка.
41
+
42
+ См. также импорты и barrel: `public-imports.mdc`.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Accessibility coding standards for Vue/Nuxt UI
3
+ globs: components/**/*.{vue,ts},pages/**/*.{vue,ts},layouts/**/*.{vue,ts}
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Vue accessibility
8
+
9
+ - Semantic HTML first (`button`, `nav`, `main`, headings hierarchy).
10
+ - Interactive controls keyboard-reachable; visible focus.
11
+ - Images: meaningful `alt` (or empty alt for decorative).
12
+ - Forms: label association; error text linked via `aria-describedby` / native validation patterns used in repo.
13
+ - Prefer project a11y eslint (`eslint-plugin-vuejs-accessibility` when present) over inventing ARIA.
14
+ - Modals/dialogs: focus trap + Escape — follow existing component patterns.
15
+ - Do not rely on color alone for status.
@@ -0,0 +1,68 @@
1
+ ---
2
+ description: Vue/Nuxt/Pinia anti-hallucination banlist — phantom imports, deprecated APIs, store phantoms
3
+ globs: "**/*.{vue,ts,js},pages/**/*,components/**/*,composables/**/*,stores/**/*,server/**/*"
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Vue / Nuxt / Pinia anti-hallucination
8
+
9
+ These rows **OVERRIDE** generation for the listed patterns. Before inventing an import, composable, or store helper: verify against `package.json` (installed majors), `nuxt.config.*`, and sibling files. If unsure, mark `// VERIFY: lib.symbol @ version` and surface the uncertainty — do not silently stub.
10
+
11
+ Routing-specific rows stay in **`nuxt-pages-routing`**. This rule covers broader Vue / Nuxt / Pinia phantoms across the app tree.
12
+
13
+ ## 1. Phantom / wrong Nuxt imports
14
+
15
+ | ❌ Avoid | ✅ Prefer |
16
+ |---------|----------|
17
+ | `import { useRouter } from 'next/navigation'` / `next/router` | Nuxt auto-import `useRouter` / `useRoute` / `navigateTo` |
18
+ | `import Link from 'next/link'` / `<Link>` from Next | `<NuxtLink>` |
19
+ | `import Image from 'next/image'` | `<NuxtImg>` / project image helper (check `@nuxt/image`) |
20
+ | Invented: `nuxt/app/router`, `nuxt/server-only`, `nuxt/auth` | Real `#app` / `#imports` / documented Nuxt APIs for **installed** major |
21
+ | `defineNuxtConfig` options copied from blogs without checking major | Match installed Nuxt + existing `nuxt.config.*` |
22
+ | Pages Router Next APIs (`getServerSideProps`) in Nuxt | `useAsyncData` / `useFetch` / server routes / Pinia — mirror siblings |
23
+
24
+ ## 2. SSR / client boundary
25
+
26
+ | ❌ Avoid | ✅ Prefer |
27
+ |---------|----------|
28
+ | Reading secrets via `useRuntimeConfig().apiSecret` in client-only UI blindly | Private keys under `runtimeConfig` (server); public under `runtimeConfig.public` |
29
+ | Using `window` / `document` in setup without client guards | `onMounted`, `import.meta.client`, `<ClientOnly>` |
30
+ | Pinia stores that assume browser storage during SSR without pattern | Persist plugins / cookie patterns already in repo; guard client APIs |
31
+ | Importing Node-only modules into universal SFC setup | Keep in `server/**` or server-only utils |
32
+
33
+ ## 3. Vue patterns
34
+
35
+ | ❌ Avoid | ✅ Prefer |
36
+ |---------|----------|
37
+ | React hooks in Vue SFCs (`useState`/`useEffect` from `react`) | `ref` / `reactive` / `computed` / `watch` / lifecycle (`onMounted`, …) |
38
+ | `import { useEffectEvent } from 'vue'` (phantom) | Real Vue APIs for installed major; else local pattern + `VERIFY` |
39
+ | Options API churn in a `<script setup>` codebase | Follow neighbor SFCs (`script-setup-conventions`) |
40
+ | Phantom packages: `@vue/nonexistent`, invented `~/composables/useServerQuery` | Only lockfile packages + composables that exist |
41
+
42
+ ## 4. Pinia phantoms
43
+
44
+ | ❌ Avoid | ✅ Prefer |
45
+ |---------|----------|
46
+ | RTK APIs: `createSlice`, `createAsyncThunk`, `useDispatch` | `defineStore` + actions (`store-pinia`) |
47
+ | Invented helpers: `definePiniaApi`, `store.injectEndpoints` | Documented Pinia + patterns from existing `stores/**` |
48
+ | Deep imports breaking public API: `~/stores/foo/internal` | Public store module / naming used by siblings |
49
+ | Storing raw transport DTOs in state | Domain models from `~/types` after mapper in `api/**` |
50
+
51
+ ## 5. Navigation / data / fetch
52
+
53
+ | ❌ Avoid | ✅ Prefer |
54
+ |---------|----------|
55
+ | Raw `$fetch` / `fetch` from SFC bypassing `~/api` | Services via `~/api` / `@/api` (`api-services`, `http-client`) |
56
+ | Invented `useFetch` option names siblings never use | Copy from sibling; verify Nuxt data-fetching docs for installed major |
57
+ | Axios error shapes when the client is ofetch/`$fetch` | Transport errors from project types / ofetch patterns |
58
+ | Assuming `baseURL` without checking Nitro / runtimeConfig | Match `lib/clients` / existing client wrapper |
59
+
60
+ ## 6. Version drift / auto-imports
61
+
62
+ | ❌ Avoid | ✅ Prefer |
63
+ |---------|----------|
64
+ | Bleeding-edge Nuxt/Vue APIs without checking `package.json` | Confirm majors; copy a compiling sibling |
65
+ | Inventing `#imports` symbols that are not generated | Check `.nuxt/imports` / docs; explicit import if missing |
66
+ | Mixing Vue 2 Options-only APIs into Vue 3 Nuxt 3 apps | Vue 3 idioms used in repo |
67
+
68
+ When a row conflicts with a verified sibling pattern in this repo, **the sibling wins** — update this banlist in a preset PR rather than inventing a third path.
@@ -0,0 +1,33 @@
1
+ ---
2
+ description: Vue 3 SFC UI conventions for Nuxt (components, pages, layouts)
3
+ globs: components/**/*.{vue,ts},pages/**/*.{vue,ts},layouts/**/*.{vue,ts}
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Vue UI (Nuxt)
8
+
9
+ - Предпочитать **SFC** с `<script setup lang="ts">` (`script-setup-conventions`).
10
+ - Явные `defineProps` / `defineEmits` (typed); без массового `v-bind="object"` (`no-v-bind-spread`).
11
+ - Стили: scoped / CSS modules / design tokens — как у соседей; порядок свойств — `css-property-order-stylelint`.
12
+ - Данные: читать Pinia / composables; **не** вызывать HTTP из SFC — только через `~/api` / store actions.
13
+ - Навигация: `<NuxtLink>`, `navigateTo`, `useRouter` / `useRoute` — не `next/link` / `next/navigation`.
14
+ - A11y: `vue-a11y-coding`.
15
+ - Границы UI: `architecture-boundaries-ui` — no DTO in templates; map in `api/**`.
16
+
17
+ ## Incorrect
18
+
19
+ ```vue
20
+ <script setup lang="ts">
21
+ const data = await $fetch('/api/items')
22
+ </script>
23
+ ```
24
+
25
+ ## Correct
26
+
27
+ ```vue
28
+ <script setup lang="ts">
29
+ import { useItemsStore } from '~/stores/items'
30
+ const store = useItemsStore()
31
+ onMounted(() => { void store.load() })
32
+ </script>
33
+ ```
@@ -0,0 +1,17 @@
1
+ # `.cursor/skills` (preset nuxt)
2
+
3
+ Project skills for Cursor. They keep long workflows out of always-on rules while preserving the same team conventions as the Claude preset.
4
+
5
+ | Skill | When to use |
6
+ |-------|-------------|
7
+ | `feature-delivery` | End-to-end feature work across types, API, store, UI, tests |
8
+ | `code-review` | MR/diff review using project architecture and test standards |
9
+ | `debug-investigation` | Reproducing and fixing bugs with root-cause evidence |
10
+ | `ci-investigation` | Diagnosing and fixing failing CI checks on PRs/branches |
11
+ | `unit-testing` | Planning, generating, or healing unit test coverage |
12
+ | `playwright-e2e` | Planning, generating, or healing Playwright e2e coverage |
13
+ | `technical-retro` | Technical retrospective for a task, sprint, incident, or agent pipeline |
14
+ | `write-adr` | Author an Architecture Decision Record (context / decision / consequences) |
15
+ | `vue-performance` | Implementer checklist: bundle, SSR/payload/client, memo, waterfalls, CWV (not a perf audit agent) |
16
+
17
+ Skills are copied to `.cursor/skills/` by `ai-rules init cursor --preset nuxt`.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: ci-investigation
3
+ description: Investigates failing CI checks on PRs and branches — lint, typecheck, unit, e2e — with local reproduction and minimal fixes. Use when CI is red or for ci-fix pipeline tasks.
4
+ ---
5
+
6
+ # CI Investigation
7
+
8
+ ## Workflow
9
+
10
+ 1. Identify the **first failing check** (lint, typecheck, unit, e2e, build).
11
+ 2. Capture error output — ignore cascading failures until root cause is found.
12
+ 3. Reproduce locally with the same commands CI uses from repository root:
13
+ - `lint:js`, `lint:css`, `typecheck`
14
+ - targeted unit test file or suite
15
+ - affected Playwright spec if e2e failed
16
+ 4. Inspect git diff for changed files related to the failure.
17
+ 5. Apply **minimal fix** — no unrelated refactors.
18
+
19
+ ## Artifact
20
+
21
+ Write `ci-report.md` under the task slug folder:
22
+
23
+ - Failed check name and link/log excerpt
24
+ - Root cause classification
25
+ - Fix applied (or handoff to feature-developer)
26
+ - Validation commands and results
27
+
28
+ ## Handoff Rules
29
+
30
+ - Config-only or one-line fixes → fix in place, re-run check.
31
+ - Missing tests or architecture work → document and route to `feature-developer` or `qa-tester`.
32
+ - Flaky e2e → prefer `playwright-test-healer` after ci-investigator identifies the spec.
33
+
34
+ ## Validation
35
+
36
+ Always re-run the failing command locally before marking complete. If environment blocks execution, state the exact command and blocker.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: code-review
3
+ description: Reviews pull requests, merge requests, git diffs, and branch changes using the preset's architecture, import, UI, API, and testing standards. Use when the user asks for review or when code-reviewer runs in an agent pipeline.
4
+ ---
5
+
6
+ # Code Review
7
+
8
+ ## Inputs
9
+
10
+ Use the local repository as the source of truth: `git status`, `git diff`, task artifacts under `.cursor/team/tasks/<slug>/` when present, and opened files. Do not invent hosting metadata such as labels, CI status, or reviewers.
11
+
12
+ ## Review Order
13
+
14
+ 1. Understand the intent and affected layers.
15
+ 2. Check correctness and regressions first.
16
+ 3. Verify architecture boundaries: UI does not know DTO/transport, store does not depend on UI, API services do not pull UI/store.
17
+ 4. Check public imports through `@/types` and `@/api`, plus barrel updates for new public symbols.
18
+ 5. Review UI consistency, styling conventions, and prop shape.
19
+ 6. Check tests: unit for mapper/domain logic, behavior tests for HTTP client changes, e2e plan/spec updates for user flows.
20
+ 7. **Reuse lens:** flag new helpers that duplicate existing utilities; prefer adjacent shared modules over copy-paste.
21
+ 8. **Efficiency lens:** unnecessary work, sequential ops that should be parallel, hot-path bloat, no-op store updates, overly broad reads.
22
+ 9. Report validation gaps: lint, stylelint, typecheck, or relevant tests not run.
23
+
24
+ ## Output
25
+
26
+ Lead with findings ordered by severity. Required shape (also in `code-review-mr`):
27
+
28
+ - Each finding: **`path:line`** — problem — impact — concrete fix direction.
29
+ - Severity: **`blocker` | `important` | `nit`** (list blocker → nit).
30
+ - Vague («looks risky») is not a finding — cite evidence or ask for surrounding context.
31
+ - End with a verdict line: **`Safe to merge | needs changes | reject`**.
32
+ - If there are no findings, say so and call out remaining test or validation risk.
33
+
34
+ For agent team tasks, write `.cursor/team/tasks/<slug>/review.md` and set `status.json` to `completed` or `changes_requested`.
35
+
36
+ ## Design guidance
37
+
38
+ - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: debug-investigation
3
+ description: Investigates bugs, failing tests, crashes, and incorrect behavior with runtime evidence before applying minimal fixes. Use for bugfix tasks, debugger agent runs, regressions, and flaky test diagnosis.
4
+ ---
5
+
6
+ # Debug Investigation
7
+
8
+ ## Process
9
+
10
+ 1. Reproduce the issue or collect the closest available evidence: error output, failing test, browser snapshot, logs, or user steps.
11
+ 2. Define expected vs actual behavior in one sentence.
12
+ 3. Trace the failing path through the smallest relevant slice of the codebase.
13
+ 4. Identify the root cause before editing. Avoid broad refactors during bugfixes.
14
+ 5. Apply the smallest fix that preserves existing architecture and public contracts.
15
+ 6. Add or update a regression test when the behavior is user-facing or likely to recur.
16
+ 7. Run the narrow failing check first, then relevant lint/type/test validation.
17
+
18
+ ## Artifacts
19
+
20
+ For agent team tasks, write `.cursor/team/tasks/<slug>/debug-report.md` with:
21
+
22
+ - Reproduction steps or evidence source.
23
+ - Root cause.
24
+ - Fix scope.
25
+ - Regression coverage.
26
+ - Remaining risk.
27
+
28
+ Update `status.json` when complete.
29
+
30
+ ## Design guidance
31
+
32
+ - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: feature-delivery
3
+ description: Delivers Nuxt 3 frontend features end-to-end across domain types, API services, store, UI, mocks, tests, and validation. Use when implementing or extending a feature, especially through /task or feature-developer.
4
+ ---
5
+
6
+ # Feature Delivery
7
+
8
+ 1. Read task brief, acceptance criteria, and decomposition if present.
9
+ 2. Read **`feature-delivery-workflow.mdc`** and **`reference-features.mdc`** — follow layer order and mirror closest reference feature.
10
+ 3. Add or update focused tests for changed behavior.
11
+ 4. Validation from repository root: **invoke** **`post-change-lint.mdc`** after code edits (requestable, not always-on — but mandatory when code changed). Pipeline: scoped lint OK if next step is `build-verifier`.
12
+
13
+ ## Scope discipline
14
+
15
+ Implement only the current AC / decomposition task. Clarify ambiguity before coding; do not add unrelated hardening, polish, or refactors. See `feature-developer` → **Zero improvisation**.
16
+
17
+ ## Handoff
18
+
19
+ Summarize by layer, validation results, and known gaps. Agent team: update `.cursor/team/tasks/<slug>/status.json`.
20
+
21
+ ## Design guidance
22
+
23
+ - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
24
+
25
+ ## Anti-hallucination
26
+
27
+ - When editing app TS/TSX, load `vue-nuxt-anti-hallucination` (phantom Next/React/RTK imports).
28
+
29
+
30
+ ## Stack notes (Nuxt)
31
+
32
+ - Layers: pages/components → composables → stores (Pinia) → api → http; server/api Nitro.
33
+ - Anti-hallucination: `vue-nuxt-anti-hallucination`.
34
+ - Scripts cwd: repository root; gates: `lint:js`, `lint:css`, `typecheck`.