@bonesofspring/ai-rules 0.2.15 → 0.2.16

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 (258) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +3 -1
  3. package/bin/cli.js +2 -0
  4. package/package.json +1 -1
  5. package/presets/_shared/core/meta/preset-layering.md +1 -1
  6. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +25 -12
  7. package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
  8. package/presets/_shared/core/meta/preset-twin-sync.md +2 -0
  9. package/presets/claude/android-kotlin/CLAUDE.md +38 -0
  10. package/presets/claude/android-kotlin/MCP.md +16 -0
  11. package/presets/claude/android-kotlin/README.md +32 -0
  12. package/presets/claude/android-kotlin/REPO_AGENTS.md +48 -0
  13. package/presets/claude/android-kotlin/agents/README.md +44 -0
  14. package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +60 -0
  15. package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +70 -0
  16. package/presets/claude/android-kotlin/agents/build-verifier.md +67 -0
  17. package/presets/claude/android-kotlin/agents/ci-investigator.md +74 -0
  18. package/presets/claude/android-kotlin/agents/code-reviewer.md +74 -0
  19. package/presets/claude/android-kotlin/agents/codebase-analyzer.md +28 -0
  20. package/presets/claude/android-kotlin/agents/debugger.md +77 -0
  21. package/presets/claude/android-kotlin/agents/feature-developer.md +63 -0
  22. package/presets/claude/android-kotlin/agents/instrumentation-test-generator.md +19 -0
  23. package/presets/claude/android-kotlin/agents/instrumentation-test-healer.md +19 -0
  24. package/presets/claude/android-kotlin/agents/instrumentation-test-planner.md +19 -0
  25. package/presets/claude/android-kotlin/agents/migration-specialist.md +74 -0
  26. package/presets/claude/android-kotlin/agents/performance-auditor.md +67 -0
  27. package/presets/claude/android-kotlin/agents/qa-tester.md +66 -0
  28. package/presets/claude/android-kotlin/agents/security-reviewer.md +65 -0
  29. package/presets/claude/android-kotlin/agents/solution-architect.md +21 -0
  30. package/presets/claude/android-kotlin/agents/task-analyst.md +36 -0
  31. package/presets/claude/android-kotlin/agents/task-router.md +103 -0
  32. package/presets/claude/android-kotlin/agents/tech-writer.md +61 -0
  33. package/presets/claude/android-kotlin/agents/unit-test-generator.md +55 -0
  34. package/presets/claude/android-kotlin/agents/unit-test-healer.md +54 -0
  35. package/presets/claude/android-kotlin/agents/unit-test-planner.md +65 -0
  36. package/presets/claude/android-kotlin/commands/README.md +51 -0
  37. package/presets/claude/android-kotlin/commands/feature-continue.md +19 -0
  38. package/presets/claude/android-kotlin/commands/feature-start.md +33 -0
  39. package/presets/claude/android-kotlin/commands/task-continue.md +50 -0
  40. package/presets/claude/android-kotlin/commands/task.md +56 -0
  41. package/presets/claude/android-kotlin/commands/technical-retro.md +85 -0
  42. package/presets/claude/android-kotlin/hooks/README.md +16 -0
  43. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +705 -0
  44. package/presets/claude/android-kotlin/hooks/examples/README.md +18 -0
  45. package/presets/claude/android-kotlin/hooks/examples/format-edited.example.sh +13 -0
  46. package/presets/claude/android-kotlin/hooks/examples/secret-guard.example.sh +10 -0
  47. package/presets/claude/android-kotlin/hooks/examples/test-on-save.example.sh +8 -0
  48. package/presets/claude/android-kotlin/hooks/guard-shell-command.sh +80 -0
  49. package/presets/claude/android-kotlin/mcp.json +12 -0
  50. package/presets/claude/android-kotlin/rules/README.md +63 -0
  51. package/presets/claude/android-kotlin/rules/api-and-data/README.md +10 -0
  52. package/presets/claude/android-kotlin/rules/api-and-data/networking.md +30 -0
  53. package/presets/claude/android-kotlin/rules/api-and-data/persistence.md +29 -0
  54. package/presets/claude/android-kotlin/rules/architecture/README.md +9 -0
  55. package/presets/claude/android-kotlin/rules/architecture/boundaries.md +27 -0
  56. package/presets/claude/android-kotlin/rules/architecture/di-dagger-feature-holders.md +34 -0
  57. package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +41 -0
  58. package/presets/claude/android-kotlin/rules/architecture/module-public-api.md +29 -0
  59. package/presets/claude/android-kotlin/rules/architecture/reference-features.md +28 -0
  60. package/presets/claude/android-kotlin/rules/stack/README.md +6 -0
  61. package/presets/claude/android-kotlin/rules/stack/android-app-core.md +27 -0
  62. package/presets/claude/android-kotlin/rules/stack/kotlin-conventions.md +30 -0
  63. package/presets/claude/android-kotlin/rules/testing/README.md +10 -0
  64. package/presets/claude/android-kotlin/rules/testing/ui.md +28 -0
  65. package/presets/claude/android-kotlin/rules/testing/unit.md +29 -0
  66. package/presets/claude/android-kotlin/rules/tooling-and-review/README.md +19 -0
  67. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-intake.md +18 -0
  68. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +127 -0
  69. package/presets/claude/android-kotlin/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  70. package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +52 -0
  71. package/presets/claude/android-kotlin/rules/tooling-and-review/code-review.md +88 -0
  72. package/presets/claude/android-kotlin/rules/tooling-and-review/design-guidance.md +110 -0
  73. package/presets/claude/android-kotlin/rules/tooling-and-review/gradle-tooling.md +30 -0
  74. package/presets/claude/android-kotlin/rules/tooling-and-review/post-change-build.md +34 -0
  75. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +36 -0
  76. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +100 -0
  77. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +39 -0
  78. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +41 -0
  79. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +56 -0
  80. package/presets/claude/android-kotlin/rules/tooling-and-review/security-android.md +29 -0
  81. package/presets/claude/android-kotlin/rules/tooling-and-review/technical-retro.md +18 -0
  82. package/presets/claude/android-kotlin/rules/ui-and-accessibility/README.md +7 -0
  83. package/presets/claude/android-kotlin/rules/ui-and-accessibility/compose.md +31 -0
  84. package/presets/claude/android-kotlin/rules/ui-and-accessibility/navigation.md +30 -0
  85. package/presets/claude/android-kotlin/rules/ui-and-accessibility/viewmodels.md +27 -0
  86. package/presets/claude/android-kotlin/skills/README.md +14 -0
  87. package/presets/claude/android-kotlin/skills/ci-investigation/SKILL.md +39 -0
  88. package/presets/claude/android-kotlin/skills/code-review/SKILL.md +39 -0
  89. package/presets/claude/android-kotlin/skills/debug-investigation/SKILL.md +34 -0
  90. package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +35 -0
  91. package/presets/claude/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +17 -0
  92. package/presets/claude/android-kotlin/skills/technical-retro/SKILL.md +54 -0
  93. package/presets/claude/android-kotlin/skills/unit-testing/SKILL.md +32 -0
  94. package/presets/claude/android-kotlin/skills/write-adr/SKILL.md +41 -0
  95. package/presets/claude/android-kotlin/team/README.md +54 -0
  96. package/presets/claude/android-kotlin/team/conventions.md +17 -0
  97. package/presets/claude/android-kotlin/team/fixtures/bugfix-standard.json +47 -0
  98. package/presets/claude/android-kotlin/team/fixtures/feature-full.json +97 -0
  99. package/presets/claude/android-kotlin/team/fixtures/feature-light.json +38 -0
  100. package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
  101. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  102. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  103. package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +2 -0
  104. package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +1 -1
  105. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  106. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  107. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +2 -0
  108. package/presets/claude/java/rules/tooling-and-review/preset-layering.md +1 -1
  109. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  110. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  111. package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +2 -0
  112. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +1 -1
  113. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  114. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  115. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +2 -0
  116. package/presets/claude/next/rules/tooling-and-review/preset-layering.md +1 -1
  117. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  118. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  119. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +2 -0
  120. package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +1 -1
  121. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  122. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  123. package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +2 -0
  124. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +1 -1
  125. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  126. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  127. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +2 -0
  128. package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +1 -1
  129. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  130. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  131. package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +2 -0
  132. package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +1 -1
  133. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  134. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  135. package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +2 -0
  136. package/presets/cursor/android-kotlin/AGENTS.md +50 -0
  137. package/presets/cursor/android-kotlin/BUGBOT.md +16 -0
  138. package/presets/cursor/android-kotlin/MCP.md +16 -0
  139. package/presets/cursor/android-kotlin/README.md +35 -0
  140. package/presets/cursor/android-kotlin/REPO_AGENTS.md +48 -0
  141. package/presets/cursor/android-kotlin/agents/README.md +44 -0
  142. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +60 -0
  143. package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +70 -0
  144. package/presets/cursor/android-kotlin/agents/build-verifier.md +67 -0
  145. package/presets/cursor/android-kotlin/agents/ci-investigator.md +74 -0
  146. package/presets/cursor/android-kotlin/agents/code-reviewer.md +74 -0
  147. package/presets/cursor/android-kotlin/agents/codebase-analyzer.md +28 -0
  148. package/presets/cursor/android-kotlin/agents/debugger.md +77 -0
  149. package/presets/cursor/android-kotlin/agents/feature-developer.md +63 -0
  150. package/presets/cursor/android-kotlin/agents/instrumentation-test-generator.md +19 -0
  151. package/presets/cursor/android-kotlin/agents/instrumentation-test-healer.md +19 -0
  152. package/presets/cursor/android-kotlin/agents/instrumentation-test-planner.md +19 -0
  153. package/presets/cursor/android-kotlin/agents/migration-specialist.md +74 -0
  154. package/presets/cursor/android-kotlin/agents/performance-auditor.md +67 -0
  155. package/presets/cursor/android-kotlin/agents/qa-tester.md +66 -0
  156. package/presets/cursor/android-kotlin/agents/security-reviewer.md +65 -0
  157. package/presets/cursor/android-kotlin/agents/solution-architect.md +21 -0
  158. package/presets/cursor/android-kotlin/agents/task-analyst.md +36 -0
  159. package/presets/cursor/android-kotlin/agents/task-router.md +103 -0
  160. package/presets/cursor/android-kotlin/agents/tech-writer.md +61 -0
  161. package/presets/cursor/android-kotlin/agents/unit-test-generator.md +55 -0
  162. package/presets/cursor/android-kotlin/agents/unit-test-healer.md +54 -0
  163. package/presets/cursor/android-kotlin/agents/unit-test-planner.md +65 -0
  164. package/presets/cursor/android-kotlin/commands/README.md +51 -0
  165. package/presets/cursor/android-kotlin/commands/feature-continue.md +19 -0
  166. package/presets/cursor/android-kotlin/commands/feature-start.md +33 -0
  167. package/presets/cursor/android-kotlin/commands/task-continue.md +50 -0
  168. package/presets/cursor/android-kotlin/commands/task.md +56 -0
  169. package/presets/cursor/android-kotlin/commands/technical-retro.md +85 -0
  170. package/presets/cursor/android-kotlin/hooks/README.md +12 -0
  171. package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +723 -0
  172. package/presets/cursor/android-kotlin/hooks/examples/README.md +18 -0
  173. package/presets/cursor/android-kotlin/hooks/examples/format-edited.example.sh +13 -0
  174. package/presets/cursor/android-kotlin/hooks/examples/secret-guard.example.sh +10 -0
  175. package/presets/cursor/android-kotlin/hooks/examples/test-on-save.example.sh +8 -0
  176. package/presets/cursor/android-kotlin/hooks/guard-shell-command.sh +80 -0
  177. package/presets/cursor/android-kotlin/hooks.json +17 -0
  178. package/presets/cursor/android-kotlin/mcp.json +11 -0
  179. package/presets/cursor/android-kotlin/rules/README.md +61 -0
  180. package/presets/cursor/android-kotlin/rules/agent-team-intake.mdc +16 -0
  181. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +124 -0
  182. package/presets/cursor/android-kotlin/rules/android-app-core.mdc +28 -0
  183. package/presets/cursor/android-kotlin/rules/anti-sycophancy-discipline.mdc +30 -0
  184. package/presets/cursor/android-kotlin/rules/architecture-boundaries.mdc +28 -0
  185. package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +53 -0
  186. package/presets/cursor/android-kotlin/rules/code-review-mr.mdc +84 -0
  187. package/presets/cursor/android-kotlin/rules/compose-ui.mdc +32 -0
  188. package/presets/cursor/android-kotlin/rules/design-guidance.mdc +111 -0
  189. package/presets/cursor/android-kotlin/rules/di-dagger-feature-holders.mdc +35 -0
  190. package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +36 -0
  191. package/presets/cursor/android-kotlin/rules/gradle-tooling.mdc +31 -0
  192. package/presets/cursor/android-kotlin/rules/kotlin-conventions.mdc +31 -0
  193. package/presets/cursor/android-kotlin/rules/module-public-api.mdc +30 -0
  194. package/presets/cursor/android-kotlin/rules/navigation-feature-launcher.mdc +31 -0
  195. package/presets/cursor/android-kotlin/rules/networking-data.mdc +31 -0
  196. package/presets/cursor/android-kotlin/rules/persistence-data.mdc +30 -0
  197. package/presets/cursor/android-kotlin/rules/post-change-build.mdc +30 -0
  198. package/presets/cursor/android-kotlin/rules/preset-layering.mdc +36 -0
  199. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +100 -0
  200. package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +39 -0
  201. package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +41 -0
  202. package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +56 -0
  203. package/presets/cursor/android-kotlin/rules/reference-features.mdc +29 -0
  204. package/presets/cursor/android-kotlin/rules/security-android.mdc +30 -0
  205. package/presets/cursor/android-kotlin/rules/state-and-viewmodels.mdc +28 -0
  206. package/presets/cursor/android-kotlin/rules/technical-retro.mdc +16 -0
  207. package/presets/cursor/android-kotlin/rules/tests-ui.mdc +29 -0
  208. package/presets/cursor/android-kotlin/rules/tests-unit.mdc +30 -0
  209. package/presets/cursor/android-kotlin/skills/README.md +14 -0
  210. package/presets/cursor/android-kotlin/skills/ci-investigation/SKILL.md +39 -0
  211. package/presets/cursor/android-kotlin/skills/code-review/SKILL.md +39 -0
  212. package/presets/cursor/android-kotlin/skills/debug-investigation/SKILL.md +34 -0
  213. package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +35 -0
  214. package/presets/cursor/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +17 -0
  215. package/presets/cursor/android-kotlin/skills/technical-retro/SKILL.md +54 -0
  216. package/presets/cursor/android-kotlin/skills/unit-testing/SKILL.md +32 -0
  217. package/presets/cursor/android-kotlin/skills/write-adr/SKILL.md +41 -0
  218. package/presets/cursor/android-kotlin/team/README.md +54 -0
  219. package/presets/cursor/android-kotlin/team/conventions.md +17 -0
  220. package/presets/cursor/android-kotlin/team/fixtures/bugfix-standard.json +47 -0
  221. package/presets/cursor/android-kotlin/team/fixtures/feature-full.json +97 -0
  222. package/presets/cursor/android-kotlin/team/fixtures/feature-light.json +38 -0
  223. package/presets/cursor/go/rules/preset-layering.mdc +1 -1
  224. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +25 -12
  225. package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
  226. package/presets/cursor/go/rules/preset-twin-sync.mdc +2 -0
  227. package/presets/cursor/ios-swift/rules/preset-layering.mdc +1 -1
  228. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +25 -12
  229. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +1 -1
  230. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +2 -0
  231. package/presets/cursor/java/rules/preset-layering.mdc +1 -1
  232. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +25 -12
  233. package/presets/cursor/java/rules/preset-pr-checklist.mdc +1 -1
  234. package/presets/cursor/java/rules/preset-twin-sync.mdc +2 -0
  235. package/presets/cursor/mcp-ts/rules/preset-layering.mdc +1 -1
  236. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +25 -12
  237. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +1 -1
  238. package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +2 -0
  239. package/presets/cursor/next/rules/preset-layering.mdc +1 -1
  240. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +25 -12
  241. package/presets/cursor/next/rules/preset-pr-checklist.mdc +1 -1
  242. package/presets/cursor/next/rules/preset-twin-sync.mdc +2 -0
  243. package/presets/cursor/nuxt/rules/preset-layering.mdc +1 -1
  244. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +25 -12
  245. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +1 -1
  246. package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +2 -0
  247. package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +1 -1
  248. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +25 -12
  249. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +1 -1
  250. package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +2 -0
  251. package/presets/cursor/php-laravel/rules/preset-layering.mdc +1 -1
  252. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +25 -12
  253. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +1 -1
  254. package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +2 -0
  255. package/presets/cursor/svelte/rules/preset-layering.mdc +1 -1
  256. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +25 -12
  257. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +1 -1
  258. package/presets/cursor/svelte/rules/preset-twin-sync.mdc +2 -0
@@ -0,0 +1,54 @@
1
+ # Agent team artifacts (android-kotlin)
2
+
3
+ Artifact directory for the Android agent-team pipeline.
4
+
5
+ ## Layout
6
+
7
+ ```
8
+ .claude/team/
9
+ active-task.json
10
+ fixtures/
11
+ tasks/<slug>/
12
+ pipeline.json
13
+ status.json
14
+ brief.md
15
+ decomposition.md
16
+
17
+ ```
18
+
19
+ ## Fixtures
20
+
21
+ | Fixture | Notes |
22
+ |---------|-------|
23
+ | `feature-full.json` | Full profile; QA scope `e2e-only` = **Android instrumentation** |
24
+ | `feature-light.json` | developer → build-verifier |
25
+ | `bugfix-standard.json` | debugger → developer (skipIf) → verifier → reviewer |
26
+
27
+ ### `skipped[]` in fixtures
28
+
29
+ `pipeline.json` / fixture `skipped` is **documentation of forbidden or non-applicable template stems** from other stacks (Playwright, XCUITest, JVM `integration-test-*`) — **not** agents that ran and were skipped at runtime, and **not** steps to schedule. Routers must never promote these stems into `steps[]`. For UI-test-only intents use `instrumentation-test-*`.
30
+
31
+ **Never** schedule Playwright-only steps without skip rationale. Use `instrumentation-test-*` for UI-test-only intents.
32
+
33
+ ## Creating task dirs
34
+
35
+ Bootstrap `tasks/<slug>/` by **writing** artifacts (Write tool), not Shell `mkdir`. Cursor sandbox → `Operation not permitted` otherwise (worse on Desktop/Documents).
36
+
37
+ ## Artifact manifest and receipts
38
+
39
+ Each slug stores one context index at `.claude/team/tasks/<slug>/artifact-manifest.json`. Schema v1 is defined by shared core `agent-team/agent-artifact-contracts.md`: every entry declares its producer, status, authoritative paths, acceptance-criteria IDs, decomposition task IDs, timestamps, and a terminal completion receipt.
40
+
41
+ Producer/consumer rules:
42
+
43
+ - Read the manifest first and use only the authoritative inputs needed by the current step; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` when it is missing or stale, and report that gap.
44
+ - Producers upsert only their stable entry IDs, preserve foreign entries, and finish with `completed`, `blocked`, `changes_requested`, or `validation_failed` receipt evidence.
45
+ - The router owns `pipeline.json` and its routing entry; analyst, developer, verifier, and reviewer own their named outputs and receipts. Consumers do not edit another producer's receipt.
46
+ - Agents do not mutate `status.json` or `metrics.json`. The orchestration runtime/hook is their single writer. Parallel receipt merges are serialized by the parent/orchestrator.
47
+
48
+ ## Local metrics ledger
49
+
50
+ `metrics.json` is an append-only schema-v1 event ledger for one task run. It contains only allowlisted IDs, task dimensions, timestamps, outcomes, and attribution confidence—never prompts, secrets, file paths, or contents. The orchestration runtime writes `task_started` / `attempt_started`; the hook records host-clock completion and human-gate edges under a per-task lock with temp-and-rename.
51
+
52
+ `status.json.activeAttempts` is a transient timing bridge keyed by `attemptId`; `lastCompletedAttempt` is diagnostic; `parallelOutcomes` holds per-agent outcomes for the current parallel join until the step advances. For parallel stops, the hook must use a stable payload identity or the sole active attempt. Otherwise an explicit `.metrics-receipts.json` receipt is fallback data marked `source: agent`, `attributionConfidence: fallback`; it must never guess from `currentAgent`.
53
+
54
+ Aggregate with `node packages/ai-rules/scripts/aggregate-agent-task-metrics.mjs --team-root .claude/team`. It reports role/agent count, completed count, total/average duration, distinct completed run IDs, separate human-gate wait, and incomplete artifacts.
@@ -0,0 +1,17 @@
1
+ # Team conventions (consumer-local)
2
+
3
+ After installing this preset, document **local** names and paths here. Do not put vendor/brand names into the shared preset packages.
4
+
5
+ ## Suggested entries
6
+
7
+ | Concern | Local name / path |
8
+ |---------|-------------------|
9
+ | ViewModel base class | _(fill)_ |
10
+ | Feature DI holder / component types | _(fill)_ |
11
+ | Design-system package | _(fill)_ |
12
+ | App shell module(s) under `applications/` | _(fill)_ |
13
+ | Default product flavor / variant for local builds | _(fill)_ |
14
+ | Instrumentation test base / robot pattern | _(fill)_ |
15
+ | Documented Gradle wrapper (if not `./gradlew`) | _(fill)_ |
16
+
17
+ Keep this file consumer-owned; `ai-rules init` may overwrite other preset files but conventions are meant to accumulate local decisions.
@@ -0,0 +1,47 @@
1
+ {
2
+ "slug": "example-bugfix-standard",
3
+ "intent": "bugfix",
4
+ "profile": "standard",
5
+ "summary": "Bugfix with unit coverage and optional instrumentation",
6
+ "steps": [
7
+ {
8
+ "agent": "task-analyst",
9
+ "label": "Clarify repro and AC"
10
+ },
11
+ {
12
+ "agent": "debugger",
13
+ "label": "Reproduce and locate root cause"
14
+ },
15
+ {
16
+ "agent": "feature-developer",
17
+ "label": "Minimal fix + unit test",
18
+ "scope": "unit-in-dev"
19
+ },
20
+ {
21
+ "agent": "build-verifier",
22
+ "label": "Gradle compile + lint + unit smoke",
23
+ "model": "cheap"
24
+ },
25
+ {
26
+ "agent": "code-reviewer",
27
+ "label": "Code review",
28
+ "model": "cheap"
29
+ }
30
+ ],
31
+ "humanGates": [],
32
+ "autoChain": true,
33
+ "skipped": [
34
+ {
35
+ "agent": "playwright-test-planner",
36
+ "reason": "Android uses instrumentation-test-*"
37
+ },
38
+ {
39
+ "agent": "xcuitest-test-planner",
40
+ "reason": "iOS-only"
41
+ },
42
+ {
43
+ "agent": "instrumentation-test-planner",
44
+ "reason": "No UI AC \u2014 add if regression is UI-only"
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "slug": "example-feature-full",
3
+ "intent": "feature",
4
+ "profile": "full",
5
+ "summary": "Multi-layer feature with Android instrumentation coverage",
6
+ "steps": [
7
+ {
8
+ "agent": "task-analyst",
9
+ "label": "Clarify and decompose"
10
+ },
11
+ {
12
+ "agent": "solution-architect",
13
+ "label": "Design boundaries",
14
+ "model": "strong"
15
+ },
16
+ {
17
+ "agent": "feature-developer",
18
+ "label": "Implement + unit tests",
19
+ "scope": "unit-in-dev"
20
+ },
21
+ {
22
+ "agent": "build-verifier",
23
+ "label": "Gradle compile + lint + unit smoke",
24
+ "model": "cheap"
25
+ },
26
+ {
27
+ "agent": "security-reviewer",
28
+ "label": "Security review",
29
+ "model": "strong"
30
+ },
31
+ {
32
+ "agent": "code-reviewer",
33
+ "label": "Code review",
34
+ "model": "cheap"
35
+ },
36
+ {
37
+ "agent": "accessibility-reviewer",
38
+ "label": "Compose a11y",
39
+ "model": "cheap"
40
+ },
41
+ {
42
+ "agent": "instrumentation-test-planner",
43
+ "label": "Plan instrumentation UI tests"
44
+ },
45
+ {
46
+ "agent": "instrumentation-test-generator",
47
+ "label": "Generate instrumentation tests"
48
+ },
49
+ {
50
+ "agent": "instrumentation-test-healer",
51
+ "label": "Heal flaky instrumentation",
52
+ "model": "cheap"
53
+ }
54
+ ],
55
+ "humanGates": [
56
+ "after:task-analyst"
57
+ ],
58
+ "autoChain": true,
59
+ "skipped": [
60
+ {
61
+ "agent": "playwright-test-planner",
62
+ "reason": "Android uses instrumentation-test-* \u2014 not Playwright"
63
+ },
64
+ {
65
+ "agent": "playwright-test-generator",
66
+ "reason": "Android uses instrumentation-test-*"
67
+ },
68
+ {
69
+ "agent": "playwright-test-healer",
70
+ "reason": "Android uses instrumentation-test-*"
71
+ },
72
+ {
73
+ "agent": "xcuitest-test-planner",
74
+ "reason": "iOS-only"
75
+ },
76
+ {
77
+ "agent": "xcuitest-test-generator",
78
+ "reason": "iOS-only"
79
+ },
80
+ {
81
+ "agent": "xcuitest-test-healer",
82
+ "reason": "iOS-only"
83
+ },
84
+ {
85
+ "agent": "integration-test-planner",
86
+ "reason": "JVM backend pattern \u2014 not Android UI"
87
+ },
88
+ {
89
+ "agent": "integration-test-generator",
90
+ "reason": "JVM backend pattern"
91
+ },
92
+ {
93
+ "agent": "integration-test-healer",
94
+ "reason": "JVM backend pattern"
95
+ }
96
+ ]
97
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "slug": "example-feature-light",
3
+ "intent": "feature",
4
+ "profile": "light",
5
+ "summary": "Trivial single-file change with explicit AC",
6
+ "steps": [
7
+ {
8
+ "agent": "feature-developer",
9
+ "label": "Implement",
10
+ "model": "cheap"
11
+ },
12
+ {
13
+ "agent": "build-verifier",
14
+ "label": "Gradle compile + lint + unit smoke",
15
+ "model": "cheap"
16
+ }
17
+ ],
18
+ "humanGates": [],
19
+ "autoChain": true,
20
+ "skipped": [
21
+ {
22
+ "agent": "task-analyst",
23
+ "reason": "Explicit AC and single-file scope"
24
+ },
25
+ {
26
+ "agent": "code-reviewer",
27
+ "reason": "Light profile \u2014 non-trivial app changes should use standard"
28
+ },
29
+ {
30
+ "agent": "instrumentation-test-planner",
31
+ "reason": "No UI AC"
32
+ },
33
+ {
34
+ "agent": "playwright-test-planner",
35
+ "reason": "Android uses instrumentation-test-*"
36
+ }
37
+ ]
38
+ }
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
24
24
  ## Where to put a new rule
25
25
 
26
26
  1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
27
- 2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
27
+ 2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
28
28
  3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
29
29
 
30
30
  ## SoT
@@ -15,11 +15,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
15
15
 
16
16
  ## Principles
17
17
 
18
- - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
- - `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
20
- - `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
21
- - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
22
- - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
18
+ - `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
+ - `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
20
+ - `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
21
+ - `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
22
+ - `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
23
+ - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Android instrumentation agents, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
23
24
  - `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
24
25
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
25
26
 
@@ -28,25 +29,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
28
29
  In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
29
30
 
30
31
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
32
+ - `instrumentation-test-` as required Android handoffs
31
33
  - `app/__tests__/e2e` as a required path
32
34
  - Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
33
35
 
34
36
  Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
35
37
 
38
+ ## Forbidden in android-kotlin hooks/agents (FAIL)
39
+
40
+ In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
41
+
42
+ - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
43
+ - `app/__tests__/e2e` as a required path
44
+ - `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
45
+ - Positive yarn recipes `lint:js` / `lint:css` as commands to run
46
+
47
+ Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
48
+
36
49
  ## Forbidden in next hooks/agents (FAIL when present as required)
37
50
 
38
- - `xcuitest-test-` as handoff stems
51
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
39
52
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
40
53
 
41
54
  ## Forbidden in nuxt hooks/agents (FAIL when present as required)
42
55
 
43
- - `xcuitest-test-` as handoff stems
56
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
44
57
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
45
58
  - Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
46
59
 
47
60
  ## Forbidden in svelte hooks/agents (FAIL when present as required)
48
61
 
49
- - `xcuitest-test-` as handoff stems
62
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
50
63
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
51
64
  - Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
52
65
 
@@ -56,7 +69,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
56
69
 
57
70
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
58
71
  - Positive yarn recipes `lint:js` / `lint:css`
59
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
72
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
60
73
  - Agent file `accessibility-reviewer` (no UI surface)
61
74
 
62
75
  Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
@@ -67,9 +80,9 @@ Same UI/mobile bans as backend stacks, plus:
67
80
 
68
81
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
69
82
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
70
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
83
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
71
84
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
72
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
85
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
73
86
 
74
87
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
75
88
 
@@ -80,4 +93,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
80
93
 
81
94
  ## Chain fork
82
95
 
83
- `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
96
+ `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
@@ -17,7 +17,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
17
17
 
18
18
  - [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
19
19
  - [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
20
- - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
20
+ - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, android-kotlin, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
21
21
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
22
22
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
23
23
  - [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
@@ -26,6 +26,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
26
26
  | `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
27
27
  | `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
28
28
  | `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
29
+ | `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
29
30
 
30
31
  ## Same-PR checklist
31
32
 
@@ -50,5 +51,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
50
51
  - **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
51
52
  - **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
52
53
  - **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
54
+ - **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
53
55
 
54
56
  Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
24
24
  ## Where to put a new rule
25
25
 
26
26
  1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
27
- 2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
27
+ 2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
28
28
  3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
29
29
 
30
30
  ## SoT
@@ -15,11 +15,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
15
15
 
16
16
  ## Principles
17
17
 
18
- - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
- - `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
20
- - `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
21
- - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
22
- - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
18
+ - `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
+ - `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
20
+ - `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
21
+ - `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
22
+ - `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
23
+ - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Android instrumentation agents, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
23
24
  - `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
24
25
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
25
26
 
@@ -28,25 +29,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
28
29
  In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
29
30
 
30
31
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
32
+ - `instrumentation-test-` as required Android handoffs
31
33
  - `app/__tests__/e2e` as a required path
32
34
  - Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
33
35
 
34
36
  Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
35
37
 
38
+ ## Forbidden in android-kotlin hooks/agents (FAIL)
39
+
40
+ In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
41
+
42
+ - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
43
+ - `app/__tests__/e2e` as a required path
44
+ - `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
45
+ - Positive yarn recipes `lint:js` / `lint:css` as commands to run
46
+
47
+ Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
48
+
36
49
  ## Forbidden in next hooks/agents (FAIL when present as required)
37
50
 
38
- - `xcuitest-test-` as handoff stems
51
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
39
52
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
40
53
 
41
54
  ## Forbidden in nuxt hooks/agents (FAIL when present as required)
42
55
 
43
- - `xcuitest-test-` as handoff stems
56
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
44
57
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
45
58
  - Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
46
59
 
47
60
  ## Forbidden in svelte hooks/agents (FAIL when present as required)
48
61
 
49
- - `xcuitest-test-` as handoff stems
62
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
50
63
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
51
64
  - Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
52
65
 
@@ -56,7 +69,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
56
69
 
57
70
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
58
71
  - Positive yarn recipes `lint:js` / `lint:css`
59
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
72
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
60
73
  - Agent file `accessibility-reviewer` (no UI surface)
61
74
 
62
75
  Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
@@ -67,9 +80,9 @@ Same UI/mobile bans as backend stacks, plus:
67
80
 
68
81
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
69
82
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
70
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
83
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
71
84
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
72
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
85
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
73
86
 
74
87
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
75
88
 
@@ -80,4 +93,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
80
93
 
81
94
  ## Chain fork
82
95
 
83
- `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
96
+ `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
@@ -17,7 +17,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
17
17
 
18
18
  - [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
19
19
  - [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
20
- - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
20
+ - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, android-kotlin, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
21
21
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
22
22
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
23
23
  - [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
@@ -26,6 +26,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
26
26
  | `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
27
27
  | `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
28
28
  | `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
29
+ | `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
29
30
 
30
31
  ## Same-PR checklist
31
32
 
@@ -50,5 +51,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
50
51
  - **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
51
52
  - **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
52
53
  - **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
54
+ - **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
53
55
 
54
56
  Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
@@ -24,7 +24,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
24
24
  ## Where to put a new rule
25
25
 
26
26
  1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
27
- 2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
27
+ 2. Only one of the installable stacks (`next` / `nuxt` / `svelte` / `ios-swift` / `android-kotlin` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (not in `_shared`).
28
28
  3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
29
29
 
30
30
  ## SoT
@@ -15,11 +15,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
15
15
 
16
16
  ## Principles
17
17
 
18
- - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
- - `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
20
- - `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
21
- - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
22
- - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
18
+ - `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
+ - `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
20
+ - `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
21
+ - `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
22
+ - `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
23
+ - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Android instrumentation agents, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
23
24
  - `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
24
25
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
25
26
 
@@ -28,25 +29,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
28
29
  In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
29
30
 
30
31
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
32
+ - `instrumentation-test-` as required Android handoffs
31
33
  - `app/__tests__/e2e` as a required path
32
34
  - Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
33
35
 
34
36
  Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
35
37
 
38
+ ## Forbidden in android-kotlin hooks/agents (FAIL)
39
+
40
+ In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
41
+
42
+ - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
43
+ - `app/__tests__/e2e` as a required path
44
+ - `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
45
+ - Positive yarn recipes `lint:js` / `lint:css` as commands to run
46
+
47
+ Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
48
+
36
49
  ## Forbidden in next hooks/agents (FAIL when present as required)
37
50
 
38
- - `xcuitest-test-` as handoff stems
51
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
39
52
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
40
53
 
41
54
  ## Forbidden in nuxt hooks/agents (FAIL when present as required)
42
55
 
43
- - `xcuitest-test-` as handoff stems
56
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
44
57
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
45
58
  - Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
46
59
 
47
60
  ## Forbidden in svelte hooks/agents (FAIL when present as required)
48
61
 
49
- - `xcuitest-test-` as handoff stems
62
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
50
63
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
51
64
  - Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
52
65
 
@@ -56,7 +69,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
56
69
 
57
70
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
58
71
  - Positive yarn recipes `lint:js` / `lint:css`
59
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
72
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
60
73
  - Agent file `accessibility-reviewer` (no UI surface)
61
74
 
62
75
  Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
@@ -67,9 +80,9 @@ Same UI/mobile bans as backend stacks, plus:
67
80
 
68
81
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
69
82
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
70
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
83
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
71
84
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
72
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
85
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
73
86
 
74
87
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
75
88
 
@@ -80,4 +93,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
80
93
 
81
94
  ## Chain fork
82
95
 
83
- `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
96
+ `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
@@ -17,7 +17,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
17
17
 
18
18
  - [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
19
19
  - [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
20
- - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
20
+ - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, android-kotlin, go, java, mcp-ts, php-hexagonal, and php-laravel — see `preset-twin-sync`)
21
21
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
22
22
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
23
23
  - [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
@@ -26,6 +26,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
26
26
  | `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
27
27
  | `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
28
28
  | `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
29
+ | `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
29
30
 
30
31
  ## Same-PR checklist
31
32
 
@@ -50,5 +51,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
50
51
  - **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
51
52
  - **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
52
53
  - **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
54
+ - **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
53
55
 
54
56
  Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.