@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,88 @@
1
+ ---
2
+ description: Сквозной чеклист новой фичи и матрица «слой → правило Cursor». Use when implementing features via feature-developer or feature-delivery skill.
3
+ paths:
4
+ - pages/**/*
5
+ - components/**/*
6
+ - stores/**/*
7
+ - api/**/*
8
+ - composables/**/*
9
+ - types/**/*
10
+ ---
11
+ <!-- shared-core: architecture/feature-delivery-workflow.md -->
12
+
13
+ # Доставка фичи (сквозной порядок)
14
+
15
+ ## Stack notes
16
+
17
+ Типичная фича с данными с backend и общим состоянием. Детали слоёв — `architecture-boundaries.mdc`, `nuxt-app-core.mdc`.
18
+
19
+ ## Чеклист (порядок работ)
20
+
21
+ 1. **Доменные типы** — `types/**`, экспорт через barrel (`public-imports.mdc`, **`layer-barrel-exports.mdc`**); JSDoc — `types-jsdoc.mdc`.
22
+ 2. **Контракт API** — DTO там, где принято; доменные типы в `@/types`.
23
+ 3. **Мапперы** — DTO → домен в `*responseMappers.ts` (`api-services.mdc`).
24
+ 4. **Сервисы** — клиенты `api/clients/**`, barrel `@/api` (`api-services.mdc`, `http-client.mdc`, **`layer-barrel-exports.mdc`**). Без `fetch` из UI/store.
25
+ 5. **Состояние** — `defineStore` / Pinia actions (`store-pinia.mdc`); actions → сервисы из `~/api` / `@/api`.
26
+ 6. **UI** — типы из `@/types`, без DTO (`vue-ui.mdc`, `architecture-boundaries-ui.mdc`, `no-v-bind-spread.mdc`).
27
+ 7. **Моки** — по схеме репо; регистрация в `mocks/handlers.ts` (см. ниже).
28
+ 8. **Тесты** — unit для мапперов (`tests-unit.mdc`); e2e по `*.cases.md` (`tests-e2e-structure.mdc`, `playwright-agents.mdc`).
29
+ 9. **Завершение** — **`post-change-lint.mdc`**: `lint:js` + `lint:css` + `typecheck`; менеджер — `package-manager.mdc`.
30
+
31
+ ## Поток данных (ориентир)
32
+
33
+ ```mermaid
34
+ flowchart LR
35
+ subgraph transport [Транспорт]
36
+ HttpClient[HttpClient]
37
+ end
38
+ DTO[DTO] --> Mappers[Мапперы]
39
+ Mappers --> Domain[Доменные типы]
40
+ Domain --> Service[API сервис]
41
+ Service --> HttpClient
42
+ Service --> Action[Pinia action]
43
+ Action --> Store[Store]
44
+ Store --> UI[UI]
45
+ ```
46
+
47
+ ## Регистрация по слоям
48
+
49
+ 1. **Типы** — `types/**`; доменная модель — источник правды для UI и store.
50
+ 2. **API** — `api/services/<ServiceRoot>/<Segment>/`; публичные экспорты (в т.ч. **константы путей** для моков) → **`api/index.ts`**.
51
+ 3. **Моки (MSW)** — `mocks/data/<feature>/`; хендлеры в **`mocks/handlers.ts`**. Пути из `@/api`, не дублировать URL-строки. Проверить браузерный worker и Node `setupServer`, если оба используются.
52
+ 4. **Store** — `stores/<featureName>.ts` (`defineStore`); опционально composable‑фасад в `composables/**`. Регистрация через `@pinia/nuxt` / принятый в репо паттерн — **не** RTK `reducers.ts` / `middleware/**`.
53
+ 5. **UI** — `pages/**`, `components/pages/<FeatureName>Page/**` и/или `components/**`; данные через store / composables.
54
+ 6. **Unit** — `*.spec.ts`; мапперы и нетривиальная логика — обязательно.
55
+ 7. **E2E** — `tests/e2e/<Area>/<plan>.cases.md` + `*.spec.ts`.
56
+
57
+ ## Частичные сценарии
58
+
59
+ | Задача | Минимум действий |
60
+ |--------|------------------|
61
+ | Только API + типы | Типы, сервис, мапперы, `@/api` barrel; unit на маппер. |
62
+ | Только моки | Путь в `@/api`; handlers + `mocks/handlers.ts`. |
63
+ | Только store | Pinia actions на `@/api`; `stores/<feature>.ts`. |
64
+ | Только UI | Store state; без HTTP/DTO. |
65
+ | Только e2e | `*.cases.md` + spec; page object. |
66
+
67
+ ## Антипаттерны
68
+
69
+ - DTO в UI или нетипизированном store.
70
+ - HTTP-клиент из компонента/Pinia action в обход сервиса.
71
+ - Deep-import `@/api/services/**` из UI/store.
72
+ - `{...props}` / `v-bind="$attrs"` spread без явного списка — `no-v-bind-spread.mdc`.
73
+ - RTK / Redux (`createSlice`, `createAsyncThunk`, `stores/slices/**` как канон).
74
+ - **Ubiquitous language:** имена Domain/типов отражают предметную область фичи — не смешивать транспорт/фреймворк-термины в домен без нужды.
75
+ - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
76
+
77
+ ## Матрица: зона → правила
78
+
79
+ | Зона | Правила |
80
+ |------|---------|
81
+ | `api/clients/**`, `lib/clients/**` | `http-client.mdc`, `tests-unit.mdc` (behavior) |
82
+ | `api/services/**` | `api-services.mdc`, `layer-barrel-exports.mdc`, `http-client.mdc` |
83
+ | `stores/**` | `store-pinia.mdc`, `architecture-boundaries.mdc`, `public-imports.mdc` |
84
+ | `components/**` | `vue-ui.mdc`, `no-v-bind-spread.mdc`, `public-imports.mdc` |
85
+ | `types/**` | `public-imports.mdc`, `types-jsdoc.mdc`, `layer-barrel-exports.mdc` |
86
+ | `tests/e2e/**` | `tests-e2e-structure.mdc`, `playwright-agents.mdc` |
87
+
88
+ При добавлении или расширении фичи **пройти чеклист** и правила из таблицы для затронутых зон.
@@ -0,0 +1,71 @@
1
+ ---
2
+ description: Двухуровневые barrel-экспорты для слоёв с регламентированным public API
3
+ paths: **/index.ts
4
+ ---
5
+ # Barrel-экспорты слоёв с public API
6
+
7
+ ## Когда применять
8
+
9
+ Для **любого слоя** (каталога, пакета, bounded context), у которого:
10
+
11
+ - есть **корневой barrel** — единая точка импорта для внешних потребителей;
12
+ - deep-импорты внутрь слоя **запрещены** снаружи (ESLint `no-restricted-imports`, правила `public-imports.mdc`).
13
+
14
+ Примеры alias/entry point в разных проектах: `@/api`, `@/types`, `@/core`, `@/store`, `packages/foo`.
15
+
16
+ ## Два уровня barrel
17
+
18
+ 1. **Локальный** — `index.ts` модуля/фичи внутри слоя.
19
+ 2. **Корневой public API** — barrel слоя (например `src/<layer>/index.ts`).
20
+
21
+ **Внутри** слоя — относительные импорты и пути между подмодулями. **Снаружи** — только корневой barrel и **явно разрешённые** вторичные entry points (если зафиксированы в правилах проекта, напр. `@/types/enums`).
22
+
23
+ ## Что реэкспортировать наружу
24
+
25
+ Только символы, которые **должны быть доступны** потребителям слоя: публичные функции/сервисы/фасады, типы контракта, константы и helpers, нужные другим слоям или тестам.
26
+
27
+ **Не реэкспортировать:** внутренние адаптеры, мапперы, детали транспорта, промежуточные объекты для сборки фасада внутри слоя.
28
+
29
+ Группировка в корневом barrel — **по конвенции репозитория** (ориентир — соседние модули того же слоя).
30
+
31
+ ## Чеклист агента (обязателен)
32
+
33
+ При добавлении или существенном расширении **модуля внутри регламентированного слоя**:
34
+
35
+ 1. Определить слой, его **корневой barrel** и доп. entry points (`public-imports.mdc`).
36
+ 2. Создать/обновить **локальный** `index.ts` — только публичные символы.
37
+ 3. Если в слое есть **фасад/агрегатор** (`*ApiService.ts`, `rootReducer`, …) — подключить модуль там.
38
+ 4. Добавить **реэкспорт** новых публичных символов в **корневой barrel** слоя.
39
+ 5. **Проверка:** grep по имени символа или пути `./<Module>` в корневом barrel; снаружи слоя нет deep-импортов.
40
+
41
+ Модуль **не готов**, пока чеклист не пройден.
42
+
43
+ ## Как найти регламентированные слои в репозитории
44
+
45
+ 1. Правила `public-imports.mdc` в `.cursor/rules/`.
46
+ 2. ESLint `no-restricted-imports` — паттерны `@/<layer>/*` с исключением barrel.
47
+ 3. `architecture-boundaries.mdc`, README проекта.
48
+
49
+ ## В этом репозитории
50
+
51
+ | Слой | Корневой barrel | Правило импортов |
52
+ |------|-------------------|------------------|
53
+ | API | `api/index.ts` | `public-imports.mdc` |
54
+ | Types | `types/index.ts` | `public-imports.mdc` (+ `@/types/enums`) |
55
+ | Core | `core/index.ts` | ESLint: `@/core/index` |
56
+
57
+ Иллюстрация двух уровней (API): локальный `services/.../<Feature>/index.ts` → фасад `*ApiService.ts` → `api/index.ts`.
58
+ ## Incorrect
59
+
60
+ ```ts
61
+ // api/index.ts — leaking internals
62
+ export { mapCardResponse } from './services/CardsApi/cardResponseMappers'
63
+ export { rawCardsClient } from './clients/rawCardsClient'
64
+ ```
65
+
66
+ ## Correct
67
+
68
+ ```ts
69
+ // api/index.ts — public facade only
70
+ export { cardsApi } from './services/CardsApi'
71
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ description: Импорт доменных типов и API только через публичные barrel @/types и @/api
3
+ paths:
4
+ - pages/**/*
5
+ - components/**/*
6
+ - stores/**/*
7
+ - api/**/*
8
+ - composables/**/*
9
+ - types/**/*
10
+ ---
11
+ # Публичные импорты (`@/types`, `@/api`)
12
+
13
+ **Коллизии:** импорт типов — раздел `@/types` ниже; API вне `api/**` — раздел `@/api` ниже (дублирует ESLint `no-restricted-imports` в `eslint.config.mjs`).
14
+
15
+ ## `@/types`
16
+
17
+ - **Публичный API типов** — barrel `types/index.ts`; импортировать типы только как `@/types` (или `@/types/index`).
18
+ - **Запрещено** обходить barrel: `@/types/<что‑угодно>`, кроме enum.
19
+ - **Enum** — только `@/types/enums` / `@/types/enums.ts`.
20
+ - Внутри `types/**` — относительные импорты между файлами слоя.
21
+
22
+ ```typescript
23
+ // ✅
24
+ import type { TUserProfile } from '@/types'
25
+ import { SomeEnum } from '@/types/enums'
26
+
27
+ // ❌
28
+ import type { TUserProfile } from '@/types/User.types'
29
+ ```
30
+
31
+ Новые публичные типы — реэкспорт в `types/index.ts` по **`layer-barrel-exports.mdc`**.
32
+
33
+ ## `@/api`
34
+
35
+ - **Публичный API** — barrel `api/index.ts`. Вне `api/**` — только `import … from '@/api'` (или `@/api/index`).
36
+ - **Запрещено** снаружи слоя: `@/api/<что‑угодно>`, кроме `@/api/index`.
37
+ - Внутри `api/**` — относительные импорты и `@/api/services/**`, `@/api/clients/**`.
38
+
39
+ ```typescript
40
+ // ✅ в store, UI, lib вне api
41
+ import { MedcardApiService } from '@/api'
42
+
43
+ // ❌ снаружи api
44
+ import { MedcardApiService } from '@/api/services/MedcardApiService/MedcardApiService'
45
+ ```
46
+
47
+ Новые публичные символы API — реэкспорт в `api/index.ts` по **`layer-barrel-exports.mdc`**.
48
+ ## Incorrect
49
+
50
+ ```ts
51
+ import type { TUserProfile } from '@/types/User.types'
52
+ import { OrdersApi } from '@/api/services/OrdersApi'
53
+ ```
54
+
55
+ ## Correct
56
+
57
+ ```ts
58
+ import type { TUserProfile } from '@/types'
59
+ import { ordersApi } from '@/api'
60
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: Эталонные фичи репозитория — копировать структуру при реализации новых задач. Заполните пути после init в целевом репо.
3
+ paths:
4
+ - pages/**/*
5
+ - components/**/*
6
+ - stores/**/*
7
+ - api/**/*
8
+ - composables/**/*
9
+ - types/**/*
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,12 @@
1
+ # Stack (Nuxt 3, Vue, TypeScript)
2
+
3
+ Правила уровня фреймворка и языка.
4
+
5
+ | Файл | Содержание | Загрузка |
6
+ |------|------------|----------|
7
+ | `nuxt-app-core.md` | Стек, структура `pages/`/`components/`/`stores/`, слои | session start |
8
+ | `script-setup-conventions.md` | `<script setup>` conventions | `paths: **/*.{vue,ts}` |
9
+ | `no-type-assertion.md` | Ограничение `as` на границах модулей | on-demand |
10
+ | `navigation-router-ui.md` | Навигация в UI-компонентах (slim) | `paths: pages/**,layouts/**,middleware/**,components/**` |
11
+ | `navigation-router.md` | Полный аудит стека навигации (Nuxt file-based routing) | `paths: pages/**,layouts/**,middleware/**,nuxt.config.*` |
12
+ | `types-jsdoc.md` | JSDoc в `types` | `paths: types/**/*.ts` |
@@ -0,0 +1,14 @@
1
+ ---
2
+ paths: pages/**/*,layouts/**/*,middleware/**/*,components/**/*
3
+ ---
4
+
5
+ # Navigation in UI components
6
+
7
+ Перед ссылками, программной навигацией или работой с URL в UI:
8
+
9
+ 1. **`package.json`** workspace приложения — `nuxt` vs чистый `vue-router` SPA.
10
+ 2. **Соседние импорты** той же фичи (`navigateTo`, `<NuxtLink>`, `useRouter` / `useRoute` vs `from 'vue-router'`).
11
+ 3. **Обёртки проекта** (`~/components/...` Link) — предпочтительнее сырого API роутера.
12
+ 4. **По умолчанию (preset):** Nuxt 3 file-based routing → `navigateTo` + `<NuxtLink>` + `useRouter` / `useRoute` (`stack/nuxt-app-core.md`, `stack/nuxt-pages-routing.md`).
13
+
14
+ Полный аудит (дерево маршрутов, гибриды, lockfile): **`stack/navigation-router.md`** — при правках `pages/**`, `layouts/**`, `middleware/**`, `nuxt.config.*`.
@@ -0,0 +1,59 @@
1
+ ---
2
+ paths: pages/**/*,layouts/**/*,middleware/**/*,nuxt.config.*
3
+ ---
4
+
5
+ # Навигация и роутинг: сначала стек проекта
6
+
7
+ **При любой задаче, связанной с навигацией, переходами между страницами, URL, редиректами, хлебными крошками, защищёнными маршрутами или программной сменой маршрута** — перед предложением кода или импортов **нельзя** опираться на «типичный Vue SPA» по умолчанию. Нужно **явно свериться со стеком целевого репозитория** и использовать **один** согласованный с проектом механизм.
8
+
9
+ ## Зависимости: что проверить в первую очередь
10
+
11
+ 1. **`package.json`** в корне приложения (тот пакет, где `nuxt.config.*` / который собирается и деплоится). Смотреть **`dependencies`** и при необходимости **`peerDependencies`**:
12
+ - **`nuxt`** — Nuxt 3 (file-based routing); версия важна для нюансов API (сверяться с документацией под эту major).
13
+ - **`vue-router`** без Nuxt — отдельный SPA-роутинг; не подменять его API вызовами Nuxt (`navigateTo`, `<NuxtLink>`) без проверки.
14
+ - **`nuxt`** и отдельный ручной `createRouter` одновременно — возможно легаси или гибрид; **не** выбирать API по умолчанию — смотреть раздел «Реализация в коде» ниже.
15
+
16
+ 2. **Монорепо / workspaces** — роутинг может жить не в корневом `package.json`. Открыть **`package.json` того workspace**, где лежат `pages/` и `nuxt.config.*`.
17
+
18
+ 3. **Факт установки** — при сомнениях смотреть lockfile (`bun.lock`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`) или `node_modules`: убедиться, что заявленный пакет реально установлен.
19
+
20
+ ## Реализация роутинга в проекте (код и структура)
21
+
22
+ Перед предложением паттерна навигации **свериться с тем, как уже сделано в репозитории**:
23
+
24
+ 1. **Дерево маршрутов**
25
+ - **Nuxt 3 file-based routing:** каталог **`pages/`** (`.vue`), layouts в **`layouts/`**, middleware в **`middleware/`**, `definePageMeta`.
26
+ - **Nuxt 4 note:** возможен `app/` как `srcDir` — уточнить по `nuxt.config`; **не** путать с Next `app/` + `page.tsx`.
27
+ - Чистый **Vue Router SPA:** конфиг маршрутов (`router/index.ts`, `createRouter`) без Nuxt file routing.
28
+
29
+ 2. **Точки входа и обёртки**
30
+ - Поиск по коду: **`navigateTo`**, **`<NuxtLink>`**, **`useRouter` / `useRoute`** (Nuxt auto-import), **`from 'vue-router'`**, **`createRouter`**, **`RouterLink`**.
31
+ - Где объявлены маршруты (файловая структура Nuxt vs явный `routes` в SPA).
32
+
33
+ 3. **Общие абстракции проекта**
34
+ - Обёртки над ссылками (`~/components/...`, Link из дизайн-системы), хелперы путей, константы роутов — **использовать их**, а не дублировать сырой API.
35
+
36
+ 4. **Соседние файлы фичи**
37
+ - Новый код навигации — в том же стиле, что страницы/composables той же области (`navigateTo` / `<NuxtLink>` vs `vue-router` как в соседних импортах).
38
+
39
+ ## Как определить, что использовать (сводка)
40
+
41
+ 1. **Зависимости** — см. раздел выше; по ним задаётся допустимый набор пакетов.
42
+ 2. **Структура** — Nuxt `pages/` vs Vue Router SPA по каталогам и конфигу.
43
+ 3. **Фактический код** — какие импорты и обёртки уже доминируют в приложении.
44
+
45
+ ## Что использовать (краткая матрица)
46
+
47
+ | Стек | Программная навигация / чтение пути | Ссылки |
48
+ |------|-------------------------------------|--------|
49
+ | **Nuxt 3 file-based routing** | `navigateTo`, `useRouter`, `useRoute`, `useRouter().push` (по доке Nuxt для вашей версии) | `<NuxtLink>` |
50
+ | **Vue Router SPA (без Nuxt)** | `vue-router` (`useRouter`, `useRoute`, `router.push`, …) | `<RouterLink>` / `<router-link>` |
51
+
52
+ **Не делать:** подключать `react-router-dom` или `next/navigation` / `next/link` в Nuxt-проект; импортировать Next-хуки (`usePathname`, `useSearchParams` из `next/navigation`); смешивать ручной `createRouter` и Nuxt file routing без явной причины в кодовой базе.
53
+
54
+ ## Требование к агенту
55
+
56
+ - Перед генерацией или ревью кода навигации **коротко зафиксировать вывод** (например: «зависимости: `nuxt`; в коде везде `<NuxtLink>` / `navigateTo` → используем то же») и следовать ему.
57
+ - **Обязательная проверка:** актуальные **`dependencies`** в `package.json` нужного workspace + **как в проекте уже реализованы** маршруты и импорты (поиск по репозиторию, соседние файлы). Не полагаться только на предположение по одному признаку (например, только на наличие папки `pages/`).
58
+ - Если стек неочевиден (гибрид) — **сверить lockfile / установленные пакеты** и **доминирующие импорты**, затем выбрать API.
59
+ - Для **этого** пресета базовый ориентир — **`stack/nuxt-app-core.md`** + **`stack/nuxt-pages-routing.md`**: Nuxt 3; предпочитать **`navigateTo`**, **`useRouter` / `useRoute`**, **`<NuxtLink>`**.
@@ -0,0 +1,61 @@
1
+ ---
2
+ description: Избегать приведения типов через as на границах модулей (импорт/экспорт)
3
+ paths:
4
+ - pages/**/*
5
+ - components/**/*
6
+ - stores/**/*
7
+ - api/**/*
8
+ - composables/**/*
9
+ - types/**/*
10
+ ---
11
+ # Не использовать `as` для приведения типов при экспорте и импорте (кроме необходимых случаев)
12
+
13
+ ## О чём речь
14
+
15
+ Речь о **type assertion** в TypeScript: выражение вида `значение as Тип`.
16
+
17
+ **Не относится к правилу** (это не assertion, а синтаксис модулей):
18
+
19
+ - переименование при экспорте: `export { foo as bar }`, `export { default as Baz } from '...'`;
20
+ - переименование при импорте: `import { foo as bar } from '...'`;
21
+ - `import type { Foo as Bar }` — алиас типа в импорте типов.
22
+
23
+ ## Требование
24
+
25
+ - На **публичной границе модуля** (то, что **экспортируется** из файла / barrel, и то, что сразу **присваивается импортированным символам** с принудительным приведением) **не использовать** `as Тип` для «подгонки» типов, если можно обойтись нормальной типизацией.
26
+
27
+ ## Предпочитать вместо `as`
28
+
29
+ - явную аннотацию: `const x: T = ...` / `function f(): T`;
30
+ - **дженерики** у функций и классов;
31
+ - **`satisfies`** (когда нужно проверить совместимость без сужения до `any`);
32
+ - сужение **`unknown`** после проверки (type guards, `zod` и т.п.);
33
+ - правку **исходных типов/DTO/мапперов**, а не assertion на выходе.
34
+
35
+ ## Когда `as` допустим
36
+
37
+ - взаимодействие с **не типизированными** или некорректно типизированными внешними модулями, где нет разумной альтернативы;
38
+ - узкие места после **валидации** данных, если типовый гард всё ещё не выразить без шума (предпочтительно всё же guard/`satisfies`);
39
+ - **`as const`** — когда нужны литеральные типы и широкий вывод ломает контракт (это отдельный механизм; применять по делу, не как замену типизации API).
40
+ - блок **`catch (error)`** после вызова HTTP через общий клиент: по возможности сужать через **`instanceof`** на **класс ошибки транспорта** из `@/types` (какой именно — по существующей реализации) и работать с уже суженным типом; голый **`as` к тому же типу** — только если `instanceof` недоступен (иной источник выброса) и осознанно.
41
+
42
+ ## Примеры
43
+
44
+ ```typescript
45
+ // ❌ Плохо: assertion на экспортируемом API
46
+ export const config = loadRaw() as AppConfig
47
+
48
+ // ✅ Лучше: аннотация + проверка или маппер
49
+ export const config: AppConfig = mapToAppConfig(loadRaw())
50
+
51
+ // ❌ Плохо: сразу после импорта «ломаем» тип
52
+ import { getData } from './api'
53
+ export const data = getData() as MyDto[]
54
+
55
+ // ✅ Лучше: типизировать getData / обернуть типобезопасной функцией
56
+ ```
57
+
58
+ ## Требование к агенту
59
+
60
+ При ревью и генерации кода **не добавлять** новые `as Тип` на экспортируемые сущности и на цепочку import → export без явной необходимости; по возможности исправлять контракт типов в источнике.
61
+ - В слайсах и сервисах при обработке ошибок API сначала рассматривать **`instanceof`** на класс ошибки транспорта из `@/types` по образцу существующего кода (`http-client.mdc`, `store-pinia.mdc`).
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Базовые принципы, стек и архитектура Nuxt 3 приложения (preset)
3
+ ---
4
+ # Стек и окружение
5
+
6
+ Конкретные версии — **из `package.json` и конфигов целевого репозитория**. Рамка preset: Nuxt 3, Vue 3, TypeScript; runner/e2e/mocks/UI/APM — как заведено в репо.
7
+
8
+ # Структура проекта
9
+
10
+ | Путь | Назначение |
11
+ |------|------------|
12
+ | `pages/**` | File-based routes |
13
+ | `components/**` | UI components (SFC) |
14
+ | `composables/**` | Vue `use*` facades |
15
+ | `stores/**` | Pinia stores |
16
+ | `api/**` | Client services + mappers (barrel) |
17
+ | `lib/clients/**`, `api/clients/**` | HTTP (`$fetch` / ofetch) |
18
+ | `server/api/**` | Nitro server routes (BFF) |
19
+ | `types/**` | Domain types (barrel) |
20
+ | `tests/e2e/**` | Playwright e2e |
21
+
22
+ **Aliases:** prefer `~/`, accept `@/`, respect `#imports` (не изобретать auto-import символы). Scripts cwd — **корень репозитория** (где `nuxt.config.*`), не Next-обёртка `app/`.
23
+
24
+ # Архитектурные слои
25
+
26
+ | Слой | Каталог | Детали |
27
+ |------|---------|--------|
28
+ | UI | `pages/**`, `components/**`, `layouts/**` | `vue-ui`, `architecture-boundaries-ui` |
29
+ | Composables | `composables/**` | thin orchestration; no raw HTTP |
30
+ | Store | `stores/**` | `store-pinia` — `defineStore` only |
31
+ | API | `api/**` | `api-services`, `http-client` |
32
+ | HTTP | `lib/clients/**`, `api/clients/**` | wrap `$fetch` |
33
+ | Server | `server/api/**` | `security-nuxt`; not a substitute for `api/**` |
34
+ | Types | `types/**` | `public-imports`, `types-jsdoc` |
35
+
36
+ Границы — **`architecture-boundaries`**. Импорты `~/types` / `@/types`, `~/api` / `@/api` — **`public-imports`**. **Запрещено:** RTK / `store-rtk`, React/RSC defaults, пути `app/src/**` как канон.
37
+
38
+ # Работа агента
39
+
40
+ - Архитектура и импорты: `architecture-boundaries`, `public-imports`
41
+ - Фичи: `feature-delivery-workflow` + skill `feature-delivery`
42
+ - После правок: **вызвать** `post-change-lint` (requestable); менеджер пакетов: `package-manager`
43
+ - Копировать паттерны соседей; предпочитать `unknown` вместо `any`
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: Nuxt file-based routing, layouts, middleware, page meta
3
+ paths:
4
+ - "pages/**/*.{vue,ts}"
5
+ - "layouts/**/*.{vue,ts}"
6
+ - "middleware/**/*.{ts,js}"
7
+ - nuxt.config.*
8
+ ---
9
+ # Nuxt pages & routing
10
+
11
+ Canonical layout: **Nuxt 3 project root** — `pages/`, `layouts/`, `middleware/`.
12
+ Nuxt 4 may use `app/` as `srcDir`; mention only as a note — **do not** default globs/examples to Next-style `app/src/**`.
13
+
14
+ ## Routing
15
+
16
+ - File-based routes under `pages/**`.
17
+ - Layouts in `layouts/**`; select via `definePageMeta({ layout: '…' })`.
18
+ - Route middleware in `middleware/**` (`defineNuxtRouteMiddleware`).
19
+ - Navigation helpers: `<NuxtLink>`, `navigateTo`, `useRouter`, `useRoute` — not `next/link` / `next/navigation`.
20
+ - Server/API routes: `server/api/**` (Nitro) — see `security-nuxt`; domain client services stay in `api/**`.
21
+
22
+ ## Data on pages
23
+
24
+ - Prefer composables + Pinia for client orchestration.
25
+ - `useFetch` / `useAsyncData` OK when that is the repo pattern — still map to domain models; no raw DTO sprawl in templates.
26
+ - Secrets only via `runtimeConfig` server-side.
27
+
28
+ ## Incorrect
29
+
30
+ ```ts
31
+ import { useRouter } from 'next/navigation'
32
+ ```
33
+
34
+ ## Correct
35
+
36
+ ```ts
37
+ const router = useRouter()
38
+ await navigateTo('/items')
39
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Prefer script setup lang=ts and idiomatic Vue function style
3
+ paths:
4
+ - "**/*.{vue,ts}"
5
+ ---
6
+ # Script setup conventions
7
+
8
+ - Prefer `<script setup lang="ts">` for pages/components/layouts.
9
+ - Named composables / helpers: follow repo naming (`useX`); export functions consistently with neighbors.
10
+ - Prefer `const fn = () =>` / concise handlers where the file already does; do not churn style across untouched files.
11
+ - Auto-imports (`#imports`) OK when Nuxt resolves them — do not invent symbols; verify against `.nuxt/` / docs (`vue-nuxt-anti-hallucination`).
12
+ - Keep business orchestration in composables/stores; keep SFC scripts thin.
@@ -0,0 +1,40 @@
1
+ ---
2
+ description: Стиль JSDoc для доменных и транспортных типов в types
3
+ paths: types/**/*.ts
4
+ ---
5
+ # Документация типов в `types`
6
+
7
+ При добавлении или существенном изменении типов в этом слое **следовать уже принятому в репозитории стилю JSDoc** (см. примеры: `User.types.ts`, `Common.types.ts`, `ServerValidation.types.ts`, `TreatmentPlan/*.types.ts`).
8
+
9
+ ## Язык и форма
10
+
11
+ - Текст комментариев — **на русском**, кратко и по делу: что означает тип или поле в предметной области или в контракте с API.
12
+ - **Не опираться** на теги в духе `@param`, `@returns`, `@see`, `@deprecated` для описания типов — в этом слое они **не используются**; достаточно обычного текста в `/** … */`.
13
+
14
+ ## Экспортируемый `type` / `interface`
15
+
16
+ - Сразу **перед объявлением** — блок `/** … */`.
17
+ - Если нужно пояснить источник данных, ограничения или неочевидности — **второй абзац** в том же блоке (в JSDoc для абзаца — пустая строка между строками текста).
18
+ - Для **вложенных** объектов в том же файле каждый такой тип документируется отдельным блоком над своим объявлением.
19
+
20
+ ## Поля
21
+
22
+ - У **каждого** публичного свойства — **однострочный** `/** … */` на строке непосредственно **над** полем.
23
+ - Если поле **не приходит с бэкенда «как есть»**, а вычисляется или дополняется на фронте (маппер, селектор, UI) — начать описание с префикса **`[computed]`** (как в `TUserProfile`, типах плана лечения).
24
+ - Для форматов данных указывать это **в тексте**: например дата `YYYY-MM-DD`, пример отображаемой строки в кавычках.
25
+
26
+ ## Классы и прочие объявления
27
+
28
+ - Для **классов** (например ошибки транспорта) при изменении публичного API — краткий блок над классом и **комментарии к публичным полям** по тем же правилам, что у свойств интерфейса.
29
+
30
+ ## `enum`
31
+
32
+ - В `enums.ts` исторически часто **без JSDoc** на каждом члене; для новых enum допустимо короткое описание **над самим enum**, если назначение неочевидно из имени. Подписи для UI — как принято, через объекты `*Names` рядом с enum.
33
+
34
+ ## Практика для агента
35
+
36
+ - Добавляя новый тип или поле, **не оставлять** новые публичные поля без пояснения, если смысл не равен имени на 100%.
37
+ - Правя файл, где уже есть такие комментарии, **поддерживать тот же стиль**, а не смешивать с англоязычными или «теговыми» блоками.
38
+ - Не раздувать комментарии: одна-две фразы на тип, одна строка на поле — норма; исключение — действительно сложная доменная оговорка.
39
+
40
+ См. также импорты и barrel: `public-imports.mdc`.
@@ -0,0 +1,11 @@
1
+ # Testing
2
+
3
+ Unit, e2e, Playwright agents.
4
+
5
+ | Файл | Содержание | Загрузка |
6
+ |------|------------|----------|
7
+ | `playwright-agents.md` | Planner / generator / healer — структура e2e | session start |
8
+ | `tests-unit.md` | Unit/integration, именование на русском | `paths: **/*.spec.*`, `*.test.*` |
9
+ | `tests-e2e-structure.md` | `*.cases.md`, page objects, data-testid | `paths: tests/e2e/**` |
10
+
11
+ См. также `.claude/agents/playwright-test-*.md` после `ai-rules init`.