@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,18 @@
1
+ # Hooks cookbook (examples)
2
+
3
+ Optional scripts under `hooks/examples/`. **Not** referenced from default `hooks.json` (only `guard-shell-command.sh` + `chain-team-phases.sh`).
4
+
5
+ | Script | Purpose |
6
+ |--------|---------|
7
+ | `secret-guard.example.sh` | Fail if staged diff looks like secrets |
8
+ | `format-edited.example.sh` | Stack formatter / linter on edited files |
9
+ | `test-on-save.example.sh` | Scoped tests for the stack |
10
+
11
+ ## Wiring (Cursor)
12
+
13
+ 1. Copy an example into `hooks/` (drop `.example` suffix), e.g. `cp hooks/examples/secret-guard.example.sh hooks/secret-guard.sh`.
14
+ 2. `chmod +x hooks/secret-guard.sh`.
15
+ 3. Add a hook entry in `.cursor/hooks.json` (e.g. `beforeShellExecution` or `afterFileEdit` — see Cursor hooks docs).
16
+ 4. Keep cookbook scripts **out** of the default preset `hooks.json` when contributing back upstream.
17
+
18
+ Stack: **svelte** — recipes must stay stack-safe (no cross-stack lint/test commands).
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bash
2
+ # Optional: format/lint edited JS/TS/Svelte at SvelteKit project root after save.
3
+ # NOT in default hooks.json. Cwd: directory with svelte.config.* (not Next-style app/).
4
+ set -euo pipefail
5
+ ROOT="${CURSOR_PROJECT_DIR:-.}"
6
+ cd "$ROOT" 2>/dev/null || exit 0
7
+ [[ -f svelte.config.js || -f svelte.config.ts || -f svelte.config.mjs ]] || exit 0
8
+ # Prefer project scripts; adjust names to match package.json (see package-manager).
9
+ yarn lint --fix 2>/dev/null \
10
+ || yarn eslint --fix . 2>/dev/null \
11
+ || yarn check 2>/dev/null \
12
+ || true
13
+ exit 0
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # Optional cookbook: block committing likely secrets in staged diffs.
3
+ # NOT wired in default hooks.json — copy to hooks/ and register manually.
4
+ set -euo pipefail
5
+ PATTERN='(AKIA[0-9A-Z]{16}|-----BEGIN (RSA |OPENSSH )?PRIVATE KEY-----|api[_-]?key\s*[:=]\s*['\''\"][^'\''\"]{12,})'
6
+ if git diff --cached -U0 2>/dev/null | grep -Eiq "$PATTERN"; then
7
+ echo "secret-guard: possible secret in staged diff — review before commit" >&2
8
+ exit 1
9
+ fi
10
+ exit 0
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+ # Optional: scoped unit tests / check at SvelteKit project root.
3
+ # NOT in default hooks.json. No Playwright here.
4
+ # Cwd: directory with svelte.config.* (not Next-style app/).
5
+ set -euo pipefail
6
+ ROOT="${CURSOR_PROJECT_DIR:-.}"
7
+ cd "$ROOT" 2>/dev/null || exit 0
8
+ [[ -f svelte.config.js || -f svelte.config.ts || -f svelte.config.mjs ]] || exit 0
9
+ # Prefer Vitest related/run; fall back to package `test` / `check` (see package-manager).
10
+ yarn vitest related --run --passWithNoTests 2>/dev/null \
11
+ || yarn test --run --passWithNoTests 2>/dev/null \
12
+ || yarn check 2>/dev/null \
13
+ || true
14
+ exit 0
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env bash
2
+ # Lightweight shell guard for Claude projects using this preset.
3
+
4
+ set -euo pipefail
5
+
6
+ input=$(cat)
7
+
8
+ INPUT="$input" node <<'NODE'
9
+ const fs = require('fs');
10
+
11
+ const raw = process.env.INPUT || '';
12
+ let event;
13
+ try {
14
+ event = JSON.parse(raw);
15
+ } catch {
16
+ process.stdout.write('{ "permission": "allow" }');
17
+ process.exit(0);
18
+ }
19
+
20
+ const command = String(event.command || event.input?.command || '');
21
+ if (!command.trim()) {
22
+ process.stdout.write('{ "permission": "allow" }');
23
+ process.exit(0);
24
+ }
25
+
26
+ function out(permission, userMessage, agentMessage) {
27
+ process.stdout.write(JSON.stringify({
28
+ permission,
29
+ user_message: userMessage,
30
+ agent_message: agentMessage || userMessage,
31
+ }));
32
+ }
33
+
34
+ const dangerousGit = /\bgit\s+(reset\s+--hard|clean\s+-[^\n]*f|push\s+--force|push\s+-f|checkout\s+--\s+)/;
35
+ if (dangerousGit.test(command)) {
36
+ out(
37
+ 'ask',
38
+ 'This command looks destructive for git state. Review it before continuing.',
39
+ 'A project hook flagged a destructive git command. Ask the user before running it.',
40
+ );
41
+ process.exit(0);
42
+ }
43
+
44
+ const managerByFile = [
45
+ ['yarn.lock', 'yarn'],
46
+ ['pnpm-lock.yaml', 'pnpm'],
47
+ ['package-lock.json', 'npm'],
48
+ ].find(([file]) => fs.existsSync(file));
49
+
50
+ let expected = managerByFile?.[1];
51
+ if (!expected && fs.existsSync('package.json')) {
52
+ try {
53
+ const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
54
+ const pm = typeof pkg.packageManager === 'string' ? pkg.packageManager : '';
55
+ expected = pm.split('@')[0] || undefined;
56
+ } catch {
57
+ // Ignore invalid package.json in the hook; the agent can diagnose it later.
58
+ }
59
+ }
60
+
61
+ if (!expected) {
62
+ process.stdout.write('{ "permission": "allow" }');
63
+ process.exit(0);
64
+ }
65
+
66
+ const used = command.match(/(^|[;&|]\s*)(npm|yarn|pnpm)\s+/)?.[2];
67
+ if (used && used !== expected) {
68
+ out(
69
+ 'ask',
70
+ `This repository appears to use ${expected}, but the command uses ${used}. Confirm before continuing.`,
71
+ `Use ${expected} for package scripts and installs unless the user explicitly approves ${used}.`,
72
+ );
73
+ process.exit(0);
74
+ }
75
+
76
+ process.stdout.write('{ "permission": "allow" }');
77
+ NODE
@@ -0,0 +1,20 @@
1
+ {
2
+ "mcpServers": {
3
+ "context7": {
4
+ "command": "npx",
5
+ "args": ["-y", "@upstash/context7-mcp"]
6
+ },
7
+ "playwright-test": {
8
+ "command": "npx",
9
+ "args": ["-y", "@playwright/mcp@latest"]
10
+ },
11
+ "chrome-devtools": {
12
+ "command": "npx",
13
+ "args": ["-y", "chrome-devtools-mcp@latest"]
14
+ },
15
+ "figma": {
16
+ "type": "http",
17
+ "url": "https://mcp.figma.com/mcp"
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,90 @@
1
+ # `.claude/rules` (preset svelte)
2
+
3
+ В Claude Code все `.md` под `rules/` **обнаруживаются рекурсивно**. Тела **derived** из Cursor SoT; индексы — не второй SoT.
4
+
5
+ ## SoT sync
6
+
7
+ | Principle | Detail |
8
+ |-----------|--------|
9
+ | **SoT** | `presets/cursor/svelte/rules/*.mdc` — edit here first |
10
+ | **Derive** | Claude topic `.md` = body + `paths:` (from Cursor `globs:` / requestable triggers) |
11
+ | **Drop** | Cursor-only keys (`alwaysApply`); keep short `description` |
12
+ | **Checklist** | change Cursor → update Claude twin **same PR** (**FAIL** if missing — includes `svelte`; see `preset-twin-sync` / build-verifier) |
13
+ | **Shared core** | `presets/_shared/core/**` — see `<!-- shared-core: … -->` markers; taxonomy in `_shared/README.md` |
14
+
15
+ ## Loading strategy
16
+
17
+ - **Session start (no `paths:`):** ровно **3** — `svelte-app-core`, `package-manager`, `code-quality`
18
+ - **On-demand (`paths:` or via commands):** `post-change-lint`, `security-sveltekit`, architecture, UI, tests, `svelte-sveltekit-anti-hallucination`, **preset-*** meta, …
19
+ - **Skills:** `feature-delivery`, `svelte-performance`, `code-review`, …
20
+
21
+ ## Cursor → Claude mapping
22
+
23
+ | Cursor `.mdc` (SoT) | Claude topic |
24
+ |---------------------|--------------|
25
+ | `svelte-app-core.mdc` | `stack/svelte-app-core.md` |
26
+ | `package-manager.mdc` | `tooling-and-review/package-manager.md` |
27
+ | `code-quality-and-refactoring.mdc` | `tooling-and-review/code-quality.md` |
28
+ | `anti-sycophancy-discipline.mdc` | `tooling-and-review/anti-sycophancy-discipline.md` |
29
+ | `svelte-sveltekit-anti-hallucination.mdc` | `anti-hallucination/svelte-sveltekit-anti-hallucination.md` |
30
+ | `design-guidance.mdc` | `tooling-and-review/design-guidance.md` |
31
+ | `sveltekit-routing.mdc` | `stack/sveltekit-routing.md` |
32
+ | `svelte-script-conventions.mdc` | `stack/svelte-script-conventions.md` |
33
+ | `types-jsdoc.mdc` | `stack/types-jsdoc.md` |
34
+ | `no-type-assertion-as-import-export.mdc` | `stack/no-type-assertion.md` |
35
+ | `navigation-router-stack.mdc` | `stack/navigation-router.md` |
36
+ | `navigation-router-ui.mdc` | `stack/navigation-router-ui.md` |
37
+ | `architecture-boundaries.mdc` | `architecture/architecture-boundaries.md` |
38
+ | `architecture-boundaries-ui.mdc` | `architecture/architecture-boundaries-ui.md` |
39
+ | `feature-delivery-workflow.mdc` | `architecture/feature-delivery-workflow.md` |
40
+ | `reference-features.mdc` | `architecture/reference-features.md` |
41
+ | `public-imports.mdc` | `architecture/public-imports.md` |
42
+ | `layer-barrel-exports.mdc` | `architecture/layer-barrel-exports.md` |
43
+ | `api-services.mdc` | `api-and-data/api-services.md` |
44
+ | `http-client.mdc` | `api-and-data/http-client.md` |
45
+ | `store-svelte.mdc` | `api-and-data/store-svelte.md` |
46
+ | `svelte-ui.mdc` | `ui-and-accessibility/svelte-ui.md` |
47
+ | `svelte-a11y-coding.mdc` | `ui-and-accessibility/svelte-a11y-coding.md` |
48
+ | `no-rest-props-spread.mdc` | `ui-and-accessibility/no-rest-props-spread.md` |
49
+ | `css-property-order-stylelint.mdc` | `ui-and-accessibility/css-property-order.md` |
50
+ | `tests-unit.mdc` | `testing/tests-unit.md` |
51
+ | `tests-e2e-structure.mdc` | `testing/tests-e2e-structure.md` |
52
+ | `playwright-agents.mdc` | `testing/playwright-agents.md` |
53
+ | `post-change-lint.mdc` | `tooling-and-review/post-change-lint.md` |
54
+ | `code-review-mr.mdc` | `tooling-and-review/code-review-mr.md` |
55
+ | `security-sveltekit.mdc` | `tooling-and-review/security-sveltekit.md` |
56
+ | `agent-team-intake.mdc` | `tooling-and-review/agent-team-intake.md` |
57
+ | `agent-team-orchestrator.mdc` | `tooling-and-review/agent-team-orchestrator.md` |
58
+ | `technical-retro.mdc` | `tooling-and-review/technical-retro.md` |
59
+ | `preset-layering.mdc` | `tooling-and-review/preset-layering.md` |
60
+ | `preset-twin-sync.mdc` | `tooling-and-review/preset-twin-sync.md` |
61
+ | `preset-token-budget.mdc` | `tooling-and-review/preset-token-budget.md` |
62
+ | `preset-pr-checklist.mdc` | `tooling-and-review/preset-pr-checklist.md` |
63
+ | `preset-no-cross-stack-leakage.mdc` | `tooling-and-review/preset-no-cross-stack-leakage.md` |
64
+
65
+ ## Core → stack mapping
66
+
67
+ | Shared core | Cursor adapter | Notes |
68
+ |-------------|----------------|-------|
69
+ | `quality/code-quality-and-refactoring.md` | `code-quality-and-refactoring.mdc` / `code-quality.md` | + Stack notes (ESLint/Svelte/CSS) |
70
+ | `quality/anti-sycophancy-discipline.md` | `anti-sycophancy-discipline.mdc` | requestable |
71
+ | `quality/design-guidance.md` | `design-guidance.mdc` | requestable |
72
+ | `agent-team/agent-team-orchestrator.md` | `agent-team-orchestrator.mdc` | Roles in Stack notes |
73
+ | `agent-team/agent-team-intake.md` | `agent-team-intake.mdc` | thin alias |
74
+ | `architecture/feature-delivery-workflow.md` | `feature-delivery-workflow.mdc` | SvelteKit layer checklist |
75
+ | `architecture/reference-features.template.md` | `reference-features.mdc` | path table |
76
+ | `review/code-review-mr.md` | `code-review-mr.mdc` | SvelteKit checklist refs |
77
+ | `review/technical-retro.md` | `technical-retro.mdc` | thin alias |
78
+ | `meta/preset-*.md` | `preset-*.mdc` | author globs only |
79
+
80
+ ## Folders
81
+
82
+ | Folder | Contents |
83
+ |--------|----------|
84
+ | `stack/` | app-core, routing, script conventions, types |
85
+ | `architecture/` | boundaries, public imports, feature delivery |
86
+ | `api-and-data/` | store-svelte, http-client, api-services |
87
+ | `ui-and-accessibility/` | svelte-ui, a11y, rest-props, css order |
88
+ | `testing/` | unit, e2e, playwright agents |
89
+ | `tooling-and-review/` | lint, security, agent-team, preset meta |
90
+ | `anti-hallucination/` | svelte-sveltekit-anti-hallucination |
@@ -0,0 +1,71 @@
1
+ ---
2
+ description: Svelte/SvelteKit anti-hallucination banlist — phantom imports, load/server APIs, stores/runes
3
+ paths:
4
+ - "**/*.{svelte,ts,js}"
5
+ - src/routes/**/*
6
+ - src/lib/**/*
7
+ ---
8
+
9
+ # Svelte / SvelteKit anti-hallucination
10
+
11
+ These rows **OVERRIDE** generation for the listed patterns. Before inventing an import, load helper, or store API: verify against `package.json` (installed majors), `svelte.config.*`, and sibling files. If unsure, mark `// VERIFY: lib.symbol @ version` and surface the uncertainty — do not silently stub.
12
+
13
+ ## 1. Phantom `$app/*` / Kit modules
14
+
15
+ | ❌ Avoid | ✅ Prefer |
16
+ |---------|----------|
17
+ | Invented `$app/foo`, `$app/router`, `$app/auth` | Real `$app/navigation`, `$app/stores`, `$app/forms`, `$app/environment`, `$app/paths`, `$app/state` **for installed major** |
18
+ | Importing Next `next/navigation` / `next/link` | `$app/navigation`, `<a href>` |
19
+ | `navigateTo`, `<NuxtLink>`, `#imports` auto-import phantoms | Kit APIs + explicit imports that exist in repo |
20
+ | Invented `@sveltejs/kit` helpers not in docs/lockfile | Documented Kit exports for installed version |
21
+
22
+ ## 2. Load / page data signatures
23
+
24
+ | ❌ Avoid | ✅ Prefer |
25
+ |---------|----------|
26
+ | Invented `PageLoad` / `LayoutServerLoad` shapes from blogs | Types from `./$types` generated for the route; match siblings |
27
+ | Returning random keys without `data` contract | Follow existing `+page(.server).ts` return shapes |
28
+ | Calling React `getServerSideProps` / Nuxt `useAsyncData` in Kit | `load` / form actions / `$lib/api` |
29
+
30
+ ## 3. Form actions / enhance
31
+
32
+ | ❌ Avoid | ✅ Prefer |
33
+ |---------|----------|
34
+ | Phantom `enhance` option bags siblings never use | `$app/forms` `enhance` patterns from neighbors + Kit docs |
35
+ | Invented `fail` / `redirect` import paths | `@sveltejs/kit` exports verified for major |
36
+ | Posting secrets from client form without server action | `+page.server.ts` actions + `$env` discipline |
37
+
38
+ ## 4. `$env/*` misuse
39
+
40
+ | ❌ Avoid | ✅ Prefer |
41
+ |---------|----------|
42
+ | `$env/static/private` / private dynamic env in `.svelte` client | Private env only in `.server.ts` / hooks / `+server.ts` |
43
+ | Invented `$env/secret` | `$env/static/public`, `$env/static/private`, `$env/dynamic/*` as documented |
44
+
45
+ ## 5. Runes vs stores
46
+
47
+ | ❌ Avoid | ✅ Prefer |
48
+ |---------|----------|
49
+ | `import { $state } from 'svelte/store'` (wrong) | Runes are language/runtime — follow Svelte 5 docs / neighbors |
50
+ | Pinia `defineStore` / RTK `createSlice` | `store-svelte` — writable/derived/readable or runes modules |
51
+ | Invented `createRuneStore` helpers | Patterns already in `src/lib/stores/**` |
52
+
53
+ ## 6. Cross-stack APIs (banned as defaults)
54
+
55
+ | ❌ Avoid | ✅ Prefer |
56
+ |---------|----------|
57
+ | React hooks (`useEffect`, `useState` from `react`) | Svelte reactivity / runes / stores |
58
+ | RSC / `next/navigation` / `next/image` | Kit routes + `$app/*` |
59
+ | Vue/Nuxt: `ref`, `defineStore`, `useFetch`, `navigateTo` | Svelte / Kit equivalents above |
60
+
61
+ ## 7. Paths / gates / spreads
62
+
63
+ | ❌ Avoid | ✅ Prefer |
64
+ |---------|----------|
65
+ | E2E under `app/__tests__/e2e` | `tests/e2e/**` |
66
+ | Required script named `typecheck` / `type-check` | Package script **`check`** (`svelte-kit sync && svelte-check`) |
67
+ | Unlimited `{...props}` / `$$restProps` as default | Explicit props (`no-rest-props-spread`) |
68
+ | Server-only modules imported into client components | Keep private env / Node APIs in `.server.ts` |
69
+ | Vue-style auto-import of missing symbols | Explicit `$lib` / `$app` imports that exist |
70
+
71
+ When a row conflicts with a verified sibling pattern in this repo, **the sibling wins** — update this banlist in a preset PR rather than inventing a third path.
@@ -0,0 +1,9 @@
1
+ # API and data
2
+
3
+ HTTP-транспорт, сервисы, Svelte stores/runes store.
4
+
5
+ | Файл | Содержание | `paths:` |
6
+ |------|------------|----------|
7
+ | `http-client.md` | Единый HTTP-клиент, ошибки, связь со store | `src/lib/clients/**`, `src/lib/clients/**` |
8
+ | `api-services.md` | Сервисы, мапперы, DTO → домен | `api/services/**` |
9
+ | `store-svelte.md` | Svelte stores/runes, actions, типизация | `src/lib/stores/**` |
@@ -0,0 +1,45 @@
1
+ ---
2
+ description: Конвенции API сервисов и мапперов (SvelteKit $lib/api)
3
+ paths:
4
+ - src/lib/api/**/*.ts
5
+ ---
6
+
7
+ # Роль API слоя
8
+
9
+ - Инкапсулировать HTTP через клиенты в `src/lib/clients/**` (`http-client`), URL, заголовки, DTO.
10
+ - Предоставлять UI и store **стабильный доменный интерфейс** — функции с доменными типами из `$lib/types` + mappers DTO↔domain.
11
+ - Может вызывать relative `+server.ts` routes (`/api/...`) при BFF — всё равно через services, не из `.svelte`.
12
+
13
+ # Структура
14
+
15
+ - Каталоги сервисов под `src/lib/api/services/**` (или схема соседей).
16
+ - Снаружи слоя — только barrel `src/lib/api/index.ts` (`public-imports`, `layer-barrel-exports`).
17
+
18
+ # Мапперы
19
+
20
+ - Чистые функции; UI/store видят domain models, не сырые DTO.
21
+ - Не вызывать `fetch` напрямую в теле сервиса — только через клиент / `event.fetch` patterns documented in repo.
22
+
23
+ # Ошибки
24
+
25
+ - Не глотать ошибки; бросать унифицированные / Result-подобные формы как в проекте.
26
+ - APM — централизованно в клиенте, не в каждом методе.
27
+
28
+ # Incorrect / Correct
29
+
30
+ ```ts
31
+ // ❌ DTO leak
32
+ export const getCard = async (id: string) => {
33
+ const data = await cardsClient.get(`/cards/${id}`)
34
+ return data
35
+ }
36
+
37
+ // ✅
38
+ import type { TCard } from '$lib/types'
39
+ import { mapCardResponse } from './cardResponseMappers'
40
+
41
+ export const getCard = async (id: string): Promise<TCard> => {
42
+ const data = await cardsClient.get(`/cards/${id}`)
43
+ return mapCardResponse(data)
44
+ }
45
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ description: HTTP client wrapper for SvelteKit — fetch, one stack, error contracts
3
+ paths:
4
+ - src/lib/clients/**/*.ts
5
+ - src/lib/api/**/*.ts
6
+ ---
7
+
8
+ # HTTP client
9
+
10
+ - One HTTP stack for the app: wrap **`fetch`** (or the shared client already in `src/lib/clients/**`).
11
+ - Do not mix ad-hoc `axios`/`ky` in features if a shared client exists.
12
+ - Services in `src/lib/api/**` call the wrapper — UI/stores do not own transport.
13
+ - In `load` / form actions, prefer the provided `event.fetch` for same-origin SSR cookie forwarding when calling own endpoints.
14
+ - Map responses to domain models in services/mappers before stores/runes.
15
+ - Errors: use project transport error types from `$lib/types`; narrow with `instanceof` when available.
16
+ - Base URL / auth: from `$env/*` / existing client factories — do not hardcode secrets.
17
+ - Calling relative `/api/*` (`+server.ts` BFF) from the client is fine when that is the repo pattern — still through services.
@@ -0,0 +1,67 @@
1
+ ---
2
+ description: Svelte stores и runes — клиентское состояние (SvelteKit)
3
+ paths:
4
+ - src/lib/stores/**/*.ts
5
+ - src/lib/stores/**/*.js
6
+ - **/*.svelte.ts
7
+ ---
8
+
9
+ # Общие принципы
10
+
11
+ - **Primary (Svelte 5):** runes в `.svelte` / `.svelte.ts` — `$state`, `$derived`, `$effect`, `$props`, `$bindable` as applicable.
12
+ - **Secondary (legacy / shared):** `writable` / `derived` / `readable` из `svelte/store` когда так делают соседи или для shared state вне runes — “follow neighbors”.
13
+ - В store / shared modules хранить **доменные модели**, не сырые DTO.
14
+ - Маппинг DTO → domain — в `src/lib/api/**` (или server mappers) **до** записи в store/runes.
15
+ - UI-only флаги можно держать локально в компоненте (`$state`), если так принято в репо.
16
+
17
+ # Запрещено в этом пресете
18
+
19
+ - RTK / Redux: `createSlice`, `createAsyncThunk`, RTK Query, `useDispatch` / `useSelector`, stem `store-rtk`.
20
+ - Pinia / Vuex: `defineStore`, stem `store-pinia`.
21
+ - Сырой `fetch` из store в обход `$lib/api` сервисов (кроме узких documented исключений репо).
22
+ - Импорт `$state` / runes из выдуманных пакетов — только Svelte runtime / documented APIs для installed major.
23
+
24
+ # Структура
25
+
26
+ - Доменный модуль — файл в `src/lib/stores/**` (например `src/lib/stores/profile.ts` или `profile.svelte.ts`).
27
+ - Export явных store factories / rune modules; имена как у соседей.
28
+ - Actions / функции вызывают сервисы из `$lib/api` (`public-imports`).
29
+
30
+ # Асинхронность
31
+
32
+ ```ts
33
+ // Incorrect — raw HTTP + DTO in state
34
+ import { writable } from 'svelte/store'
35
+ export const profile = writable(null)
36
+ export async function loadProfile() {
37
+ profile.set(await fetch('/api/profile').then((r) => r.json()))
38
+ }
39
+
40
+ // Correct
41
+ import { writable } from 'svelte/store'
42
+ import { profileApi } from '$lib/api'
43
+ import type { Profile } from '$lib/types'
44
+
45
+ export const profile = writable<Profile | null>(null)
46
+
47
+ export async function loadProfile() {
48
+ profile.set(await profileApi.getProfile())
49
+ }
50
+ ```
51
+
52
+ # Типизация и ошибки
53
+
54
+ - Доменные типы из `$lib/types` (или `@/types` если aliased).
55
+ - Ошибки транспорта — контракты из типов / принятый класс клиента (`http-client`).
56
+ - В UI: `$profile` / subscribe / `$derived` — follow neighbors.
57
+
58
+ # Тестирование
59
+
60
+ - Покрывать важные stores / rune modules (инициализация, переходы, actions с моком API).
61
+ - Unit: Vitest; мокать `$lib/api` сервисы.
62
+
63
+ # Требование к агенту
64
+
65
+ - Не класть HTTP/transport в компоненты.
66
+ - Строго типизировать state/actions.
67
+ - Следовать стилю соседних stores / runes modules.
@@ -0,0 +1,12 @@
1
+ # Architecture rules
2
+
3
+ | Файл | Назначение |
4
+ |------|------------|
5
+ | `public-imports.md` | Импорты `@/types`, `@/types/enums`, `@/api` (вне `src/lib/api/**`) |
6
+ | `architecture-boundaries-ui.md` | Slim границы UI при правках компонентов |
7
+ | `architecture-boundaries.md` | Полная карта UI / store / API (api, store, types, lib) |
8
+ | `layer-barrel-exports.md` | Двухуровневые barrel для слоёв с public API |
9
+ | `feature-delivery-workflow.md` | Сквозной чеклист новой фичи |
10
+ | `reference-features.md` | Эталонные пути UI/store/API/types |
11
+
12
+ Deprecated stubs `types-public-imports.md` / `api-public-imports.md` **removed** — use `public-imports.md`.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Границы слоя UI — slim rule для правок компонентов (без полной карты store/API)
3
+ paths:
4
+ - src/lib/components/**/*
5
+ - src/routes/**/*
6
+ ---
7
+
8
+ # UI layer boundaries (slim)
9
+
10
+ - **Импорты:** `src/lib/components/**`, facades под `src/lib/**`, `src/lib/stores/**` (public), типы из `$lib/types` / `@/types`, API — только `$lib/api` / `@/api` (`public-imports`).
11
+ - **Запрещено:** прямой HTTP‑клиент (`fetch` вне `src/lib/clients`); знание DTO — только доменные типы.
12
+ - **Состояние:** сценарии с записью — через `store-svelte` (stores / runes); узкие прямые вызовы `$lib/api` для чтения — только как в соседних фичах.
13
+ - **Организация:** `$lib` / `@/`; без deep‑импортов в чужие фичи; только public API.
14
+ - **Barrel:** при новых публичных символах — реэкспорт по `layer-barrel-exports`.
15
+
16
+ Полная карта слоёв: **`architecture-boundaries`** — при правках `src/lib/api`, `src/lib/stores`, `src/lib/types`, `src/lib/clients`.
@@ -0,0 +1,65 @@
1
+ ---
2
+ description: Архитектурные границы и правила импортов (SvelteKit)
3
+ paths:
4
+ - src/lib/api/**/*
5
+ - src/lib/stores/**/*
6
+ - src/lib/types/**/*
7
+ - src/lib/clients/**/*
8
+ - src/lib/components/**/*
9
+ - src/routes/**/*
10
+ ---
11
+
12
+ # Границы между слоями
13
+
14
+ ```text
15
+ src/routes (+page/+layout) / src/lib/components
16
+ → src/lib facades (optional)
17
+ → src/lib/stores ──→ src/lib/api (services barrel)
18
+ ↘︎ src/lib/types
19
+ → src/lib/api (read-only / narrow cases) ──→ src/lib/clients (fetch)
20
+ +server.ts / hooks.server.ts ──→ types / shared pure utils
21
+ ```
22
+
23
+ - **UI (`src/routes/**`, `src/lib/components/**`)**:
24
+ - Может импортировать: компоненты, facades, `src/lib/stores/**` (public), типы из `$lib/types` / `@/types`, API — **только** из `$lib/api` / `@/api` (`public-imports`).
25
+ - Не должен: вызывать HTTP‑клиент напрямую; знать DTO backend.
26
+ - **Store (`src/lib/stores/**`)** — `store-svelte`:
27
+ - Может импортировать: другие stores (public), `$lib/api`, `$lib/types`.
28
+ - Не должен: зависеть от UI; ходить в `src/lib/clients` в обход сервисов.
29
+ - **API (`src/lib/api/**`)**:
30
+ - Services + mappers; HTTP через `src/lib/clients/**`.
31
+ - Не должен: тянуть UI или store.
32
+ - **Server (`+server.ts`, hooks)**:
33
+ - Edge/BFF; secrets via `$env/static/private`; не заменяют `src/lib/api/**` domain services.
34
+
35
+ ## UI и обращение к API
36
+
37
+ - Сценарии с изменением серверного состояния — через store actions / rune modules.
38
+ - Прямой вызов `$lib/api` из UI — только узкие read-only случаи без дублирования store-сценария.
39
+ - Facades под `src/lib/**` — thin orchestration (не Vue `composables/`).
40
+
41
+ ## Правила импортов
42
+
43
+ - Между слоями — `$lib/…` (preferred) или `@/…` если настроен; уважать `$app/*` / `$env/*` без phantoms.
44
+ - Внутри фичи — относительные без подъёма выше корня фичи.
45
+ - Снаружи слоя — только public barrels (`layer-barrel-exports`, `public-imports`).
46
+
47
+ ## Запрещено как defaults
48
+
49
+ - RTK / Pinia / Vuex; stems `store-rtk` / `store-pinia`.
50
+ - Next `app/src/**`, Nuxt `pages/**` / `composables/**` как канон.
51
+
52
+ ## Incorrect
53
+
54
+ ```ts
55
+ import { httpClient } from '$lib/clients/http'
56
+ // UI / page calling transport directly
57
+ await httpClient.get('/orders')
58
+ ```
59
+
60
+ ## Correct
61
+
62
+ ```ts
63
+ import { loadOrders } from '$lib/stores/orders'
64
+ await loadOrders()
65
+ ```
@@ -0,0 +1,61 @@
1
+ ---
2
+ description: Сквозной чеклист новой фичи и матрица «слой → правило Cursor». Use when implementing features via feature-developer or feature-delivery skill.
3
+ paths:
4
+ - src/routes/**/*
5
+ - src/lib/components/**/*
6
+ - src/lib/stores/**/*
7
+ - api/**/*
8
+ - src/lib/**/*
9
+ - types/**/*
10
+ ---
11
+
12
+ <!-- shared-core: architecture/feature-delivery-workflow.md -->
13
+
14
+ # Доставка фичи (сквозной порядок)
15
+
16
+ ## Stack notes
17
+
18
+ Типичная фича с данными с backend и общим состоянием. Детали слоёв — `architecture-boundaries.mdc`, `svelte-app-core.mdc`.
19
+
20
+ Канонические пути: `src/routes/**`, `src/lib/{components,stores,api,clients,types}/**`, `tests/e2e/**`. Aliases: `$lib` preferred; `@/` if configured. State: `store-svelte` (runes primary; legacy stores secondary).
21
+
22
+ ## Чеклист (порядок работ)
23
+
24
+ 1. **Доменные типы** — `src/lib/types/**`, barrel (`public-imports`, `layer-barrel-exports`); JSDoc — `types-jsdoc`.
25
+ 2. **Контракт API** — DTO где принято; доменные типы в `$lib/types`.
26
+ 3. **Мапперы** — DTO → домен в `*responseMappers.ts` (`api-services`).
27
+ 4. **Сервисы** — клиенты `src/lib/clients/**`, barrel `$lib/api` (`api-services`, `http-client`). Без `fetch` из UI/store.
28
+ 5. **Состояние** — `src/lib/stores/**` / runes (`store-svelte`); actions → `$lib/api`. **Не** RTK / Pinia.
29
+ 6. **UI** — `src/routes/**`, `src/lib/components/**`; данные через store / facades / `load`.
30
+ 7. **Unit** — colocated `*.spec.ts` (Vitest + Testing Library Svelte).
31
+ 8. **E2E** — `tests/e2e/<Area>/<plan>.cases.md` + `*.spec.ts`.
32
+ 9. **Gate** — `post-change-lint`: `lint:js`, `lint:css`, `check`.
33
+
34
+ ## Частичные сценарии
35
+
36
+ | Задача | Минимум действий |
37
+ |--------|------------------|
38
+ | Только API + типы | Типы, сервис, мапперы, `$lib/api` barrel; unit на маппер. |
39
+ | Только store | Store/runes actions на `$lib/api`. |
40
+ | Только UI | Store/`load` data; без HTTP/DTO. |
41
+ | Только e2e | `*.cases.md` + spec; page object. |
42
+
43
+ ## Антипаттерны
44
+
45
+ - DTO в UI или нетипизированном store.
46
+ - HTTP из компонента / store в обход сервиса.
47
+ - Deep-import `$lib/api/services/**` из UI/store.
48
+ - `{...props}` / `$$restProps` без дисциплины — `no-rest-props-spread`.
49
+ - RTK / Pinia / Vue / Nuxt APIs as defaults.
50
+ - Load `design-guidance` when assessing structure / smells.
51
+
52
+ ## Матрица: зона → правила
53
+
54
+ | Зона | Правила |
55
+ |------|---------|
56
+ | `src/lib/clients/**` | `http-client`, `tests-unit` |
57
+ | `src/lib/api/**` | `api-services`, `layer-barrel-exports`, `http-client` |
58
+ | `src/lib/stores/**` | `store-svelte`, `architecture-boundaries`, `public-imports` |
59
+ | `src/lib/components/**`, `src/routes/**` | `svelte-ui`, `no-rest-props-spread`, `public-imports` |
60
+ | `src/lib/types/**` | `public-imports`, `types-jsdoc`, `layer-barrel-exports` |
61
+ | `tests/e2e/**` | `tests-e2e-structure`, `playwright-agents` |