@bonesofspring/ai-rules 0.2.15 → 0.2.17

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 (575) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +22 -3
  3. package/bin/cli.js +41 -0
  4. package/package.json +3 -1
  5. package/presets/_shared/README.md +2 -2
  6. package/presets/_shared/assets/docs-specs/INDEX.md +9 -0
  7. package/presets/_shared/assets/docs-specs/_templates/feature.md +32 -0
  8. package/presets/_shared/assets/docs-specs/_templates/page.md +47 -0
  9. package/presets/_shared/assets/docs-specs/schemas/frontmatter-v1.schema.json +22 -0
  10. package/presets/_shared/core/architecture/product-specs-authoring.md +107 -0
  11. package/presets/_shared/core/architecture/product-specs.md +49 -0
  12. package/presets/_shared/core/meta/preset-layering.md +1 -1
  13. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +25 -12
  14. package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
  15. package/presets/_shared/core/meta/preset-twin-sync.md +2 -0
  16. package/presets/claude/android-kotlin/CLAUDE.md +38 -0
  17. package/presets/claude/android-kotlin/MCP.md +16 -0
  18. package/presets/claude/android-kotlin/README.md +32 -0
  19. package/presets/claude/android-kotlin/REPO_AGENTS.md +48 -0
  20. package/presets/claude/android-kotlin/agents/README.md +44 -0
  21. package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +60 -0
  22. package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +70 -0
  23. package/presets/claude/android-kotlin/agents/build-verifier.md +70 -0
  24. package/presets/claude/android-kotlin/agents/ci-investigator.md +74 -0
  25. package/presets/claude/android-kotlin/agents/code-reviewer.md +76 -0
  26. package/presets/claude/android-kotlin/agents/codebase-analyzer.md +28 -0
  27. package/presets/claude/android-kotlin/agents/debugger.md +77 -0
  28. package/presets/claude/android-kotlin/agents/feature-developer.md +70 -0
  29. package/presets/claude/android-kotlin/agents/instrumentation-test-generator.md +19 -0
  30. package/presets/claude/android-kotlin/agents/instrumentation-test-healer.md +19 -0
  31. package/presets/claude/android-kotlin/agents/instrumentation-test-planner.md +19 -0
  32. package/presets/claude/android-kotlin/agents/migration-specialist.md +74 -0
  33. package/presets/claude/android-kotlin/agents/performance-auditor.md +67 -0
  34. package/presets/claude/android-kotlin/agents/qa-tester.md +66 -0
  35. package/presets/claude/android-kotlin/agents/security-reviewer.md +65 -0
  36. package/presets/claude/android-kotlin/agents/solution-architect.md +21 -0
  37. package/presets/claude/android-kotlin/agents/task-analyst.md +55 -0
  38. package/presets/claude/android-kotlin/agents/task-router.md +114 -0
  39. package/presets/claude/android-kotlin/agents/tech-writer.md +66 -0
  40. package/presets/claude/android-kotlin/agents/unit-test-generator.md +55 -0
  41. package/presets/claude/android-kotlin/agents/unit-test-healer.md +54 -0
  42. package/presets/claude/android-kotlin/agents/unit-test-planner.md +65 -0
  43. package/presets/claude/android-kotlin/commands/README.md +51 -0
  44. package/presets/claude/android-kotlin/commands/feature-continue.md +23 -0
  45. package/presets/claude/android-kotlin/commands/feature-start.md +41 -0
  46. package/presets/claude/android-kotlin/commands/spec-start.md +29 -0
  47. package/presets/claude/android-kotlin/commands/task-continue.md +53 -0
  48. package/presets/claude/android-kotlin/commands/task.md +56 -0
  49. package/presets/claude/android-kotlin/commands/technical-retro.md +85 -0
  50. package/presets/claude/android-kotlin/hooks/README.md +16 -0
  51. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +705 -0
  52. package/presets/claude/android-kotlin/hooks/examples/README.md +18 -0
  53. package/presets/claude/android-kotlin/hooks/examples/format-edited.example.sh +13 -0
  54. package/presets/claude/android-kotlin/hooks/examples/secret-guard.example.sh +10 -0
  55. package/presets/claude/android-kotlin/hooks/examples/test-on-save.example.sh +8 -0
  56. package/presets/claude/android-kotlin/hooks/guard-shell-command.sh +80 -0
  57. package/presets/claude/android-kotlin/mcp.json +12 -0
  58. package/presets/claude/android-kotlin/rules/README.md +65 -0
  59. package/presets/claude/android-kotlin/rules/api-and-data/README.md +10 -0
  60. package/presets/claude/android-kotlin/rules/api-and-data/networking.md +30 -0
  61. package/presets/claude/android-kotlin/rules/api-and-data/persistence.md +29 -0
  62. package/presets/claude/android-kotlin/rules/architecture/README.md +9 -0
  63. package/presets/claude/android-kotlin/rules/architecture/boundaries.md +27 -0
  64. package/presets/claude/android-kotlin/rules/architecture/di-dagger-feature-holders.md +34 -0
  65. package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +45 -0
  66. package/presets/claude/android-kotlin/rules/architecture/module-public-api.md +29 -0
  67. package/presets/claude/android-kotlin/rules/architecture/product-specs-authoring.md +121 -0
  68. package/presets/claude/android-kotlin/rules/architecture/product-specs.md +62 -0
  69. package/presets/claude/android-kotlin/rules/architecture/reference-features.md +28 -0
  70. package/presets/claude/android-kotlin/rules/stack/README.md +6 -0
  71. package/presets/claude/android-kotlin/rules/stack/android-app-core.md +27 -0
  72. package/presets/claude/android-kotlin/rules/stack/kotlin-conventions.md +30 -0
  73. package/presets/claude/android-kotlin/rules/testing/README.md +10 -0
  74. package/presets/claude/android-kotlin/rules/testing/ui.md +28 -0
  75. package/presets/claude/android-kotlin/rules/testing/unit.md +29 -0
  76. package/presets/claude/android-kotlin/rules/tooling-and-review/README.md +19 -0
  77. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-intake.md +18 -0
  78. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +129 -0
  79. package/presets/claude/android-kotlin/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  80. package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +52 -0
  81. package/presets/claude/android-kotlin/rules/tooling-and-review/code-review.md +88 -0
  82. package/presets/claude/android-kotlin/rules/tooling-and-review/design-guidance.md +110 -0
  83. package/presets/claude/android-kotlin/rules/tooling-and-review/gradle-tooling.md +30 -0
  84. package/presets/claude/android-kotlin/rules/tooling-and-review/post-change-build.md +34 -0
  85. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +36 -0
  86. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +100 -0
  87. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +39 -0
  88. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +41 -0
  89. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +56 -0
  90. package/presets/claude/android-kotlin/rules/tooling-and-review/security-android.md +29 -0
  91. package/presets/claude/android-kotlin/rules/tooling-and-review/technical-retro.md +18 -0
  92. package/presets/claude/android-kotlin/rules/ui-and-accessibility/README.md +7 -0
  93. package/presets/claude/android-kotlin/rules/ui-and-accessibility/compose.md +31 -0
  94. package/presets/claude/android-kotlin/rules/ui-and-accessibility/navigation.md +30 -0
  95. package/presets/claude/android-kotlin/rules/ui-and-accessibility/viewmodels.md +27 -0
  96. package/presets/claude/android-kotlin/skills/README.md +14 -0
  97. package/presets/claude/android-kotlin/skills/ci-investigation/SKILL.md +39 -0
  98. package/presets/claude/android-kotlin/skills/code-review/SKILL.md +39 -0
  99. package/presets/claude/android-kotlin/skills/debug-investigation/SKILL.md +34 -0
  100. package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +36 -0
  101. package/presets/claude/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +17 -0
  102. package/presets/claude/android-kotlin/skills/spec-authoring/SKILL.md +26 -0
  103. package/presets/claude/android-kotlin/skills/technical-retro/SKILL.md +54 -0
  104. package/presets/claude/android-kotlin/skills/unit-testing/SKILL.md +32 -0
  105. package/presets/claude/android-kotlin/skills/write-adr/SKILL.md +41 -0
  106. package/presets/claude/android-kotlin/team/README.md +54 -0
  107. package/presets/claude/android-kotlin/team/conventions.md +17 -0
  108. package/presets/claude/android-kotlin/team/fixtures/bugfix-standard.json +47 -0
  109. package/presets/claude/android-kotlin/team/fixtures/feature-full.json +97 -0
  110. package/presets/claude/android-kotlin/team/fixtures/feature-light.json +38 -0
  111. package/presets/claude/go/agents/build-verifier.md +3 -0
  112. package/presets/claude/go/agents/code-reviewer.md +2 -0
  113. package/presets/claude/go/agents/feature-developer.md +7 -0
  114. package/presets/claude/go/agents/task-analyst.md +19 -0
  115. package/presets/claude/go/agents/task-router.md +11 -0
  116. package/presets/claude/go/agents/tech-writer.md +5 -0
  117. package/presets/claude/go/commands/feature-continue.md +1 -0
  118. package/presets/claude/go/commands/feature-start.md +8 -0
  119. package/presets/claude/go/commands/spec-start.md +29 -0
  120. package/presets/claude/go/commands/task-continue.md +6 -3
  121. package/presets/claude/go/rules/README.md +2 -0
  122. package/presets/claude/go/rules/architecture/feature-delivery.md +4 -0
  123. package/presets/claude/go/rules/architecture/product-specs-authoring.md +121 -0
  124. package/presets/claude/go/rules/architecture/product-specs.md +63 -0
  125. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  126. package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
  127. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  128. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  129. package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +2 -0
  130. package/presets/claude/go/skills/feature-delivery/SKILL.md +5 -4
  131. package/presets/claude/go/skills/spec-authoring/SKILL.md +26 -0
  132. package/presets/claude/ios-swift/agents/build-verifier.md +3 -0
  133. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -0
  134. package/presets/claude/ios-swift/agents/feature-developer.md +7 -0
  135. package/presets/claude/ios-swift/agents/task-analyst.md +19 -0
  136. package/presets/claude/ios-swift/agents/task-router.md +11 -0
  137. package/presets/claude/ios-swift/agents/tech-writer.md +2 -15
  138. package/presets/claude/ios-swift/commands/feature-continue.md +4 -0
  139. package/presets/claude/ios-swift/commands/feature-start.md +8 -0
  140. package/presets/claude/ios-swift/commands/spec-start.md +29 -0
  141. package/presets/claude/ios-swift/commands/task-continue.md +6 -3
  142. package/presets/claude/ios-swift/rules/README.md +3 -0
  143. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +4 -0
  144. package/presets/claude/ios-swift/rules/architecture/product-specs-authoring.md +121 -0
  145. package/presets/claude/ios-swift/rules/architecture/product-specs.md +62 -0
  146. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  147. package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +1 -1
  148. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  149. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  150. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +2 -0
  151. package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +5 -4
  152. package/presets/claude/ios-swift/skills/spec-authoring/SKILL.md +26 -0
  153. package/presets/claude/java/agents/build-verifier.md +3 -0
  154. package/presets/claude/java/agents/code-reviewer.md +2 -0
  155. package/presets/claude/java/agents/feature-developer.md +7 -0
  156. package/presets/claude/java/agents/task-analyst.md +19 -0
  157. package/presets/claude/java/agents/task-router.md +11 -0
  158. package/presets/claude/java/agents/tech-writer.md +5 -0
  159. package/presets/claude/java/commands/feature-continue.md +1 -0
  160. package/presets/claude/java/commands/feature-start.md +8 -0
  161. package/presets/claude/java/commands/spec-start.md +29 -0
  162. package/presets/claude/java/commands/task-continue.md +6 -3
  163. package/presets/claude/java/rules/README.md +2 -0
  164. package/presets/claude/java/rules/architecture/feature-delivery.md +4 -0
  165. package/presets/claude/java/rules/architecture/product-specs-authoring.md +121 -0
  166. package/presets/claude/java/rules/architecture/product-specs.md +63 -0
  167. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  168. package/presets/claude/java/rules/tooling-and-review/preset-layering.md +1 -1
  169. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  170. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  171. package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +2 -0
  172. package/presets/claude/java/skills/feature-delivery/SKILL.md +5 -4
  173. package/presets/claude/java/skills/spec-authoring/SKILL.md +26 -0
  174. package/presets/claude/mcp-ts/agents/build-verifier.md +3 -0
  175. package/presets/claude/mcp-ts/agents/feature-developer.md +7 -0
  176. package/presets/claude/mcp-ts/agents/task-analyst.md +21 -0
  177. package/presets/claude/mcp-ts/agents/task-router.md +11 -0
  178. package/presets/claude/mcp-ts/commands/feature-continue.md +4 -0
  179. package/presets/claude/mcp-ts/commands/feature-start.md +8 -0
  180. package/presets/claude/mcp-ts/commands/spec-start.md +29 -0
  181. package/presets/claude/mcp-ts/commands/task-continue.md +6 -3
  182. package/presets/claude/mcp-ts/rules/README.md +2 -0
  183. package/presets/claude/mcp-ts/rules/architecture/feature-delivery.md +4 -0
  184. package/presets/claude/mcp-ts/rules/architecture/product-specs-authoring.md +121 -0
  185. package/presets/claude/mcp-ts/rules/architecture/product-specs.md +63 -0
  186. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  187. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +1 -1
  188. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  189. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  190. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +2 -0
  191. package/presets/claude/mcp-ts/skills/feature-delivery/SKILL.md +4 -3
  192. package/presets/claude/mcp-ts/skills/spec-authoring/SKILL.md +26 -0
  193. package/presets/claude/next/agents/build-verifier.md +3 -0
  194. package/presets/claude/next/agents/code-reviewer.md +1 -0
  195. package/presets/claude/next/agents/feature-developer.md +7 -0
  196. package/presets/claude/next/agents/task-analyst.md +19 -0
  197. package/presets/claude/next/agents/task-router.md +11 -0
  198. package/presets/claude/next/agents/tech-writer.md +5 -0
  199. package/presets/claude/next/commands/feature-continue.md +1 -0
  200. package/presets/claude/next/commands/feature-start.md +8 -0
  201. package/presets/claude/next/commands/spec-start.md +29 -0
  202. package/presets/claude/next/commands/task-continue.md +6 -3
  203. package/presets/claude/next/rules/README.md +3 -0
  204. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +4 -0
  205. package/presets/claude/next/rules/architecture/product-specs-authoring.md +121 -0
  206. package/presets/claude/next/rules/architecture/product-specs.md +63 -0
  207. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  208. package/presets/claude/next/rules/tooling-and-review/preset-layering.md +1 -1
  209. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  210. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  211. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +2 -0
  212. package/presets/claude/next/skills/feature-delivery/SKILL.md +4 -3
  213. package/presets/claude/next/skills/spec-authoring/SKILL.md +26 -0
  214. package/presets/claude/nuxt/agents/build-verifier.md +3 -0
  215. package/presets/claude/nuxt/agents/code-reviewer.md +2 -0
  216. package/presets/claude/nuxt/agents/feature-developer.md +7 -0
  217. package/presets/claude/nuxt/agents/task-analyst.md +19 -0
  218. package/presets/claude/nuxt/agents/task-router.md +11 -0
  219. package/presets/claude/nuxt/agents/tech-writer.md +5 -0
  220. package/presets/claude/nuxt/commands/feature-continue.md +4 -0
  221. package/presets/claude/nuxt/commands/feature-start.md +8 -0
  222. package/presets/claude/nuxt/commands/spec-start.md +29 -0
  223. package/presets/claude/nuxt/commands/task-continue.md +6 -3
  224. package/presets/claude/nuxt/rules/README.md +3 -0
  225. package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +4 -0
  226. package/presets/claude/nuxt/rules/architecture/product-specs-authoring.md +121 -0
  227. package/presets/claude/nuxt/rules/architecture/product-specs.md +62 -0
  228. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  229. package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +1 -1
  230. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  231. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  232. package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +2 -0
  233. package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +4 -3
  234. package/presets/claude/nuxt/skills/spec-authoring/SKILL.md +26 -0
  235. package/presets/claude/php-hexagonal/agents/build-verifier.md +3 -0
  236. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -0
  237. package/presets/claude/php-hexagonal/agents/feature-developer.md +7 -0
  238. package/presets/claude/php-hexagonal/agents/task-analyst.md +19 -0
  239. package/presets/claude/php-hexagonal/agents/task-router.md +11 -0
  240. package/presets/claude/php-hexagonal/agents/tech-writer.md +5 -0
  241. package/presets/claude/php-hexagonal/commands/feature-continue.md +1 -0
  242. package/presets/claude/php-hexagonal/commands/feature-start.md +8 -0
  243. package/presets/claude/php-hexagonal/commands/spec-start.md +29 -0
  244. package/presets/claude/php-hexagonal/commands/task-continue.md +6 -3
  245. package/presets/claude/php-hexagonal/rules/README.md +2 -0
  246. package/presets/claude/php-hexagonal/rules/architecture/feature-delivery.md +4 -0
  247. package/presets/claude/php-hexagonal/rules/architecture/product-specs-authoring.md +121 -0
  248. package/presets/claude/php-hexagonal/rules/architecture/product-specs.md +63 -0
  249. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  250. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +1 -1
  251. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  252. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  253. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +2 -0
  254. package/presets/claude/php-hexagonal/skills/feature-delivery/SKILL.md +5 -4
  255. package/presets/claude/php-hexagonal/skills/spec-authoring/SKILL.md +26 -0
  256. package/presets/claude/php-laravel/agents/build-verifier.md +3 -0
  257. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -0
  258. package/presets/claude/php-laravel/agents/feature-developer.md +7 -0
  259. package/presets/claude/php-laravel/agents/task-analyst.md +19 -0
  260. package/presets/claude/php-laravel/agents/task-router.md +11 -0
  261. package/presets/claude/php-laravel/agents/tech-writer.md +5 -0
  262. package/presets/claude/php-laravel/commands/feature-continue.md +1 -0
  263. package/presets/claude/php-laravel/commands/feature-start.md +8 -0
  264. package/presets/claude/php-laravel/commands/spec-start.md +29 -0
  265. package/presets/claude/php-laravel/commands/task-continue.md +6 -3
  266. package/presets/claude/php-laravel/rules/README.md +2 -0
  267. package/presets/claude/php-laravel/rules/architecture/feature-delivery.md +4 -0
  268. package/presets/claude/php-laravel/rules/architecture/product-specs-authoring.md +121 -0
  269. package/presets/claude/php-laravel/rules/architecture/product-specs.md +63 -0
  270. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  271. package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +1 -1
  272. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  273. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  274. package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +2 -0
  275. package/presets/claude/php-laravel/skills/feature-delivery/SKILL.md +5 -4
  276. package/presets/claude/php-laravel/skills/spec-authoring/SKILL.md +26 -0
  277. package/presets/claude/svelte/agents/build-verifier.md +3 -0
  278. package/presets/claude/svelte/agents/code-reviewer.md +2 -0
  279. package/presets/claude/svelte/agents/feature-developer.md +7 -0
  280. package/presets/claude/svelte/agents/task-analyst.md +19 -0
  281. package/presets/claude/svelte/agents/task-router.md +11 -0
  282. package/presets/claude/svelte/agents/tech-writer.md +5 -0
  283. package/presets/claude/svelte/commands/feature-continue.md +4 -0
  284. package/presets/claude/svelte/commands/feature-start.md +8 -0
  285. package/presets/claude/svelte/commands/spec-start.md +29 -0
  286. package/presets/claude/svelte/commands/task-continue.md +6 -3
  287. package/presets/claude/svelte/rules/README.md +3 -0
  288. package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +4 -0
  289. package/presets/claude/svelte/rules/architecture/product-specs-authoring.md +121 -0
  290. package/presets/claude/svelte/rules/architecture/product-specs.md +62 -0
  291. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  292. package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +1 -1
  293. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +25 -12
  294. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  295. package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +2 -0
  296. package/presets/claude/svelte/skills/feature-delivery/SKILL.md +4 -3
  297. package/presets/claude/svelte/skills/spec-authoring/SKILL.md +26 -0
  298. package/presets/cursor/android-kotlin/AGENTS.md +50 -0
  299. package/presets/cursor/android-kotlin/BUGBOT.md +16 -0
  300. package/presets/cursor/android-kotlin/MCP.md +16 -0
  301. package/presets/cursor/android-kotlin/README.md +35 -0
  302. package/presets/cursor/android-kotlin/REPO_AGENTS.md +48 -0
  303. package/presets/cursor/android-kotlin/agents/README.md +44 -0
  304. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +60 -0
  305. package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +70 -0
  306. package/presets/cursor/android-kotlin/agents/build-verifier.md +70 -0
  307. package/presets/cursor/android-kotlin/agents/ci-investigator.md +74 -0
  308. package/presets/cursor/android-kotlin/agents/code-reviewer.md +76 -0
  309. package/presets/cursor/android-kotlin/agents/codebase-analyzer.md +28 -0
  310. package/presets/cursor/android-kotlin/agents/debugger.md +77 -0
  311. package/presets/cursor/android-kotlin/agents/feature-developer.md +70 -0
  312. package/presets/cursor/android-kotlin/agents/instrumentation-test-generator.md +19 -0
  313. package/presets/cursor/android-kotlin/agents/instrumentation-test-healer.md +19 -0
  314. package/presets/cursor/android-kotlin/agents/instrumentation-test-planner.md +19 -0
  315. package/presets/cursor/android-kotlin/agents/migration-specialist.md +74 -0
  316. package/presets/cursor/android-kotlin/agents/performance-auditor.md +67 -0
  317. package/presets/cursor/android-kotlin/agents/qa-tester.md +66 -0
  318. package/presets/cursor/android-kotlin/agents/security-reviewer.md +65 -0
  319. package/presets/cursor/android-kotlin/agents/solution-architect.md +21 -0
  320. package/presets/cursor/android-kotlin/agents/task-analyst.md +55 -0
  321. package/presets/cursor/android-kotlin/agents/task-router.md +114 -0
  322. package/presets/cursor/android-kotlin/agents/tech-writer.md +66 -0
  323. package/presets/cursor/android-kotlin/agents/unit-test-generator.md +55 -0
  324. package/presets/cursor/android-kotlin/agents/unit-test-healer.md +54 -0
  325. package/presets/cursor/android-kotlin/agents/unit-test-planner.md +65 -0
  326. package/presets/cursor/android-kotlin/commands/README.md +51 -0
  327. package/presets/cursor/android-kotlin/commands/feature-continue.md +23 -0
  328. package/presets/cursor/android-kotlin/commands/feature-start.md +41 -0
  329. package/presets/cursor/android-kotlin/commands/spec-start.md +29 -0
  330. package/presets/cursor/android-kotlin/commands/task-continue.md +53 -0
  331. package/presets/cursor/android-kotlin/commands/task.md +56 -0
  332. package/presets/cursor/android-kotlin/commands/technical-retro.md +85 -0
  333. package/presets/cursor/android-kotlin/hooks/README.md +12 -0
  334. package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +723 -0
  335. package/presets/cursor/android-kotlin/hooks/examples/README.md +18 -0
  336. package/presets/cursor/android-kotlin/hooks/examples/format-edited.example.sh +13 -0
  337. package/presets/cursor/android-kotlin/hooks/examples/secret-guard.example.sh +10 -0
  338. package/presets/cursor/android-kotlin/hooks/examples/test-on-save.example.sh +8 -0
  339. package/presets/cursor/android-kotlin/hooks/guard-shell-command.sh +80 -0
  340. package/presets/cursor/android-kotlin/hooks.json +17 -0
  341. package/presets/cursor/android-kotlin/mcp.json +11 -0
  342. package/presets/cursor/android-kotlin/rules/README.md +64 -0
  343. package/presets/cursor/android-kotlin/rules/agent-team-intake.mdc +16 -0
  344. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +126 -0
  345. package/presets/cursor/android-kotlin/rules/android-app-core.mdc +28 -0
  346. package/presets/cursor/android-kotlin/rules/anti-sycophancy-discipline.mdc +30 -0
  347. package/presets/cursor/android-kotlin/rules/architecture-boundaries.mdc +28 -0
  348. package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +53 -0
  349. package/presets/cursor/android-kotlin/rules/code-review-mr.mdc +84 -0
  350. package/presets/cursor/android-kotlin/rules/compose-ui.mdc +32 -0
  351. package/presets/cursor/android-kotlin/rules/design-guidance.mdc +111 -0
  352. package/presets/cursor/android-kotlin/rules/di-dagger-feature-holders.mdc +35 -0
  353. package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +40 -0
  354. package/presets/cursor/android-kotlin/rules/gradle-tooling.mdc +31 -0
  355. package/presets/cursor/android-kotlin/rules/kotlin-conventions.mdc +31 -0
  356. package/presets/cursor/android-kotlin/rules/module-public-api.mdc +30 -0
  357. package/presets/cursor/android-kotlin/rules/navigation-feature-launcher.mdc +31 -0
  358. package/presets/cursor/android-kotlin/rules/networking-data.mdc +31 -0
  359. package/presets/cursor/android-kotlin/rules/persistence-data.mdc +30 -0
  360. package/presets/cursor/android-kotlin/rules/post-change-build.mdc +30 -0
  361. package/presets/cursor/android-kotlin/rules/preset-layering.mdc +36 -0
  362. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +100 -0
  363. package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +39 -0
  364. package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +41 -0
  365. package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +56 -0
  366. package/presets/cursor/android-kotlin/rules/product-specs-authoring.mdc +123 -0
  367. package/presets/cursor/android-kotlin/rules/product-specs.mdc +64 -0
  368. package/presets/cursor/android-kotlin/rules/reference-features.mdc +29 -0
  369. package/presets/cursor/android-kotlin/rules/security-android.mdc +30 -0
  370. package/presets/cursor/android-kotlin/rules/state-and-viewmodels.mdc +28 -0
  371. package/presets/cursor/android-kotlin/rules/technical-retro.mdc +16 -0
  372. package/presets/cursor/android-kotlin/rules/tests-ui.mdc +29 -0
  373. package/presets/cursor/android-kotlin/rules/tests-unit.mdc +30 -0
  374. package/presets/cursor/android-kotlin/skills/README.md +14 -0
  375. package/presets/cursor/android-kotlin/skills/ci-investigation/SKILL.md +39 -0
  376. package/presets/cursor/android-kotlin/skills/code-review/SKILL.md +39 -0
  377. package/presets/cursor/android-kotlin/skills/debug-investigation/SKILL.md +34 -0
  378. package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +36 -0
  379. package/presets/cursor/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +17 -0
  380. package/presets/cursor/android-kotlin/skills/spec-authoring/SKILL.md +26 -0
  381. package/presets/cursor/android-kotlin/skills/technical-retro/SKILL.md +54 -0
  382. package/presets/cursor/android-kotlin/skills/unit-testing/SKILL.md +32 -0
  383. package/presets/cursor/android-kotlin/skills/write-adr/SKILL.md +41 -0
  384. package/presets/cursor/android-kotlin/team/README.md +54 -0
  385. package/presets/cursor/android-kotlin/team/conventions.md +17 -0
  386. package/presets/cursor/android-kotlin/team/fixtures/bugfix-standard.json +47 -0
  387. package/presets/cursor/android-kotlin/team/fixtures/feature-full.json +97 -0
  388. package/presets/cursor/android-kotlin/team/fixtures/feature-light.json +38 -0
  389. package/presets/cursor/go/agents/build-verifier.md +3 -0
  390. package/presets/cursor/go/agents/code-reviewer.md +2 -0
  391. package/presets/cursor/go/agents/feature-developer.md +7 -0
  392. package/presets/cursor/go/agents/task-analyst.md +19 -0
  393. package/presets/cursor/go/agents/task-router.md +11 -0
  394. package/presets/cursor/go/agents/tech-writer.md +5 -0
  395. package/presets/cursor/go/commands/feature-continue.md +4 -0
  396. package/presets/cursor/go/commands/feature-start.md +8 -0
  397. package/presets/cursor/go/commands/spec-start.md +29 -0
  398. package/presets/cursor/go/commands/task-continue.md +6 -3
  399. package/presets/cursor/go/rules/README.md +4 -1
  400. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +2 -0
  401. package/presets/cursor/go/rules/feature-delivery-workflow.mdc +4 -0
  402. package/presets/cursor/go/rules/preset-layering.mdc +1 -1
  403. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +25 -12
  404. package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
  405. package/presets/cursor/go/rules/preset-twin-sync.mdc +2 -0
  406. package/presets/cursor/go/rules/product-specs-authoring.mdc +123 -0
  407. package/presets/cursor/go/rules/product-specs.mdc +65 -0
  408. package/presets/cursor/go/skills/feature-delivery/SKILL.md +5 -4
  409. package/presets/cursor/go/skills/spec-authoring/SKILL.md +26 -0
  410. package/presets/cursor/ios-swift/agents/build-verifier.md +3 -0
  411. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -0
  412. package/presets/cursor/ios-swift/agents/feature-developer.md +7 -0
  413. package/presets/cursor/ios-swift/agents/task-analyst.md +19 -0
  414. package/presets/cursor/ios-swift/agents/task-router.md +11 -0
  415. package/presets/cursor/ios-swift/agents/tech-writer.md +2 -15
  416. package/presets/cursor/ios-swift/commands/feature-continue.md +4 -0
  417. package/presets/cursor/ios-swift/commands/feature-start.md +8 -0
  418. package/presets/cursor/ios-swift/commands/spec-start.md +29 -0
  419. package/presets/cursor/ios-swift/commands/task-continue.md +6 -3
  420. package/presets/cursor/ios-swift/rules/README.md +4 -1
  421. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +2 -0
  422. package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +4 -0
  423. package/presets/cursor/ios-swift/rules/preset-layering.mdc +1 -1
  424. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +25 -12
  425. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +1 -1
  426. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +2 -0
  427. package/presets/cursor/ios-swift/rules/product-specs-authoring.mdc +123 -0
  428. package/presets/cursor/ios-swift/rules/product-specs.mdc +64 -0
  429. package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +5 -4
  430. package/presets/cursor/ios-swift/skills/spec-authoring/SKILL.md +26 -0
  431. package/presets/cursor/java/agents/build-verifier.md +3 -0
  432. package/presets/cursor/java/agents/code-reviewer.md +2 -0
  433. package/presets/cursor/java/agents/feature-developer.md +7 -0
  434. package/presets/cursor/java/agents/task-analyst.md +19 -0
  435. package/presets/cursor/java/agents/task-router.md +11 -0
  436. package/presets/cursor/java/agents/tech-writer.md +5 -0
  437. package/presets/cursor/java/commands/feature-continue.md +4 -0
  438. package/presets/cursor/java/commands/feature-start.md +8 -0
  439. package/presets/cursor/java/commands/spec-start.md +29 -0
  440. package/presets/cursor/java/commands/task-continue.md +6 -3
  441. package/presets/cursor/java/rules/README.md +4 -1
  442. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +2 -0
  443. package/presets/cursor/java/rules/feature-delivery-workflow.mdc +4 -0
  444. package/presets/cursor/java/rules/preset-layering.mdc +1 -1
  445. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +25 -12
  446. package/presets/cursor/java/rules/preset-pr-checklist.mdc +1 -1
  447. package/presets/cursor/java/rules/preset-twin-sync.mdc +2 -0
  448. package/presets/cursor/java/rules/product-specs-authoring.mdc +123 -0
  449. package/presets/cursor/java/rules/product-specs.mdc +65 -0
  450. package/presets/cursor/java/skills/feature-delivery/SKILL.md +5 -4
  451. package/presets/cursor/java/skills/spec-authoring/SKILL.md +26 -0
  452. package/presets/cursor/mcp-ts/agents/build-verifier.md +3 -0
  453. package/presets/cursor/mcp-ts/agents/feature-developer.md +7 -0
  454. package/presets/cursor/mcp-ts/agents/task-analyst.md +21 -0
  455. package/presets/cursor/mcp-ts/agents/task-router.md +11 -0
  456. package/presets/cursor/mcp-ts/commands/feature-continue.md +4 -0
  457. package/presets/cursor/mcp-ts/commands/feature-start.md +8 -0
  458. package/presets/cursor/mcp-ts/commands/spec-start.md +29 -0
  459. package/presets/cursor/mcp-ts/commands/task-continue.md +6 -3
  460. package/presets/cursor/mcp-ts/rules/README.md +2 -0
  461. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +2 -0
  462. package/presets/cursor/mcp-ts/rules/feature-delivery-workflow.mdc +4 -0
  463. package/presets/cursor/mcp-ts/rules/preset-layering.mdc +1 -1
  464. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +25 -12
  465. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +1 -1
  466. package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +2 -0
  467. package/presets/cursor/mcp-ts/rules/product-specs-authoring.mdc +123 -0
  468. package/presets/cursor/mcp-ts/rules/product-specs.mdc +65 -0
  469. package/presets/cursor/mcp-ts/skills/feature-delivery/SKILL.md +4 -3
  470. package/presets/cursor/mcp-ts/skills/spec-authoring/SKILL.md +26 -0
  471. package/presets/cursor/next/agents/build-verifier.md +3 -0
  472. package/presets/cursor/next/agents/code-reviewer.md +1 -0
  473. package/presets/cursor/next/agents/feature-developer.md +7 -0
  474. package/presets/cursor/next/agents/task-analyst.md +19 -0
  475. package/presets/cursor/next/agents/task-router.md +11 -0
  476. package/presets/cursor/next/agents/tech-writer.md +5 -0
  477. package/presets/cursor/next/commands/feature-continue.md +4 -0
  478. package/presets/cursor/next/commands/feature-start.md +8 -0
  479. package/presets/cursor/next/commands/spec-start.md +29 -0
  480. package/presets/cursor/next/commands/task-continue.md +6 -3
  481. package/presets/cursor/next/rules/README.md +3 -1
  482. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +2 -0
  483. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +4 -0
  484. package/presets/cursor/next/rules/preset-layering.mdc +1 -1
  485. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +25 -12
  486. package/presets/cursor/next/rules/preset-pr-checklist.mdc +1 -1
  487. package/presets/cursor/next/rules/preset-twin-sync.mdc +2 -0
  488. package/presets/cursor/next/rules/product-specs-authoring.mdc +123 -0
  489. package/presets/cursor/next/rules/product-specs.mdc +65 -0
  490. package/presets/cursor/next/skills/feature-delivery/SKILL.md +4 -3
  491. package/presets/cursor/next/skills/spec-authoring/SKILL.md +26 -0
  492. package/presets/cursor/nuxt/agents/build-verifier.md +3 -0
  493. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -0
  494. package/presets/cursor/nuxt/agents/feature-developer.md +7 -0
  495. package/presets/cursor/nuxt/agents/task-analyst.md +19 -0
  496. package/presets/cursor/nuxt/agents/task-router.md +11 -0
  497. package/presets/cursor/nuxt/agents/tech-writer.md +5 -0
  498. package/presets/cursor/nuxt/commands/feature-continue.md +4 -0
  499. package/presets/cursor/nuxt/commands/feature-start.md +8 -0
  500. package/presets/cursor/nuxt/commands/spec-start.md +29 -0
  501. package/presets/cursor/nuxt/commands/task-continue.md +6 -3
  502. package/presets/cursor/nuxt/rules/README.md +3 -1
  503. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +2 -0
  504. package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +4 -0
  505. package/presets/cursor/nuxt/rules/preset-layering.mdc +1 -1
  506. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +25 -12
  507. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +1 -1
  508. package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +2 -0
  509. package/presets/cursor/nuxt/rules/product-specs-authoring.mdc +123 -0
  510. package/presets/cursor/nuxt/rules/product-specs.mdc +64 -0
  511. package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +4 -3
  512. package/presets/cursor/nuxt/skills/spec-authoring/SKILL.md +26 -0
  513. package/presets/cursor/php-hexagonal/agents/build-verifier.md +3 -0
  514. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -0
  515. package/presets/cursor/php-hexagonal/agents/feature-developer.md +7 -0
  516. package/presets/cursor/php-hexagonal/agents/task-analyst.md +19 -0
  517. package/presets/cursor/php-hexagonal/agents/task-router.md +11 -0
  518. package/presets/cursor/php-hexagonal/agents/tech-writer.md +5 -0
  519. package/presets/cursor/php-hexagonal/commands/feature-continue.md +4 -0
  520. package/presets/cursor/php-hexagonal/commands/feature-start.md +8 -0
  521. package/presets/cursor/php-hexagonal/commands/spec-start.md +29 -0
  522. package/presets/cursor/php-hexagonal/commands/task-continue.md +6 -3
  523. package/presets/cursor/php-hexagonal/rules/README.md +4 -1
  524. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +2 -0
  525. package/presets/cursor/php-hexagonal/rules/feature-delivery-workflow.mdc +4 -0
  526. package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +1 -1
  527. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +25 -12
  528. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +1 -1
  529. package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +2 -0
  530. package/presets/cursor/php-hexagonal/rules/product-specs-authoring.mdc +123 -0
  531. package/presets/cursor/php-hexagonal/rules/product-specs.mdc +65 -0
  532. package/presets/cursor/php-hexagonal/skills/feature-delivery/SKILL.md +5 -4
  533. package/presets/cursor/php-hexagonal/skills/spec-authoring/SKILL.md +26 -0
  534. package/presets/cursor/php-laravel/agents/build-verifier.md +3 -0
  535. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -0
  536. package/presets/cursor/php-laravel/agents/feature-developer.md +7 -0
  537. package/presets/cursor/php-laravel/agents/task-analyst.md +19 -0
  538. package/presets/cursor/php-laravel/agents/task-router.md +11 -0
  539. package/presets/cursor/php-laravel/agents/tech-writer.md +5 -0
  540. package/presets/cursor/php-laravel/commands/feature-continue.md +4 -0
  541. package/presets/cursor/php-laravel/commands/feature-start.md +8 -0
  542. package/presets/cursor/php-laravel/commands/spec-start.md +29 -0
  543. package/presets/cursor/php-laravel/commands/task-continue.md +6 -3
  544. package/presets/cursor/php-laravel/rules/README.md +4 -1
  545. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +2 -0
  546. package/presets/cursor/php-laravel/rules/feature-delivery-workflow.mdc +4 -0
  547. package/presets/cursor/php-laravel/rules/preset-layering.mdc +1 -1
  548. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +25 -12
  549. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +1 -1
  550. package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +2 -0
  551. package/presets/cursor/php-laravel/rules/product-specs-authoring.mdc +123 -0
  552. package/presets/cursor/php-laravel/rules/product-specs.mdc +65 -0
  553. package/presets/cursor/php-laravel/skills/feature-delivery/SKILL.md +5 -4
  554. package/presets/cursor/php-laravel/skills/spec-authoring/SKILL.md +26 -0
  555. package/presets/cursor/svelte/agents/build-verifier.md +3 -0
  556. package/presets/cursor/svelte/agents/code-reviewer.md +2 -0
  557. package/presets/cursor/svelte/agents/feature-developer.md +7 -0
  558. package/presets/cursor/svelte/agents/task-analyst.md +19 -0
  559. package/presets/cursor/svelte/agents/task-router.md +11 -0
  560. package/presets/cursor/svelte/agents/tech-writer.md +5 -0
  561. package/presets/cursor/svelte/commands/feature-continue.md +4 -0
  562. package/presets/cursor/svelte/commands/feature-start.md +8 -0
  563. package/presets/cursor/svelte/commands/spec-start.md +29 -0
  564. package/presets/cursor/svelte/commands/task-continue.md +6 -3
  565. package/presets/cursor/svelte/rules/README.md +3 -1
  566. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +2 -0
  567. package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +4 -0
  568. package/presets/cursor/svelte/rules/preset-layering.mdc +1 -1
  569. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +25 -12
  570. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +1 -1
  571. package/presets/cursor/svelte/rules/preset-twin-sync.mdc +2 -0
  572. package/presets/cursor/svelte/rules/product-specs-authoring.mdc +123 -0
  573. package/presets/cursor/svelte/rules/product-specs.mdc +64 -0
  574. package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +4 -3
  575. package/presets/cursor/svelte/skills/spec-authoring/SKILL.md +26 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ### Product specs authoring (Phases A–E)
6
+
7
+ - **Generation modes** (shared-core): **Consume** (default discovery, soft-fail on miss) · **Generate** (explicit intent / AC / `/spec-start` with existing tree) · **Bootstrap** (same triggers when `docs/specs/` absent). Greenfield policy: no INDEX/spec invention without explicit intent; conflict precedence human > brief AC > approved spec > code.
8
+ - Split requestable stems: lean `architecture/product-specs.md` (Consume) + `architecture/product-specs-authoring.md` (Generate / Bootstrap, INDEX + frontmatter v1, body checklist). Both ×20 Cursor + Claude adapters (`alwaysApply: false` / Claude `paths: docs/specs/**/*`); Stack notes map `routes` / `ui` / `store` / `e2e` per stack class (mcp-ts: tool names; empty `ui`/`store`).
9
+ - **Assets SoT:** `presets/_shared/assets/docs-specs/` — INDEX stub, `_templates/page.md` / `feature.md`, optional `schemas/frontmatter-v1.schema.json`.
10
+ - **CLI seed policy:** on `init`, when consumer `docs/specs/` directory is **absent**, copy INDEX stub + `_templates/*` from assets (idempotent; **never overwrite** existing INDEX). If the directory already exists (even empty), seed is skipped — remove the folder or copy templates manually if you created an empty tree before first `init`.
11
+ - **Author surface:** extend **task-analyst** (primary author; **mcp-ts analyst-only** — no tech-writer) + **tech-writer** post-delivery sync (9 stacks); requestable skill **`spec-authoring`**; **feature-developer** / **feature-delivery** treat approved specs as behavior SoT.
12
+ - **Pipeline:** optional `/spec-start` (spec-gen → analyst author mode → human gate); task-router `spec-gen` / bootstrap signals; orchestrator passes spec paths + INDEX diff (no dedicated `spec-author` agent).
13
+ - **Validation severity:** code-reviewer **WARN** code/spec drift, **FAIL** broken INDEX links or missing required frontmatter on touched `docs/specs/**`; build-verifier **FAIL** missing shared assets / broken twins / non-requestable stems; optional `scripts/check-product-specs.sh` (**WARN** default, **`--strict`** FAIL) — not mandatory consumer CI.
14
+ - **Dogfood:** `dogfood/mcp-ts-sample/docs/specs/` (INDEX + `domains/echo/echo-tool.md`; sample spec human-promoted to `active`). Soft WARN in `check:preset-structure` + GitHub `preset-structure` workflow (`yarn check:product-specs:dogfood`, `continue-on-error`).
15
+ - **Follow-ups:** dogfood `.cursor/` re-synced from next; removed ambiguous `**mcp-ts:**` footnote from non–mcp-ts `task-analyst` twins (mcp-ts analyst-only wording kept on mcp-ts only).
16
+ - **Consumers:** after publish, re-run `npx @bonesofspring/ai-rules init cursor|claude --preset <stack>` to pick up new stems, `/spec-start`, and `spec-authoring` skill; preset files under `.cursor/` / `.claude/` are overwritten on init — existing consumer `docs/specs/` trees are **not** overwritten.
17
+
18
+ ### Product specs stem (`product-specs`)
19
+
20
+ - New shared-core embed stem `architecture/product-specs.md`: stack-agnostic `docs/specs` INDEX discovery, soft-fail on miss, authoring/INDEX same-PR, non-goals vs `.ai/context` / `reference-features`.
21
+ - Requestable Cursor + Claude adapters ×10 stacks (`product-specs.mdc` / `architecture/product-specs.md`) with frontend / mobile / backend Stack notes (no cross-stack UI-path leakage).
22
+ - Agent one-liners: `task-analyst`, `feature-developer`, orchestrator adapters; `tech-writer` (stacks with tech-writer agent; mcp-ts excluded); `feature-delivery` skill early INDEX step; optional Related on `feature-delivery-workflow`.
23
+ - Token budget: `alwaysApply: false` / Claude `paths: docs/specs/**` — not session-start.
24
+ - Consumers: after publish, re-run `npx @bonesofspring/ai-rules init cursor|claude --preset <stack>` to pick up the stem.
25
+ - Follow-up polish: android-kotlin Stack notes use `features/**` (not iOS `Features/**`); Claude next/nuxt/ios/android feature-delivery INDEX step numbering aligned with Cursor; next `code-reviewer` checks `docs/specs/**` drift via `product-specs`.
26
+
27
+
28
+ ### Android Kotlin preset (`android-kotlin`)
29
+
30
+ - New installable preset **`android-kotlin`** (Cursor + Claude twins): Clean Architecture multimodule Android/Kotlin — Compose Material 3, MVI/UDF ViewModels, Dagger feature holders (no Hilt by default), `api`/`impl` modules, Gradle convention plugins / version catalog discovery, instrumentation UI-test agents.
31
+ - Agent surface: `instrumentation-test-{planner,generator,healer}` + skill `instrumentation-ui-e2e`; gates `post-change-build` + `gradle-tooling` + `build-verifier`.
32
+ - Structure scripts include `android-kotlin` (`STACKS` + `ANDROID_FORBIDDEN_*`); other stacks forbid `instrumentation-test-*` stems; shared-core `preset-*` matrices updated and embeds re-synced.
33
+ - Install: `npx @bonesofspring/ai-rules init cursor|claude --preset android-kotlin`.
34
+ - Dogfood default remains **`next`** (no switch to android-kotlin).
35
+
5
36
  ### Preset EN translation polish (patch)
6
37
 
7
38
  - Hardened `check-preset-i18n.sh`: ±3-line keep-marker window (matches style guide), scans `.md`/`.mdc` plus hook/script suffixes; wired as hard gate via `check:preset-i18n` and `check-preset-structure` / CI.
package/README.md CHANGED
@@ -50,10 +50,27 @@ Where things go on `init`:
50
50
  | MCP | `mcp.json` → `.cursor/mcp.json`, `MCP.md` → `.cursor/` | `mcp.json` → **`.mcp.json`** (project root), `MCP.md` → `.claude/` |
51
51
  | tool map | `AGENTS.md` → `.cursor/AGENTS.md`, `BUGBOT.md` | `CLAUDE.md` → `.claude/CLAUDE.md` |
52
52
  | **repo-root agents** | `REPO_AGENTS.md` → **`<cwd>/AGENTS.md`** | same |
53
+ | **docs/specs seed** | When `<cwd>/docs/specs/` is **absent**, copy INDEX stub + `_templates/*` from `presets/_shared/assets/docs-specs/` (never overwrite existing INDEX) | same |
53
54
 
54
- Skills of note: `write-adr` (all stacks); `react-performance` (**next only**); `vue-performance` (**nuxt only**); `svelte-performance` (**svelte only**). Living gotchas: `team/conventions.md`. Opt-in rule samples eval: `yarn check:rule-eval` (workflow `rule-eval.yml`; not part of `check:preset-structure`).
55
+ Skills of note: `write-adr` (all stacks); `spec-authoring` (Generate/Bootstrap `docs/specs`); `react-performance` (**next only**); `vue-performance` (**nuxt only**); `svelte-performance` (**svelte only**). Optional command `/spec-start`. Living gotchas: `team/conventions.md`. Opt-in rule samples eval: `yarn check:rule-eval` (workflow `rule-eval.yml`; not part of `check:preset-structure`). Optional consumer specs check: `yarn check:product-specs` (WARN default; `--strict` FAIL).
55
56
 
56
- The package ships presets including **`next`** (Next.js stack), **`nuxt`** (Nuxt 3 / Vue 3 / Pinia), **`svelte`** (SvelteKit / Svelte 5 / TypeScript / `store-svelte`), **`ios-swift`** (iOS apps on Swift / SwiftUI), **`go`** (Go backends with hexagonal architecture), **`java`** (Java / Spring Boot hexagonal backends), **`mcp-ts`** (TypeScript MCP servers with `@modelcontextprotocol/sdk`), **`php-hexagonal`** (PHP / Composer hexagonal backends), and **`php-laravel`** (Laravel backend/API with Eloquent, Form Requests, Policies, Actions/Services). Other preset names: see `presets/` in the [repo](https://github.com/bonesofspring/ai-rules). Name is a single path segment, no `/` or `.`.
57
+ ## Product specs (`docs/specs/`)
58
+
59
+ Presets support **behavior specs** under `docs/specs/**` (INDEX, frontmatter v1, page/feature templates). Three modes:
60
+
61
+ | Mode | Trigger | Agent behavior |
62
+ |------|---------|----------------|
63
+ | **Consume** | Default when working on listed routes/features | Discover via INDEX; soft-fail on miss; do not invent product behavior |
64
+ | **Generate** | Brief AC, `/spec-start`, or router `spec-gen` with existing tree | **task-analyst** authors/updates specs + INDEX (skill **`spec-authoring`**) |
65
+ | **Bootstrap** | Same triggers when `docs/specs/` absent | Create INDEX + templates + first domain spec |
66
+
67
+ **First-time seed:** `init` copies INDEX stub + `_templates/*` from package assets when `<cwd>/docs/specs/` is **absent** (see table above). **Troubleshooting:** if you created an empty `docs/specs/` folder before `init`, seed is skipped — delete the folder and re-run `init`, or copy from `presets/_shared/assets/docs-specs/` manually.
68
+
69
+ **After a package upgrade:** re-run `init` for your stack to refresh rules, `/spec-start`, and `spec-authoring` skill. Agent-generated specs default to `status: draft` until a human promotes them.
70
+
71
+ **Optional validation** (from `packages/ai-rules/`): `yarn check:product-specs <repo-root>` (WARN) or `--strict` (FAIL). Monorepo dogfood example: `dogfood/mcp-ts-sample/docs/specs/`.
72
+
73
+ The package ships presets including **`next`** (Next.js stack), **`nuxt`** (Nuxt 3 / Vue 3 / Pinia), **`svelte`** (SvelteKit / Svelte 5 / TypeScript / `store-svelte`), **`ios-swift`** (iOS apps on Swift / SwiftUI), **`android-kotlin`** (Android multimodule Kotlin / Compose / Gradle), **`go`** (Go backends with hexagonal architecture), **`java`** (Java / Spring Boot hexagonal backends), **`mcp-ts`** (TypeScript MCP servers with `@modelcontextprotocol/sdk`), **`php-hexagonal`** (PHP / Composer hexagonal backends), and **`php-laravel`** (Laravel backend/API with Eloquent, Form Requests, Policies, Actions/Services). Other preset names: see `presets/` in the [repo](https://github.com/bonesofspring/ai-rules). Name is a single path segment, no `/` or `.`.
57
74
 
58
75
  ```bash
59
76
  npx @bonesofspring/ai-rules init cursor --preset nuxt
@@ -62,6 +79,8 @@ npx @bonesofspring/ai-rules init cursor --preset svelte
62
79
  npx @bonesofspring/ai-rules init claude --preset svelte
63
80
  npx @bonesofspring/ai-rules init cursor --preset ios-swift
64
81
  npx @bonesofspring/ai-rules init claude --preset ios-swift
82
+ npx @bonesofspring/ai-rules init cursor --preset android-kotlin
83
+ npx @bonesofspring/ai-rules init claude --preset android-kotlin
65
84
  npx @bonesofspring/ai-rules init cursor --preset go
66
85
  npx @bonesofspring/ai-rules init claude --preset go
67
86
  npx @bonesofspring/ai-rules init cursor --preset java
@@ -80,7 +99,7 @@ Help: `ai-rules --help`.
80
99
 
81
100
  Presets are developed in this monorepo under `presets/`. If you add or change rules, agents, or platform artifacts:
82
101
 
83
- - **Taxonomy & layers:** [`presets/_shared/README.md`](presets/_shared/README.md) — shared core (`_shared/core`), stack adapters, platform packaging
102
+ - **Taxonomy & layers:** [`presets/_shared/README.md`](presets/_shared/README.md) — shared core (`_shared/core`), stack adapters, platform packaging (includes requestable embed stem `architecture/product-specs` for consumer `docs/specs` INDEX discovery)
84
103
  - **Contribution guide:** [`docs/PRESET-CONTRIBUTION.md`](docs/PRESET-CONTRIBUTION.md) — SoT, twin sync, embed vs lineage, token budget (≤3 always-on), PR checklist, new stack preset, platform-only files (`BUGBOT.md`, `CLAUDE.md`)
85
104
  - **Dogfood / drift scripts:** [`scripts/sync-dogfood-cursor.sh`](scripts/sync-dogfood-cursor.sh) (also syncs root `AGENTS.md` from `REPO_AGENTS.md`; seeds `team/conventions.md` if absent), [`scripts/check-shared-core-drift.sh`](scripts/check-shared-core-drift.sh)
86
105
  - **Preset structure CI gates** (exit non-zero on FAIL): `yarn check:preset-structure` (or `bash scripts/check-preset-structure.sh`) — twin map, session-start budget (Option A), leakage, shared-core drift (`AI_RULES_DRIFT_FAIL=1`)
package/bin/cli.js CHANGED
@@ -64,6 +64,7 @@ Notes:
64
64
  Cursor init copies rules, commands, agents, hooks, skills, team, hooks.json, BUGBOT.md, AGENTS.md → .cursor/AGENTS.md, MCP.md, mcp.json → .cursor/mcp.json.
65
65
  Claude init copies rules, commands, skills, agents, hooks, team, CLAUDE.md, MCP.md, and mcp.json → .mcp.json (project root).
66
66
  Both tools also copy REPO_AGENTS.md → <cwd>/AGENTS.md (repo-root cross-tool agents file; overwrite).
67
+ When <cwd>/docs/specs/ is absent, init also seeds INDEX.md stub + _templates/* from package assets (never overwrites an existing INDEX).
67
68
  clean removes tool dirs/files and <cwd>/AGENTS.md (shared across tools — re-init the other tool to restore).
68
69
  Command forms: "init cursor --preset next", "init cursor next", "--preset next init cursor", "cursor init --preset next".
69
70
 
@@ -73,6 +74,7 @@ Examples:
73
74
  npx @bonesofspring/ai-rules init cursor --preset nuxt
74
75
  npx @bonesofspring/ai-rules init cursor --preset svelte
75
76
  npx @bonesofspring/ai-rules init cursor --preset ios-swift
77
+ npx @bonesofspring/ai-rules init cursor --preset android-kotlin
76
78
  npx @bonesofspring/ai-rules init cursor --preset go
77
79
  npx @bonesofspring/ai-rules init cursor --preset java
78
80
  npx @bonesofspring/ai-rules init cursor --preset mcp-ts
@@ -82,6 +84,7 @@ Examples:
82
84
  npx @bonesofspring/ai-rules init claude --preset nuxt
83
85
  npx @bonesofspring/ai-rules init claude --preset svelte
84
86
  npx @bonesofspring/ai-rules init claude --preset ios-swift
87
+ npx @bonesofspring/ai-rules init claude --preset android-kotlin
85
88
  npx @bonesofspring/ai-rules init claude --preset go
86
89
  npx @bonesofspring/ai-rules init claude --preset java
87
90
  npx @bonesofspring/ai-rules init claude --preset mcp-ts
@@ -221,6 +224,40 @@ function copyDir(src, dest) {
221
224
  }
222
225
  }
223
226
 
227
+ /**
228
+ * Seed consumer docs/specs when the tree is absent.
229
+ * Idempotent: never overwrite existing INDEX; skip entirely if docs/specs exists.
230
+ */
231
+ function seedDocsSpecsIfAbsent(packageRoot, cwd) {
232
+ const destRoot = path.join(cwd, 'docs', 'specs');
233
+ if (fs.existsSync(destRoot)) {
234
+ console.log('Skipped docs/specs seed (directory already exists)');
235
+ return false;
236
+ }
237
+ const assetsRoot = path.join(
238
+ packageRoot,
239
+ 'presets',
240
+ '_shared',
241
+ 'assets',
242
+ 'docs-specs'
243
+ );
244
+ if (!fs.existsSync(assetsRoot)) {
245
+ console.log('Skipped docs/specs seed (package assets missing)');
246
+ return false;
247
+ }
248
+ fs.mkdirSync(destRoot, { recursive: true });
249
+ const indexSrc = path.join(assetsRoot, 'INDEX.md');
250
+ if (fs.existsSync(indexSrc)) {
251
+ fs.copyFileSync(indexSrc, path.join(destRoot, 'INDEX.md'));
252
+ }
253
+ const templatesSrc = path.join(assetsRoot, '_templates');
254
+ if (fs.existsSync(templatesSrc)) {
255
+ copyDir(templatesSrc, path.join(destRoot, '_templates'));
256
+ }
257
+ console.log('Seeded docs/specs/ (INDEX stub + _templates)');
258
+ return true;
259
+ }
260
+
224
261
  function getOptionalDirs(cfg) {
225
262
  return cfg.optionalCursorDirs || cfg.optionalClaudeDirs || [];
226
263
  }
@@ -420,6 +457,10 @@ function cmdInit(tool, preset, cwdOption) {
420
457
  copiedSteps++;
421
458
  }
422
459
  }
460
+
461
+ if (seedDocsSpecsIfAbsent(packageRoot, cwd)) {
462
+ copiedSteps++;
463
+ }
423
464
  } catch (err) {
424
465
  const msg = err instanceof Error ? err.message : String(err);
425
466
  console.error(`init failed: ${msg}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bonesofspring/ai-rules",
3
- "version": "0.2.15",
3
+ "version": "0.2.17",
4
4
  "description": "Presets of Cursor and Claude rules/commands for Revy Ross personal use",
5
5
  "license": "MIT",
6
6
  "author": "Revy Ross",
@@ -31,6 +31,8 @@
31
31
  "check:preset-leakage": "bash scripts/check-preset-leakage.sh",
32
32
  "check:preset-i18n": "AI_RULES_I18N_FAIL=1 AI_RULES_I18N_SOFT=0 bash scripts/check-preset-i18n.sh",
33
33
  "check:shared-core-drift": "bash scripts/check-shared-core-drift.sh",
34
+ "check:product-specs": "bash scripts/check-product-specs.sh",
35
+ "check:product-specs:dogfood": "bash scripts/check-product-specs.sh ../../dogfood/mcp-ts-sample",
34
36
  "check:rule-eval": "node scripts/check-rule-eval.mjs"
35
37
  },
36
38
  "engines": {
@@ -1,6 +1,6 @@
1
1
  # Shared preset core (`presets/_shared`)
2
2
 
3
- Stack-agnostic **prose and checklists** for all installable presets: `next`, `nuxt`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (`cursor/<stack>`, `claude/<stack>`).
3
+ Stack-agnostic **prose and checklists** for all installable presets: `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (`cursor/<stack>`, `claude/<stack>`).
4
4
 
5
5
  **Not an installable preset.** CLI `init` copies only under `presets/cursor/<name>/` or `presets/claude/<name>/` — this sibling is never shipped to consumer apps.
6
6
 
@@ -38,7 +38,7 @@ Do **not** expect lineage adapters to byte-match core. Embed adapters should mat
38
38
  |-----|----------|
39
39
  | `core/quality/` | Boy-scout + Principles (always-on slim); requestable `anti-sycophancy-discipline` (~17 rules); requestable `design-guidance` (smells ≤12 + GoF ≤8) |
40
40
  | `core/agent-team/` | Orchestrator + intake (pipeline language) |
41
- | `core/architecture/` | Feature-delivery abstract + reference-features template |
41
+ | `core/architecture/` | Feature-delivery abstract + reference-features template + product-specs (+ product-specs-authoring) + assets/docs-specs templates |
42
42
  | `core/review/` | Code-review MR + technical-retro alias |
43
43
  | `core/meta/` | Author-facing preset meta-rules |
44
44
 
@@ -0,0 +1,9 @@
1
+ # Product specs INDEX
2
+
3
+ Discovery table for `docs/specs/**`. Agents start here when the file exists.
4
+
5
+ | id | type | domain | title | path | routes | aliases | status |
6
+ |----|------|--------|-------|------|--------|---------|--------|
7
+ | <!-- example-row: example-page | page | example | Example page | docs/specs/domains/example/example-page.md | /example | ExamplePage | draft --> |
8
+
9
+ <!-- Add one row per page/feature spec. Keep `id` and `path` in sync with frontmatter. -->
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: example-feature
3
+ type: feature
4
+ domain: example
5
+ routes: []
6
+ ui: []
7
+ store: []
8
+ api: []
9
+ aliases: []
10
+ e2e: []
11
+ status: draft
12
+ owners: []
13
+ related: []
14
+ ---
15
+
16
+ # Example feature
17
+
18
+ ## Overview
19
+
20
+ Cross-page shared behavior for this domain. Prefer `type: feature` on backend/MCP stacks.
21
+
22
+ ## Shared behavior / constraints
23
+
24
+ - Invariants that apply across related pages/tools.
25
+
26
+ ## Related pages
27
+
28
+ - Link page specs in this domain (or N/A).
29
+
30
+ ## Cross-cutting states
31
+
32
+ N/A
@@ -0,0 +1,47 @@
1
+ ---
2
+ id: example-page
3
+ type: page
4
+ domain: example
5
+ routes: []
6
+ ui: []
7
+ store: []
8
+ api: []
9
+ aliases: []
10
+ e2e: []
11
+ status: draft
12
+ owners: []
13
+ related: []
14
+ ---
15
+
16
+ # Example page
17
+
18
+ ## Overview
19
+
20
+ Short product behavior summary. Replace placeholders from brief AC / user / labeled sources.
21
+
22
+ ## Entry / actors
23
+
24
+ Who enters this page and from where.
25
+
26
+ ## Primary flows
27
+
28
+ 1. Happy path steps.
29
+
30
+ ## States
31
+
32
+ - Loading: …
33
+ - Empty: …
34
+ - Error: …
35
+ - Success: …
36
+
37
+ ## Acceptance criteria
38
+
39
+ - [ ] Link or restated AC from brief / product source.
40
+
41
+ ## Edge cases
42
+
43
+ N/A
44
+
45
+ ## Related specs
46
+
47
+ - (optional feature.md or sibling page ids)
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://bonesofspring.github.io/ai-rules/schemas/frontmatter-v1.schema.json",
4
+ "title": "Product spec frontmatter v1",
5
+ "type": "object",
6
+ "required": ["id", "type", "domain", "routes", "ui", "store", "api", "aliases", "e2e"],
7
+ "properties": {
8
+ "id": { "type": "string", "minLength": 1 },
9
+ "type": { "type": "string", "enum": ["page", "feature"] },
10
+ "domain": { "type": "string", "minLength": 1 },
11
+ "routes": { "type": "array", "items": { "type": "string" } },
12
+ "ui": { "type": "array", "items": { "type": "string" } },
13
+ "store": { "type": "array", "items": { "type": "string" } },
14
+ "api": { "type": "array", "items": { "type": "string" } },
15
+ "aliases": { "type": "array", "items": { "type": "string" } },
16
+ "e2e": { "type": "array", "items": { "type": "string" } },
17
+ "status": { "type": "string", "enum": ["draft", "active", "deprecated"] },
18
+ "owners": { "type": "array", "items": { "type": "string" } },
19
+ "related": { "type": "array", "items": { "type": "string" } }
20
+ },
21
+ "additionalProperties": true
22
+ }
@@ -0,0 +1,107 @@
1
+ # Product specs authoring
2
+
3
+ Load when **Generate** or **Bootstrap** is requested (`/spec-start`, router `spec-gen`, brief AC, or analyst author mode). Discovery-only work stays on **`product-specs`**.
4
+
5
+ ## Modes
6
+
7
+ 1. **Consume** — default; never invent INDEX/specs (see `product-specs`).
8
+ 2. **Generate** — create/update page/feature specs + INDEX rows from brief AC, user intent, Figma, or code archaeology. Inventing *product* behavior is forbidden without a stated source (AC / user / UI copy / code-observed behavior labeled `status: draft` or `inferred`).
9
+ 3. **Bootstrap** — create `INDEX.md` + `_templates/` copies + first domain spec under greenfield policy.
10
+
11
+ ## Greenfield policy
12
+
13
+ Agents **may** create INDEX + first specs **only when** one of:
14
+
15
+ 1. User runs `/spec-start` or explicitly asks to bootstrap `docs/specs`.
16
+ 2. Brief/AC includes generation or bootstrap language.
17
+ 3. Router detects `spec-gen` intent.
18
+
19
+ Otherwise: missing INDEX → optional tree; do **not** invent INDEX merely because discovery loaded.
20
+
21
+ ## Conflict precedence
22
+
23
+ 1. **Human gate** decision (approved brief/spec edits).
24
+ 2. **Current task `brief.md` AC** — if AC contradicts an existing spec, analyst must reconcile (update spec as `draft` or revise AC) before developer; no silent contradiction.
25
+ 3. **Approved `docs/specs/**`** — behavior SoT for feature-developer once gate passed.
26
+ 4. **Code / `.ai/context`** — discovery evidence only; never override approved spec without gate.
27
+
28
+ Label inferred-from-code lines with `status: draft` until human promotes.
29
+
30
+ ## INDEX.md contract (v1)
31
+
32
+ | Column | Required | Notes |
33
+ |--------|----------|-------|
34
+ | `id` | yes | Stable kebab/id matching frontmatter `id` |
35
+ | `type` | yes | `page` \| `feature` |
36
+ | `domain` | yes | Domain folder under `docs/specs/domains/<domain>/` |
37
+ | `title` | yes | Human label |
38
+ | `path` | yes | Repo-relative path to markdown file |
39
+ | `routes` | no | Summary; may duplicate frontmatter |
40
+ | `aliases` | no | Comma-separated PageName / deep-link aliases |
41
+ | `status` | no | `draft` \| `active` \| `deprecated` |
42
+
43
+ Layout: `docs/specs/domains/<domain>/<id>.md` (page) and optional `docs/specs/domains/<domain>/feature.md`. Adding/renaming/removing a linked file **must** update INDEX in the **same change set**.
44
+
45
+ ## Frontmatter v1
46
+
47
+ | Field | Type | Required | Notes |
48
+ |-------|------|----------|-------|
49
+ | `id` | string | yes | Unique; matches INDEX |
50
+ | `type` | enum `page` \| `feature` | yes | Backend/MCP: prefer `feature` |
51
+ | `domain` | string | yes | |
52
+ | `routes` | string[] | yes (may be `[]`) | Web: URL paths; mobile: deep links/screens; backend: HTTP paths; mcp-ts: tool names |
53
+ | `ui` | string[] | yes (may be `[]`) | Component/screen refs; empty on backend/mcp |
54
+ | `store` | string[] | yes (may be `[]`) | Slice/module refs; empty when N/A |
55
+ | `api` | string[] | yes (may be `[]`) | Services/ports/tools |
56
+ | `aliases` | string[] | yes (may be `[]`) | |
57
+ | `e2e` | string[] | yes (may be `[]`) | Stack-appropriate test paths |
58
+ | `status` | enum | no | default `draft` on agent generate |
59
+ | `owners` | string[] | no | |
60
+ | `related` | string[] | no | Spec ids or paths |
61
+
62
+ Arrays are **always present** (empty allowed). Do not omit keys for N/A stacks.
63
+
64
+ ## Body headings (minimum)
65
+
66
+ **`page` required:** Overview; Entry / actors; Primary flows; States (loading / empty / error / success as applicable — mark N/A explicitly); Acceptance criteria (links or bullets to brief AC / product source).
67
+
68
+ **`page` optional:** Analytics, Accessibility, Edge cases, Related specs.
69
+
70
+ **`feature` required:** Overview; Shared behavior / constraints; Related pages (links).
71
+
72
+ **`feature` optional:** Cross-cutting states, Analytics.
73
+
74
+ Compliant = valid frontmatter + all required headings present (non-empty prose or explicit `N/A`) + INDEX row with resolvable `path`.
75
+
76
+ ## Templates & assets
77
+
78
+ **Package SoT:** `packages/ai-rules/presets/_shared/assets/docs-specs/` (`INDEX.md` stub, `_templates/page.md`, `_templates/feature.md`; optional `schemas/frontmatter-v1.schema.json`).
79
+
80
+ **CLI `init`:** when consumer `docs/specs/` is **absent**, copy INDEX stub + `_templates/*` (idempotent; **never overwrite** existing INDEX). When the tree already exists, skip seed entirely.
81
+
82
+ **Skill fallback:** if consumer `_templates/` missing during author mode, copy from package/skill assets before authoring.
83
+
84
+ ## Author roles
85
+
86
+ | Role | Responsibility |
87
+ |------|----------------|
88
+ | **task-analyst** | Primary author (Generate + Bootstrap); INDEX bootstrap; brief **Related specs** + **Spec gaps / generation requested**; loads this stem + skill `spec-authoring` |
89
+ | **tech-writer** | Post-delivery sync where present; never invent product behavior without AC/code source |
90
+ | **feature-developer** | Consumes approved specs as SoT; mechanical INDEX/frontmatter fixes only on renames |
91
+ | **mcp-ts** | No tech-writer — author + post-sync via **task-analyst** only |
92
+
93
+ ## Self-check before handoff (soft block)
94
+
95
+ Block handoff via `open_questions` until fixed:
96
+
97
+ - [ ] Required frontmatter keys present; arrays always present (may be `[]`)
98
+ - [ ] Required body headings present (or explicit `N/A`)
99
+ - [ ] INDEX row added/updated with resolvable `path` in the **same change set**
100
+ - [ ] Sources cited; invented product behavior absent (or labeled `draft` / `inferred`)
101
+ - [ ] Conflict with brief AC reconciled or flagged
102
+
103
+ ## Related
104
+
105
+ - `product-specs` — discovery / consume
106
+ - Skill `spec-authoring` — procedural checklist
107
+ - Optional consumer script `scripts/check-product-specs.sh` (WARN default; `--strict` FAIL)
@@ -0,0 +1,49 @@
1
+ # Product specs (docs/specs)
2
+
3
+ Product page/feature **behavior** specs live under the consumer repo `docs/specs/**`. This stem covers **discovery and presence** — not layer implementation order (see `feature-delivery-workflow`) and not code-structure mirroring (see `reference-features`).
4
+
5
+ **Authoring** (Generate / Bootstrap modes, INDEX/frontmatter v1, body checklist, greenfield, conflict precedence) → load **`product-specs-authoring`** when generation is requested (`/spec-start`, brief AC, or router `spec-gen`).
6
+
7
+ ## Modes (summary)
8
+
9
+ | Mode | When | Behavior |
10
+ |------|------|----------|
11
+ | **Consume** (default) | INDEX exists or globs hit `docs/specs/**` without generate intent | Discover via INDEX; soft-fail on miss; **never invent** INDEX/specs |
12
+ | **Generate** | Explicit generate intent / AC / `/spec-start` with existing tree | Create/update page/feature specs + INDEX from stated sources |
13
+ | **Bootstrap** | Explicit bootstrap / `/spec-start` when tree absent | Create INDEX + templates + first domain spec |
14
+
15
+ Greenfield: agents may create INDEX/specs **only** on explicit intent, AC, or `/spec-start`. Missing INDEX alone does **not** authorize inventing the tree.
16
+
17
+ ## Presence policy
18
+
19
+ - If `docs/specs/INDEX.md` is **missing** → the tree is **optional** (greenfield OK for *consume*). Continue with code/brief discovery; do not invent an INDEX solely because this stem loaded.
20
+ - If INDEX **exists** → it is the **required discovery path** for work that touches a listed page, feature, route, or alias.
21
+
22
+ ## Discovery algorithm
23
+
24
+ 1. Always start at `docs/specs/INDEX.md` when present.
25
+ 2. Resolve the entry by: route, stable `id`, PageName / alias, or domain folder.
26
+ 3. Read the linked page spec (and optional domain `feature.md` when the INDEX or page Related links it).
27
+
28
+ ## Miss policy (INDEX present, row or file missing)
29
+
30
+ - Record the gap in `open_questions` / handoff gaps.
31
+ - Fall back to code discovery and consumer `.ai/context/**` when present.
32
+ - **Do not invent** product behavior, states, interactions, or contracts.
33
+ - Hard-fail / block only when the task’s acceptance criteria explicitly require a named spec that is absent (human/gate decision).
34
+
35
+ ## Authoring pointer
36
+
37
+ Same-changeset INDEX updates, frontmatter v1, required body headings, templates, and conflict precedence live in **`product-specs-authoring`**. Do not paste the full checklist here.
38
+
39
+ ## Non-goals
40
+
41
+ - Not a replacement for `.ai/context/**` (external AI Code Review glossary) or `reference-features` (file-layout mirror).
42
+ - Not Tessl / an external host as primary SoT.
43
+ - No stack filesystem path recipes in this core body — path examples belong only in adapter **Stack notes**.
44
+
45
+ ## Related
46
+
47
+ - `product-specs-authoring` — generation modes, contracts, self-check.
48
+ - `reference-features` — code structure mirror (how to layout files), not product behavior.
49
+ - Consumer `.ai/context/**` when present — review/domain glossary; cross-link, do not replace.
@@ -13,7 +13,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
13
13
  ## Where to put a new rule
14
14
 
15
15
  1. Shared principles for all stacks → **core** + adapters with `<!-- shared-core: … -->`.
16
- 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`).
16
+ 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`).
17
17
  3. Only Cursor or only Claude packaging → platform artifact / frontmatter; do not duplicate semantics.
18
18
 
19
19
  ## SoT
@@ -4,11 +4,12 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
4
4
 
5
5
  ## Principles
6
6
 
7
- - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
8
- - `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
9
- - `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
10
- - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
11
- - `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
7
+ - `next` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
8
+ - `nuxt` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
9
+ - `svelte` must not require iOS-only or Android-only agents/tooling (`xcuitest-*`, `instrumentation-test-*`, `xcodebuild` as required handoff, Keychain-only rules).
10
+ - `ios-swift` must not ship Playwright handoffs, Android `instrumentation-test-*` handoffs, or Next lint recipes as required commands.
11
+ - `android-kotlin` must not ship Playwright, XCUITest, `xcodebuild`, or Next lint recipes as required handoffs.
12
+ - `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.
12
13
  - `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
13
14
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
14
15
 
@@ -17,25 +18,37 @@ Ban leakage of stack-specific names, paths, and handoff stems across presets.
17
18
  In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
18
19
 
19
20
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
21
+ - `instrumentation-test-` as required Android handoffs
20
22
  - `app/__tests__/e2e` as a required path
21
23
  - Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
22
24
 
23
25
  Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
24
26
 
27
+ ## Forbidden in android-kotlin hooks/agents (FAIL)
28
+
29
+ In android-kotlin `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
30
+
31
+ - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
32
+ - `app/__tests__/e2e` as a required path
33
+ - `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs
34
+ - Positive yarn recipes `lint:js` / `lint:css` as commands to run
35
+
36
+ Required instead: `instrumentation-test-*` stems; build-verifier mentions `gradle-tooling` and/or `post-change-build` (Gradle wrapper discovery — not `xcodebuild` as the default gate).
37
+
25
38
  ## Forbidden in next hooks/agents (FAIL when present as required)
26
39
 
27
- - `xcuitest-test-` as handoff stems
40
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
28
41
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
29
42
 
30
43
  ## Forbidden in nuxt hooks/agents (FAIL when present as required)
31
44
 
32
- - `xcuitest-test-` as handoff stems
45
+ - `xcuitest-test-` / `instrumentation-test-` as handoff stems
33
46
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
34
47
  - Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
35
48
 
36
49
  ## Forbidden in svelte 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 SvelteKit app work
40
53
  - Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
41
54
 
@@ -45,7 +58,7 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
45
58
 
46
59
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
47
60
  - Positive yarn recipes `lint:js` / `lint:css`
48
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
61
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
49
62
  - Agent file `accessibility-reviewer` (no UI surface)
50
63
 
51
64
  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`).
@@ -56,9 +69,9 @@ Same UI/mobile bans as backend stacks, plus:
56
69
 
57
70
  - `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
58
71
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
59
- - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
72
+ - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
60
73
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
61
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
74
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
62
75
 
63
76
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
64
77
 
@@ -69,4 +82,4 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
69
82
 
70
83
  ## Chain fork
71
84
 
72
- `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).
85
+ `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).
@@ -6,7 +6,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
6
6
 
7
7
  - [ ] **SoT:** edits in `packages/…` (not only root `.cursor/`)
8
8
  - [ ] **Core:** if `_shared/core/**` changed — all `<!-- shared-core: … -->` consumers updated (or documented intentional fork)
9
- - [ ] **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`)
9
+ - [ ] **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`)
10
10
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
11
11
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
12
12
  - [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
@@ -15,6 +15,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
15
15
  | `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
16
16
  | `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
17
17
  | `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
18
+ | `android-kotlin` | `presets/cursor/android-kotlin/rules/*.mdc` | `presets/claude/android-kotlin/rules/<topic>/` | Keep in `claude/android-kotlin/rules/README.md` |
18
19
 
19
20
  ## Same-PR checklist
20
21
 
@@ -39,5 +40,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
39
40
  - **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
40
41
  - **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
41
42
  - **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).
43
+ - **android-kotlin:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-*; mapping table required).
42
44
 
43
45
  Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
@@ -0,0 +1,38 @@
1
+ # Android Kotlin stack — project instructions
2
+
3
+ Short Claude Code entry point. Detailed rules — modular topic `.md` files under `rules/` (derived from Cursor SoT).
4
+
5
+ **Repo-root agents:** see [`AGENTS.md`](../../AGENTS.md) at the project root (cross-tool setup, commands, security, living conventions pointers).
6
+
7
+ See @rules/README.md for mapping and loading strategy.
8
+
9
+ ## Conventions
10
+
11
+ - One topic per file; path scope — frontmatter `paths:`.
12
+ - **Session-start rules** (no `paths:`) — exactly **three**: `android-app-core`, `boundaries`, `code-quality`.
13
+ - Requestable / paths: orchestrator, intake, feature-delivery, code-review, post-change-build, gradle-tooling, reference-features, security-android, technical-retro, domain globs.
14
+ - Slash commands — `commands/`; skills — `skills/`; subagents — `agents/`.
15
+
16
+ ## Quick start
17
+
18
+ | Task | Where to look |
19
+ |------|----------------|
20
+ | Work request | `commands/task.md` + `tooling-and-review/agent-team-orchestrator.md` |
21
+ | End-to-end feature | skill `feature-delivery` + `architecture/feature-delivery.md` |
22
+ | Reference modules | `architecture/reference-features.md` (placeholders `applications/`, `features/<name>/`) |
23
+ | Stack | `stack/android-app-core.md` |
24
+ | Toolchain | `tooling-and-review/gradle-tooling.md` |
25
+ | After Kotlin edits | `tooling-and-review/post-change-build.md` (requestable, required) |
26
+ | UI tests | skill `instrumentation-ui-e2e` |
27
+ | Security | `tooling-and-review/security-android.md` |
28
+ | Validation | agent `build-verifier` |
29
+ | How does X work? | agent `codebase-analyzer` (explain-as-is) |
30
+ | Retro | `commands/technical-retro.md` |
31
+
32
+ ## Install
33
+
34
+ ```bash
35
+ npx @bonesofspring/ai-rules init claude --preset android-kotlin
36
+ ```
37
+
38
+ Copies `CLAUDE.md`, `rules/**`, `commands/**`, `agents/**`, `skills/**`, `hooks/**`, `team/**`, `MCP.md` into `.claude/`, plus `mcp.json` → **`.mcp.json`** and `REPO_AGENTS.md` → root **`AGENTS.md`**. Skill: `write-adr` (on-demand).