@bonesofspring/ai-rules 0.2.2 → 0.2.4

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 (295) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +27 -4
  3. package/bin/cli.js +285 -72
  4. package/package.json +3 -2
  5. package/presets/claude/ios-swift/CLAUDE.md +28 -20
  6. package/presets/claude/ios-swift/MCP.md +14 -0
  7. package/presets/claude/ios-swift/README.md +18 -15
  8. package/presets/claude/ios-swift/agents/README.md +55 -0
  9. package/presets/claude/ios-swift/agents/accessibility-reviewer.md +67 -0
  10. package/presets/claude/ios-swift/agents/api-contract-reviewer.md +72 -0
  11. package/presets/claude/ios-swift/agents/build-verifier.md +64 -0
  12. package/presets/claude/ios-swift/agents/ci-investigator.md +73 -0
  13. package/presets/claude/ios-swift/agents/code-reviewer.md +75 -0
  14. package/presets/claude/ios-swift/agents/debugger.md +72 -0
  15. package/presets/claude/ios-swift/agents/feature-developer.md +35 -0
  16. package/presets/claude/ios-swift/agents/migration-specialist.md +73 -0
  17. package/presets/claude/ios-swift/agents/performance-auditor.md +72 -0
  18. package/presets/claude/ios-swift/agents/qa-tester.md +65 -0
  19. package/presets/claude/ios-swift/agents/security-reviewer.md +69 -0
  20. package/presets/claude/ios-swift/agents/solution-architect.md +17 -0
  21. package/presets/claude/ios-swift/agents/task-analyst.md +25 -0
  22. package/presets/claude/ios-swift/agents/task-router.md +62 -0
  23. package/presets/claude/ios-swift/agents/tech-writer.md +63 -0
  24. package/presets/claude/ios-swift/agents/unit-test-generator.md +54 -0
  25. package/presets/claude/ios-swift/agents/unit-test-healer.md +53 -0
  26. package/presets/claude/ios-swift/agents/unit-test-planner.md +64 -0
  27. package/presets/claude/ios-swift/agents/xcuitest-test-generator.md +47 -0
  28. package/presets/claude/ios-swift/agents/xcuitest-test-healer.md +47 -0
  29. package/presets/claude/ios-swift/agents/xcuitest-test-planner.md +67 -0
  30. package/presets/claude/ios-swift/commands/README.md +12 -2
  31. package/presets/claude/ios-swift/commands/feature-continue.md +51 -0
  32. package/presets/claude/ios-swift/commands/feature-start.md +30 -0
  33. package/presets/claude/ios-swift/commands/task-continue.md +49 -0
  34. package/presets/claude/ios-swift/commands/task.md +50 -0
  35. package/presets/claude/ios-swift/commands/technical-retro.md +58 -0
  36. package/presets/claude/ios-swift/hooks/README.md +10 -0
  37. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +382 -0
  38. package/presets/claude/ios-swift/hooks/guard-shell-command.sh +79 -0
  39. package/presets/claude/ios-swift/mcp.json +12 -0
  40. package/presets/claude/ios-swift/rules/README.md +25 -14
  41. package/presets/claude/ios-swift/rules/api-and-data/README.md +2 -1
  42. package/presets/claude/ios-swift/rules/api-and-data/networking.md +2 -2
  43. package/presets/claude/ios-swift/rules/api-and-data/persistence.md +30 -0
  44. package/presets/claude/ios-swift/rules/architecture/README.md +3 -1
  45. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +10 -2
  46. package/presets/claude/ios-swift/rules/architecture/module-public-api.md +25 -0
  47. package/presets/claude/ios-swift/rules/architecture/reference-features.md +50 -0
  48. package/presets/claude/ios-swift/rules/stack/ios-app-core.md +2 -1
  49. package/presets/claude/ios-swift/rules/testing/ui.md +2 -0
  50. package/presets/claude/ios-swift/rules/tooling-and-review/README.md +6 -1
  51. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-intake.md +18 -0
  52. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +47 -0
  53. package/presets/claude/ios-swift/rules/tooling-and-review/code-review.md +5 -0
  54. package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +5 -0
  55. package/presets/claude/ios-swift/rules/tooling-and-review/security-ios.md +36 -0
  56. package/presets/claude/ios-swift/rules/tooling-and-review/technical-retro.md +14 -0
  57. package/presets/claude/ios-swift/rules/tooling-and-review/xcode-tooling.md +24 -0
  58. package/presets/claude/ios-swift/rules/ui-and-accessibility/README.md +2 -1
  59. package/presets/claude/ios-swift/rules/ui-and-accessibility/navigation.md +28 -0
  60. package/presets/claude/ios-swift/skills/README.md +13 -0
  61. package/presets/claude/ios-swift/skills/ci-investigation/SKILL.md +39 -0
  62. package/presets/claude/ios-swift/skills/code-review/SKILL.md +27 -0
  63. package/presets/claude/ios-swift/skills/debug-investigation/SKILL.md +30 -0
  64. package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +27 -0
  65. package/presets/claude/ios-swift/skills/technical-retro/SKILL.md +10 -0
  66. package/presets/claude/ios-swift/skills/unit-testing/SKILL.md +32 -0
  67. package/presets/claude/ios-swift/skills/xcuitest-e2e/SKILL.md +33 -0
  68. package/presets/claude/ios-swift/team/README.md +27 -0
  69. package/presets/claude/ios-swift/team/fixtures/bugfix-standard.json +33 -0
  70. package/presets/claude/ios-swift/team/fixtures/feature-full.json +48 -0
  71. package/presets/claude/ios-swift/team/fixtures/feature-light.json +36 -0
  72. package/presets/claude/next/CLAUDE.md +29 -5
  73. package/presets/claude/next/MCP.md +16 -0
  74. package/presets/claude/next/README.md +12 -0
  75. package/presets/claude/next/agents/README.md +155 -1
  76. package/presets/claude/next/agents/accessibility-reviewer.md +65 -0
  77. package/presets/claude/next/agents/api-contract-reviewer.md +69 -0
  78. package/presets/claude/next/agents/build-verifier.md +64 -0
  79. package/presets/claude/next/agents/ci-investigator.md +62 -0
  80. package/presets/claude/next/agents/code-reviewer.md +63 -0
  81. package/presets/claude/next/agents/debugger.md +63 -0
  82. package/presets/claude/next/agents/feature-developer.md +27 -0
  83. package/presets/claude/next/agents/migration-specialist.md +69 -0
  84. package/presets/claude/next/agents/performance-auditor.md +68 -0
  85. package/presets/claude/next/agents/qa-tester.md +56 -0
  86. package/presets/claude/next/agents/security-reviewer.md +64 -0
  87. package/presets/claude/next/agents/solution-architect.md +70 -0
  88. package/presets/claude/next/agents/task-analyst.md +111 -0
  89. package/presets/claude/next/agents/task-router.md +94 -0
  90. package/presets/claude/next/agents/tech-writer.md +61 -0
  91. package/presets/claude/next/agents/unit-test-generator.md +37 -0
  92. package/presets/claude/next/agents/unit-test-healer.md +38 -0
  93. package/presets/claude/next/agents/unit-test-planner.md +62 -0
  94. package/presets/claude/next/commands/README.md +10 -2
  95. package/presets/claude/next/commands/feature-continue.md +51 -0
  96. package/presets/claude/next/commands/feature-start.md +30 -0
  97. package/presets/claude/next/commands/task-continue.md +49 -0
  98. package/presets/claude/next/commands/task.md +50 -0
  99. package/presets/claude/next/commands/technical-retro.md +58 -0
  100. package/presets/claude/next/hooks/README.md +5 -2
  101. package/presets/claude/next/hooks/chain-team-phases.sh +380 -0
  102. package/presets/claude/next/hooks/guard-shell-command.sh +77 -0
  103. package/presets/claude/next/mcp.json +20 -0
  104. package/presets/claude/next/rules/README.md +42 -11
  105. package/presets/claude/next/rules/api-and-data/README.md +7 -1
  106. package/presets/claude/next/rules/api-and-data/api-services.md +57 -0
  107. package/presets/claude/next/rules/api-and-data/http-client.md +40 -0
  108. package/presets/claude/next/rules/api-and-data/store-rtk.md +65 -0
  109. package/presets/claude/next/rules/architecture/README.md +11 -2
  110. package/presets/claude/next/rules/architecture/architecture-boundaries-ui.md +15 -0
  111. package/presets/claude/next/rules/architecture/architecture-boundaries.md +75 -0
  112. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +79 -0
  113. package/presets/claude/next/rules/architecture/layer-barrel-exports.md +58 -0
  114. package/presets/claude/next/rules/architecture/public-imports.md +46 -0
  115. package/presets/claude/next/rules/architecture/reference-features.md +37 -0
  116. package/presets/claude/next/rules/stack/README.md +10 -1
  117. package/presets/claude/next/rules/stack/arrow-functions.md +45 -0
  118. package/presets/claude/next/rules/stack/navigation-router-ui.md +15 -0
  119. package/presets/claude/next/rules/stack/navigation-router.md +64 -0
  120. package/presets/claude/next/rules/stack/next-app-core.md +33 -0
  121. package/presets/claude/next/rules/stack/next-app-router.md +36 -0
  122. package/presets/claude/next/rules/stack/no-type-assertion.md +59 -0
  123. package/presets/claude/next/rules/stack/types-jsdoc.md +37 -0
  124. package/presets/claude/next/rules/testing/README.md +9 -1
  125. package/presets/claude/next/rules/testing/playwright-agents.md +74 -0
  126. package/presets/claude/next/rules/testing/tests-e2e-structure.md +52 -0
  127. package/presets/claude/next/rules/testing/tests-unit.md +66 -0
  128. package/presets/claude/next/rules/tooling-and-review/README.md +12 -1
  129. package/presets/claude/next/rules/tooling-and-review/agent-team-intake.md +15 -0
  130. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +145 -0
  131. package/presets/claude/next/rules/tooling-and-review/code-quality.md +42 -0
  132. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +30 -0
  133. package/presets/claude/next/rules/tooling-and-review/package-manager.md +11 -0
  134. package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +44 -0
  135. package/presets/claude/next/rules/ui-and-accessibility/README.md +10 -1
  136. package/presets/claude/next/rules/ui-and-accessibility/css-property-order.md +14 -0
  137. package/presets/claude/next/rules/ui-and-accessibility/no-props-spread.md +57 -0
  138. package/presets/claude/next/rules/ui-and-accessibility/react-a11y-coding.md +37 -0
  139. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +91 -0
  140. package/presets/claude/next/skills/README.md +11 -1
  141. package/presets/claude/next/skills/ci-investigation/SKILL.md +36 -0
  142. package/presets/claude/next/skills/code-review/SKILL.md +26 -0
  143. package/presets/claude/next/skills/debug-investigation/SKILL.md +28 -0
  144. package/presets/claude/next/skills/feature-delivery/SKILL.md +15 -0
  145. package/presets/claude/next/skills/playwright-e2e/SKILL.md +31 -0
  146. package/presets/claude/next/skills/technical-retro/SKILL.md +40 -0
  147. package/presets/claude/next/skills/unit-testing/SKILL.md +32 -0
  148. package/presets/claude/next/team/README.md +105 -0
  149. package/presets/claude/next/team/fixtures/bugfix-standard.json +15 -0
  150. package/presets/claude/next/team/fixtures/feature-full.json +16 -0
  151. package/presets/claude/next/team/fixtures/feature-light.json +17 -0
  152. package/presets/claude/next/team/tasks/.gitkeep +1 -0
  153. package/presets/cursor/ios-swift/AGENTS.md +47 -0
  154. package/presets/cursor/ios-swift/BUGBOT.md +15 -0
  155. package/presets/cursor/ios-swift/MCP.md +16 -0
  156. package/presets/cursor/ios-swift/README.md +27 -7
  157. package/presets/cursor/ios-swift/agents/README.md +55 -0
  158. package/presets/cursor/ios-swift/agents/accessibility-reviewer.md +67 -0
  159. package/presets/cursor/ios-swift/agents/api-contract-reviewer.md +72 -0
  160. package/presets/cursor/ios-swift/agents/build-verifier.md +64 -0
  161. package/presets/cursor/ios-swift/agents/ci-investigator.md +73 -0
  162. package/presets/cursor/ios-swift/agents/code-reviewer.md +75 -0
  163. package/presets/cursor/ios-swift/agents/debugger.md +72 -0
  164. package/presets/cursor/ios-swift/agents/feature-developer.md +35 -0
  165. package/presets/cursor/ios-swift/agents/migration-specialist.md +73 -0
  166. package/presets/cursor/ios-swift/agents/performance-auditor.md +72 -0
  167. package/presets/cursor/ios-swift/agents/qa-tester.md +65 -0
  168. package/presets/cursor/ios-swift/agents/security-reviewer.md +69 -0
  169. package/presets/cursor/ios-swift/agents/solution-architect.md +17 -0
  170. package/presets/cursor/ios-swift/agents/task-analyst.md +25 -0
  171. package/presets/cursor/ios-swift/agents/task-router.md +62 -0
  172. package/presets/cursor/ios-swift/agents/tech-writer.md +63 -0
  173. package/presets/cursor/ios-swift/agents/unit-test-generator.md +54 -0
  174. package/presets/cursor/ios-swift/agents/unit-test-healer.md +53 -0
  175. package/presets/cursor/ios-swift/agents/unit-test-planner.md +64 -0
  176. package/presets/cursor/ios-swift/agents/xcuitest-test-generator.md +47 -0
  177. package/presets/cursor/ios-swift/agents/xcuitest-test-healer.md +47 -0
  178. package/presets/cursor/ios-swift/agents/xcuitest-test-planner.md +67 -0
  179. package/presets/cursor/ios-swift/commands/README.md +49 -1
  180. package/presets/cursor/ios-swift/commands/feature-continue.md +19 -0
  181. package/presets/cursor/ios-swift/commands/feature-start.md +33 -0
  182. package/presets/cursor/ios-swift/commands/task-continue.md +49 -0
  183. package/presets/cursor/ios-swift/commands/task.md +50 -0
  184. package/presets/cursor/ios-swift/commands/technical-retro.md +81 -0
  185. package/presets/cursor/ios-swift/hooks/README.md +8 -0
  186. package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +382 -0
  187. package/presets/cursor/ios-swift/hooks/guard-shell-command.sh +79 -0
  188. package/presets/cursor/ios-swift/hooks.json +17 -0
  189. package/presets/cursor/ios-swift/mcp.json +11 -0
  190. package/presets/cursor/ios-swift/rules/README.md +45 -13
  191. package/presets/cursor/ios-swift/rules/agent-team-intake.mdc +16 -0
  192. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +85 -0
  193. package/presets/cursor/ios-swift/rules/code-review-mr.mdc +1 -0
  194. package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +1 -1
  195. package/presets/cursor/ios-swift/rules/ios-app-core.mdc +2 -1
  196. package/presets/cursor/ios-swift/rules/module-public-api.mdc +26 -0
  197. package/presets/cursor/ios-swift/rules/navigation-coordinators.mdc +29 -0
  198. package/presets/cursor/ios-swift/rules/networking-services.mdc +2 -2
  199. package/presets/cursor/ios-swift/rules/persistence-data.mdc +31 -0
  200. package/presets/cursor/ios-swift/rules/reference-features.mdc +53 -0
  201. package/presets/cursor/ios-swift/rules/security-ios.mdc +35 -0
  202. package/presets/cursor/ios-swift/rules/technical-retro.mdc +12 -0
  203. package/presets/cursor/ios-swift/rules/tests-ui.mdc +1 -0
  204. package/presets/cursor/ios-swift/rules/xcode-tooling.mdc +20 -0
  205. package/presets/cursor/ios-swift/skills/README.md +13 -0
  206. package/presets/cursor/ios-swift/skills/ci-investigation/SKILL.md +39 -0
  207. package/presets/cursor/ios-swift/skills/code-review/SKILL.md +27 -0
  208. package/presets/cursor/ios-swift/skills/debug-investigation/SKILL.md +30 -0
  209. package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +27 -0
  210. package/presets/cursor/ios-swift/skills/technical-retro/SKILL.md +10 -0
  211. package/presets/cursor/ios-swift/skills/unit-testing/SKILL.md +32 -0
  212. package/presets/cursor/ios-swift/skills/xcuitest-e2e/SKILL.md +33 -0
  213. package/presets/cursor/ios-swift/team/README.md +31 -0
  214. package/presets/cursor/ios-swift/team/fixtures/bugfix-standard.json +33 -0
  215. package/presets/cursor/ios-swift/team/fixtures/feature-full.json +48 -0
  216. package/presets/cursor/ios-swift/team/fixtures/feature-light.json +36 -0
  217. package/presets/cursor/next/AGENTS.md +36 -0
  218. package/presets/cursor/next/BUGBOT.md +14 -0
  219. package/presets/cursor/next/MCP.md +16 -0
  220. package/presets/cursor/next/agents/README.md +165 -0
  221. package/presets/cursor/next/agents/accessibility-reviewer.md +67 -0
  222. package/presets/cursor/next/agents/api-contract-reviewer.md +71 -0
  223. package/presets/cursor/next/agents/build-verifier.md +66 -0
  224. package/presets/cursor/next/agents/ci-investigator.md +64 -0
  225. package/presets/cursor/next/agents/code-reviewer.md +64 -0
  226. package/presets/cursor/next/agents/debugger.md +64 -0
  227. package/presets/cursor/next/agents/feature-developer.md +28 -0
  228. package/presets/cursor/next/agents/migration-specialist.md +71 -0
  229. package/presets/cursor/next/agents/performance-auditor.md +70 -0
  230. package/presets/cursor/next/agents/playwright-test-generator.md +27 -0
  231. package/presets/cursor/next/agents/playwright-test-healer.md +27 -0
  232. package/presets/cursor/next/agents/playwright-test-planner.md +28 -0
  233. package/presets/cursor/next/agents/qa-tester.md +58 -0
  234. package/presets/cursor/next/agents/security-reviewer.md +66 -0
  235. package/presets/cursor/next/agents/solution-architect.md +71 -0
  236. package/presets/cursor/next/agents/task-analyst.md +112 -0
  237. package/presets/cursor/next/agents/task-router.md +95 -0
  238. package/presets/cursor/next/agents/tech-writer.md +62 -0
  239. package/presets/cursor/next/agents/unit-test-generator.md +39 -0
  240. package/presets/cursor/next/agents/unit-test-healer.md +40 -0
  241. package/presets/cursor/next/agents/unit-test-planner.md +64 -0
  242. package/presets/cursor/next/commands/README.md +49 -1
  243. package/presets/cursor/next/commands/feature-continue.md +19 -0
  244. package/presets/cursor/next/commands/feature-start.md +33 -0
  245. package/presets/cursor/next/commands/task-continue.md +49 -0
  246. package/presets/cursor/next/commands/task.md +50 -0
  247. package/presets/cursor/next/commands/technical-retro.md +81 -0
  248. package/presets/cursor/next/hooks/README.md +8 -0
  249. package/presets/cursor/next/hooks/chain-team-phases.sh +380 -0
  250. package/presets/cursor/next/hooks/guard-shell-command.sh +77 -0
  251. package/presets/cursor/next/hooks.json +17 -0
  252. package/presets/cursor/next/mcp.json +19 -0
  253. package/presets/cursor/next/rules/README.md +67 -0
  254. package/presets/cursor/next/rules/agent-team-intake.mdc +14 -0
  255. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +147 -0
  256. package/presets/cursor/next/rules/api-services.mdc +12 -10
  257. package/presets/cursor/next/rules/architecture-boundaries-ui.mdc +15 -0
  258. package/presets/cursor/next/rules/architecture-boundaries.mdc +31 -12
  259. package/presets/cursor/next/rules/arrow-functions.mdc +46 -0
  260. package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +5 -4
  261. package/presets/cursor/next/rules/code-review-mr.mdc +21 -40
  262. package/presets/cursor/next/rules/css-property-order-stylelint.mdc +16 -0
  263. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +76 -0
  264. package/presets/cursor/next/rules/http-client.mdc +42 -0
  265. package/presets/cursor/next/rules/layer-barrel-exports.mdc +59 -0
  266. package/presets/cursor/next/rules/navigation-router-stack.mdc +62 -0
  267. package/presets/cursor/next/rules/navigation-router-ui.mdc +16 -0
  268. package/presets/cursor/next/rules/next-app-core.mdc +18 -61
  269. package/presets/cursor/next/rules/next-app-router.mdc +36 -0
  270. package/presets/cursor/next/rules/no-props-spread.mdc +27 -4
  271. package/presets/cursor/next/rules/no-type-assertion-as-import-export.mdc +60 -0
  272. package/presets/cursor/next/rules/package-manager.mdc +16 -0
  273. package/presets/cursor/next/rules/playwright-agents.mdc +2 -1
  274. package/presets/cursor/next/rules/post-change-lint.mdc +40 -0
  275. package/presets/cursor/next/rules/public-imports.mdc +48 -0
  276. package/presets/cursor/next/rules/react-a11y-coding.mdc +37 -0
  277. package/presets/cursor/next/rules/react-ui.mdc +33 -3
  278. package/presets/cursor/next/rules/reference-features.mdc +39 -0
  279. package/presets/cursor/next/rules/store-rtk.mdc +13 -6
  280. package/presets/cursor/next/rules/technical-retro.mdc +12 -0
  281. package/presets/cursor/next/rules/tests-unit.mdc +30 -10
  282. package/presets/cursor/next/rules/types-jsdoc.mdc +42 -0
  283. package/presets/cursor/next/skills/README.md +15 -0
  284. package/presets/cursor/next/skills/ci-investigation/SKILL.md +36 -0
  285. package/presets/cursor/next/skills/code-review/SKILL.md +26 -0
  286. package/presets/cursor/next/skills/debug-investigation/SKILL.md +28 -0
  287. package/presets/cursor/next/skills/feature-delivery/SKILL.md +15 -0
  288. package/presets/cursor/next/skills/playwright-e2e/SKILL.md +31 -0
  289. package/presets/cursor/next/skills/technical-retro/SKILL.md +40 -0
  290. package/presets/cursor/next/skills/unit-testing/SKILL.md +32 -0
  291. package/presets/cursor/next/team/README.md +109 -0
  292. package/presets/cursor/next/team/fixtures/bugfix-standard.json +15 -0
  293. package/presets/cursor/next/team/fixtures/feature-full.json +16 -0
  294. package/presets/cursor/next/team/fixtures/feature-light.json +17 -0
  295. package/presets/cursor/next/team/tasks/.gitkeep +0 -0
@@ -0,0 +1,147 @@
1
+ ---
2
+ description: Orchestrates the agent team via task-router and pipeline.json. Use for /task, /task-continue, /feature-start, task decomposition, or when the user describes a feature, bug, or review request.
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # Agent team orchestrator
7
+
8
+ Parent agent = **manager**. Router plans; specialists execute. Artifacts: `.cursor/team/tasks/<slug>/`.
9
+
10
+ Work request без `/task` — см. **`agent-team-intake.mdc`** (когда предлагать router вместо прямого кодинга).
11
+
12
+ ## Entry points
13
+
14
+ | Command | When |
15
+ |---------|------|
16
+ | **`/task <desc>`** | **Preferred** — router → dynamic pipeline → first agent |
17
+ | `/task-continue <slug>` | After human gate or pause |
18
+ | `/feature-start <desc>` | Legacy: analyst-only start (no router) |
19
+ | `/feature-continue <slug>` | Alias of task-continue |
20
+ | `/technical-retro [slug]` | Retro with agent team block |
21
+
22
+ ## Roles
23
+
24
+ | Agent | App / prod writes | Typical intent |
25
+ |-------|-------------------|----------------|
26
+ | `task-router` | no (team only) | Every `/task` — writes `pipeline.json` |
27
+ | `task-analyst` | no (team only) | feature, refactor, test-only, a11y, docs-only, migration |
28
+ | `solution-architect` | no (team only) | spike, complex cross-layer feature |
29
+ | `migration-specialist` | no (team only) | migration — phased upgrade plan |
30
+ | `api-contract-reviewer` | no (team only) | new/changed backend API contracts |
31
+ | `debugger` | minimal fix | bugfix |
32
+ | `ci-investigator` | minimal CI fix | ci-fix — minimal CI repair |
33
+ | `feature-developer` | yes | feature, bugfix, refactor, migration, a11y |
34
+ | `build-verifier` | no (team only) | lint/type-check/unit gate after developer |
35
+ | `accessibility-reviewer` | no (team only) | a11y, UI-heavy feature |
36
+ | `performance-auditor` | no (team only) | perf-audit, perf-sensitive feature |
37
+ | `code-reviewer` | no (team only) | most pipelines, review-only |
38
+ | `security-reviewer` | no (team only) | auth, forms, sensitive data |
39
+ | `qa-tester` | tests only | feature, bugfix, test-only |
40
+ | `unit-test-planner` | no (team only) | unit-only — coverage plan |
41
+ | `unit-test-generator` | tests only | unit-only — spec generation |
42
+ | `unit-test-healer` | tests only | failing/flaky unit tests |
43
+ | `playwright-test-planner` | e2e plans | e2e scenario planning |
44
+ | `playwright-test-generator` | e2e tests | e2e spec generation |
45
+ | `playwright-test-healer` | e2e fixes | failing/flaky e2e fixes |
46
+ | `tech-writer` | docs / team | docs-only, feature/migration docs |
47
+
48
+ **Cursor frontmatter:** all team pipeline agents use `readonly: false` so they can write `.cursor/team/**`. Production/app restrictions live in the agent prompt body — do **not** set `readonly: true` (Cursor blocks *all* file writes, including team artifacts).
49
+
50
+ Full prompts: `.cursor/agents/*.md`. Artifact conventions: `.cursor/team/README.md`.
51
+
52
+ ## Dynamic pipeline
53
+
54
+ ```mermaid
55
+ flowchart TD
56
+ task["/task prompt"]
57
+ router["task-router"]
58
+ pipeline["pipeline.json"]
59
+ step0["steps 0..N"]
60
+ gate{"humanGates?"}
61
+ hook["subagentStop hook"]
62
+ retro["/technical-retro"]
63
+
64
+ task --> router
65
+ router --> pipeline
66
+ pipeline --> step0
67
+ step0 --> gate
68
+ gate -->|"/task-continue"| step0
69
+ step0 --> hook
70
+ hook --> step0
71
+ step0 --> retro
72
+ ```
73
+
74
+ **Source of truth for order:** `pipeline.json` → `steps[]`. Never hardcode analyst → dev → review → QA when `pipeline.json` exists.
75
+
76
+ ## status.json (pipeline mode)
77
+
78
+ ```json
79
+ {
80
+ "slug": "...",
81
+ "intent": "feature",
82
+ "pipelineIndex": 0,
83
+ "currentAgent": "task-analyst",
84
+ "phase": "executing",
85
+ "state": "in_progress",
86
+ "awaitingHumanGate": false
87
+ }
88
+ ```
89
+
90
+ | state | Meaning |
91
+ |-------|---------|
92
+ | `in_progress` | Current step running |
93
+ | `completed` | Current step done; hook advances |
94
+ | `awaiting_approval` | Human gate; wait for `/task-continue` |
95
+ | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
96
+ | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
97
+
98
+ ## Pipeline step options
99
+
100
+ | Field | Use |
101
+ |-------|-----|
102
+ | `skipIf` | `debugger.fixed` / `ci-investigator.resolved` — hook skips step when artifact says fix applied |
103
+ | `parallel: true` | `agent` is array — invoke **all** agents in one parent turn; each appends to `parallelCompleted` |
104
+ | `scope` | e.g. `unit-in-dev`, `e2e-only` — passed to developer/qa |
105
+
106
+ ## Rules (strict)
107
+
108
+ 1. **`/task` always starts with task-router** (except user says "skip router" with documented pipeline).
109
+ 2. Read `pipeline.json` before every subagent invocation.
110
+ 3. One role per Task call — **except** parallel steps: multiple Task calls in one message.
111
+ 4. **Never** skip `humanGates` without `/task-continue` or explicit user approval.
112
+ 5. Persist handoffs to disk (`brief.md`, `decomposition.md`, `debug-report.md`, `validation-report.md`, `architecture.md`, `migration-plan.md`, `ci-report.md`, `a11y-review.md`, `perf-report.md`, `security-review.md`, `api-contract-review.md`, `unit-test-plan.md`, `documentation.md`, `review.md`).
113
+ 6. On `changes_requested` from reviewers: hook sets `retryAfterFix` → developer → same reviewer.
114
+ 7. On `validation_failed` from `build-verifier`: hook sets `retryAfterFix: build-verifier` → developer → build-verifier.
115
+ 8. When all steps complete, suggest `/technical-retro <slug>`.
116
+ 9. If `autoChain: false` in pipeline, do not rely on hook — manual step only.
117
+
118
+ ## Team artifact I/O (Cursor Shell sandbox)
119
+
120
+ - Create/update `.cursor/team/tasks/<slug>/**` with the **Write** tool (parents are created automatically). Do **not** bootstrap slug dirs with Shell `mkdir -p` — default sandbox returns `Operation not permitted` (worse on macOS Desktop/Documents with TCC `com.apple.macl`).
121
+ - If Shell must touch team paths and fails with EPERM, retry with `required_permissions: ["all"]`. Prefer Write for artifacts.
122
+ - Prefer repo under `~/Projects` / `WebstormProjects` over `~/Desktop` when using agent team heavily.
123
+
124
+ ## Invoking agents
125
+
126
+ Use Task tool or `/agent-name`. Pass: slug, artifact paths, step `scope` if set.
127
+
128
+ After each agent completes, ensure `status.json` has `state: completed` (or `awaiting_approval` if gate applies).
129
+
130
+ ## Legacy mode
131
+
132
+ If `pipeline.json` is missing (old `/feature-start` tasks), fall back to fixed phases: analysis → development → review → testing. Hook supports both.
133
+
134
+ ## Skip pipeline when
135
+
136
+ Do **not** run `/task` + router for:
137
+
138
+ - Pure questions («как работает X», «объясни»).
139
+ - Typo / one-file fix / trivial config with no architecture risk.
140
+ - User explicitly says «без pipeline», «просто сделай», or continues an active slug.
141
+ - Single-line `docs-only` with no code impact.
142
+
143
+ Borderline work requests — см. **`agent-team-intake.mdc`**.
144
+
145
+ ## Auto-detection (optional)
146
+
147
+ When user describes a **non-trivial task** (not a question), suggest `/task <message>` or run router if they agree.
@@ -1,40 +1,41 @@
1
1
  ---
2
2
  description: Конвенции API сервисов и мапперов
3
- globs: src/api/services/**/*.ts
3
+ globs: app/src/api/services/**/*.ts
4
4
  alwaysApply: false
5
5
  ---
6
6
 
7
7
  # Роль API слоя
8
8
 
9
9
  - Инкапсулировать всё, что связано с:
10
- - HTTP‑запросами (через принятый в проекте клиент),
10
+ - HTTP‑запросами через **экземпляры прикладных API‑клиентов** в `app/src/api/clients/**`, собранные на **общей реализации** из `app/src/lib/clients/**` (как в существующем коде); подробности — **`http-client.mdc`**; положение слоя в схеме **порты и адаптеры** — `architecture-boundaries.mdc`;
11
11
  - URL/путями,
12
12
  - заголовками и кодами ответов,
13
13
  - DTO backend.
14
14
  - Предоставлять UI и store **стабильный доменный интерфейс**:
15
- - функции, работающие с доменными типами из `@/types/**`.
15
+ - функции, работающие с доменными типами из `@/types` (`public-imports.mdc`).
16
16
  - мапперы между DTO и доменными типами.
17
17
 
18
18
  # Структура модулей
19
19
 
20
20
  - Для каждой доменной области (например, заказы, биллинг, настройки аккаунта):
21
- - отдельный каталог в `src/api/services/<ИмяСервиса или фичи>/**` по конвенции репозитория.
21
+ - отдельный каталог в `app/src/api/services/<ИмяСервиса или фичи>/**` по конвенции репозитория.
22
22
  - Внутри модуля:
23
23
  - файлы с вызовами API (`index.ts` или `*.service.ts`);
24
24
  - файлы мапперов (`*responseMappers.ts`);
25
- - специфичные типы запросов/ответов (если не вынесены в `@/types/**`).
26
- - один или несколько **public API** файлов (`index.ts` или barrel‑файлы), через которые к модулю обращаются UI, store и другие слои.
25
+ - специфичные типы запросов/ответов (если не вынесены в `app/src/types/**` с экспортом через barrel `@/types`).
26
+ - при необходимости локальные `index.ts` / barrel внутри модуля для структуры **внутри** `app/src/api/**`; **снаружи** этого слоя UI, store и остальной код импортируют только из корневого barrel `app/src/api/index.ts` (`import … from '@/api'`, **`public-imports.mdc`**).
27
27
 
28
28
  # Мапперы и типы
29
29
 
30
30
  - Для каждого запроса/эндпоинта:
31
31
  - описывать **response‑тип (DTO)**, точно соответствующий контракту backend;
32
- - определять **целевой доменный тип** в `src/types/**`, с которым будет работать приложение (включая вычисляемые/агрегированные поля).
32
+ - определять **целевой доменный тип** в `app/src/types/**`, с которым будет работать приложение (включая вычисляемые/агрегированные поля).
33
33
  - Мапперы (например, `*responseMappers.ts`):
34
34
  - чистые функции, без сайд‑эффектов;
35
35
  - выполняют все необходимые вычисления и преобразования данных (булевы флаги, склейка строк, агрегаты и т.п.) при переводе из DTO в доменные модели;
36
36
  - при необходимости обеспечивают обратное преобразование (доменные модели -> транспортные типы).
37
- - UI и store работают только с доменными типами (из `@/types/**` или экспортируемыми из API слоя), а не с "сырыми" DTO.
37
+ - UI и store работают только с доменными типами (из `@/types` или экспортируемыми из public API слоя API), а не с "сырыми" DTO.
38
+ - **Не вызывать `fetch` напрямую** в теле API‑методов: только через клиент; исключения — узкие модули (например JSON‑RPC), если так уже устроено в репозитории.
38
39
 
39
40
  # Обработка ошибок
40
41
 
@@ -49,8 +50,9 @@ alwaysApply: false
49
50
 
50
51
  При добавлении/изменении API‑метода:
51
52
  - Следовать существующим сервисам и мапперам как эталону.
53
+ - Пройти чеклист barrel-экспортов (**`layer-barrel-exports.mdc`**): локальный `index.ts` → фасад слоя → корневой barrel.
52
54
  - Не смешивать слой API и UI/store:
53
55
  - компоненты не должны зависеть от DTO;
54
- - store не должен знать о HTTP‑деталях (URL, коды).
55
- - При использовании API‑сервисов в UI, store и утилитах импортировать только из public API файлов модуля (например, `@/api/services/OrdersApi/.../index`), а не из внутренних файлов‑реализаций.
56
+ - store не должен сам собирать URL/коды эндпоинтов и не обходить сервисы; **транспортный тип ответа** и **контракт ошибки** из `@/types` (как у прикладного клиента) допустимы во thunk при разборе `catch`/payload, если так выстроен сервис (см. `store-rtk.mdc`, `http-client.mdc`).
57
+ - При использовании API‑сервисов в UI, store и утилитах **вне** `app/src/api/**` импортировать **только** из `@/api` (корневой barrel), см. **`public-imports.mdc`**; внутри слоя API по относительным путям или `@/api/services/**` / `@/api/clients/**`, не дублируя публичный контракт мимо корневого barrel для внешних потребителей.
56
58
 
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Границы слоя UI — slim rule для правок компонентов (без полной карты store/API)
3
+ globs: app/src/ui/**/*.tsx,app/src/ui/**/*.ts
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # UI layer boundaries (slim)
8
+
9
+ - **Импорты:** `@/ui/**`, `@/store/**`, типы из `@/types` и enum из `@/types/enums`, API — только `from '@/api'` (`public-imports.mdc`).
10
+ - **Запрещено:** прямой HTTP‑клиент; знание DTO — только доменные типы.
11
+ - **Состояние:** сценарии с записью и координация шагов — через store/thunk; узкие прямые вызовы `@/api` для чтения — только как в соседних фичах.
12
+ - **Организация:** алиас `@/`; без deep‑импортов в чужие фичи; только public API.
13
+ - **Barrel:** при новых публичных символах — реэкспорт по `layer-barrel-exports.mdc` (правило грузится на `index.ts`).
14
+
15
+ Полная карта слоёв (store, API, порты‑адаптеры): **`architecture-boundaries.mdc`** — при правках `app/src/api`, `store`, `types`, `lib`.
@@ -1,42 +1,61 @@
1
1
  ---
2
2
  description: Архитектурные границы и правила импортов
3
- alwaysApply: true
3
+ globs: app/src/api/**/*,app/src/store/**/*,app/src/types/**/*,app/src/lib/**/*
4
+ alwaysApply: false
4
5
  ---
5
6
 
6
7
  # Границы между слоями
7
8
 
8
- - **UI (src/ui/**)**:
9
- - Может импортировать: `@/ui/**`, `@/store/**`, `@/types/**`, `@/api/services/**` (через публичные интерфейсы).
9
+ - **UI (app/src/ui/**)**:
10
+ - Может импортировать: `@/ui/**`, `@/store/**`, типы из `@/types` и enum из `@/types/enums` (**только как в `public-imports.mdc`**), контракт к API — **только** `import … from '@/api'` (**`public-imports.mdc`**).
10
11
  - Не должен:
11
12
  - обращаться к HTTP‑клиенту напрямую;
12
13
  - знать детали DTO backend — только доменные типы.
13
- - **Store (src/store/**)**:
14
- - Может импортировать: `@/store/**`, `@/api/services/**`, `@/types/**`.
14
+ - **Store (app/src/store/**)**:
15
+ - Может импортировать: `@/store/**`, сервисы и публичные сущности API — **только** из `@/api` (**`public-imports.mdc`**), типы из `@/types` и enum из `@/types/enums` (**`public-imports.mdc`**).
15
16
  - Не должен:
16
17
  - зависеть от конкретных UI‑компонентов;
17
18
  - напрямую работать с global/window API.
18
- - **API (src/api/services/**)**:
19
- - Может импортировать: `@/types/**`, общие утилиты.
19
+ - Вызовы к backend — только через сервисы, импортируемые из `@/api`; **транспортные** типы ответа и ошибки (из `@/types`, в том же виде, что у прикладного HTTP‑клиента) во thunk допустимы, если так выстроен API‑слой (`http-client.mdc`, `store-rtk.mdc`).
20
+ - **API (`app/src/api/**`)** — реализация в `services/**`, `clients/**`, реэкспорт в `app/src/api/index.ts`:
21
+ - Внутри слоя: типы из `@/types` и enum из `@/types/enums` (**`public-imports.mdc`**); импорты `@/api/services/**`, `@/api/clients/**`, относительные пути между файлами слоя (`http-client.mdc`, `api-services.mdc`).
20
22
  - Не должен:
21
23
  - тянуть в себя UI или store;
22
24
  - смешивать HTTP‑слой и доменный слой — использовать мапперы.
23
25
 
26
+ ## UI и обращение к API (`@/api`)
27
+
28
+ - По умолчанию сценарии с **изменением серверного состояния** и координация нескольких шагов — через **store** (`createAsyncThunk`, dispatch, паттерн фичи в репозитории).
29
+ - Прямой вызов методов сервисов, импортированных из **`@/api`**, из UI допустим только в **узких случаях**: преимущественно **чтение** или действие **без необходимости держать результат в Redux**; те же **доменные типы**, что использовал бы thunk; **не** дублировать уже существующий сценарий из store и **не** протаскивать DTO в компоненты.
30
+ - Предпочтительно оформлять такие вызовы так же, как в **соседних фичах** репозитория (хук‑фасад, отдельный хук и т.д.).
31
+
32
+ ## Порты и адаптеры (краткая карта)
33
+
34
+ - **Входящий адаптер**: UI — ввод пользователя, отображение; зависит от store и доменных типов, не от транспорта.
35
+ - **Оркестрация сценариев**: store (slices, thunk) — вызывает сервисы, кладёт в state **доменные** модели после маппинга.
36
+ - **Исходящий порт (контракт к backend)**: публичный API **`@/api`** (barrel `app/src/api/index.ts`; реализация — в `app/src/api/services/**` и т.д., см. `public-imports.mdc`).
37
+ - **Исходящий адаптер**: общая реализация HTTP в **`app/src/lib/clients/**`** и экземпляры в **`app/src/api/clients/**`**.
38
+
39
+ ## Фича как срез
40
+
41
+ - Для сложной фичи выравниваются имена и термины (**единый язык** предметной области) в типах, селекторах, сервисах и UI; структура папок — как в соседних фичах репозитория.
42
+
24
43
  # Правила импортов
25
44
 
26
45
  - Всегда использовать алиас `@/...` для импортов между слоями.
27
46
  - Внутри одного модуля/фичи можно использовать относительные импорты, но **без подъёма выше корня фичи** (избегать `../../../`).
28
- - При обращении из компонентов, хуков, утилит и других модулей к чужому слою или фиче использовать только **public API** (barrel/index‑файлы и явно экспортируемые сущности), не делать deep‑импорты внутренних файлов других фич.
47
+ - При обращении из компонентов, хуков, утилит и других модулей к чужому слою или фиче использовать только **public API** (barrel/index‑файлы и явно экспортируемые сущности), не делать deep‑импорты внутренних файлов других фич; для регламентированных слоёв — **`layer-barrel-exports.mdc`** и `public-imports.mdc`; для API‑слоя снаружи `app/src/api/**` — **`public-imports.mdc`** (только `@/api`).
29
48
  - При добавлении нового кода проверять:
30
49
  - если модуль переиспользуемый — он должен зависеть только от более "низких" слоёв (types, utils, api), но не от страниц.
31
50
 
32
51
  # Организация фич
33
52
 
34
53
  - Для сложных фич (например, `OrderCheckout`):
35
- - Страница: `src/ui/pages/OrderCheckoutPage/**`.
54
+ - Страница: `app/src/ui/pages/OrderCheckoutPage/**`.
36
55
  - Локальные компоненты: поддиректории `components/**` внутри страницы.
37
- - Связанный store: `src/store/slices/OrderCheckout/**`.
38
- - API: `src/api/services/OrdersApi/OrderCheckout/**` (имя корневого сервиса взять из принятой в проекте схемы).
39
- - Типы: `src/types/OrderCheckout.types.ts` или аналогичный файл.
56
+ - Связанный store: `app/src/store/slices/OrderCheckout/**`.
57
+ - API: `app/src/api/services/OrdersApi/OrderCheckout/**` (имя корневого сервиса взять из принятой в проекте схемы).
58
+ - Типы: `app/src/types/**` с экспортом через barrel **`app/src/types/index.ts`** (`public-imports.mdc`).
40
59
 
41
60
  # Требование к агенту
42
61
 
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: Предпочитать стрелочные функции при написании кода
3
+ globs: app/src/**/*.{ts,tsx,js,jsx}
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Стрелочные функции
8
+
9
+ При разработке **использовать стрелочный синтаксис** для функций, где это допустимо в TypeScript/JavaScript.
10
+
11
+ ## Что делать
12
+
13
+ - Объявлять функции как **`const имя = (...) => { ... }`** вместо **`function имя(...) { ... }`**, если не нужны особенности объявления `function`.
14
+ - Колбэки и обработчики — стрелочные функции: `.map((x) => ...)`, `onClick={() => ...}`.
15
+ - React-компоненты и хуки — как стрелочные функции с явной типизацией пропсов/возврата по принятому в проекте стилю.
16
+
17
+ ## Исключения (допустимо не стрелка)
18
+
19
+ - **Генераторы** (`function*`) — стрелкой не выразить.
20
+ - **Методы класса** — если в коде используются классы, допустимы обычные методы (`method() {}`), а не стрелки в теле класса (из‑за `this`).
21
+ - Когда осознанно нужны **подъём (hoisting)** или **имя функции в стеке** только у `function` — редкие случаи; иначе предпочитать стрелку.
22
+
23
+ ## Примеры
24
+
25
+ ```typescript
26
+ // ❌ Избегать для нового кода
27
+ function formatLabel(id: string): string {
28
+ return id.toUpperCase()
29
+ }
30
+
31
+ // ✅ Предпочтительно
32
+ const formatLabel = (id: string): string => {
33
+ return id.toUpperCase()
34
+ }
35
+ ```
36
+
37
+ ```tsx
38
+ // ✅ Предпочтительно
39
+ const UserCard = ({ name }: { name: string }) => {
40
+ return <span>{name}</span>
41
+ }
42
+ ```
43
+
44
+ ## Требование к агенту
45
+
46
+ При генерации и правке кода **по умолчанию выбирать стрелочные функции**; отступать к `function` только в случаях из раздела исключений.
@@ -35,10 +35,11 @@ alwaysApply: true
35
35
  - сначала локально улучшить архитектуру минимальными шагами;
36
36
  - оставить код в консистентном состоянии.
37
37
 
38
+ # Линтеры
39
+
40
+ Lint/stylelint — только **`post-change-lint.mdc`**; ESLint config: `app/eslint.config.mjs`. Отключение правила (`eslint-disable`) — только **точечно** (строка/небольшой блок) с кратким комментарием «зачем».
41
+
38
42
  # Требование к агенту
39
43
 
40
- При каждом изменении:
41
- - Поддерживать принцип **“boy scout rule”**:
42
- - оставлять модуль в немного лучшем состоянии, чем до изменения (простые, безопасные улучшения).
44
+ - **Boy scout rule:** оставлять модуль немного лучше, чем до изменения (простые, безопасные улучшения).
43
45
  - Не жертвовать архитектурой и слоями ради краткости реализации.
44
-
@@ -1,47 +1,28 @@
1
1
  ---
2
2
  description: Требования к code review агентами Cursor для merge requests
3
- alwaysApply: true
3
+ alwaysApply: false
4
4
  ---
5
5
 
6
6
  # Code review merge requests
7
7
 
8
- - **Когда применять**
9
- - Если пользователь просит: "проведи ревью", "оценить MR/ветку/дифф", "посмотри изменения".
10
- - Опираться на локальный репозиторий: текущую ветку, `git diff` и открытые файлы, а не на данные внешнего API хостинга.
11
-
12
- - **Что обязан проверить агент**
13
- - **Архитектура и слои**:
14
- - Соблюдение правил из `architecture-boundaries.mdc` и `next-app-core.mdc`:
15
- - UI (`src/ui/**`) не ходит напрямую в HTTP‑клиент и не знает DTO.
16
- - Store (`src/store/**`) не зависит от UI и не работает с "сырыми" HTTP.
17
- - API (`src/api/services/**`) не тянет UI/store, использует мапперы.
18
- - **Импорты и организация кода**:
19
- - Использование алиаса `@/...` вместо относительных импортов выше по дереву.
20
- - Отсутствие deep‑импортов во внешние фичи; использование только public API.
21
- - Размещение новых файлов в корректных слоях и директориях фич.
22
- - **Типы и TS‑строгость**:
23
- - Не допускать новых `any`; предпочитать доменные типы из `src/types/**`.
24
- - Проверять корректность пропсов/возвращаемых типов, особенно в UI и API‑слое.
25
- - **UI и стили**:
26
- - Для компонентов и стилей сверяться с `react-ui.mdc` и `next-app-core.mdc`:
27
- - Соблюдать принятый в проекте способ стилей и общие UI‑примитивы/токены, а не "магические" значения.
28
- - Сохранять консистентность с существующими компонентами и паттернами.
29
- - **Тесты**:
30
- - Проверять, что для нетривиальных изменений:
31
- - либо обновлены/добавлены unit‑тесты (`tests-unit.mdc`),
32
- - либо e2e‑сценарии/спеки отражают новую логику (`playwright-agents.mdc`, `tests-e2e-structure.mdc`).
33
- - Указывать, какие именно тесты стоит добавить или поправить.
34
-
35
- - **Глубина и формат ревью**
36
- - Фокус на **изменениях MR** (дифф относительно целевой ветки), а не на всём проекте.
37
- - Сначала дать **высокоуровневый обзор** (что делает MR, риски, архитектурные замечания), затем список конкретных комментариев.
38
- - Каждый комментарий делать:
39
- - **конкретным** (указать файл/участок и проблему),
40
- - **практичным** (предложить вариант исправления, опираясь на существующие паттерны),
41
- - без "больших рефакторингов" в духе `code-quality-and-refactoring.mdc`, если задача локальная.
42
-
43
- - **Ограничения для агента**
44
- - Не придумывать несуществующие метаданные из хостинга (лейблы MR, авторов, статусы CI), если их нет в локальных данных.
45
- - Не менять общую архитектуру фичи без прямого запроса пользователя.
46
- - Следовать принципу "boy scout rule": предлагать улучшения, которые реально можно внести в рамках MR.
8
+ On-demand rule for review flows. **Procedure and output format:** skill `code-review`.
47
9
 
10
+ ## Checklist references
11
+
12
+ - Architecture layers: `architecture-boundaries.mdc`, `next-app-core.mdc`; network: `http-client.mdc`
13
+ - Imports: `public-imports.mdc`, `layer-barrel-exports.mdc`
14
+ - UI: `react-ui.mdc`
15
+ - Tests: `tests-unit.mdc`, `playwright-agents.mdc`, `tests-e2e-structure.mdc`
16
+ - Lint gate before final report: `post-change-lint.mdc`
17
+
18
+ ## When to load
19
+
20
+ - User asks for review/MR/diff
21
+ - Pipeline step `code-reviewer`
22
+ - BUGBOT automated review
23
+
24
+ ## Constraints
25
+
26
+ - Focus on MR diff, not the whole repo.
27
+ - Use local `git diff` — do not invent hosting metadata.
28
+ - Boy scout rule: suggest fixes feasible within the MR scope.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Порядок CSS-свойств по Stylelint (idiomatic-order) — для любых стилей в проекте
3
+ globs:
4
+ - app/src/ui/**/*.styles.ts
5
+ - app/src/ui/**/*.styles.tsx
6
+ - app/src/ui/**/styles.ts
7
+ - app/src/ui/**/styles.tsx
8
+ - app/**/*.css
9
+ alwaysApply: false
10
+ ---
11
+
12
+ # Порядок CSS-свойств (как в Stylelint)
13
+
14
+ Для CSS в `.css`, `styles.ts(x)`, `styled` / Linaria — порядок свойств как в **`app/.stylelintrc`** (`@sh/stylelint-config-react` → `stylelint-config-idiomatic-order`).
15
+
16
+ Не дублировать список свойств вручную. Автоисправление из `app/`: **`yarn lint:css --fix`** (или менеджер пакетов репо). Полный прогон — **`post-change-lint.mdc`**.
@@ -0,0 +1,76 @@
1
+ ---
2
+ description: Сквозной чеклист новой фичи и матрица «слой → правило Cursor». Use when implementing features via feature-developer or feature-delivery skill.
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # Доставка фичи (сквозной порядок)
7
+
8
+ Типичная фича с данными с backend и общим состоянием. Детали слоёв — `architecture-boundaries.mdc`, `next-app-core.mdc`.
9
+
10
+ ## Чеклист (порядок работ)
11
+
12
+ 1. **Доменные типы** — `app/src/types/**`, экспорт через barrel (`public-imports.mdc`, **`layer-barrel-exports.mdc`**); JSDoc — `types-jsdoc.mdc`.
13
+ 2. **Контракт API** — DTO там, где принято; доменные типы в `@/types`.
14
+ 3. **Мапперы** — DTO → домен в `*responseMappers.ts` (`api-services.mdc`).
15
+ 4. **Сервисы** — клиенты `app/src/api/clients/**`, barrel `@/api` (`api-services.mdc`, `http-client.mdc`, **`layer-barrel-exports.mdc`**). Без `fetch` из UI/store.
16
+ 5. **Состояние** — `createSlice` / `createAsyncThunk` (`store-rtk.mdc`); thunk → сервисы из `@/api`.
17
+ 6. **UI** — типы из `@/types`, без DTO (`react-ui.mdc`, `architecture-boundaries-ui.mdc`, `no-props-spread.mdc`).
18
+ 7. **Моки** — по схеме репо; регистрация в `app/src/mocks/handlers.ts` (см. ниже).
19
+ 8. **Тесты** — unit для мапперов (`tests-unit.mdc`); e2e по `*.cases.md` (`tests-e2e-structure.mdc`, `playwright-agents.mdc`).
20
+ 9. **Завершение** — **`post-change-lint.mdc`**: `lint:js` + `lint:css` + `type-check`; менеджер — `package-manager.mdc`.
21
+
22
+ ## Поток данных (ориентир)
23
+
24
+ ```mermaid
25
+ flowchart LR
26
+ subgraph transport [Транспорт]
27
+ HttpClient[HttpClient]
28
+ end
29
+ DTO[DTO] --> Mappers[Мапперы]
30
+ Mappers --> Domain[Доменные типы]
31
+ Domain --> Service[API сервис]
32
+ Service --> HttpClient
33
+ Service --> Thunk[Thunk]
34
+ Thunk --> Store[Store]
35
+ Store --> UI[UI]
36
+ ```
37
+
38
+ ## Регистрация по слоям
39
+
40
+ 1. **Типы** — `app/src/types/**`; доменная модель — источник правды для UI и store.
41
+ 2. **API** — `app/src/api/services/<ServiceRoot>/<Segment>/`; публичные экспорты (в т.ч. **константы путей** для моков) → **`app/src/api/index.ts`**.
42
+ 3. **Моки (MSW)** — `app/src/mocks/data/<feature>/`; хендлеры в **`app/src/mocks/handlers.ts`**. Пути из `@/api`, не дублировать URL-строки. Проверить браузерный worker и Node `setupServer`, если оба используются.
43
+ 4. **Store** — `app/src/store/slices/<FeatureName>/`; редюсер в **`app/src/store/reducers.ts`**. Middleware → `app/src/store/middleware/**`, регистрация в **`app/src/store/index.ts`**.
44
+ 5. **UI** — `app/src/ui/pages/<FeatureName>Page/**` и/или `components/**`; данные через store/hooks.
45
+ 6. **Unit** — `*.spec.ts(x)`; мапперы и нетривиальная логика — обязательно.
46
+ 7. **E2E** — `app/__tests__/e2e/<Area>/<plan>.cases.md` + `*.spec.ts`.
47
+
48
+ ## Частичные сценарии
49
+
50
+ | Задача | Минимум действий |
51
+ |--------|------------------|
52
+ | Только API + типы | Типы, сервис, мапперы, `@/api` barrel; unit на маппер. |
53
+ | Только моки | Путь в `@/api`; handlers + `mocks/handlers.ts`. |
54
+ | Только store | Thunk на `@/api`; slice + `reducers.ts`. |
55
+ | Только UI | Store state; без HTTP/DTO. |
56
+ | Только e2e | `*.cases.md` + spec; page object. |
57
+
58
+ ## Антипаттерны
59
+
60
+ - DTO в UI или нетипизированном store.
61
+ - HTTP-клиент из компонента/thunk в обход сервиса.
62
+ - Deep-import `@/api/services/**` из UI/store.
63
+ - `{...props}` в компоненты — `no-props-spread.mdc`.
64
+
65
+ ## Матрица: зона → правила
66
+
67
+ | Зона | Правила |
68
+ |------|---------|
69
+ | `app/src/api/clients/**`, `app/src/lib/clients/**` | `http-client.mdc`, `tests-unit.mdc` (behavior) |
70
+ | `app/src/api/services/**` | `api-services.mdc`, `layer-barrel-exports.mdc`, `http-client.mdc` |
71
+ | `app/src/store/**` | `store-rtk.mdc`, `architecture-boundaries.mdc`, `public-imports.mdc` |
72
+ | `app/src/ui/**` | `react-ui.mdc`, `no-props-spread.mdc`, `public-imports.mdc` |
73
+ | `app/src/types/**` | `public-imports.mdc`, `types-jsdoc.mdc`, `layer-barrel-exports.mdc` |
74
+ | `app/__tests__/e2e/**` | `tests-e2e-structure.mdc`, `playwright-agents.mdc` |
75
+
76
+ При добавлении или расширении фичи **пройти чеклист** и правила из таблицы для затронутых зон.
@@ -0,0 +1,42 @@
1
+ ---
2
+ description: Единый HTTP-клиент, типы ошибок и ответов
3
+ globs:
4
+ - app/src/lib/clients/HttpClient/**/*.ts
5
+ - app/src/api/clients/**/*.ts
6
+ alwaysApply: false
7
+ ---
8
+
9
+ # HTTP-транспорт
10
+
11
+ **Имена** фабрик, классов ошибок, типов ответа и конфига — **как в текущем коде репозитория** и в barrel `app/src/types/index.ts`. Ниже — **архитектурные правила**, а не спецификация переименований.
12
+
13
+ ## Роль слоя
14
+
15
+ - Обычные REST‑вызовы к backend идут через **одну реализацию** в `app/src/lib/clients/**` (модуль общего клиента) и **преднастроенные экземпляры** в `app/src/api/clients/**`, по тому же паттерну, что уже принят в проекте.
16
+ - Место транспорта в общей картине **порты и адаптеры** — в `architecture-boundaries.mdc` (раздел **«Порты и адаптеры»**).
17
+ - **Не** вызывать `fetch` напрямую из `app/src/api/services/**`, store и UI (см. `architecture-boundaries.mdc`, `api-services.mdc`); из store/UI — только вызовы через сервисы из `@/api` (`public-imports.mdc`).
18
+ - **Исключения** (узкие протоколы, отдельный транспорт) — только там, где в репозитории уже есть образец; повторять его, не плодить произвольные обходы общего клиента.
19
+
20
+ ## Типы
21
+
22
+ - Всё, что относится к **контракту запроса/ответа/ошибки** приложения и реэкспортируется для HTTP‑слоя, импортировать **только** из barrel `@/types`, без deep‑импортов из внутренних файлов `app/src/types/**` (см. `public-imports.mdc`).
23
+ - Не поднимать в новом коде **типы и зависимости от внешнего HTTP‑клиента**, от которого проект ушёл; ориентир — **`package.json`** и существующие вызовы.
24
+
25
+ ## Контракт ошибок
26
+
27
+ - Ошибки сети и HTTP должны приходить в **едином виде**, который задаёт общий клиент (обычно класс/обёртка с полем вроде `response` для тела и статуса).
28
+ - В **`catch`** ориентироваться на **фактическую форму** ошибки в этом репозитории (как в соседних слайсах/сервисах): доступ к телу ошибки, статусу, диагностическому коду — **по полям текущей реализации**, без выдумывания второго формата.
29
+
30
+ ## Поведение, которое остаётся в клиенте
31
+
32
+ - Общие заголовки, `credentials`, загрузка файлов (**FormData** / снятие лишних заголовков), бинарные ответы (**blob** и аналоги), единообразный разбор JSON и прочих тел.
33
+ - Перехват **401 / refresh**, обработка **404** и т.п. — **централизованно**, если так уже сделано в клиенте; не дублировать ту же логику в каждом сервисе.
34
+
35
+ ## Связь со store
36
+
37
+ - Thunk может возвращать **тип обёртки успешного ответа**, если сервис так устроен; в **state** по возможности класть **доменные** типы после маппинга. Подробнее — `store-rtk.mdc`.
38
+
39
+ ## Требование к агенту
40
+
41
+ - Меняя реализацию общего клиента — **обновить или добавить behavior‑тесты** рядом с модулем клиента (`tests-unit.mdc`).
42
+ - Не вводить **второй полноценный HTTP‑стек** без явной задачи и согласования с архитектурой репозитория.