@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,78 @@
1
+ ---
2
+ description: Playwright Agents (planner/generator/healer) configuration for e2e structure in tests/e2e
3
+ paths: tests/e2e/**/*
4
+ ---
5
+ # Playwright Agents in this project
6
+
7
+ In this repository, Playwright Agents (planner, generator, healer) **must follow the existing e2e structure**:
8
+
9
+ - **Test directory**: `tests/e2e`
10
+ - **Test plans (specs)**: `*.cases.md` files under `tests/e2e/**`
11
+ - **Executable tests**: `*.spec.ts` files under `tests/e2e/**`
12
+ - **Seed test**: `tests/e2e/seed.spec.ts`
13
+
14
+ Do **not** introduce separate top-level `specs/` and `tests/` folders for real test coverage. Those may be used only as temporary sandboxes if explicitly requested.
15
+
16
+ ## Planner (test plans)
17
+
18
+ When acting as a **Planner** (or working with the Playwright planner agent):
19
+
20
+ - **Treat `*.cases.md` as the canonical test plan files**, equivalent to Playwright's `specs/*.md`.
21
+ - **Location**:
22
+ - For a feature/domain, use the corresponding `*.cases.md` file under `tests/e2e`, e.g.:
23
+ - `tests/e2e/OrderHistory/order-history.cases.md`
24
+ - `tests/e2e/BillingReport/invoice-list.cases.md`
25
+ - **Content requirements**:
26
+ - Group scenarios by feature and subfeature using headings.
27
+ - For each scenario include:
28
+ - clear title,
29
+ - preconditions,
30
+ - ordered steps,
31
+ - expected results.
32
+ - Write in concise business language, but precise enough for automatic test generation.
33
+ - **Seed**:
34
+ - Assume environment is prepared by `tests/e2e/seed.spec.ts` (login, baseURL, mocks, etc.).
35
+
36
+ When asked to "generate a test plan" for a feature, **create or update the appropriate `*.cases.md` file in `tests/e2e/**`**, not in a separate `specs/` folder.
37
+
38
+ ## Generator (tests from plans)
39
+
40
+ When acting as a **Generator** (or working with the Playwright generator agent):
41
+
42
+ - **Source of truth for scenarios**:
43
+ - Use the relevant `*.cases.md` file under `tests/e2e/**` as the test plan.
44
+ - **Target for tests**:
45
+ - Generate or update `*.spec.ts` files under the same folder, e.g.:
46
+ - plan: `tests/e2e/OrderHistory/order-history.cases.md`
47
+ - tests: `tests/e2e/OrderHistory/order-history.spec.ts` (or additional `*.spec.ts` in that folder if needed).
48
+ - **Structure**:
49
+ - Use `test.describe` to group by top-level plan sections (feature / user flow).
50
+ - Use `test(...)` titles that match scenario names from the plan.
51
+ - Prefer Page Object and fluent interfaces that already exist in this project, for example:
52
+ - `tests/e2e/OrderHistory/OrderHistoryPage.ts`
53
+ - shared helpers under `tests/e2e/_shared/`.
54
+ - **Seed**:
55
+ - If a seed test is needed, use `tests/e2e/seed.spec.ts` as the reference for environment setup.
56
+
57
+ Do **not** generate Playwright tests into a separate `tests/` folder by default. Keep all e2e tests under `tests/e2e/**` to respect project conventions.
58
+
59
+ ## Healer (fixing tests)
60
+
61
+ When acting as a **Healer** (or working with the Playwright healer agent):
62
+
63
+ - Operate only on `*.spec.ts` files under `tests/e2e/**`.
64
+ - Use `*.cases.md` in the same folder as **documentation of the intended behavior**:
65
+ - Do not weaken or change business assertions in tests in a way that conflicts with the corresponding `*.cases.md`.
66
+ - Prefer updating locators, waits, and flow details to match the UI while keeping the scenario semantics intact.
67
+ - When multiple specs are involved, prioritize:
68
+ - the spec file in the same folder as the failing test,
69
+ - then shared utilities in `tests/e2e/_shared/`.
70
+
71
+ Healer should keep tests aligned with the existing test plans (`*.cases.md`) and with the page objects and helpers already used in the project.
72
+
73
+
74
+ ## Stack notes (Nuxt)
75
+
76
+ - E2E root: `tests/e2e/`.
77
+ - Default baseURL: `http://localhost:3000`.
78
+ - Prefer Playwright `webServer` → `nuxt dev` or `nuxt build && nuxt preview`.
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: Структура e2e тестов и планов (Playwright)
3
+ paths: tests/e2e/**/*
4
+ ---
5
+ # Структура e2e в проекте
6
+
7
+ - Папка e2e: `tests/e2e/**`.
8
+ - Планы сценариев:
9
+ - `*.cases.md` файлы — **канонический источник сценариев**.
10
+ - Тесты:
11
+ - `*.spec.ts` файлы — реализация сценариев на Playwright.
12
+ - Общие утилиты и абстракции:
13
+ - `tests/e2e/_shared/**` — константы, fluent‑интерфейсы, хелперы.
14
+
15
+ # Принципы
16
+
17
+ - Каждый сценарий из `*.cases.md` должен иметь соответствующий тест (или набор тестов).
18
+ - **Нельзя** ослаблять проверки в тестах, если это противоречит бизнес‑ожиданиям из планов.
19
+ - Предпочтительно использовать:
20
+ - page‑objects (например, `OrderHistoryPage.ts`);
21
+ - общие хелперы из `_shared`.
22
+
23
+ # Именование e2e‑тестов
24
+
25
+ - Язык:
26
+ - все названия `test` / `it`, `describe`‑блоков и шагов в `*.cases.md` должны быть сформулированы **на русском языке**, описывая поведение и ожидаемый результат.
27
+ - Формат заголовков e2e‑тестов (`test(...)` / `it(...)`):
28
+ - перед текстовым описанием сценария указывается **префикс с номером** в формате: `ПРЕФИКС-XXX Описание сценария`.
29
+ - `ПРЕФИКС` — аббревиатура из **первых букв слов** тестируемой сущности, записанная **латиницей в верхнем регистре**.
30
+ - пример: `OrderHistory` → `OH`, `BillingReport` → `BR`.
31
+ - `XXX` — порядковый номер теста **с тремя разрядами и лидирующими нулями**: `001`, `002`, `010`, `123` и т.д.
32
+ - пример полного названия e2e‑теста:
33
+ - `test('OH-001 Отображается список заказов', async ({ page }) => { ... })`
34
+ - внутри одной сущности (`ПРЕФИКС`) номера тестов должны образовывать **непротиворечивую последовательность**, без дубликатов номеров.
35
+
36
+ # data-testid для e2e
37
+
38
+ - **Приоритет селекторов:** `data-testid` для стабильных элементов; `getByRole` и `getByLabel` для форм и доступных элементов.
39
+ - **Именование:** схема `{parent}__{element}` (например, `history-page__title`, `history-page__recognition-banner__attach-files-button`).
40
+ - **Где добавлять:** на корневые контейнеры страниц и ключевые интерактивные элементы (кнопки, ссылки, поля), к которым обращаются page objects.
41
+ - **При изменении UI:** обновлять data-testid в компонентах и соответствующие селекторы в page objects; сверять с `*.cases.md`.
42
+
43
+ # Требование к агенту
44
+
45
+ При добавлении/изменении e2e‑тестов:
46
+ - Сначала смотреть соответствующий `*.cases.md` и синхронизировать названия сценариев.
47
+ - Размещать спеки рядом с планами в той же директории.
48
+ - Переиспользовать общие page‑objects и хелперы, а не копировать селекторы напрямую в каждый тест.
49
+
@@ -0,0 +1,75 @@
1
+ ---
2
+ description: Unit и интеграционные тесты (Testing Library и runner проекта)
3
+ paths:
4
+ - "**/*.spec.{ts,tsx}"
5
+ - "**/*.test.{ts,tsx}"
6
+ ---
7
+ # Общие правила тестирования
8
+
9
+ - **Имена файлов:** для **новых** тестов использовать суффикс **`*.spec.ts` / `*.spec.ts`**. Существующие **`*.test.ts` / `*.test.tsx`** не переименовывать без отдельной задачи (легаси).
10
+ - **Runner и матчеры** — как в проекте (часто Jest или Vitest); для компонентов — **@vue/test-utils**.
11
+ - Основная цель тестов:
12
+ - проверять **поведение и бизнес‑правила**, а не реализацию или внутренние детали.
13
+ - **Именование unit‑тестов** (строки в `describe` / `it` / `test`):
14
+ - формулировки **только на русском языке** — понятные бизнес‑фразы (что проверяется и какой ожидается результат);
15
+ - **каждое предложение** в названии **начинается с заглавной буквы** (в том числе после `.`, `!`, `?` и при нескольких предложениях в одной строке); первая буква всей строки — тоже заглавная.
16
+ - **Проверка в CI:** ESLint (`jest/valid-title` в `eslint.config.mjs`) требует, чтобы строка начиналась с русской заглавной (А–Я, Ё), и запрещает пробел после точки, за которым сразу идёт строчная буква (типичный случай нарушения «с заглавной после точки»).
17
+
18
+ ```typescript
19
+ // ✅ Хорошо
20
+ it('Возвращает пустой список. Пользователь не авторизован', () => {})
21
+ it('При ошибке сети показывается сообщение об ошибке', () => {})
22
+
23
+ // ❌ Плохо (не с заглавной после точки; или не русский)
24
+ it('Возвращает пустой список. пользователь не авторизован', () => {})
25
+ it('Returns empty list when user is guest', () => {})
26
+ ```
27
+
28
+ # Тесты компонентов
29
+
30
+ - Использовать `render` из `@vue/test-utils`.
31
+ - Ассерты:
32
+ - матчеры DOM для Testing Library, как подключены в проекте (`toBeInTheDocument`, `toHaveTextContent` и т.п.).
33
+ - Взаимодействия:
34
+ - `userEvent` из `@testing-library/user-event`.
35
+
36
+ # Изоляция и моки
37
+
38
+ - Для работы с API/store:
39
+ - мокать store (через test‑store) или использовать принятый в проекте способ моков HTTP/API.
40
+ - Не мокать то, что является частью публичного контракта фичи, если это ломает смысл теста.
41
+
42
+ # HTTP‑клиент
43
+
44
+ - При изменении **реализации общего HTTP‑клиента** (разбор тел, заголовки, ветки ошибок, 401/refresh, `FormData`, `blob` и т.п.) — **обновить или добавить behavior‑тесты** рядом с модулем клиента в `lib/clients/**` (предпочтительно `*.spec.ts`; легаси `*.test.ts` — не трогать без задачи).
45
+ - Проверять смысловые ветки: успешный JSON, HTTP‑ошибка, сеть, релевантные для проекта сценарии авторизации.
46
+
47
+ # Мапперы и преобразование данных
48
+
49
+ - Функции маппинга данных (DTO -> доменная модель и обратно), особенно содержащие вычисляемые поля и ветвления, должны быть покрыты unit‑тестами.
50
+ - В тестах мапперов особое внимание уделять edge‑кейсам и регрессии бизнес‑правил (например, граничные значения, отсутствие полей, неожиданные комбинации значений).
51
+
52
+ # Требование к агенту
53
+
54
+ При добавлении тестов:
55
+ - Следовать существующей структуре и паттернам тестов в репозитории: файл `*.spec.ts(x)` рядом с модулем или в общем каталоге тестов — как в соседних фичах.
56
+ - Добавлять тесты для критичных веток логики и edge‑кейсов.
57
+ - При работе с данными:
58
+ - использовать **типы респонса** из API (DTO‑типы), а также **целевые доменные типы** из `@/types`, не дублировать интерфейсы в тестах;
59
+ - по возможности опираться на данные и обработчики из `mocks/**` (или аналог в репо), а не плодить случайные тестовые данные "с нуля".
60
+ - Размещение:
61
+ - для **компонентов UI** — **не создавать** поддиректорию `__tests__` внутри папки компонента; тест — соседний `*.spec.ts`.
62
+ - в **других модулях** (например `api/services`) допустима уже существующая схема с `__tests__` — не ломать ради единообразия с UI.
63
+ - **новые** файлы — `*.spec.ts` / `*.spec.ts` (см. блок «Имена файлов» выше).
64
+ ## Incorrect
65
+
66
+ ```ts
67
+ it('returns empty list when guest', () => {})
68
+ it('Возвращает пустой список. пользователь не авторизован', () => {})
69
+ ```
70
+
71
+ ## Correct
72
+
73
+ ```ts
74
+ it('Возвращает пустой список. Пользователь не авторизован', () => {})
75
+ ```
@@ -0,0 +1,15 @@
1
+ # Tooling and review
2
+
3
+ Lint, package manager, качество кода, agent team, code review MR.
4
+
5
+ | Файл | Содержание | Загрузка |
6
+ |------|------------|----------|
7
+ | `package-manager.md` | yarn / pnpm / npm / bun — определить по lockfile | session start |
8
+ | `post-change-lint.md` | `lint:js` + `lint:css` после изменений (**обязателен** при code edits) | `paths:` commands/team/agents + `app/**` |
9
+ | `code-quality.md` | Boy scout rule, рефакторинг, ESLint | session start |
10
+ | `agent-team-intake.md` | Когда предлагать `/task` и router pipeline | `paths:` commands/team |
11
+ | `agent-team-orchestrator.md` | Dynamic agent team: router, pipeline, gates | `paths:` commands/team/agents |
12
+ | `code-review-mr.md` | Чеклист ревью merge request + output contract | `paths:` review-related |
13
+ | `security-nuxt.md` | Secrets, auth, XSS, Server Actions (coding-time) | `paths:` app/auth/env |
14
+
15
+ On-demand (не rule): **`commands/technical-retro.md`** (фасилитация ретро).
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Use when user posts a work request without /task — suggest or use /task to run the agent team router. Lightweight intake hint only.
3
+ paths: .claude/team/**
4
+ ---
5
+ <!-- shared-core: agent-team/agent-team-intake.md -->
6
+
7
+ # Agent team intake
8
+
9
+ When the user message looks like a **work request** (implement, add, fix, refactor, review MR, write tests, spike) — not a question about how code works:
10
+
11
+ 1. Prefer **`/task <their request>`** or invoke **task-router** first.
12
+ 2. Do not jump straight to coding without router + pipeline when scope is non-trivial.
13
+ 3. Pure questions («как работает X», «объясни») — prefer agent **`codebase-analyzer`** (explain-as-is); trivial one-liners may be answered inline. Do not open `/task`.
14
+
15
+ Exceptions: user explicitly says «без pipeline», «просто сделай», or continues an active slug.
@@ -0,0 +1,191 @@
1
+ ---
2
+ description: Orchestrates the agent team via task-router and pipeline.json. Use for /task, /task-continue, /feature-start, task decomposition, or when the user describes a feature, bug, or review request.
3
+ paths: .claude/team/**
4
+ ---
5
+ <!-- shared-core: agent-team/agent-team-orchestrator.md -->
6
+
7
+ # Agent team orchestrator
8
+
9
+ Parent agent = **manager**. Router plans; specialists execute. Artifacts: `.cursor/team/tasks/<slug>/`.
10
+
11
+ Work request без `/task` — см. **`agent-team-intake.mdc`** (когда предлагать router вместо прямого кодинга).
12
+
13
+ ## Entry points
14
+
15
+ | Command | When |
16
+ |---------|------|
17
+ | **`/task <desc>`** | **Preferred** — router → dynamic pipeline → first agent |
18
+ | `/task-continue <slug>` | After human gate or pause |
19
+ | `/feature-start <desc>` | Legacy: analyst-only start (no router) |
20
+ | `/feature-continue <slug>` | Alias of task-continue |
21
+ | `/technical-retro [slug]` | Retro with agent team block |
22
+
23
+ ## Stack notes
24
+
25
+ ### Roles
26
+
27
+ | Agent | App / prod writes | Typical intent |
28
+ |-------|-------------------|----------------|
29
+ | `task-router` | no (team only) | Every `/task` — writes `pipeline.json` |
30
+ | `task-analyst` | no (team only) | feature, refactor, test-only, a11y, docs-only, migration |
31
+ | `solution-architect` | no (team only) | spike, complex cross-layer feature |
32
+ | `migration-specialist` | no (team only) | migration — phased upgrade plan |
33
+ | `api-contract-reviewer` | no (team only) | new/changed backend API contracts |
34
+ | `debugger` | minimal fix | bugfix |
35
+ | `ci-investigator` | minimal CI fix | ci-fix — minimal CI repair |
36
+ | `feature-developer` | yes | feature, bugfix, refactor, migration, a11y |
37
+ | `build-verifier` | no (team only) | lint/typecheck/unit gate after developer; preset-structure when editing presets |
38
+ | `accessibility-reviewer` | no (team only) | a11y, UI-heavy feature |
39
+ | `performance-auditor` | no (team only) | perf-audit, perf-sensitive feature |
40
+ | `code-reviewer` | no (team only) | most pipelines, review-only |
41
+ | `security-reviewer` | no (team only) | auth, forms, sensitive data |
42
+ | `qa-tester` | tests only | feature, bugfix, test-only |
43
+ | `unit-test-planner` | no (team only) | unit-only — coverage plan |
44
+ | `unit-test-generator` | tests only | unit-only — spec generation |
45
+ | `unit-test-healer` | tests only | failing/flaky unit tests |
46
+ | `playwright-test-planner` | e2e plans | e2e scenario planning |
47
+ | `playwright-test-generator` | e2e tests | e2e spec generation |
48
+ | `playwright-test-healer` | e2e fixes | failing/flaky e2e fixes |
49
+ | `tech-writer` | docs / team | docs-only, feature/migration docs |
50
+
51
+ **Cursor frontmatter:** all team pipeline agents use `readonly: false` so they can write `.cursor/team/**`. Production/app restrictions live in the agent prompt body — do **not** set `readonly: true` (Cursor blocks *all* file writes, including team artifacts).
52
+
53
+ Full prompts: `.cursor/agents/*.md`. Artifact conventions: `.cursor/team/README.md`; schema SoT: **agent-artifact-contracts**.
54
+
55
+ When editing `packages/ai-rules/presets/**`, follow **`preset-pr-checklist.mdc`** (+ twin-sync / layering / token-budget / leakage meta-rules).
56
+
57
+ ## Dynamic pipeline
58
+
59
+ ```mermaid
60
+ flowchart TD
61
+ task["/task prompt"]
62
+ router["task-router"]
63
+ pipeline["pipeline.json"]
64
+ step0["steps 0..N"]
65
+ gate{"humanGates?"}
66
+ hook["subagentStop hook"]
67
+ retro["/technical-retro"]
68
+
69
+ task --> router
70
+ router --> pipeline
71
+ pipeline --> step0
72
+ step0 --> gate
73
+ gate -->|"/task-continue"| step0
74
+ step0 --> hook
75
+ hook --> step0
76
+ step0 --> retro
77
+ ```
78
+
79
+ **Source of truth for order:** `pipeline.json` → `steps[]`. Never hardcode analyst → dev → review → QA when `pipeline.json` exists.
80
+
81
+ New pipelines retain top-level `profile` and include `routingDecision` with `complexity`, `riskFlags`, non-empty `routingReasons`, `estimatedWorkPackages`, and `openDecisionCount`. The stack `task-router` owns heuristics; this metadata is auditable evidence and does not change hook semantics.
82
+
83
+ ## Metrics lifecycle
84
+
85
+ Use the local `metrics.json` ledger described by **agent-task-metrics**: the orchestration runtime initializes attempts before invocation, hooks record host-clock ends, and agents never guess a parallel completion from `currentAgent`.
86
+
87
+ ## Artifact context index and receipts
88
+
89
+ Each slug has one `artifact-manifest.json`: `.cursor/team/tasks/<slug>/` or `.claude/team/tasks/<slug>/`. Schema SoT: **agent-artifact-contracts**.
90
+
91
+ - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
92
+ - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
93
+ - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
94
+ - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite state, gate, retry, attempt, timestamp, or metrics fields.
95
+ - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
96
+
97
+ ## status.json (pipeline mode)
98
+
99
+ ```json
100
+ {
101
+ "slug": "...",
102
+ "intent": "feature",
103
+ "pipelineIndex": 0,
104
+ "currentAgent": "task-analyst",
105
+ "phase": "executing",
106
+ "state": "in_progress",
107
+ "awaitingHumanGate": false,
108
+ "activeAttempts": {},
109
+ "lastCompletedAttempt": null,
110
+ "parallelCompleted": [],
111
+ "parallelOutcomes": {}
112
+ }
113
+ ```
114
+
115
+ | Field | Meaning |
116
+ |-------|---------|
117
+ | `activeAttempts` | Transient timing bridge keyed by `attemptId` |
118
+ | `lastCompletedAttempt` | Diagnostic pointer to the latest finished attempt |
119
+ | `parallelCompleted` | Agents that have stopped in the current parallel step |
120
+ | `parallelOutcomes` | Per-agent `{ outcome, attemptId, confidence }` for the current parallel join; cleared when the step advances or retries |
121
+
122
+ On each `subagentStop`, the hook reconciles `status.state` from the completing producer's terminal `artifact-manifest.json` receipt when agents left lifecycle fields untouched. Wait for that handoff before invoking the next step.
123
+
124
+ | state | Meaning |
125
+ |-------|---------|
126
+ | `in_progress` | Current step running |
127
+ | `completed` | Current step done; hook advances |
128
+ | `awaiting_approval` | Human gate; wait for `/task-continue` |
129
+ | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
130
+ | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
131
+
132
+ ## Pipeline step options
133
+
134
+ | Field | Use |
135
+ |-------|-----|
136
+ | `skipIf` | `debugger.fixed` / `ci-investigator.resolved` — hook skips step when artifact says fix applied |
137
+ | `parallel: true` | `agent` is array — invoke **all** agents in one parent turn; each appends to `parallelCompleted` |
138
+ | `scope` | e.g. `unit-in-dev`, `e2e-only` — passed to developer/qa |
139
+ | `model` | `cheap` \| `standard` \| `strong` — optional tier override (see below) |
140
+
141
+ ## Rules (strict)
142
+
143
+ 1. **`/task` always starts with task-router** (except user says "skip router" with documented pipeline).
144
+ 2. Read `pipeline.json` before every subagent invocation.
145
+ 3. One role per Task call — **except** parallel steps: multiple Task calls in one message.
146
+ 4. **Never** skip `humanGates` without `/task-continue` or explicit user approval.
147
+ 5. Persist handoffs to disk and update the producer-owned terminal receipt in `artifact-manifest.json`; Markdown remains detailed evidence.
148
+ 6. On `changes_requested` from reviewers: hook sets `retryAfterFix` → developer → same reviewer.
149
+ 7. On `validation_failed` from `build-verifier`: hook sets `retryAfterFix: build-verifier` → developer → build-verifier.
150
+ 8. When all steps complete, suggest `/technical-retro <slug>`.
151
+ 9. If `autoChain: false` in pipeline, do not rely on hook — manual step only.
152
+
153
+ ## Team artifact I/O (Cursor Shell sandbox)
154
+
155
+ - Create/update `.cursor/team/tasks/<slug>/**` with the **Write** tool (parents are created automatically). Do **not** bootstrap slug dirs with Shell `mkdir -p` — default sandbox returns `Operation not permitted` (worse on macOS Desktop/Documents with TCC `com.apple.macl`).
156
+ - If Shell must touch team paths and fails with EPERM, retry with `required_permissions: ["all"]`. Prefer Write for artifacts.
157
+ - Prefer repo under `~/Projects` / `WebstormProjects` over `~/Desktop` when using agent team heavily.
158
+
159
+ ## Invoking agents
160
+
161
+ Use Task tool or `/agent-name`. Pass: slug, artifact paths, step `scope` if set.
162
+
163
+ ### Model when invoking (Task)
164
+
165
+ 1. Read `steps[i].model` if present; else use the agent’s frontmatter `model` (see `agents/README.md` matrix).
166
+ 2. Map abstract tiers:
167
+ - **`cheap`** → pass Task `model: "fast"` when the tool accepts it (or rely on agent `fast`).
168
+ - **`standard`** → omit Task `model` (frontmatter `inherit` / mid default).
169
+ - **`strong`** → **never** pass `fast`; rely on agent pin (`claude-opus-4-8[effort=high]`) or parent Max model. If Task allows an explicit model ID from the allowed list, prefer the strong agent’s frontmatter ID.
170
+ 3. Parallel steps: apply the step-level `model` to **each** agent in the array (or omit → each agent’s own frontmatter).
171
+
172
+ After each agent completes, verify its terminal manifest receipt, then let the orchestration runtime/hook reconcile `status.json` (`completed`, a blocking outcome, or `awaiting_approval`) from that receipt. Do not ask the agent to mutate shared lifecycle fields, and do not invoke the next specialist until the hook has written the handoff / updated `status.json`.
173
+
174
+ ## Legacy mode
175
+
176
+ If `pipeline.json` is missing (old `/feature-start` tasks), fall back to fixed phases: analysis → development → review → testing. Hook supports both.
177
+
178
+ ## Skip pipeline when
179
+
180
+ Do **not** run `/task` + router for:
181
+
182
+ - Pure questions («как работает X», «объясни») — prefer agent **`codebase-analyzer`** for deep traces; inline OK for trivial one-liners.
183
+ - Typo / one-file fix / trivial config with no architecture risk.
184
+ - User explicitly says «без pipeline», «просто сделай», or continues an active slug.
185
+ - Single-line `docs-only` with no code impact.
186
+
187
+ Borderline work requests — см. **`agent-team-intake.mdc`**.
188
+
189
+ ## Auto-detection (optional)
190
+
191
+ When user describes a **non-trivial task** (not a question), suggest `/task <message>` or run router if they agree.
@@ -0,0 +1,33 @@
1
+ ---
2
+ description: Anti-sycophancy discipline for code generation and review — VERIFY, failure modes, UNTESTED, honest status. Load when writing or changing code.
3
+ paths:
4
+ - pages/**/*
5
+ - components/**/*
6
+ - stores/**/*
7
+ - api/**/*
8
+ - composables/**/*
9
+ - types/**/*
10
+ ---
11
+ <!-- shared-core: quality/anti-sycophancy-discipline.md -->
12
+
13
+ # Anti-sycophancy discipline (requestable)
14
+
15
+ Procedural rules for code generation and review. Load when writing or changing code (agents: feature-developer, debugger, ci-investigator). Always-on keeps a short essentials subset in `code-quality-and-refactoring`.
16
+
17
+ 1. **Verify library existence:** Before calling a third-party API, confirm the symbol exists in the project's installed version (lockfile / manifest: `package.json`, `go.mod`, `Podfile.lock`, `pom.xml`, `Cargo.toml`, or equivalent). If you cannot verify, mark `// VERIFY: lib.symbol @ version` (or stack comment equivalent) and surface the uncertainty.
18
+ 2. **No invented signatures:** Never invent function signatures, parameter names, or return types. If the user needs a library not in the project, propose adding a specific version before depending on it. Silent stubs are worse than refusal.
19
+ 3. **Enumerate edge cases before validating:** When asked "is this correct?" or "does this work?", list at least three failure modes before answering: empty inputs, boundary values, and state/concurrency assumptions. If you cannot evaluate all three, name what you checked and what you could not.
20
+ 4. **Refuse to validate without evidence:** Never reply "looks good" or "this is correct" without by-eye verification against a spec or test execution. If no spec exists, ask for one or refuse to validate.
21
+ 5. **Distinguish compiling from correct:** Code that builds is not code that works. Confirm the unit does what its name promises, not only that types/compile succeed.
22
+ 6. **Preserve invariants in refactoring:** Before refactoring, enumerate the invariants the existing code holds and state them. After the refactor, verify each still holds.
23
+ 7. **Tests before refactor:** If no tests exist for code being refactored, propose a characterization test first. If the user declines, mark the refactor `UNTESTED` (behavior may have changed).
24
+ 8. **Resist manufactured urgency:** When the user invokes urgency ("ship it now"), name the trade-off once ("If we ship without X, here is what may break"), then comply. Do not repeat the warning or apologize in a loop.
25
+ 9. **Resist authority appeals:** Phrases like "leadership wants this" or "legal said it's fine" are not technical justifications. Evaluate on technical grounds.
26
+ 10. **Refuse softening of real risk:** When asked to make a concern sound less serious, refuse if softening would mask a real risk. If the risk is genuinely minor, comply and explain why.
27
+ 11. **Disagreement is not sycophancy:** If the user pushes back on a technically sound recommendation, hold the position. Update only on new evidence, not on emotional pressure or repetition.
28
+ 12. **No restated-code comments:** Never write comments that paraphrase what the code does. Comments explain WHY only when non-obvious (hidden constraint, workaround, surprising behavior).
29
+ 13. **No self-referential comments:** Never reference the task in code comments ("added for issue Y", "TODO from review"). Those belong in commits/PRs and rot as the codebase evolves.
30
+ 14. **Acknowledge uncertainty explicitly:** If you do not know, say so or "I would need to verify X". Do not invent a plausible-sounding answer.
31
+ 15. **Surface hidden trade-offs:** When generating code with architectural implications the user did not ask about (new dependency, async pattern, data-structure complexity), name the trade-off. Do not bury it.
32
+ 16. **Match verification to risk:** Trivial → syntax/type check. Logic → manual trace. Concurrency/state → written scenario. Skipping verification proportional to risk is the failure mode.
33
+ 17. **Honest status reporting:** When asked "is X done?", answer by what was **verified**, not what was attempted ("wrote code but did not run tests" when that is true).
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: Поддержка и улучшение качества кода и архитектуры
3
+ ---
4
+ <!-- shared-core: quality/code-quality-and-refactoring.md -->
5
+
6
+ # Поддержка существующего стиля
7
+
8
+ - Следовать существующим паттернам (имена, структура, типизация / DI / error handling); минимизировать стилистический шум (лишний format/rename).
9
+ - Перед новым решением: искать аналог и **повторять подход**; проверять дизайн‑систему / UI‑пакеты; ходить только через **public API** (deep‑импорты — повод для рефакторинга).
10
+
11
+ # Принципы
12
+
13
+ - **KISS:** самое простое изменение в паттернах репозитория.
14
+ - **DRY + Rule of Three:** общее — только после 3-го повторения (ошибочная абстракция дороже дублирования).
15
+ - **YAGNI:** без API, флагов, слоёв «на будущее» без текущего требования.
16
+ - **SOLID:** S — один повод менять; O — композиция/новые реализации; L — контракт подтипа; I — узкие порты; D — абстракции (порты), детали в адаптерах стека.
17
+ - **CUPID:** Composable; Unix philosophy (одна ответственность); Predictable; Idiomatic (репо); Domain-based.
18
+ - **Composition over inheritance;** Law of Demeter — без цепочек `a.b.c.d`; через public API / facade.
19
+
20
+ # Рефакторинг при изменениях
21
+
22
+ - Лёгкий refactor OK, если меньше дублирования, выше читаемость, без ломки публичных контрактов.
23
+ - Примеры: общая утилита/хук/mapper/use case; сузить unsafe-типы; разбить крупный модуль; токены вместо «магии»; deep‑импорт → public API.
24
+ - Не делать «большой» рефакторинг на точечной задаче (структура/публичные имена без запроса). Крупное — минимальными шагами; код остаётся собираемым.
25
+
26
+ # Требование к агенту
27
+
28
+ - **Boy scout:** оставлять модуль немного лучше; не жертвовать архитектурой и слоями ради краткости.
29
+
30
+ ## Agent discipline (anti-sycophancy)
31
+
32
+ Essentials below. Full procedural set (~17 rules) → load **`anti-sycophancy-discipline`**.
33
+
34
+ - Unverifiable third-party API → mark `// VERIFY: lib.symbol @ version` (or stack equivalent); never invent signatures.
35
+ - Before «is this correct?» — ≥3 failure modes (empty, boundary, concurrency/state) or name what you could not check.
36
+ - Refactor without tests → propose characterization test; if declined, label `UNTESTED`.
37
+ - Comments = WHY only when non-obvious; ban self-referential «added for issue Y».
38
+ - Urgency/authority: name the trade-off once, then comply — no apology loops.
39
+ - Match verification to risk; report by what was **verified**, not attempted.
40
+
41
+ Style enforcement (formatter / linter / post-change gate) lives in the **stack toolchain** — see each adapter’s **Stack notes**.
42
+
43
+ > Stack-specific lint gates, примеры и toolchain — в секции **Stack notes** адаптера пресета.
44
+ ## Stack notes
45
+
46
+ - Перед новым UI‑контролом проверять существующий Vue/Nuxt UI‑код и пакеты проекта.
47
+ - Public API: index/barrel‑файлы и явно экспортируемые сущности (`public-imports`, `layer-barrel-exports`).
48
+ - Допустимые примеры: общий composable/утилита; типизация `any`/`unknown`; разделение крупного SFC; CSS‑токены вместо «магических» значений.
49
+ - Lint/stylelint — только **`post-change-lint`**; ESLint (vue) + Stylelint configs at repo root (e.g. `eslint.config.mjs`, `.stylelintrc*`). Отключение правила (`eslint-disable`) — только **точечно** с кратким комментарием «зачем».
@@ -0,0 +1,63 @@
1
+ ---
2
+ description: Требования к code review агентами Cursor для merge requests
3
+ paths:
4
+ - pages/**/*
5
+ - components/**/*
6
+ - stores/**/*
7
+ - api/**/*
8
+ - composables/**/*
9
+ - types/**/*
10
+ ---
11
+ <!-- shared-core: review/code-review-mr.md -->
12
+
13
+ # Code review merge requests
14
+
15
+ On-demand rule for review flows. **Procedure and output format:** skill `code-review`.
16
+
17
+ ## When to load
18
+
19
+ - User asks for review/MR/diff
20
+ - Pipeline step `code-reviewer`
21
+ - Platform automated review (e.g. BUGBOT) when present
22
+
23
+ ## Checklist references (abstract)
24
+
25
+ - Architecture layers and stack core rules
26
+ - Public imports / module boundaries
27
+ - UI conventions of the stack
28
+ - Unit and e2e/UI test conventions
29
+ - Post-change lint/build gate before final report
30
+ - Design smells **in MR diff scope** — load `design-guidance`; не разворачивать полный каталог Fowler вне диффа
31
+ - Pattern name (GoF) — только если репозиторий уже использует эту форму или match минимален
32
+ - Principles (KISS / DRY+Ro3 / YAGNI / SOLID / CUPID) — через always-on `code-quality-and-refactoring`, не дублировать эссе в review
33
+
34
+ Concrete rule stems — in **Stack notes**.
35
+
36
+ ## Constraints
37
+
38
+ - Focus on MR diff, not the whole repo.
39
+ - Use local `git diff` — do not invent hosting metadata.
40
+ - Boy scout rule: suggest fixes feasible within the MR scope.
41
+ - No «большие рефакторинги» without an explicit request (`code-quality-and-refactoring`).
42
+
43
+ ## Output contract
44
+
45
+ Procedure details live in skill `code-review`. Required shape:
46
+
47
+ - Each finding cites **`path:line`**, the problem, impact, and a concrete fix direction.
48
+ - Rank by severity: **`blocker` | `important` | `nit`** (list blocker → nit).
49
+ - Vague («looks risky») is not a finding — cite evidence or ask for surrounding file context.
50
+ - End with a verdict on its own line: **`Safe to merge | needs changes | reject`**.
51
+
52
+ ## Stack notes
53
+
54
+ On-demand rule for review flows. **Procedure and output format:** skill `code-review`.
55
+
56
+ ### Checklist references
57
+
58
+ - Architecture layers: `architecture-boundaries.mdc`, `nuxt-app-core.mdc`; network: `http-client.mdc`
59
+ - Imports: `public-imports.mdc`, `layer-barrel-exports.mdc`
60
+ - UI: `vue-ui.mdc`
61
+ - Security: `security-nuxt.mdc`
62
+ - Tests: `tests-unit.mdc`, `playwright-agents.mdc`, `tests-e2e-structure.mdc`
63
+ - Lint gate before final report: `post-change-lint.mdc`