@bonesofspring/ai-rules 0.2.1 → 0.2.3

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 (205) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +17 -5
  3. package/bin/cli.js +4 -4
  4. package/package.json +3 -11
  5. package/presets/claude/ios-swift/CLAUDE.md +35 -0
  6. package/presets/claude/ios-swift/README.md +30 -0
  7. package/presets/claude/ios-swift/agents/README.md +55 -0
  8. package/presets/claude/ios-swift/agents/accessibility-reviewer.md +67 -0
  9. package/presets/claude/ios-swift/agents/api-contract-reviewer.md +72 -0
  10. package/presets/claude/ios-swift/agents/build-verifier.md +64 -0
  11. package/presets/claude/ios-swift/agents/ci-investigator.md +73 -0
  12. package/presets/claude/ios-swift/agents/code-reviewer.md +75 -0
  13. package/presets/claude/ios-swift/agents/debugger.md +72 -0
  14. package/presets/claude/ios-swift/agents/feature-developer.md +35 -0
  15. package/presets/claude/ios-swift/agents/migration-specialist.md +73 -0
  16. package/presets/claude/ios-swift/agents/performance-auditor.md +72 -0
  17. package/presets/claude/ios-swift/agents/qa-tester.md +65 -0
  18. package/presets/claude/ios-swift/agents/security-reviewer.md +69 -0
  19. package/presets/claude/ios-swift/agents/solution-architect.md +17 -0
  20. package/presets/claude/ios-swift/agents/task-analyst.md +25 -0
  21. package/presets/claude/ios-swift/agents/task-router.md +62 -0
  22. package/presets/claude/ios-swift/agents/tech-writer.md +63 -0
  23. package/presets/claude/ios-swift/agents/unit-test-generator.md +54 -0
  24. package/presets/claude/ios-swift/agents/unit-test-healer.md +53 -0
  25. package/presets/claude/ios-swift/agents/unit-test-planner.md +64 -0
  26. package/presets/claude/ios-swift/agents/xcuitest-test-generator.md +47 -0
  27. package/presets/claude/ios-swift/agents/xcuitest-test-healer.md +47 -0
  28. package/presets/claude/ios-swift/agents/xcuitest-test-planner.md +67 -0
  29. package/presets/claude/ios-swift/commands/README.md +13 -0
  30. package/presets/claude/ios-swift/commands/feature-continue.md +51 -0
  31. package/presets/claude/ios-swift/commands/feature-start.md +30 -0
  32. package/presets/claude/ios-swift/commands/task-continue.md +49 -0
  33. package/presets/claude/ios-swift/commands/task.md +50 -0
  34. package/presets/claude/ios-swift/commands/technical-retro.md +58 -0
  35. package/presets/claude/ios-swift/hooks/README.md +10 -0
  36. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +382 -0
  37. package/presets/claude/ios-swift/hooks/guard-shell-command.sh +79 -0
  38. package/presets/claude/ios-swift/rules/README.md +55 -0
  39. package/presets/claude/ios-swift/rules/api-and-data/README.md +10 -0
  40. package/presets/claude/ios-swift/rules/api-and-data/networking.md +49 -0
  41. package/presets/claude/ios-swift/rules/api-and-data/persistence.md +30 -0
  42. package/presets/claude/ios-swift/rules/architecture/README.md +12 -0
  43. package/presets/claude/ios-swift/rules/architecture/boundaries.md +33 -0
  44. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +68 -0
  45. package/presets/claude/ios-swift/rules/architecture/module-public-api.md +25 -0
  46. package/presets/claude/ios-swift/rules/architecture/reference-features.md +50 -0
  47. package/presets/claude/ios-swift/rules/stack/README.md +10 -0
  48. package/presets/claude/ios-swift/rules/stack/ios-app-core.md +43 -0
  49. package/presets/claude/ios-swift/rules/stack/swift-conventions.md +51 -0
  50. package/presets/claude/ios-swift/rules/testing/README.md +10 -0
  51. package/presets/claude/ios-swift/rules/testing/ui.md +43 -0
  52. package/presets/claude/ios-swift/rules/testing/unit.md +41 -0
  53. package/presets/claude/ios-swift/rules/tooling-and-review/README.md +16 -0
  54. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-intake.md +18 -0
  55. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +47 -0
  56. package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +38 -0
  57. package/presets/claude/ios-swift/rules/tooling-and-review/code-review.md +46 -0
  58. package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +36 -0
  59. package/presets/claude/ios-swift/rules/tooling-and-review/security-ios.md +36 -0
  60. package/presets/claude/ios-swift/rules/tooling-and-review/technical-retro.md +14 -0
  61. package/presets/claude/ios-swift/rules/tooling-and-review/xcode-tooling.md +24 -0
  62. package/presets/claude/ios-swift/rules/ui-and-accessibility/README.md +11 -0
  63. package/presets/claude/ios-swift/rules/ui-and-accessibility/navigation.md +28 -0
  64. package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +61 -0
  65. package/presets/claude/ios-swift/rules/ui-and-accessibility/viewmodels.md +43 -0
  66. package/presets/claude/ios-swift/skills/README.md +13 -0
  67. package/presets/claude/ios-swift/skills/ci-investigation/SKILL.md +39 -0
  68. package/presets/claude/ios-swift/skills/code-review/SKILL.md +27 -0
  69. package/presets/claude/ios-swift/skills/debug-investigation/SKILL.md +30 -0
  70. package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +27 -0
  71. package/presets/claude/ios-swift/skills/technical-retro/SKILL.md +10 -0
  72. package/presets/claude/ios-swift/skills/unit-testing/SKILL.md +32 -0
  73. package/presets/claude/ios-swift/skills/xcuitest-e2e/SKILL.md +33 -0
  74. package/presets/claude/ios-swift/team/README.md +27 -0
  75. package/presets/claude/ios-swift/team/fixtures/bugfix-standard.json +33 -0
  76. package/presets/claude/ios-swift/team/fixtures/feature-full.json +48 -0
  77. package/presets/claude/ios-swift/team/fixtures/feature-light.json +36 -0
  78. package/presets/claude/next/CLAUDE.md +4 -8
  79. package/presets/claude/next/agents/README.md +62 -34
  80. package/presets/claude/next/agents/code-reviewer.md +6 -5
  81. package/presets/claude/next/agents/playwright-test-generator.md +65 -16
  82. package/presets/claude/next/agents/playwright-test-healer.md +51 -16
  83. package/presets/claude/next/agents/playwright-test-planner.md +55 -15
  84. package/presets/claude/next/agents/task-analyst.md +3 -1
  85. package/presets/claude/next/agents/task-router.md +4 -4
  86. package/presets/claude/next/agents/tech-writer.md +1 -0
  87. package/presets/claude/next/hooks/chain-team-phases.sh +73 -35
  88. package/presets/claude/next/rules/README.md +16 -3
  89. package/presets/claude/next/rules/architecture/README.md +2 -1
  90. package/presets/claude/next/rules/stack/README.md +1 -1
  91. package/presets/claude/next/rules/stack/navigation-router.md +2 -0
  92. package/presets/claude/next/rules/stack/next-app-core.md +1 -1
  93. package/presets/claude/next/rules/tooling-and-review/README.md +12 -14
  94. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
  95. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +3 -3
  96. package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +11 -0
  97. package/presets/claude/next/rules/ui-and-accessibility/README.md +6 -3
  98. package/presets/claude/next/skills/feature-delivery/SKILL.md +1 -1
  99. package/presets/claude/next/team/README.md +65 -7
  100. package/presets/cursor/ios-swift/AGENTS.md +47 -0
  101. package/presets/cursor/ios-swift/BUGBOT.md +15 -0
  102. package/presets/cursor/ios-swift/README.md +36 -0
  103. package/presets/cursor/ios-swift/agents/README.md +55 -0
  104. package/presets/cursor/ios-swift/agents/accessibility-reviewer.md +67 -0
  105. package/presets/cursor/ios-swift/agents/api-contract-reviewer.md +72 -0
  106. package/presets/cursor/ios-swift/agents/build-verifier.md +64 -0
  107. package/presets/cursor/ios-swift/agents/ci-investigator.md +73 -0
  108. package/presets/cursor/ios-swift/agents/code-reviewer.md +75 -0
  109. package/presets/cursor/ios-swift/agents/debugger.md +72 -0
  110. package/presets/cursor/ios-swift/agents/feature-developer.md +35 -0
  111. package/presets/cursor/ios-swift/agents/migration-specialist.md +73 -0
  112. package/presets/cursor/ios-swift/agents/performance-auditor.md +72 -0
  113. package/presets/cursor/ios-swift/agents/qa-tester.md +65 -0
  114. package/presets/cursor/ios-swift/agents/security-reviewer.md +69 -0
  115. package/presets/cursor/ios-swift/agents/solution-architect.md +17 -0
  116. package/presets/cursor/ios-swift/agents/task-analyst.md +25 -0
  117. package/presets/cursor/ios-swift/agents/task-router.md +62 -0
  118. package/presets/cursor/ios-swift/agents/tech-writer.md +63 -0
  119. package/presets/cursor/ios-swift/agents/unit-test-generator.md +54 -0
  120. package/presets/cursor/ios-swift/agents/unit-test-healer.md +53 -0
  121. package/presets/cursor/ios-swift/agents/unit-test-planner.md +64 -0
  122. package/presets/cursor/ios-swift/agents/xcuitest-test-generator.md +47 -0
  123. package/presets/cursor/ios-swift/agents/xcuitest-test-healer.md +47 -0
  124. package/presets/cursor/ios-swift/agents/xcuitest-test-planner.md +67 -0
  125. package/presets/cursor/ios-swift/commands/README.md +51 -0
  126. package/presets/cursor/ios-swift/commands/feature-continue.md +19 -0
  127. package/presets/cursor/ios-swift/commands/feature-start.md +33 -0
  128. package/presets/cursor/ios-swift/commands/task-continue.md +49 -0
  129. package/presets/cursor/ios-swift/commands/task.md +50 -0
  130. package/presets/cursor/ios-swift/commands/technical-retro.md +81 -0
  131. package/presets/cursor/ios-swift/hooks/README.md +8 -0
  132. package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +382 -0
  133. package/presets/cursor/ios-swift/hooks/guard-shell-command.sh +79 -0
  134. package/presets/{claude/next → cursor/ios-swift}/hooks.json +2 -2
  135. package/presets/cursor/ios-swift/rules/README.md +65 -0
  136. package/presets/cursor/ios-swift/rules/agent-team-intake.mdc +16 -0
  137. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +80 -0
  138. package/presets/cursor/ios-swift/rules/architecture-boundaries.mdc +34 -0
  139. package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +39 -0
  140. package/presets/cursor/ios-swift/rules/code-review-mr.mdc +43 -0
  141. package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +61 -0
  142. package/presets/cursor/ios-swift/rules/ios-app-core.mdc +44 -0
  143. package/presets/cursor/ios-swift/rules/module-public-api.mdc +26 -0
  144. package/presets/cursor/ios-swift/rules/navigation-coordinators.mdc +29 -0
  145. package/presets/cursor/ios-swift/rules/networking-services.mdc +49 -0
  146. package/presets/cursor/ios-swift/rules/persistence-data.mdc +31 -0
  147. package/presets/cursor/ios-swift/rules/post-change-build.mdc +32 -0
  148. package/presets/cursor/ios-swift/rules/reference-features.mdc +53 -0
  149. package/presets/cursor/ios-swift/rules/security-ios.mdc +35 -0
  150. package/presets/cursor/ios-swift/rules/state-and-viewmodels.mdc +43 -0
  151. package/presets/cursor/ios-swift/rules/swift-conventions.mdc +51 -0
  152. package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +61 -0
  153. package/presets/cursor/ios-swift/rules/technical-retro.mdc +12 -0
  154. package/presets/cursor/ios-swift/rules/tests-ui.mdc +42 -0
  155. package/presets/cursor/ios-swift/rules/tests-unit.mdc +41 -0
  156. package/presets/cursor/ios-swift/rules/xcode-tooling.mdc +20 -0
  157. package/presets/cursor/ios-swift/skills/README.md +13 -0
  158. package/presets/cursor/ios-swift/skills/ci-investigation/SKILL.md +39 -0
  159. package/presets/cursor/ios-swift/skills/code-review/SKILL.md +27 -0
  160. package/presets/cursor/ios-swift/skills/debug-investigation/SKILL.md +30 -0
  161. package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +27 -0
  162. package/presets/cursor/ios-swift/skills/technical-retro/SKILL.md +10 -0
  163. package/presets/cursor/ios-swift/skills/unit-testing/SKILL.md +32 -0
  164. package/presets/cursor/ios-swift/skills/xcuitest-e2e/SKILL.md +33 -0
  165. package/presets/cursor/ios-swift/team/README.md +27 -0
  166. package/presets/cursor/ios-swift/team/fixtures/bugfix-standard.json +33 -0
  167. package/presets/cursor/ios-swift/team/fixtures/feature-full.json +48 -0
  168. package/presets/cursor/ios-swift/team/fixtures/feature-light.json +36 -0
  169. package/presets/cursor/next/AGENTS.md +1 -1
  170. package/presets/cursor/next/BUGBOT.md +0 -2
  171. package/presets/cursor/next/agents/README.md +6 -0
  172. package/presets/cursor/next/agents/accessibility-reviewer.md +1 -1
  173. package/presets/cursor/next/agents/api-contract-reviewer.md +1 -1
  174. package/presets/cursor/next/agents/build-verifier.md +2 -2
  175. package/presets/cursor/next/agents/code-reviewer.md +1 -1
  176. package/presets/cursor/next/agents/feature-developer.md +1 -0
  177. package/presets/cursor/next/agents/migration-specialist.md +2 -2
  178. package/presets/cursor/next/agents/performance-auditor.md +1 -1
  179. package/presets/cursor/next/agents/playwright-test-generator.md +1 -0
  180. package/presets/cursor/next/agents/playwright-test-healer.md +1 -0
  181. package/presets/cursor/next/agents/qa-tester.md +1 -0
  182. package/presets/cursor/next/agents/security-reviewer.md +1 -1
  183. package/presets/cursor/next/agents/solution-architect.md +1 -1
  184. package/presets/cursor/next/agents/task-analyst.md +1 -1
  185. package/presets/cursor/next/agents/task-router.md +2 -2
  186. package/presets/cursor/next/agents/tech-writer.md +1 -1
  187. package/presets/cursor/next/agents/unit-test-planner.md +2 -2
  188. package/presets/cursor/next/rules/README.md +6 -6
  189. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +25 -23
  190. package/presets/cursor/next/rules/next-app-core.mdc +1 -1
  191. package/presets/cursor/next/rules/post-change-lint.mdc +4 -2
  192. package/presets/cursor/next/skills/feature-delivery/SKILL.md +1 -1
  193. package/CONTRIBUTING.md +0 -102
  194. package/fragments/BUGBOT.md +0 -23
  195. package/presets/claude/next/BUGBOT.md +0 -16
  196. package/presets/claude/next/rules/architecture/api-public-imports.md +0 -8
  197. package/presets/claude/next/rules/architecture/types-public-imports.md +0 -8
  198. package/presets/cursor/next/rules/api-public-imports.mdc +0 -8
  199. package/presets/cursor/next/rules/no-cross-component-styles-import.mdc +0 -8
  200. package/presets/cursor/next/rules/types-public-imports.mdc +0 -8
  201. package/scripts/README.md +0 -84
  202. package/scripts/golden-prompts.json +0 -276
  203. package/scripts/preset-manifest.json +0 -72
  204. package/scripts/regression-results/.gitkeep +0 -0
  205. package/scripts/validate-preset.sh +0 -484
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env bash
2
- # Chains agent team phases after subagent completion when wired into Claude Code hooks.
2
+ # Chains agent team steps from pipeline.json after subagentStop.
3
+ # Falls back to legacy phase-based flow when pipeline.json is absent.
3
4
 
4
5
  set -euo pipefail
5
6
 
@@ -89,7 +90,7 @@ function getStepAgents(step) {
89
90
  return Array.isArray(step.agent) ? step.agent : [step.agent];
90
91
  }
91
92
 
92
- function skipIfMatches(skipIf) {
93
+ function skipIfMatches(skipIf, dir) {
93
94
  if (!skipIf) return false;
94
95
  if (skipIf === 'debugger.fixed') {
95
96
  const text = readArtifact('debug-report.md');
@@ -102,9 +103,9 @@ function skipIfMatches(skipIf) {
102
103
  return false;
103
104
  }
104
105
 
105
- function findNextExecutableStep(steps, startIdx) {
106
+ function findNextExecutableStep(steps, startIdx, dir) {
106
107
  for (let i = startIdx; i < steps.length; i++) {
107
- if (!skipIfMatches(steps[i].skipIf)) {
108
+ if (!skipIfMatches(steps[i].skipIf, dir)) {
108
109
  return { step: steps[i], index: i };
109
110
  }
110
111
  }
@@ -114,47 +115,54 @@ function findNextExecutableStep(steps, startIdx) {
114
115
  const AGENT_HANDOFF = {
115
116
  'task-analyst': (s) =>
116
117
  `Invoke task-analyst for slug "${s}". Write brief.md and decomposition.md under .claude/team/tasks/${s}/. ` +
117
- `Set status.json: phase executing, state awaiting_approval if human gate applies.`,
118
+ `Set status.json: phase executing, state awaiting_approval if human gate applies. Do not use legacy phase analysis.`,
118
119
  debugger: (s) =>
119
- `Invoke debugger subagent for slug "${s}". Write debug-report.md with fixApplied: true/false. Update status.json when done.`,
120
+ `Invoke debugger subagent for slug "${s}". Investigate root cause; write debug-report.md with fixApplied: true/false. ` +
121
+ `Update status.json when done.`,
120
122
  'solution-architect': (s) =>
121
123
  `Invoke solution-architect for slug "${s}". Read brief.md; write architecture.md. Update status.json when done.`,
122
124
  'migration-specialist': (s) =>
123
125
  `Invoke migration-specialist for slug "${s}". Read brief.md; write migration-plan.md. Update status.json when done.`,
124
126
  'api-contract-reviewer': (s) =>
125
- `Invoke api-contract-reviewer for slug "${s}". Write api-contract-review.md. Update status.json when done.`,
127
+ `Invoke api-contract-reviewer (readonly) for slug "${s}". Write api-contract-review.md. Update status.json when done.`,
126
128
  'ci-investigator': (s) =>
127
- `Invoke ci-investigator for slug "${s}". Use ci-investigation skill. Write ci-report.md. Update status.json when done.`,
129
+ `Invoke ci-investigator for slug "${s}". Diagnose CI failure; write ci-report.md; apply minimal fix. ` +
130
+ `Use ci-investigation skill. Update status.json when done.`,
128
131
  'feature-developer': (s) =>
129
- `Invoke feature-developer for slug "${s}". Read brief.md, decomposition.md, validation-report.md, review.md if present. ` +
130
- `Follow rules/architecture/feature-delivery-workflow.md and architecture/reference-features.md. Include unit tests before handoff. Update status.json when done.`,
132
+ `Invoke feature-developer for slug "${s}". Read brief.md, decomposition.md, validation-report.md, review.md, architecture.md, migration-plan.md, api-contract-review.md, debug-report.md if present. ` +
133
+ `Follow architecture/feature-delivery-workflow.md and architecture/reference-features.md. Include unit tests for mappers/logic before handoff. Update status.json when done.`,
131
134
  'build-verifier': (s) =>
132
- `Invoke build-verifier for slug "${s}". Run lint:js, lint:css, type-check, targeted unit tests from app/. ` +
135
+ `Invoke build-verifier (readonly) for slug "${s}". Run lint:js, lint:css, type-check, and targeted unit tests from app/. ` +
133
136
  `Write validation-report.md. Set state completed or validation_failed. Do not edit production code.`,
134
137
  'accessibility-reviewer': (s) =>
135
- `Invoke accessibility-reviewer for slug "${s}". Write a11y-review.md. Update status.json when done.`,
138
+ `Invoke accessibility-reviewer (readonly) for slug "${s}". Review UI diff; write a11y-review.md. Update status.json when done.`,
136
139
  'performance-auditor': (s) =>
137
- `Invoke performance-auditor for slug "${s}". Write perf-report.md. Update status.json when done.`,
140
+ `Invoke performance-auditor (readonly) for slug "${s}". Write perf-report.md. Update status.json when done.`,
138
141
  'code-reviewer': (s) =>
139
- `Invoke code-reviewer for slug "${s}". Review git diff per rules/tooling-and-review/code-review-mr.md. Update status.json when done.`,
142
+ `Invoke code-reviewer subagent (readonly) for slug "${s}". Review git diff vs brief.md per tooling-and-review/code-review-mr.md. ` +
143
+ `Update status.json when done.`,
140
144
  'security-reviewer': (s) =>
141
- `Invoke security-reviewer for slug "${s}". Write security-review.md. Update status.json when done.`,
145
+ `Invoke security-reviewer (readonly) for slug "${s}". Write security-review.md. Update status.json when done.`,
142
146
  'qa-tester': (s, scope) =>
143
- `Invoke qa-tester for slug "${s}"${scope ? ` (scope: ${scope})` : ''}. Update status.json when done.`,
147
+ `Invoke qa-tester for slug "${s}"${scope ? ` (scope: ${scope})` : ''}. ` +
148
+ `Add/update tests per brief. Follow testing/playwright-agents.md. Update status.json when done.`,
144
149
  'unit-test-planner': (s) =>
145
- `Invoke unit-test-planner for slug "${s}". Use unit-testing skill. Update status.json when done.`,
150
+ `Invoke unit-test-planner for slug "${s}". Write unit-test-plan.md. Use unit-testing skill. Update status.json when done.`,
146
151
  'unit-test-generator': (s) =>
147
- `Invoke unit-test-generator for slug "${s}". Use unit-testing skill. Update status.json when done.`,
152
+ `Invoke unit-test-generator for slug "${s}". Implement specs from unit-test-plan.md. Use unit-testing skill. Update status.json when done.`,
148
153
  'unit-test-healer': (s) =>
149
- `Invoke unit-test-healer for slug "${s}". Use unit-testing and debug-investigation skills. Update status.json when done.`,
154
+ `Invoke unit-test-healer for slug "${s}". Fix failing unit tests. Use unit-testing and debug-investigation skills. Update status.json when done.`,
150
155
  'playwright-test-planner': (s) =>
151
- `Invoke playwright-test-planner for slug "${s}". Follow rules/testing/playwright-agents.md and playwright-e2e skill. Update status.json when done.`,
156
+ `Invoke playwright-test-planner for slug "${s}". Create/update app/__tests__/e2e/**/*.cases.md. ` +
157
+ `Follow testing/playwright-agents.md and the playwright-e2e skill. Update status.json when done.`,
152
158
  'playwright-test-generator': (s) =>
153
- `Invoke playwright-test-generator for slug "${s}". Use Playwright MCP tools when available. Update status.json when done.`,
159
+ `Invoke playwright-test-generator for slug "${s}". Generate/update *.spec.ts from matching *.cases.md. ` +
160
+ `Use user-playwright MCP when available. Follow testing/playwright-agents.md and the playwright-e2e skill. Update status.json when done.`,
154
161
  'playwright-test-healer': (s) =>
155
- `Invoke playwright-test-healer for slug "${s}". Use Playwright MCP when available. Update status.json when done.`,
162
+ `Invoke playwright-test-healer for slug "${s}". Fix failing/flaky e2e while preserving cases.md assertions. ` +
163
+ `Use user-playwright MCP when available. Follow testing/playwright-agents.md and debug-investigation. Update status.json when done.`,
156
164
  'tech-writer': (s) =>
157
- `Invoke tech-writer for slug "${s}". Write documentation.md. Update status.json when done.`,
165
+ `Invoke tech-writer for slug "${s}". Write documentation.md from task artifacts. Update status.json when done.`,
158
166
  };
159
167
 
160
168
  const REVIEW_AGENTS = new Set([
@@ -173,7 +181,7 @@ function handoffForParallelStep(step) {
173
181
  const agents = getStepAgents(step);
174
182
  return (
175
183
  `Invoke IN PARALLEL (one message, multiple Task calls): ${agents.join(' AND ')} for slug "${slug}". ` +
176
- `Each agent appends itself to status.json parallelCompleted when done.`
184
+ `Each agent writes its artifact and appends itself to status.json parallelCompleted when done.`
177
185
  );
178
186
  }
179
187
 
@@ -186,7 +194,11 @@ function hasGateAfterStep(step, humanGates) {
186
194
  }
187
195
 
188
196
  function legacyFlow() {
189
- if (status.phase === 'development' && status.state === 'completed') {
197
+ if (status.phase === 'analysis') {
198
+ process.stdout.write('{}');
199
+ process.exit(0);
200
+ }
201
+ if (status.phase === 'development' && (status.state === 'completed' || status.state === 'in_progress')) {
190
202
  writeStatus({ phase: 'executing', state: 'in_progress', currentAgent: 'build-verifier' });
191
203
  out(handoffForAgent('build-verifier'));
192
204
  process.exit(0);
@@ -208,16 +220,23 @@ function legacyFlow() {
208
220
  phase: 'executing',
209
221
  retryAfterFix: status.currentAgent,
210
222
  });
211
- out(handoffForAgent('feature-developer') + ` After fixes, re-run ${status.currentAgent}.`);
223
+ out(
224
+ handoffForAgent('feature-developer') +
225
+ ` After fixes, re-run ${status.currentAgent}.`,
226
+ );
212
227
  process.exit(0);
213
228
  }
214
- if (status.state === 'validation_failed') {
229
+ if (status.state === 'validation_failed' && status.currentAgent === 'build-verifier') {
215
230
  writeStatus({
216
231
  currentAgent: 'feature-developer',
217
232
  state: 'in_progress',
233
+ phase: 'executing',
218
234
  retryAfterFix: 'build-verifier',
219
235
  });
220
- out(handoffForAgent('feature-developer') + ` Read validation-report.md. Re-run build-verifier after fixes.`);
236
+ out(
237
+ handoffForAgent('feature-developer') +
238
+ ` Read validation-report.md. After fixes, re-run build-verifier.`,
239
+ );
221
240
  process.exit(0);
222
241
  }
223
242
  if (status.state === 'completed' && status.retryAfterFix) {
@@ -265,7 +284,10 @@ if (status.state === 'changes_requested' && REVIEW_AGENTS.has(status.currentAgen
265
284
  phase: 'executing',
266
285
  retryAfterFix: reviewer,
267
286
  });
268
- out(handoffForAgent('feature-developer') + ` After fixes, re-run ${reviewer}.`);
287
+ out(
288
+ handoffForAgent('feature-developer') +
289
+ ` After fixes, re-run ${reviewer}.`,
290
+ );
269
291
  process.exit(0);
270
292
  }
271
293
 
@@ -276,7 +298,10 @@ if (status.state === 'validation_failed' && status.currentAgent === 'build-verif
276
298
  phase: 'executing',
277
299
  retryAfterFix: 'build-verifier',
278
300
  });
279
- out(handoffForAgent('feature-developer') + ` Read validation-report.md. Re-run build-verifier after fixes.`);
301
+ out(
302
+ handoffForAgent('feature-developer') +
303
+ ` Read validation-report.md. After fixes, re-run build-verifier.`,
304
+ );
280
305
  process.exit(0);
281
306
  }
282
307
 
@@ -300,9 +325,12 @@ const stepAgents = getStepAgents(currentStep);
300
325
 
301
326
  if (currentStep.parallel && stepAgents.length > 1) {
302
327
  const done = [...(status.parallelCompleted || [])];
303
- if (completedAgent && !done.includes(completedAgent)) done.push(completedAgent);
328
+ if (completedAgent && !done.includes(completedAgent)) {
329
+ done.push(completedAgent);
330
+ }
304
331
  writeStatus({ parallelCompleted: done });
305
- if (stepAgents.filter((a) => !done.includes(a)).length > 0) {
332
+ const remaining = stepAgents.filter((a) => !done.includes(a));
333
+ if (remaining.length > 0) {
306
334
  process.stdout.write('{}');
307
335
  process.exit(0);
308
336
  }
@@ -310,14 +338,24 @@ if (currentStep.parallel && stepAgents.length > 1) {
310
338
  }
311
339
 
312
340
  if (hasGateAfterStep(currentStep, pipeline.humanGates)) {
313
- writeStatus({ awaitingHumanGate: true, state: 'awaiting_approval', currentAgent: completedAgent });
341
+ writeStatus({
342
+ awaitingHumanGate: true,
343
+ state: 'awaiting_approval',
344
+ currentAgent: completedAgent,
345
+ });
314
346
  process.stdout.write('{}');
315
347
  process.exit(0);
316
348
  }
317
349
 
318
- const next = findNextExecutableStep(steps, idx + 1);
350
+ const next = findNextExecutableStep(steps, idx + 1, taskDir);
319
351
  if (!next) {
320
- writeStatus({ pipelineIndex: steps.length, phase: 'done', state: 'completed', currentAgent: null });
352
+ writeStatus({
353
+ pipelineIndex: steps.length,
354
+ phase: 'done',
355
+ state: 'completed',
356
+ currentAgent: null,
357
+ awaitingHumanGate: false,
358
+ });
321
359
  out(`Pipeline complete for "${slug}". Run /technical-retro ${slug}.`);
322
360
  process.exit(0);
323
361
  }
@@ -4,13 +4,22 @@
4
4
 
5
5
  ## Loading strategy
6
6
 
7
- - **Session start (no `paths:`):** `stack/next-app-core`, `tooling-and-review/post-change-lint`, `tooling-and-review/package-manager`, `tooling-and-review/code-quality` — **4 files only**
8
- - **On-demand (`paths:` or via commands):** `agent-team-intake`, `agent-team-orchestrator`, `code-review-mr`, architecture, imports, UI, tests, feature-delivery-workflow, reference-features, next-app-router, react-a11y-coding
7
+ - **Session start (no `paths:`):** ровно **3** — `next-app-core`, `package-manager`, `code-quality`
8
+ - **On-demand (`paths:` or via commands):** `post-change-lint` (**обязателен после правок кода**), `agent-team-intake`, `agent-team-orchestrator`, `code-review-mr`, architecture, imports, UI, tests, feature-delivery-workflow, reference-features, next-app-router, react-a11y-coding
9
9
  - **Skills:** long workflows (`feature-delivery`, `code-review`, …)
10
10
 
11
11
  ### UI edit bundle (consolidated paths)
12
12
 
13
- При правке `app/src/ui/**/*.tsx` уменьшенный набор paths (см. `ui-and-accessibility/react-ui.md`, `architecture/architecture-boundaries-ui.md`, `stack/navigation-router-ui.md`). Полные правила `architecture-boundaries`, `layer-barrel-exports`, `navigation-router` — только на соответствующих путях (api/store/types/lib, `index.ts`, `app/src/app/**`).
13
+ При правке `app/src/ui/**/*.tsx` подгружается **уменьшенный** набор:
14
+
15
+ | Rule | Назначение |
16
+ |------|------------|
17
+ | `ui-and-accessibility/react-ui.md` | Структура, стили, пропсы |
18
+ | `architecture/architecture-boundaries-ui.md` | Slim границы UI-слоя |
19
+ | `ui-and-accessibility/react-a11y-coding.md` | A11y |
20
+ | `stack/navigation-router-ui.md` | Краткий ориентир навигации |
21
+
22
+ **Не грузятся на типичный UI edit:** `architecture/architecture-boundaries.md` (api/store/types/lib), `architecture/layer-barrel-exports.md` (только `index.ts`), `stack/navigation-router.md` (только `app/src/app/**`). Стили колокации — в `react-ui.md` (не отдельный stub).
14
23
 
15
24
  ## С чего начать
16
25
 
@@ -26,6 +35,10 @@
26
35
  | `stack/next-app-router.md` | App Router, RSC |
27
36
  | `ui-and-accessibility/react-a11y-coding.md` | A11y при кодинге UI |
28
37
  | `architecture/feature-delivery-workflow.md` | Сквозной чеклист (paths) |
38
+ | `architecture/architecture-boundaries-ui.md` | Slim границы UI при правках компонентов |
39
+ | `architecture/architecture-boundaries.md` | Полная карта UI / store / API |
40
+ | `stack/navigation-router-ui.md` | Навигация в UI-компонентах (slim) |
41
+ | `stack/navigation-router.md` | Полный аудит стека навигации |
29
42
  | `tooling-and-review/agent-team-orchestrator.md` | Pipeline, build-verifier, parallel |
30
43
  | `agents/build-verifier.md` | Validation gate agent |
31
44
 
@@ -3,9 +3,10 @@
3
3
  | Файл | Назначение |
4
4
  |------|------------|
5
5
  | `public-imports.md` | Импорты `@/types`, `@/types/enums`, `@/api` (вне `app/src/api/**`) |
6
- | `types-public-imports.md`, `api-public-imports.md` | Deprecated stubs → `public-imports.md` |
7
6
  | `architecture-boundaries-ui.md` | Slim границы UI при правках компонентов |
8
7
  | `architecture-boundaries.md` | Полная карта UI / store / API (api, store, types, lib) |
9
8
  | `layer-barrel-exports.md` | Двухуровневые barrel для слоёв с public API |
10
9
  | `feature-delivery-workflow.md` | Сквозной чеклист новой фичи |
11
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`.
@@ -8,5 +8,5 @@
8
8
  | `arrow-functions.md` | Стрелочный синтаксис | session start |
9
9
  | `no-type-assertion.md` | Ограничение `as` на границах модулей | session start |
10
10
  | `navigation-router-ui.md` | Навигация в UI-компонентах (slim) | `paths: app/src/ui/**/*.tsx` |
11
- | `navigation-router.md` | Полный аудит стека навигации | `paths: app/src/app/**` |
11
+ | `navigation-router.md` | Полный аудит стека навигации (App Router / SPA) | `paths: app/src/app/**` |
12
12
  | `types-jsdoc.md` | JSDoc в `app/src/types` | `paths: app/src/types/**/*.ts` |
@@ -6,6 +6,8 @@ paths:
6
6
 
7
7
  # Навигация и роутинг: сначала стек проекта
8
8
 
9
+ Краткий ориентир для UI-компонентов: **`stack/navigation-router-ui.md`**.
10
+
9
11
  **При любой задаче, связанной с навигацией, переходами между страницами, URL, редиректами, хлебными крошками, защищёнными маршрутами или программной сменой маршрута** — перед предложением кода или импортов **нельзя** опираться на «типичный React» по умолчанию. Нужно **явно свериться со стеком целевого репозитория** и использовать **один** согласованный с проектом механизм.
10
12
 
11
13
  ## Зависимости: что проверить в первую очередь
@@ -25,7 +25,7 @@
25
25
 
26
26
  - Архитектура и импорты: `architecture/architecture-boundaries.md`, `architecture/public-imports.md`
27
27
  - Фичи: `architecture/feature-delivery-workflow.md` + skill `feature-delivery`
28
- - После правок: `tooling-and-review/post-change-lint.md`; менеджер пакетов: `tooling-and-review/package-manager.md`
28
+ - После правок: **вызвать** `tooling-and-review/post-change-lint.md` (requestable, обязателен после code edits); менеджер пакетов: `tooling-and-review/package-manager.md`
29
29
  - Копировать паттерны соседних файлов в целевом слое; не использовать `any` (предпочитать `unknown` + сужение)
30
30
 
31
31
  Задачи на **сеть, HTTP, новые эндпоинты**: `api-and-data/http-client.md` + `api-and-data/api-services.md` + `api-and-data/store-rtk.md`.
@@ -1,16 +1,14 @@
1
1
  # Tooling and review
2
2
 
3
- Lint, package manager, качество кода, code review MR.
4
-
5
- | Файл | Содержание |
6
- |------|------------|
7
- | `package-manager.md` | yarn / pnpm / npm / bun — определить по lockfile |
8
- | `agent-team-intake.md` | Когда предлагать `/task` и router pipeline |
9
- | `agent-team-orchestrator.md` | Dynamic agent team workflow: router, pipeline, gates |
10
- | `post-change-lint.md` | Обязательный `lint:js` + `lint:css` после изменений |
11
- | `code-quality.md` | Boy scout rule, рефакторинг, ESLint |
12
- | `code-review-mr.md` | Чеклист ревью merge request |
13
-
14
- Все **session start**.
15
-
16
- On-demand: **`commands/technical-retro.md`** (фасилитация ретро, не грузится как rule).
3
+ Lint, package manager, качество кода, agent team, code review MR.
4
+
5
+ | Файл | Содержание | Загрузка |
6
+ |------|------------|----------|
7
+ | `package-manager.md` | yarn / pnpm / npm / bun — определить по lockfile | session start |
8
+ | `post-change-lint.md` | `lint:js` + `lint:css` после изменений (**обязателен** при code edits) | `paths:` commands/team/agents + `app/**` |
9
+ | `code-quality.md` | Boy scout rule, рефакторинг, ESLint | session start |
10
+ | `agent-team-intake.md` | Когда предлагать `/task` и router pipeline | `paths:` commands/team |
11
+ | `agent-team-orchestrator.md` | Dynamic agent team: router, pipeline, gates | `paths:` commands/team/agents |
12
+ | `code-review-mr.md` | Чеклист ревью merge request | `paths:` review-related |
13
+
14
+ On-demand (не rule): **`commands/technical-retro.md`** (фасилитация ретро).
@@ -2,6 +2,7 @@
2
2
  paths:
3
3
  - .claude/commands/**/*
4
4
  - .claude/team/**/*
5
+ - .claude/agents/**/*
5
6
  ---
6
7
 
7
8
  # Agent team orchestrator
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  paths:
3
- - .claude/agents/code-reviewer.md
4
3
  - .claude/commands/**/*
5
- - .claude/team/**/*
4
+ - .claude/agents/code-reviewer.md
5
+ - .claude/skills/code-review/**/*
6
+ - .claude/team/**/review.md
6
7
  ---
7
8
 
8
9
  # Code review merge requests
@@ -21,7 +22,6 @@ On-demand rule for review flows. **Procedure and output format:** skill `code-re
21
22
 
22
23
  - User asks for review/MR/diff
23
24
  - Pipeline step `code-reviewer`
24
- - BUGBOT automated review
25
25
 
26
26
  ## Constraints
27
27
 
@@ -1,5 +1,16 @@
1
+ ---
2
+ description: Прогон ESLint и Stylelint после изменений кода. Requestable — подгружать после правок app/**; агенты обязаны запускать после code edits.
3
+ paths:
4
+ - .claude/commands/**/*
5
+ - .claude/team/**/*
6
+ - .claude/agents/**/*
7
+ - app/**/*.{ts,tsx,js,jsx,mjs,css}
8
+ ---
9
+
1
10
  # Линтеры после изменений кода
2
11
 
12
+ **Requestable, но обязателен при изменениях кода:** правило не session-start (экономия контекста); после правок исходников агент **должен** следовать этому чеклисту.
13
+
3
14
  ## Когда применять
4
15
 
5
16
  После **любого** изменения исходников в `app/**` (TS/TSX/JS/MJS, CSS, styled/Linaria в `.ts`/`.tsx`).
@@ -4,6 +4,9 @@
4
4
 
5
5
  | Файл | Содержание | Загрузка |
6
6
  |------|------------|----------|
7
- | `no-props-spread.md` | Явные пропсы, без `{...props}` | session start |
8
- | `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | `paths: styles.ts`, `.css` |
9
- | `react-ui.md` | Структура компонентов, `.data.ts`, хуки | `paths: app/src/ui/**` |
7
+ | `no-props-spread.md` | Явные пропсы, без `{...props}` | `paths: app/src/**/*.tsx` |
8
+ | `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | `paths:` styles/css |
9
+ | `react-ui.md` | Структура, стили (`Root`), `.data.ts`, хуки | `paths: app/src/ui/**` |
10
+ | `react-a11y-coding.md` | A11y при написании UI | `paths: app/src/ui/**` |
11
+
12
+ Deprecated stub `component-styles.md` **removed** — styles colocation lives in `react-ui.md`.
@@ -8,7 +8,7 @@ description: Delivers Next.js frontend features end-to-end across domain types,
8
8
  1. Read task brief, acceptance criteria, and decomposition if present.
9
9
  2. Read **`rules/architecture/feature-delivery-workflow.md`** and **`rules/architecture/reference-features.md`** — follow layer order and mirror closest reference feature.
10
10
  3. Add or update focused tests for changed behavior.
11
- 4. Validation from `app/`: see **`rules/tooling-and-review/post-change-lint.md`** (pipeline: scoped lint OK if next step is `build-verifier`).
11
+ 4. Validation from `app/`: **invoke** **`rules/tooling-and-review/post-change-lint.md`** after code edits (requestable, not session-start — but mandatory when code changed). Pipeline: scoped lint OK if next step is `build-verifier`.
12
12
 
13
13
  ## Handoff
14
14
 
@@ -1,6 +1,6 @@
1
1
  # Agent team artifacts
2
2
 
3
- Каталог артефактов пайплайна «команда агентов» Claude Code.
3
+ Каталог артефактов пайплайна «команда агентов» Claude.
4
4
 
5
5
  ## Layout
6
6
 
@@ -14,8 +14,8 @@
14
14
  status.json
15
15
  brief.md
16
16
  decomposition.md
17
- debug-report.md
18
- validation-report.md
17
+ debug-report.md # fixApplied: true/false
18
+ validation-report.md # build-verifier: PASS | FAIL
19
19
  architecture.md
20
20
  migration-plan.md
21
21
  ci-report.md
@@ -30,18 +30,76 @@
30
30
 
31
31
  ## pipeline.json schema
32
32
 
33
- Same as Cursor preset — see `agents/task-router.md` for examples with `build-verifier`, `skipIf`, and `parallel` steps.
33
+ ```json
34
+ {
35
+ "slug": "order-history-date-filter",
36
+ "intent": "feature",
37
+ "summary": "Add date filter to Order History",
38
+ "steps": [
39
+ { "agent": "task-analyst", "label": "Clarify and decompose" },
40
+ { "agent": "feature-developer", "label": "Implement + unit tests", "scope": "unit-in-dev" },
41
+ { "agent": "build-verifier", "label": "Validation gate" },
42
+ { "agent": "code-reviewer", "label": "Code review" },
43
+ { "agent": "qa-tester", "label": "E2E", "scope": "e2e-only" }
44
+ ],
45
+ "humanGates": ["after:task-analyst"],
46
+ "autoChain": true,
47
+ "skipped": []
48
+ }
49
+ ```
50
+
51
+ ### Step fields
52
+
53
+ | Field | Description |
54
+ |-------|-------------|
55
+ | `agent` | kebab-case name or array when `parallel: true` |
56
+ | `label` | Human-readable step name |
57
+ | `scope` | Passed to agents (e.g. `unit-in-dev`, `e2e-only`) |
58
+ | `skipIf` | `debugger.fixed` \| `ci-investigator.resolved` |
59
+ | `parallel` | Invoke all `agent` values in one parent turn |
60
+
61
+ ## status.json (pipeline mode)
62
+
63
+ ```json
64
+ {
65
+ "slug": "order-history-date-filter",
66
+ "intent": "feature",
67
+ "pipelineIndex": 0,
68
+ "currentAgent": "task-analyst",
69
+ "phase": "executing",
70
+ "state": "in_progress",
71
+ "awaitingHumanGate": false,
72
+ "parallelCompleted": [],
73
+ "retryAfterFix": null,
74
+ "updatedAt": "2026-05-29T12:00:00.000Z"
75
+ }
76
+ ```
77
+
78
+ ### phase
79
+
80
+ Prefer **`executing`** for pipeline mode. Legacy: `analysis`, `development`, `review`, `testing`, `done`.
34
81
 
35
- ## status.json
82
+ ### state
36
83
 
37
- Use **`phase: executing`** in pipeline mode. Optional fields: `parallelCompleted`, `retryAfterFix`, `validation_failed` state.
84
+ | Value | Description |
85
+ |-------|-------------|
86
+ | `in_progress` | Current step running |
87
+ | `completed` | Current step finished |
88
+ | `awaiting_approval` | Human gate; use `/task-continue` |
89
+ | `changes_requested` | Reviewer requires fixes |
90
+ | `validation_failed` | build-verifier failed |
91
+ | `approved` | Legacy continue |
38
92
 
39
93
  ## Workflow entry
40
94
 
41
95
  ```bash
42
- /task <описание>
96
+ /task <описание задачи>
43
97
  /task-continue <slug>
44
98
  /technical-retro <slug>
45
99
  ```
46
100
 
47
101
  Legacy: `/feature-start`, `/feature-continue`.
102
+
103
+ ## Git
104
+
105
+ Commit task artifacts if you want them to survive `ai-rules clean claude`. Or copy finished tasks to `docs/agent-workflow/tasks/<slug>/`.
@@ -0,0 +1,47 @@
1
+ # iOS Swift stack — Cursor agent team
2
+
3
+ Краткая точка входа для Cursor. Подробные правила — `.cursor/rules/*.mdc`; сценарии — `.cursor/skills/**`.
4
+
5
+ See `.cursor/rules/README.md` for the full catalog and loading strategy.
6
+
7
+ ## Quick start
8
+
9
+ | Задача | Куда смотреть |
10
+ |--------|----------------|
11
+ | Любая новая work-задача | `/task` → `commands/task.md` + `agent-team-orchestrator.mdc` (+ `agent-team-intake.mdc` on-demand) |
12
+ | Новая фича end-to-end | skill `feature-delivery` + `feature-delivery-workflow.mdc` |
13
+ | Стек и слои | `ios-app-core.mdc` |
14
+ | Эталонные Feature | `reference-features.mdc` (примеры `Features/Orders/…`; заменить на реальные пути) |
15
+ | Toolchain / схемы | `xcode-tooling.mdc` (requestable) |
16
+ | После правок Swift | `post-change-build.mdc` (**requestable**, обязателен после edits; полный gate — `build-verifier`) |
17
+ | Code review MR | skill `code-review` + `code-review-mr.mdc` |
18
+ | UI-тесты | skill `xcuitest-e2e` + agents `xcuitest-test-*` |
19
+ | Security / Keychain | `security-ios.mdc` |
20
+ | Валидация перед review | agent `build-verifier` (для preset: ещё проверка chain≠next) |
21
+ | Техническое ретро | `/technical-retro` + skill `technical-retro` |
22
+
23
+ ## Dogfood (5 сценариев)
24
+
25
+ 1. `/task` — новая Feature под `Features/<Name>`.
26
+ 2. Баг ViewModel — debugger + unit test.
27
+ 3. Mapper — unit-test-planner/generator.
28
+ 4. UI flow — xcuitest trio.
29
+ 5. Auth/Keychain — security-reviewer + `security-ios.mdc`.
30
+
31
+ ## Когда использовать `/task`
32
+
33
+ - Реализация, багфикс, миграция, тесты, ревью MR, CI-fix — **предпочтительно через `/task`**.
34
+ - Простой one-liner без архитектурного риска — можно без pipeline, если пользователь явно просит.
35
+ - Вопросы «как работает X» — ответ без `/task`.
36
+
37
+ ## Pipeline routing
38
+
39
+ Intent detection, profiles (`full` / `standard` / `light`), and default steps — **only** in `agents/task-router.md`. Schema and rename map (Playwright → XCUITest) — `agents/README.md`.
40
+
41
+ ## Install
42
+
43
+ ```bash
44
+ npx @bonesofspring/ai-rules init cursor --preset ios-swift
45
+ ```
46
+
47
+ Копирует rules, commands, agents, hooks, skills, team, `hooks.json`, `BUGBOT.md`, `AGENTS.md`.
@@ -0,0 +1,15 @@
1
+ # Cursor Bugbot Review Guidelines (iOS)
2
+
3
+ Follow the **`code-review` skill** and **`code-review-mr.mdc`** for the full checklist.
4
+
5
+ ## Priorities
6
+
7
+ 1. Correctness regressions and runtime bugs (crashes, wrong state, concurrency races).
8
+ 2. Architecture boundary violations (`architecture-boundaries.mdc`): View↛API/DTO, Domain↛SwiftUI, Data↛Presentation.
9
+ 3. Missing unit tests for mappers / use cases / non-trivial ViewModel logic; XCUITest updates for user flows (`tests-unit.mdc`, `tests-ui.mdc`).
10
+ 4. Concurrency and safety (`swift-conventions.mdc`): `@MainActor`, typed errors, no unjustified force unwrap; SPM public API / no deep-imports (`module-public-api.mdc`).
11
+ 5. Security-sensitive diffs: Keychain, tokens, PII, ATS (`security-ios.mdc`).
12
+
13
+ ## Review style
14
+
15
+ Lead with concrete findings: file, impact, fix direction. Skip style-only nits unless they violate SwiftLint/project conventions.
@@ -0,0 +1,36 @@
1
+ # iOS Swift preset (Cursor)
2
+
3
+ Правила и agent-team surface для iOS (Swift / SwiftUI / XCTest / XCUITest).
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npx @bonesofspring/ai-rules init cursor --preset ios-swift
9
+ ```
10
+
11
+ Копирует:
12
+
13
+ | Path | Содержание |
14
+ |------|------------|
15
+ | `AGENTS.md` | Quick-start |
16
+ | `BUGBOT.md` | Cursor Bugbot review priorities (iOS) |
17
+ | `rules/**` | `.mdc` + README (alwaysApply ≤3) |
18
+ | `agents/**` | **21** ролей (+ README rename map) |
19
+ | `skills/**` | **7** skills (в т.ч. `xcuitest-e2e`) |
20
+ | `commands/**` | task, task-continue, feature-start/continue, technical-retro |
21
+ | `hooks.json` + `hooks/**` | guard-shell + chain-team-phases |
22
+ | `team/**` | fixtures + README |
23
+
24
+ ## alwaysApply (≤3)
25
+
26
+ `ios-app-core`, `architecture-boundaries`, `code-quality-and-refactoring`.
27
+
28
+ Requestable (не always-on): `post-change-build`, `xcode-tooling`, `agent-team-*`, `code-review-mr`, `feature-delivery-workflow`, `reference-features`.
29
+
30
+ ## Sync with Claude
31
+
32
+ SoT = этот Cursor-пресет. После правок `.mdc` / agents / skills — обновить twin в `presets/claude/ios-swift/` **в том же PR**.
33
+
34
+ `BUGBOT.md` — **Cursor-only** (нет Claude twin); для Claude Code — skill `code-review` + `tooling-and-review/code-review.md`.
35
+
36
+ См. `rules/README.md`, `AGENTS.md`.