@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
@@ -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`.
@@ -20,7 +20,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
20
20
  ## Where to put a new rule
21
21
 
22
22
  1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
23
- 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`).
23
+ 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`).
24
24
  3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
25
25
 
26
26
  ## SoT
@@ -11,11 +11,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
11
11
 
12
12
  ## Principles
13
13
 
14
- - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
15
- - `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
16
- - `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
17
- - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
18
- - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
14
+ - `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
15
+ - `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
16
+ - `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
17
+ - `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
18
+ - `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
19
+ - `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.
19
20
  - `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
20
21
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
21
22
 
@@ -24,25 +25,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
24
25
  In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
25
26
 
26
27
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
28
+ - `instrumentation-test-` as required Android handoffs
27
29
  - `app/__tests__/e2e` as a required path
28
30
  - Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
29
31
 
30
32
  Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
31
33
 
34
+ ## Forbidden in android-kotlin hooks/agents (FAIL)
35
+
36
+ In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
37
+
38
+ - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
39
+ - `app/__tests__/e2e` as a required path
40
+ - `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
41
+ - Positive yarn recipes `lint:js` / `lint:css` as commands to run
42
+
43
+ Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
44
+
32
45
  ## Forbidden in next hooks/agents (FAIL when present as required)
33
46
 
34
- - `xcuitest-test-` as handoff stems
47
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
35
48
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
36
49
 
37
50
  ## Forbidden in nuxt hooks/agents (FAIL when present as required)
38
51
 
39
- - `xcuitest-test-` as handoff stems
52
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
40
53
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
41
54
  - Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
42
55
 
43
56
  ## Forbidden in svelte hooks/agents (FAIL when present as required)
44
57
 
45
- - `xcuitest-test-` as handoff stems
58
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
46
59
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
47
60
  - Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
48
61
 
@@ -52,7 +65,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
52
65
 
53
66
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
54
67
  - Positive yarn recipes `lint:js` / `lint:css`
55
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
68
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
56
69
  - Agent file `accessibility-reviewer` (no UI surface)
57
70
 
58
71
  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`).
@@ -63,9 +76,9 @@ Same UI/mobile bans as backend stacks, plus:
63
76
 
64
77
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
65
78
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
66
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
79
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
67
80
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
68
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
81
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
69
82
 
70
83
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
71
84
 
@@ -76,4 +89,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
76
89
 
77
90
  ## Chain fork
78
91
 
79
- `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).
92
+ `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).
@@ -13,7 +13,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
13
13
 
14
14
  - [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
15
15
  - [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
16
- - [ ] **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`)
16
+ - [ ] **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`)
17
17
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
18
18
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
19
19
  - [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
@@ -22,6 +22,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
22
22
  | `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
23
23
  | `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
24
24
  | `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
25
+ | `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
25
26
 
26
27
  ## Same-PR checklist
27
28
 
@@ -46,5 +47,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
46
47
  - **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
47
48
  - **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
48
49
  - **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).
50
+ - **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
49
51
 
50
52
  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`.
@@ -22,7 +22,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
22
22
  ## Where to put a new rule
23
23
 
24
24
  1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
25
- 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`).
25
+ 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`).
26
26
  3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
27
27
 
28
28
  ## SoT
@@ -13,11 +13,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
13
13
 
14
14
  ## Principles
15
15
 
16
- - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
17
- - `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
18
- - `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
- - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
20
- - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
16
+ - `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
17
+ - `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
18
+ - `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
+ - `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
20
+ - `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
21
+ - `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.
21
22
  - `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
22
23
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
23
24
 
@@ -26,25 +27,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
26
27
  In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
27
28
 
28
29
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
30
+ - `instrumentation-test-` as required Android handoffs
29
31
  - `app/__tests__/e2e` as a required path
30
32
  - Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
31
33
 
32
34
  Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
33
35
 
36
+ ## Forbidden in android-kotlin hooks/agents (FAIL)
37
+
38
+ In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
39
+
40
+ - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
41
+ - `app/__tests__/e2e` as a required path
42
+ - `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
43
+ - Positive yarn recipes `lint:js` / `lint:css` as commands to run
44
+
45
+ Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
46
+
34
47
  ## Forbidden in next hooks/agents (FAIL when present as required)
35
48
 
36
- - `xcuitest-test-` as handoff stems
49
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
37
50
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
38
51
 
39
52
  ## Forbidden in nuxt hooks/agents (FAIL when present as required)
40
53
 
41
- - `xcuitest-test-` as handoff stems
54
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
42
55
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
43
56
  - Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
44
57
 
45
58
  ## Forbidden in svelte hooks/agents (FAIL when present as required)
46
59
 
47
- - `xcuitest-test-` as handoff stems
60
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
48
61
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
49
62
  - Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
50
63
 
@@ -54,7 +67,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
54
67
 
55
68
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
56
69
  - Positive yarn recipes `lint:js` / `lint:css`
57
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
70
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
58
71
  - Agent file `accessibility-reviewer` (no UI surface)
59
72
 
60
73
  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`).
@@ -65,9 +78,9 @@ Same UI/mobile bans as backend stacks, plus:
65
78
 
66
79
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
67
80
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
68
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
81
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
69
82
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
70
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
83
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
71
84
 
72
85
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
73
86
 
@@ -78,4 +91,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
78
91
 
79
92
  ## Chain fork
80
93
 
81
- `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).
94
+ `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).
@@ -15,7 +15,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
15
15
 
16
16
  - [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
17
17
  - [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
18
- - [ ] **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`)
18
+ - [ ] **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`)
19
19
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
20
20
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
21
21
  - [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)