@bonesofspring/ai-rules 0.2.28 → 0.2.30

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 (282) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/docs/MAVIS-COMPATIBILITY.md +10 -6
  4. package/docs/MAVIS.md +15 -6
  5. package/docs/OPENCODE-COMPATIBILITY.md +2 -2
  6. package/docs/OPENCODE.md +1 -1
  7. package/package.json +5 -1
  8. package/presets/_shared/core/meta/preset-pr-checklist.md +2 -2
  9. package/presets/claude/android-kotlin/CLAUDE.md +3 -1
  10. package/presets/claude/android-kotlin/REPO_AGENTS.md +1 -1
  11. package/presets/claude/android-kotlin/hooks/README.md +6 -5
  12. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +18 -0
  13. package/presets/claude/android-kotlin/hooks/examples/README.md +2 -0
  14. package/presets/claude/android-kotlin/hooks/guard-shell-command.sh +32 -9
  15. package/presets/claude/android-kotlin/rules/README.md +1 -1
  16. package/presets/claude/android-kotlin/rules/tooling-and-review/ai-local-overlay.md +0 -5
  17. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  18. package/presets/claude/android-kotlin/settings.json +23 -0
  19. package/presets/claude/go/CLAUDE.md +3 -1
  20. package/presets/claude/go/REPO_AGENTS.md +1 -1
  21. package/presets/claude/go/hooks/README.md +6 -5
  22. package/presets/claude/go/hooks/chain-team-phases.sh +18 -0
  23. package/presets/claude/go/hooks/examples/README.md +2 -0
  24. package/presets/claude/go/hooks/guard-shell-command.sh +32 -9
  25. package/presets/claude/go/rules/README.md +1 -1
  26. package/presets/claude/go/rules/tooling-and-review/ai-local-overlay.md +0 -5
  27. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  28. package/presets/claude/go/settings.json +23 -0
  29. package/presets/claude/ios-swift/CLAUDE.md +3 -1
  30. package/presets/claude/ios-swift/REPO_AGENTS.md +1 -1
  31. package/presets/claude/ios-swift/hooks/README.md +6 -5
  32. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +18 -0
  33. package/presets/claude/ios-swift/hooks/examples/README.md +2 -0
  34. package/presets/claude/ios-swift/hooks/guard-shell-command.sh +32 -9
  35. package/presets/claude/ios-swift/rules/README.md +1 -1
  36. package/presets/claude/ios-swift/rules/tooling-and-review/ai-local-overlay.md +0 -5
  37. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  38. package/presets/claude/ios-swift/settings.json +23 -0
  39. package/presets/claude/java/CLAUDE.md +3 -1
  40. package/presets/claude/java/REPO_AGENTS.md +1 -1
  41. package/presets/claude/java/hooks/README.md +6 -5
  42. package/presets/claude/java/hooks/chain-team-phases.sh +18 -0
  43. package/presets/claude/java/hooks/examples/README.md +2 -0
  44. package/presets/claude/java/hooks/guard-shell-command.sh +32 -9
  45. package/presets/claude/java/rules/README.md +1 -1
  46. package/presets/claude/java/rules/tooling-and-review/ai-local-overlay.md +0 -5
  47. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  48. package/presets/claude/java/settings.json +23 -0
  49. package/presets/claude/mcp-ts/CLAUDE.md +3 -1
  50. package/presets/claude/mcp-ts/REPO_AGENTS.md +1 -1
  51. package/presets/claude/mcp-ts/hooks/README.md +8 -3
  52. package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +18 -0
  53. package/presets/claude/mcp-ts/hooks/examples/README.md +5 -0
  54. package/presets/claude/mcp-ts/hooks/guard-shell-command.sh +32 -9
  55. package/presets/claude/mcp-ts/rules/README.md +1 -1
  56. package/presets/claude/mcp-ts/rules/tooling-and-review/ai-local-overlay.md +0 -5
  57. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  58. package/presets/claude/mcp-ts/settings.json +23 -0
  59. package/presets/claude/next/CLAUDE.md +3 -1
  60. package/presets/claude/next/REPO_AGENTS.md +1 -1
  61. package/presets/claude/next/agents/code-reviewer.md +35 -0
  62. package/presets/claude/next/agents/feature-developer.md +12 -0
  63. package/presets/claude/next/agents/mockup-reviewer.md +27 -1
  64. package/presets/claude/next/hooks/README.md +10 -1
  65. package/presets/claude/next/hooks/chain-team-phases.sh +18 -0
  66. package/presets/claude/next/hooks/examples/README.md +2 -0
  67. package/presets/claude/next/hooks/guard-shell-command.sh +32 -9
  68. package/presets/claude/next/rules/README.md +3 -2
  69. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +17 -0
  70. package/presets/claude/next/rules/tooling-and-review/ai-local-overlay.md +0 -5
  71. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +10 -0
  72. package/presets/claude/next/rules/tooling-and-review/mockup-review.md +9 -0
  73. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  74. package/presets/claude/next/rules/ui-and-accessibility/design-tokens-binding.md +42 -0
  75. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +1 -0
  76. package/presets/claude/next/settings.json +23 -0
  77. package/presets/claude/next/skills/code-review/SKILL.md +1 -0
  78. package/presets/claude/nuxt/CLAUDE.md +3 -1
  79. package/presets/claude/nuxt/REPO_AGENTS.md +1 -1
  80. package/presets/claude/nuxt/hooks/README.md +7 -4
  81. package/presets/claude/nuxt/hooks/chain-team-phases.sh +18 -0
  82. package/presets/claude/nuxt/hooks/examples/README.md +2 -0
  83. package/presets/claude/nuxt/hooks/guard-shell-command.sh +32 -9
  84. package/presets/claude/nuxt/rules/README.md +1 -1
  85. package/presets/claude/nuxt/rules/tooling-and-review/ai-local-overlay.md +0 -5
  86. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  87. package/presets/claude/nuxt/settings.json +23 -0
  88. package/presets/claude/php-hexagonal/CLAUDE.md +3 -1
  89. package/presets/claude/php-hexagonal/REPO_AGENTS.md +1 -1
  90. package/presets/claude/php-hexagonal/hooks/README.md +6 -5
  91. package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +18 -0
  92. package/presets/claude/php-hexagonal/hooks/examples/README.md +3 -1
  93. package/presets/claude/php-hexagonal/hooks/guard-shell-command.sh +32 -9
  94. package/presets/claude/php-hexagonal/rules/README.md +1 -1
  95. package/presets/claude/php-hexagonal/rules/tooling-and-review/ai-local-overlay.md +0 -5
  96. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  97. package/presets/claude/php-hexagonal/settings.json +23 -0
  98. package/presets/claude/php-laravel/CLAUDE.md +6 -0
  99. package/presets/claude/php-laravel/REPO_AGENTS.md +1 -1
  100. package/presets/claude/php-laravel/hooks/README.md +6 -5
  101. package/presets/claude/php-laravel/hooks/chain-team-phases.sh +18 -0
  102. package/presets/claude/php-laravel/hooks/examples/README.md +3 -1
  103. package/presets/claude/php-laravel/hooks/guard-shell-command.sh +32 -9
  104. package/presets/claude/php-laravel/rules/README.md +1 -1
  105. package/presets/claude/php-laravel/rules/tooling-and-review/ai-local-overlay.md +0 -5
  106. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  107. package/presets/claude/php-laravel/settings.json +23 -0
  108. package/presets/claude/svelte/CLAUDE.md +3 -1
  109. package/presets/claude/svelte/REPO_AGENTS.md +1 -1
  110. package/presets/claude/svelte/hooks/README.md +7 -4
  111. package/presets/claude/svelte/hooks/chain-team-phases.sh +18 -0
  112. package/presets/claude/svelte/hooks/examples/README.md +2 -0
  113. package/presets/claude/svelte/hooks/guard-shell-command.sh +32 -9
  114. package/presets/claude/svelte/rules/README.md +1 -1
  115. package/presets/claude/svelte/rules/tooling-and-review/ai-local-overlay.md +0 -5
  116. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +2 -2
  117. package/presets/claude/svelte/settings.json +23 -0
  118. package/presets/cursor/android-kotlin/REPO_AGENTS.md +1 -1
  119. package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +2 -2
  120. package/presets/cursor/go/REPO_AGENTS.md +1 -1
  121. package/presets/cursor/go/rules/preset-pr-checklist.mdc +2 -2
  122. package/presets/cursor/ios-swift/REPO_AGENTS.md +1 -1
  123. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -2
  124. package/presets/cursor/java/REPO_AGENTS.md +1 -1
  125. package/presets/cursor/java/rules/preset-pr-checklist.mdc +2 -2
  126. package/presets/cursor/mcp-ts/REPO_AGENTS.md +1 -1
  127. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +2 -2
  128. package/presets/cursor/next/REPO_AGENTS.md +1 -1
  129. package/presets/cursor/next/agents/code-reviewer.md +35 -0
  130. package/presets/cursor/next/agents/feature-developer.md +22 -0
  131. package/presets/cursor/next/agents/mockup-reviewer.md +27 -1
  132. package/presets/cursor/next/rules/README.md +3 -1
  133. package/presets/cursor/next/rules/code-review-mr.mdc +10 -0
  134. package/presets/cursor/next/rules/design-tokens-binding.mdc +41 -0
  135. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +17 -0
  136. package/presets/cursor/next/rules/mockup-review.mdc +9 -0
  137. package/presets/cursor/next/rules/preset-pr-checklist.mdc +2 -2
  138. package/presets/cursor/next/rules/react-ui.mdc +1 -0
  139. package/presets/cursor/next/skills/code-review/SKILL.md +1 -0
  140. package/presets/cursor/nuxt/REPO_AGENTS.md +1 -1
  141. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +2 -2
  142. package/presets/cursor/php-hexagonal/REPO_AGENTS.md +1 -1
  143. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +2 -2
  144. package/presets/cursor/php-laravel/REPO_AGENTS.md +1 -1
  145. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +2 -2
  146. package/presets/cursor/svelte/REPO_AGENTS.md +1 -1
  147. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +2 -2
  148. package/presets/mavis/README.md +2 -0
  149. package/presets/mavis/android-kotlin/MAVIS.md +10 -1
  150. package/presets/mavis/android-kotlin/REPO_AGENTS.md +1 -1
  151. package/presets/mavis/android-kotlin/adapter-map.json +1 -1
  152. package/presets/mavis/android-kotlin/rules/preset-pr-checklist.md +2 -2
  153. package/presets/mavis/go/MAVIS.md +10 -1
  154. package/presets/mavis/go/REPO_AGENTS.md +1 -1
  155. package/presets/mavis/go/adapter-map.json +1 -1
  156. package/presets/mavis/go/rules/preset-pr-checklist.md +2 -2
  157. package/presets/mavis/ios-swift/MAVIS.md +10 -1
  158. package/presets/mavis/ios-swift/REPO_AGENTS.md +1 -1
  159. package/presets/mavis/ios-swift/adapter-map.json +1 -1
  160. package/presets/mavis/ios-swift/rules/preset-pr-checklist.md +2 -2
  161. package/presets/mavis/java/MAVIS.md +10 -1
  162. package/presets/mavis/java/REPO_AGENTS.md +1 -1
  163. package/presets/mavis/java/adapter-map.json +1 -1
  164. package/presets/mavis/java/rules/preset-pr-checklist.md +2 -2
  165. package/presets/mavis/mcp-ts/MAVIS.md +10 -1
  166. package/presets/mavis/mcp-ts/REPO_AGENTS.md +1 -1
  167. package/presets/mavis/mcp-ts/adapter-map.json +1 -1
  168. package/presets/mavis/mcp-ts/rules/preset-pr-checklist.md +2 -2
  169. package/presets/mavis/next/MAVIS.md +10 -1
  170. package/presets/mavis/next/REPO_AGENTS.md +1 -1
  171. package/presets/mavis/next/adapter-map.json +9 -1
  172. package/presets/mavis/next/agents/code-reviewer.md +35 -0
  173. package/presets/mavis/next/agents/feature-developer.md +22 -0
  174. package/presets/mavis/next/agents/mockup-reviewer.md +27 -1
  175. package/presets/mavis/next/rules/code-review-mr.md +10 -0
  176. package/presets/mavis/next/rules/design-tokens-binding.md +35 -0
  177. package/presets/mavis/next/rules/feature-delivery-workflow.md +17 -0
  178. package/presets/mavis/next/rules/mockup-review.md +9 -0
  179. package/presets/mavis/next/rules/preset-pr-checklist.md +2 -2
  180. package/presets/mavis/next/rules/react-ui.md +1 -0
  181. package/presets/mavis/next/skills/code-review/SKILL.md +1 -0
  182. package/presets/mavis/nuxt/MAVIS.md +10 -1
  183. package/presets/mavis/nuxt/REPO_AGENTS.md +1 -1
  184. package/presets/mavis/nuxt/adapter-map.json +1 -1
  185. package/presets/mavis/nuxt/rules/preset-pr-checklist.md +2 -2
  186. package/presets/mavis/php-hexagonal/MAVIS.md +10 -1
  187. package/presets/mavis/php-hexagonal/REPO_AGENTS.md +1 -1
  188. package/presets/mavis/php-hexagonal/adapter-map.json +1 -1
  189. package/presets/mavis/php-hexagonal/rules/preset-pr-checklist.md +2 -2
  190. package/presets/mavis/php-laravel/MAVIS.md +10 -1
  191. package/presets/mavis/php-laravel/REPO_AGENTS.md +1 -1
  192. package/presets/mavis/php-laravel/adapter-map.json +1 -1
  193. package/presets/mavis/php-laravel/rules/preset-pr-checklist.md +2 -2
  194. package/presets/mavis/platform-contract.json +4 -4
  195. package/presets/mavis/svelte/MAVIS.md +10 -1
  196. package/presets/mavis/svelte/REPO_AGENTS.md +1 -1
  197. package/presets/mavis/svelte/adapter-map.json +1 -1
  198. package/presets/mavis/svelte/rules/preset-pr-checklist.md +2 -2
  199. package/presets/opencode/README.md +1 -1
  200. package/presets/opencode/android-kotlin/OPENCODE.md +8 -1
  201. package/presets/opencode/android-kotlin/REPO_AGENTS.md +1 -1
  202. package/presets/opencode/android-kotlin/adapter-map.json +1 -1
  203. package/presets/opencode/android-kotlin/rules/preset-pr-checklist.md +2 -2
  204. package/presets/opencode/go/OPENCODE.md +8 -1
  205. package/presets/opencode/go/REPO_AGENTS.md +1 -1
  206. package/presets/opencode/go/adapter-map.json +1 -1
  207. package/presets/opencode/go/rules/preset-pr-checklist.md +2 -2
  208. package/presets/opencode/ios-swift/OPENCODE.md +8 -1
  209. package/presets/opencode/ios-swift/REPO_AGENTS.md +1 -1
  210. package/presets/opencode/ios-swift/adapter-map.json +1 -1
  211. package/presets/opencode/ios-swift/rules/preset-pr-checklist.md +2 -2
  212. package/presets/opencode/java/OPENCODE.md +8 -1
  213. package/presets/opencode/java/REPO_AGENTS.md +1 -1
  214. package/presets/opencode/java/adapter-map.json +1 -1
  215. package/presets/opencode/java/rules/preset-pr-checklist.md +2 -2
  216. package/presets/opencode/mcp-ts/OPENCODE.md +8 -1
  217. package/presets/opencode/mcp-ts/REPO_AGENTS.md +1 -1
  218. package/presets/opencode/mcp-ts/adapter-map.json +1 -1
  219. package/presets/opencode/mcp-ts/rules/preset-pr-checklist.md +2 -2
  220. package/presets/opencode/next/OPENCODE.md +8 -1
  221. package/presets/opencode/next/REPO_AGENTS.md +1 -1
  222. package/presets/opencode/next/adapter-map.json +9 -1
  223. package/presets/opencode/next/agents/code-reviewer.md +35 -0
  224. package/presets/opencode/next/agents/feature-developer.md +22 -0
  225. package/presets/opencode/next/agents/mockup-reviewer.md +27 -1
  226. package/presets/opencode/next/rules/code-review-mr.md +10 -0
  227. package/presets/opencode/next/rules/design-tokens-binding.md +35 -0
  228. package/presets/opencode/next/rules/feature-delivery-workflow.md +17 -0
  229. package/presets/opencode/next/rules/mockup-review.md +9 -0
  230. package/presets/opencode/next/rules/preset-pr-checklist.md +2 -2
  231. package/presets/opencode/next/rules/react-ui.md +1 -0
  232. package/presets/opencode/next/skills/code-review/SKILL.md +1 -0
  233. package/presets/opencode/nuxt/OPENCODE.md +8 -1
  234. package/presets/opencode/nuxt/REPO_AGENTS.md +1 -1
  235. package/presets/opencode/nuxt/adapter-map.json +1 -1
  236. package/presets/opencode/nuxt/rules/preset-pr-checklist.md +2 -2
  237. package/presets/opencode/php-hexagonal/OPENCODE.md +8 -1
  238. package/presets/opencode/php-hexagonal/REPO_AGENTS.md +1 -1
  239. package/presets/opencode/php-hexagonal/adapter-map.json +1 -1
  240. package/presets/opencode/php-hexagonal/rules/preset-pr-checklist.md +2 -2
  241. package/presets/opencode/php-laravel/OPENCODE.md +8 -1
  242. package/presets/opencode/php-laravel/REPO_AGENTS.md +1 -1
  243. package/presets/opencode/php-laravel/adapter-map.json +1 -1
  244. package/presets/opencode/php-laravel/rules/preset-pr-checklist.md +2 -2
  245. package/presets/opencode/platform-contract.json +1 -1
  246. package/presets/opencode/svelte/OPENCODE.md +8 -1
  247. package/presets/opencode/svelte/REPO_AGENTS.md +1 -1
  248. package/presets/opencode/svelte/adapter-map.json +1 -1
  249. package/presets/opencode/svelte/rules/preset-pr-checklist.md +2 -2
  250. package/scripts/check-local-overlay.sh +40 -4
  251. package/scripts/check-mavis-local-overlay.mjs +23 -0
  252. package/scripts/check-mavis-platform-contract.mjs +5 -2
  253. package/scripts/check-opencode-local-overlay.mjs +19 -0
  254. package/scripts/check-opencode-platform-contract.mjs +5 -2
  255. package/scripts/check-preset-token-budget.sh +7 -0
  256. package/scripts/fixtures/cli-golden/claude/next.json +19 -18
  257. package/scripts/fixtures/cli-golden/cursor/next.json +12 -11
  258. package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +3 -3
  259. package/scripts/fixtures/cli-golden/mavis/go.json +3 -3
  260. package/scripts/fixtures/cli-golden/mavis/ios-swift.json +3 -3
  261. package/scripts/fixtures/cli-golden/mavis/java.json +3 -3
  262. package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +3 -3
  263. package/scripts/fixtures/cli-golden/mavis/next.json +12 -11
  264. package/scripts/fixtures/cli-golden/mavis/nuxt.json +3 -3
  265. package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +3 -3
  266. package/scripts/fixtures/cli-golden/mavis/php-laravel.json +3 -3
  267. package/scripts/fixtures/cli-golden/mavis/svelte.json +3 -3
  268. package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +3 -3
  269. package/scripts/fixtures/cli-golden/opencode/go.json +3 -3
  270. package/scripts/fixtures/cli-golden/opencode/ios-swift.json +3 -3
  271. package/scripts/fixtures/cli-golden/opencode/java.json +3 -3
  272. package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +3 -3
  273. package/scripts/fixtures/cli-golden/opencode/next.json +12 -11
  274. package/scripts/fixtures/cli-golden/opencode/nuxt.json +3 -3
  275. package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +3 -3
  276. package/scripts/fixtures/cli-golden/opencode/php-laravel.json +3 -3
  277. package/scripts/fixtures/cli-golden/opencode/svelte.json +3 -3
  278. package/scripts/lib/generate-mavis-adapter.mjs +10 -1
  279. package/scripts/lib/generate-opencode-adapter.mjs +8 -1
  280. package/scripts/sync-claude-settings.mjs +25 -0
  281. package/scripts/sync-dogfood-claude.sh +62 -0
  282. package/scripts/test-mavis-orchestration.mjs +3 -2
@@ -9,7 +9,7 @@
9
9
  ".ai.local/team/fixtures/feature-full.json": "9913f04b477b10b00873adc0ce5be7e67cd6c9d370ba007e0012b952d1c33335",
10
10
  ".ai.local/team/fixtures/feature-light.json": "41ae44266a99fc5f7a67914c26b0c2c5a620c08cb94906780b786117ee8fa162",
11
11
  ".ai.local/team/fixtures/memlog.example.md": "9902c3a9d82334f3fdc44e60a8e6e904bc3575a772dfee42f3dc07f37c198e12",
12
- ".opencode/AGENTS.md": "d9c6a5b882b288e691319806855e2574937cca7c1680fb54daba23ae6bb7a079",
12
+ ".opencode/AGENTS.md": "5c62dba3eb9527ddb0f287a7655973e6a460c1cc8177b3b75ccf9be6399b54df",
13
13
  ".opencode/MCP.md": "e1a537f696dfaf793d217e50150cbff7ab0d85cd294a5c2593d580cdfb1a8dd6",
14
14
  ".opencode/agents/README.md": "d594c96ccd1e865055be810e84ee762d05880a221498387e875cc2836c3a0db8",
15
15
  ".opencode/agents/api-contract-reviewer.md": "3f66989687652b09a85762fa5f978ba4051bbf72cbc4264d2e431f240a7cebd9",
@@ -69,7 +69,7 @@
69
69
  ".opencode/rules/post-change-test.md": "7c8f76985c37edd3be4a00bab0c8b45ee7b06cc4bfd035d2c64f16e04b022054",
70
70
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
71
71
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
72
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
72
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
73
73
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
74
74
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
75
75
  ".opencode/rules/product-specs-authoring.md": "6b7b7bb5b04ba12d93c63908304dc5342803728eb79e386ea018a7d51e501079",
@@ -91,7 +91,7 @@
91
91
  ".opencode/skills/technical-retro/SKILL.md": "7aec35e02ef2d084f200a3d105ffeb31eedec0eae8317d126ffe7ad5a840a5e5",
92
92
  ".opencode/skills/unit-testing/SKILL.md": "64c438f74bc2e7f17815c8f0331fec7e1b747af291009a4dba1ea8070dd3d5ad",
93
93
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
94
- "AGENTS.md": "d2473b7d49de81cb20f08eeb415a6aac6a81c9a7b490acaf9e38eadb19a7d412",
94
+ "AGENTS.md": "dcf4982dce67e049b952555fdf65f983533b3cc0bc453172228f5e8895ac3eee",
95
95
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
96
96
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
97
97
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -15,7 +15,7 @@
15
15
  ".ai.local/team/fixtures/mockup-review-fail-embedded-status.json": "2e1f3ff8e5e3668f20f2b0e329f26b884c79e426dd6b5952c0896bd4f0c7f9a4",
16
16
  ".ai.local/team/fixtures/mockup-review-standalone.json": "edda49b1298e94f9a33496317e9f6ccbbb047659e044e05ba35669bfe800eda6",
17
17
  ".ai.local/team/fixtures/ux-design-standalone.json": "528aeb9db4c310d1b5e3eacae0ad39a4fd1dd49c04154b064e7027981488a07a",
18
- ".opencode/AGENTS.md": "83a9228ba72878dcd154d30328226bfafdd879e50a7295784dcf9954d666bafb",
18
+ ".opencode/AGENTS.md": "ec97f26148fd53f7e461ecf0adbca274c33333a55369a6265260826cb0a857b0",
19
19
  ".opencode/MCP.md": "02a141429da12f84d2015c818ee948093adac50d6e0aae483a1cbb0e21f61942",
20
20
  ".opencode/agents/README.md": "7b09e4af4308c5525b7842dd6dff234b7dd1dded24083efcefbd0a06d83edab1",
21
21
  ".opencode/agents/accessibility-reviewer.md": "06748eeae0a4190a1c901eb446193ebe739a708532b10c718c4ac3af963a262b",
@@ -69,7 +69,7 @@
69
69
  ".opencode/rules/post-change-build.md": "58938b2d5d6ecc90314474208e347224d58beeda3f8584101ae84b5d45603419",
70
70
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
71
71
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
72
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
72
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
73
73
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
74
74
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
75
75
  ".opencode/rules/product-specs-authoring.md": "607672961b3c6f892d0364fb13492f33eb1f3c572268a7e7ec316e70068639f1",
@@ -97,7 +97,7 @@
97
97
  ".opencode/skills/ux-design/SKILL.md": "dcfd7714f6e203eba18b14b334baa872696141ca257c87a72e8a7a45c4f4c91a",
98
98
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
99
99
  ".opencode/skills/xcuitest-e2e/SKILL.md": "e17b62a64b6ef6901abdb4b1fae81116f3e396148d7e69db0dfc33f12c2a391c",
100
- "AGENTS.md": "01133a8a39f546ff793c7c12e2cb0a258f9a1dec14168233d017b6ba578f69fb",
100
+ "AGENTS.md": "81f3dd588aaa27f99566a4f65413c2e0a711f1cbbc844ace1ebb0a159af1863a",
101
101
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
102
102
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
103
103
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -9,7 +9,7 @@
9
9
  ".ai.local/team/fixtures/feature-full.json": "25e01db4d2cc0febd3dfd050b830beaf80c88621e12bb720d0cb6b53690bc883",
10
10
  ".ai.local/team/fixtures/feature-light.json": "a660512d9494c00dd62decd6beaf7dd2b000e2ab140de3e1c0198c73c46c0abc",
11
11
  ".ai.local/team/fixtures/memlog.example.md": "9902c3a9d82334f3fdc44e60a8e6e904bc3575a772dfee42f3dc07f37c198e12",
12
- ".opencode/AGENTS.md": "95c92443a61ec9f3c6f16f4bb3dc193b584f9ea73ded32a4cd481f240c738458",
12
+ ".opencode/AGENTS.md": "a53035c5dad05ccbc6c3b7e2745f07657ac729611da7673790ab4d6bef4f4992",
13
13
  ".opencode/MCP.md": "54a85ac0b1ff18032856e5b327ea8c325625b49514f29a322ca879e1344f59f4",
14
14
  ".opencode/agents/README.md": "934effa42dc146e60921e29e30aa6aaaf41dd59e4ae5df1f368e3a0b9bec999b",
15
15
  ".opencode/agents/api-contract-reviewer.md": "80743c46c21f656b12ec92ab39ed1a982b30f794cba6c6573c689618a336c5e4",
@@ -69,7 +69,7 @@
69
69
  ".opencode/rules/post-change-test.md": "d98ff9cb5662e3704611c915b0dd46e37bc9635de46e17ac59c4382b59cd5785",
70
70
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
71
71
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
72
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
72
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
73
73
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
74
74
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
75
75
  ".opencode/rules/product-specs-authoring.md": "6b7b7bb5b04ba12d93c63908304dc5342803728eb79e386ea018a7d51e501079",
@@ -91,7 +91,7 @@
91
91
  ".opencode/skills/technical-retro/SKILL.md": "96310e4e568f5551de3d57c86f777268495aa2cde45255a63f58027d796c3a3d",
92
92
  ".opencode/skills/unit-testing/SKILL.md": "03f3041ba9f398d3d0539f5340b7c415a682d8fb0b027e7e04cbf026eee73925",
93
93
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
94
- "AGENTS.md": "ac65376afac3876e23194cff3d31b397f25e17d0f6e9dd0f057e0889b8c38361",
94
+ "AGENTS.md": "28ea88729e56b62ead28bab94068b02b1e446a0b02f3ceaec55e9cfca3749420",
95
95
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
96
96
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
97
97
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -9,7 +9,7 @@
9
9
  ".ai.local/team/fixtures/feature-full.json": "2775cf26f4f7b2958da027f82ca83c7c2a1a091934115b5c09fb330f6db6f93c",
10
10
  ".ai.local/team/fixtures/feature-light.json": "e351922f225d2cf3330f002211a27863e042148ecdb309d9f9061fa4c0d52abf",
11
11
  ".ai.local/team/fixtures/memlog.example.md": "9902c3a9d82334f3fdc44e60a8e6e904bc3575a772dfee42f3dc07f37c198e12",
12
- ".opencode/AGENTS.md": "81a5980890edc4711cfb9d360b04c6ab5b20ce831ba03dac1f9f1a6cfa7b2aba",
12
+ ".opencode/AGENTS.md": "7d433489bdd30af9ce349b10b4ad9cd48ba6d9e0d9cbafe95cb985041c0db908",
13
13
  ".opencode/MCP.md": "e3a5ca86b534318f80437af28f5657a016e8ecbc51256160a7a30fd9de89b6bd",
14
14
  ".opencode/agents/README.md": "ee7c445962543ce8c5f925b3e39200475412d377443779d88c9f95c709168870",
15
15
  ".opencode/agents/build-verifier.md": "b54fc6ffbad6b32c2e03a5ccdfbc0728765247c8b1c0ef7d7cb49a4d598fec8e",
@@ -46,7 +46,7 @@
46
46
  ".opencode/rules/post-change-test.md": "553e7634bbaf2f2ce94da4e3942973950fab0281e1db0afea57533214dc99a52",
47
47
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
48
48
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
49
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
49
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
50
50
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
51
51
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
52
52
  ".opencode/rules/product-specs-authoring.md": "cd9f47eb4c6b0ac8f0220fd73141264fa4167dcfd43a59a7cae4a19f0a2c8e1b",
@@ -62,7 +62,7 @@
62
62
  ".opencode/skills/spec-authoring/SKILL.md": "2a5515d07ea57f34da982d5ebd5ed5814f0bcb5e919f87da9937fc81127fa908",
63
63
  ".opencode/skills/spec-discovery/SKILL.md": "997886528456bfdfa29c492a5c578b8c2a085742b700047171ce0c876879e2cf",
64
64
  ".opencode/skills/unit-testing/SKILL.md": "9cf563f8a44f00df39c907546bd2fd49b77f54210bed1c7c151ca5b48f1147e8",
65
- "AGENTS.md": "e9c2db6ccd6089f3d0ec98644b5de959a24e596ba4a9bb1a6c4094377d49bad7",
65
+ "AGENTS.md": "950ff8b2bac9a682fa031366998e716eaed92a986a56265acce013850ad3d0d4",
66
66
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
67
67
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
68
68
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -29,19 +29,19 @@
29
29
  ".ai.local/team/fixtures/mockup-review-standalone.json": "edda49b1298e94f9a33496317e9f6ccbbb047659e044e05ba35669bfe800eda6",
30
30
  ".ai.local/team/fixtures/ux-design-standalone.json": "528aeb9db4c310d1b5e3eacae0ad39a4fd1dd49c04154b064e7027981488a07a",
31
31
  ".ai.local/team/tasks/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
32
- ".opencode/AGENTS.md": "43765e9abfe58b3150d6a643eb08460edf35e4c9d7c02483aa30bf68cde67a54",
32
+ ".opencode/AGENTS.md": "40b9d97b8cb0305b7904a7925ece25f44a5e247c345f8e92d1dfc3e263226e3d",
33
33
  ".opencode/MCP.md": "df8af95e044afa5c3da81bed65c32d51ac8ec5a60c166e0db2097c01df59eacb",
34
34
  ".opencode/agents/README.md": "6d76ea662725854b968fbf6a4c9273a4bc4a7caf47392df5208a63cac495701d",
35
35
  ".opencode/agents/accessibility-reviewer.md": "a039bb2f3350cffcfda0a174268c6941bcfc1f847115b001ce03055d784d9058",
36
36
  ".opencode/agents/api-contract-reviewer.md": "8ed8f6eabcac9a12311a6cbe553dec20bb101cb85bef4cfdd85b7fb356fe6db3",
37
37
  ".opencode/agents/build-verifier.md": "fbca193d71b8f79a34c74a689cb71fde90bbc80261b8467323d627b2355408f1",
38
38
  ".opencode/agents/ci-investigator.md": "14f79a775270e69078bb1c4f6b93310a1a1922db4b35287980f0eef4d4984e58",
39
- ".opencode/agents/code-reviewer.md": "634d091defa2ef091ffc2204c2d400589a2e390c081315fdb2bb6bfae6c09282",
39
+ ".opencode/agents/code-reviewer.md": "5eb713c9ad44494c3ce1479078fd7a9610e0dfd9f2d8df811d105e17a2e31be3",
40
40
  ".opencode/agents/codebase-analyzer.md": "47feaf9b796291b2c3d83567581d76b695c49f56a13399cdc3c036976608847f",
41
41
  ".opencode/agents/debugger.md": "22b70f6ca3e9b086099d4052ac3e684b4c13c60170875c38295fc667e037cdf0",
42
- ".opencode/agents/feature-developer.md": "2a890b06257fe55949889fc6e247c68dae6e074a990b5ff74f473e1cc0b48105",
42
+ ".opencode/agents/feature-developer.md": "7c95eebbb000306a41474dfc87a3ce0f4a2d07e9b53994977070bcdb2d4942dc",
43
43
  ".opencode/agents/migration-specialist.md": "3845b9ca5f3f8bd1fd30084ac9381468d40da04ca0c3e509c5cd9ffce2e2590f",
44
- ".opencode/agents/mockup-reviewer.md": "2bc3a6378fc125cf6e5cbbeff5e439742f74f9fe97a5a8d9edd5aa0cce2d2166",
44
+ ".opencode/agents/mockup-reviewer.md": "35739bd9242a83c160d8e348b116adb2019eb3cc6f51843fa503f66421f03957",
45
45
  ".opencode/agents/openspec-author.md": "ca7cb79e53df950fc3d757152a49654bb78f2eafbe1715e9fad1fdfdc7f1d65a",
46
46
  ".opencode/agents/performance-auditor.md": "9ee4cfda3823a2d918e5b7276296c39b8fbea18c61f837f4e0ced22db1435bdf",
47
47
  ".opencode/agents/playwright-test-generator.md": "9773c0e8804b77a48b5b267b74ad6709947d4c87049a104097d1dd83ac98ea6b",
@@ -73,14 +73,15 @@
73
73
  ".opencode/rules/architecture-boundaries.md": "81d7063f9bb96b7bd196c7a00f070364ef447c2c601180cc4fd50f2069043776",
74
74
  ".opencode/rules/arrow-functions.md": "371dd977ee7810224a4db127c18acdf3f52b5dc9e15f3328b7fb9d627376f6e6",
75
75
  ".opencode/rules/code-quality-and-refactoring.md": "b407cc650bc7b52415d499c815e1873690cb8d46932f16acc61a576bfdfb0b66",
76
- ".opencode/rules/code-review-mr.md": "cc429d9057982748a116cd81cbe50747f94019e9a8e9f4766e28e3dc49a595c0",
76
+ ".opencode/rules/code-review-mr.md": "f57d17d9714c10cd210b98d3028b9248003031fa1c13403a4c5ba1449ed32338",
77
77
  ".opencode/rules/css-property-order-stylelint.md": "e6c9c1d7fbce85e326137e6f24d28be388742c50360ee6a1b527983428ddae5c",
78
78
  ".opencode/rules/design-guidance.md": "b2798a1746fcd5d3c6a976ffb66bb5b09c4f1e4c4c4f2496a2361a8ca53c0e43",
79
- ".opencode/rules/feature-delivery-workflow.md": "74a1b14c20cf8cb2fc3148ffb8bb9bd84694189734ac5f551eabeff2a83955c4",
79
+ ".opencode/rules/design-tokens-binding.md": "e007681f7ece3f0e97a52c8fa5480b9d5e0ff69213e6959201fb13e901743c50",
80
+ ".opencode/rules/feature-delivery-workflow.md": "8ac03f4d0eb566107d543230a64fa093e8d5224e60cd7a9f103094db7ca4eab8",
80
81
  ".opencode/rules/http-client.md": "1a536b4a3ac0552ff5c43cfb4eb26e93df8335d1e5512add100910ddfc97a974",
81
82
  ".opencode/rules/layer-barrel-exports.md": "5ac77886e75b7399078a6106682c6b2e5dc347b2ad631762ca38608f353060b8",
82
83
  ".opencode/rules/mcp-usage.md": "0726fa82721b16e0eeca6f32493f0e4411cf8e9ddc60f687c5d4a0357d8660eb",
83
- ".opencode/rules/mockup-review.md": "0910adcd6e93efe06d8a668a05df2448202747d790fc99e6ee9194ec56696a1d",
84
+ ".opencode/rules/mockup-review.md": "cfe68dbb21ff45c905b6cbf973755bdf8658106d14a5a38888f67ad8d3ffa69d",
84
85
  ".opencode/rules/navigation-router-stack.md": "4ae8b647e2b082d6c58f4e99f0b6351e406af2090913d1e74a5777a414788f25",
85
86
  ".opencode/rules/navigation-router-ui.md": "99a12c69ae13526eff19d154972dcf5c0f1355f51b8be70ab226280a77deb386",
86
87
  ".opencode/rules/next-app-core.md": "6ad62c8966f7b5fb1871cc8d3ba1d453f66c04bee3d177feb9c6ff512fd3ea2e",
@@ -92,7 +93,7 @@
92
93
  ".opencode/rules/post-change-lint.md": "b7eadecc765f5506f140a0bc5e43569656389d071c581220adaedc9365a9c962",
93
94
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
94
95
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
95
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
96
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
96
97
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
97
98
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
98
99
  ".opencode/rules/product-specs-authoring.md": "e355387117e689cd957ec02a0c7c306014f7a21cdcaf0e85f57858c12ad0911e",
@@ -100,7 +101,7 @@
100
101
  ".opencode/rules/public-imports.md": "e74f4b88cb193c8889985c683c5c7c6f676760b5a7790a659a73cbd8f6722e4b",
101
102
  ".opencode/rules/react-a11y-coding.md": "7b1070bcff701bafc821cdca0e7c6a1d8ce4957ef9d9bb888987ce1097b36f78",
102
103
  ".opencode/rules/react-next-anti-hallucination.md": "cc33ebfb1cbebbc7b720020ce079ce3ff99540546011bd015fe59bd72bc5b391",
103
- ".opencode/rules/react-ui.md": "69e79ec9645cdd7ec33c023ba637836dd0b30e986e88e634ec660993c413d56a",
104
+ ".opencode/rules/react-ui.md": "225a258c276d5196d4cb959d9bad8ce4e9d0168f3a5467d2ce0bc3ca8d37f840",
104
105
  ".opencode/rules/reference-features.md": "59db0c3623b16a775ab1defc8dc157c8e19dff475319841db0b6c701b5946dbf",
105
106
  ".opencode/rules/security-next.md": "812bd7aaeab276c270823d27aad61b51d0d7c2e4293c0ec4611809a724094d4b",
106
107
  ".opencode/rules/store-rtk.md": "ff6059aada9278e21a965a2ef24e0112ab85aad5178458d99c2a8c6389a3374b",
@@ -111,7 +112,7 @@
111
112
  ".opencode/rules/ux-design.md": "a62ef0c176f0615c4a27ff3c5859eb858be5a8e28de430a41be4504f5f2fd960",
112
113
  ".opencode/skills/README.md": "7451034e0f64ca3a525c513f345a1a5c7a5d4f680dc823eb9c4d70de502b1c43",
113
114
  ".opencode/skills/ci-investigation/SKILL.md": "10cb4de47b4ad280560616b2ae7b48190b61f576bd0e83bef63a723984f42419",
114
- ".opencode/skills/code-review/SKILL.md": "95ffa958206570ed461894d8e57415227f6578be6c8be3b2d7086492a48e3686",
115
+ ".opencode/skills/code-review/SKILL.md": "9ff6e5370cbabae19313fe7f7d221cb35d527090f78df32f7738bdf6fe1b1bed",
115
116
  ".opencode/skills/debug-investigation/SKILL.md": "3330d9b3bf52c03a99f8a7b1ff728681b1d5b8209081fb990c74058d3a6e7af8",
116
117
  ".opencode/skills/feature-delivery/SKILL.md": "2e0be60a87d74447d6c6b6566962d2110f702f732976e9e6cdefdc4e8e59b67f",
117
118
  ".opencode/skills/mockup-review/SKILL.md": "e00b45d5e7118e52b1c884b317f55f02215a4da72783c3755e28a2200c49dbb2",
@@ -123,7 +124,7 @@
123
124
  ".opencode/skills/unit-testing/SKILL.md": "8db6c5ad659743f1c8a3a059963526a4e9896b52c130ef71e6e4f7174614c901",
124
125
  ".opencode/skills/ux-design/SKILL.md": "dcfd7714f6e203eba18b14b334baa872696141ca257c87a72e8a7a45c4f4c91a",
125
126
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
126
- "AGENTS.md": "2d3c64960ee9adb11d850ce5da390d3c9571d1e9a02f1fd7114f5ea68d00c6ff",
127
+ "AGENTS.md": "dbfbbb0fb243c67bed8c02dd2ba45dfc92163ebed8914d7dee6e8d359638ec08",
127
128
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
128
129
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
129
130
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -22,7 +22,7 @@
22
22
  ".ai.local/team/fixtures/mockup-review-standalone.json": "edda49b1298e94f9a33496317e9f6ccbbb047659e044e05ba35669bfe800eda6",
23
23
  ".ai.local/team/fixtures/ux-design-standalone.json": "528aeb9db4c310d1b5e3eacae0ad39a4fd1dd49c04154b064e7027981488a07a",
24
24
  ".ai.local/team/tasks/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
25
- ".opencode/AGENTS.md": "a8bc9e36213f911b122d223640a426eb0075f5398a07cdfa820d2c8fcb496b3e",
25
+ ".opencode/AGENTS.md": "e3ce15145d3bfb61f49a3d6ec88d5b1c9059f2020e2d7979720f55154c93c7b3",
26
26
  ".opencode/MCP.md": "a92adbb8a8868260e7787c1ddcc545e9db1c78dfc03342bbb9ddc5d01df666e0",
27
27
  ".opencode/agents/README.md": "59503137557da286b42ba49803ab6da019a217527b31b9e44d8710f4a01ba527",
28
28
  ".opencode/agents/accessibility-reviewer.md": "e07bc8a61fac7b300143bd212d31c15b2d8781a102a9b1a76c266303f8cec836",
@@ -84,7 +84,7 @@
84
84
  ".opencode/rules/post-change-lint.md": "b27a973ecd6fb56b975fdc76990ba3fab08b607f6e82d9d588b39195ee105192",
85
85
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
86
86
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
87
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
87
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
88
88
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
89
89
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
90
90
  ".opencode/rules/product-specs-authoring.md": "e355387117e689cd957ec02a0c7c306014f7a21cdcaf0e85f57858c12ad0911e",
@@ -116,7 +116,7 @@
116
116
  ".opencode/skills/ux-design/SKILL.md": "dcfd7714f6e203eba18b14b334baa872696141ca257c87a72e8a7a45c4f4c91a",
117
117
  ".opencode/skills/vue-performance/SKILL.md": "9ea6a8ed3f189c11c491b42236eaed80d9e6aa361f80a47d3f2414339b0b1710",
118
118
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
119
- "AGENTS.md": "8bfc1067490f22d34244a1fb4a5517723b33f7290d6517e21a89fd1d7e87ffe9",
119
+ "AGENTS.md": "ef3878bce75af832c1b81fe611d6db62df3e7460aabead207ec37f2f705a1e15",
120
120
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
121
121
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
122
122
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -9,7 +9,7 @@
9
9
  ".ai.local/team/fixtures/feature-full.json": "c6f391382221afcd0e1af4e780610361a83dc09c6926fc9e83fa1af213379432",
10
10
  ".ai.local/team/fixtures/feature-light.json": "aaf5b35d22527edf64b99683dc9d4f4bafefe1808d00db79a5d910ff96863f10",
11
11
  ".ai.local/team/fixtures/memlog.example.md": "9902c3a9d82334f3fdc44e60a8e6e904bc3575a772dfee42f3dc07f37c198e12",
12
- ".opencode/AGENTS.md": "641fdfd36dbbb31e90147f74cb5131db9dd1c7c11357fbde55debc09a9972d15",
12
+ ".opencode/AGENTS.md": "a6588c7a4d92518a5bef32c169ce20b2b519b1021038c3e0df96503c6e5ebed9",
13
13
  ".opencode/MCP.md": "f3fbf0631ca5cb25bbd8bc6a98ac31ff1d49f23f23c09aa29ef8ccefb69b1159",
14
14
  ".opencode/agents/README.md": "515e1d6731eb792b1ff88703bf0b34a0e651416f32ec8ee7c5ccd2f4e3cd7905",
15
15
  ".opencode/agents/api-contract-reviewer.md": "da236ffd9c6ad0dd1ce64d605577367f402c8286220fef2dec84fa2b49c67729",
@@ -69,7 +69,7 @@
69
69
  ".opencode/rules/post-change-test.md": "f327605a74be5218fdb46f0075182bcd45e6ed25f2287981c4d4c2c76d600018",
70
70
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
71
71
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
72
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
72
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
73
73
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
74
74
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
75
75
  ".opencode/rules/product-specs-authoring.md": "6b7b7bb5b04ba12d93c63908304dc5342803728eb79e386ea018a7d51e501079",
@@ -91,7 +91,7 @@
91
91
  ".opencode/skills/technical-retro/SKILL.md": "562fd8e92da2b00b42f6ed64210c973e8bea9f41cd30a29b3b36df50fe4f26e1",
92
92
  ".opencode/skills/unit-testing/SKILL.md": "72b023f8126cc488e473eea296b41124336a3adf5816ba0b5aca5af404bce529",
93
93
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
94
- "AGENTS.md": "d2256a4628b983c5419111dd338c02bcbb1520eae77fb2ef1b1a9d1a02bb47e8",
94
+ "AGENTS.md": "4cb3bbfcff5555b9f004a85e4abbc07a6d0daaaa2001ac642ce218db75251d6e",
95
95
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
96
96
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
97
97
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -9,7 +9,7 @@
9
9
  ".ai.local/team/fixtures/feature-full.json": "e94266fbbc418324113535115b8f800757ac00c03a0f45ac1b2e67199038af14",
10
10
  ".ai.local/team/fixtures/feature-light.json": "759f7a4d9ceaf786dcb8fd20bae1e4e6ef20c9f8c43fd07cc528a6a742973bdb",
11
11
  ".ai.local/team/fixtures/memlog.example.md": "9902c3a9d82334f3fdc44e60a8e6e904bc3575a772dfee42f3dc07f37c198e12",
12
- ".opencode/AGENTS.md": "ba0b76132358ea9f5d79caf3a5e2a3e2341abb4bd671bf9ed315cd9fd794f1ba",
12
+ ".opencode/AGENTS.md": "45ce08cb8222984762674cd59e72318aab98c19c88f095ae46ad59932d0415f7",
13
13
  ".opencode/MCP.md": "82420d33d4b50e9f082b2a65c62657592f6eb541034771811c13015f9bd36660",
14
14
  ".opencode/agents/README.md": "b49bff590381deb0841766c785c4124a590315080b363f373416f445a630153c",
15
15
  ".opencode/agents/api-contract-reviewer.md": "aae9e9e4a831658ec193ce72d549023c7d8b11cafc2569ce07eb964a353bf1f0",
@@ -67,7 +67,7 @@
67
67
  ".opencode/rules/post-change-test.md": "8a64e8949ac6982f928e021df593c5e9f2cbb726686f2fb9c3030ea4a321caab",
68
68
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
69
69
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
70
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
70
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
71
71
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
72
72
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
73
73
  ".opencode/rules/product-specs-authoring.md": "4bb81868e2619b8d562237cf8aa59c0e87c04e8302094dd1e0b3e1e36064808c",
@@ -91,7 +91,7 @@
91
91
  ".opencode/skills/technical-retro/SKILL.md": "562fd8e92da2b00b42f6ed64210c973e8bea9f41cd30a29b3b36df50fe4f26e1",
92
92
  ".opencode/skills/unit-testing/SKILL.md": "340ea9325aa9a4bf3de6f5d12ae5a398bd322a7966dd1dcf9ef9fb067aa30131",
93
93
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
94
- "AGENTS.md": "c30b6d08e70957b1c465f503171d4228a1b08214c993e32ed8943ac0351c3b8e",
94
+ "AGENTS.md": "2ee548a8f46999274ca490699524050dfc7602481b0b03dacb90e555ebdec0ec",
95
95
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
96
96
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
97
97
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -22,7 +22,7 @@
22
22
  ".ai.local/team/fixtures/mockup-review-standalone.json": "edda49b1298e94f9a33496317e9f6ccbbb047659e044e05ba35669bfe800eda6",
23
23
  ".ai.local/team/fixtures/ux-design-standalone.json": "528aeb9db4c310d1b5e3eacae0ad39a4fd1dd49c04154b064e7027981488a07a",
24
24
  ".ai.local/team/tasks/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
25
- ".opencode/AGENTS.md": "4029dd11c8f36c589eef47490c816340df4c2f7594d644c950d47f20f76808cc",
25
+ ".opencode/AGENTS.md": "e52d6380b1d7c33dc0c819eb88b535ec28c4376016e0751e91877313de6bd0a2",
26
26
  ".opencode/MCP.md": "3a27ce1483e2c6df44a531556738558898f50a20e16450bea02f620c0ad84b54",
27
27
  ".opencode/agents/README.md": "8a9a4307b5326db65490cd73ff1e309d9bc8a678477d51b358b86dbc388d9b61",
28
28
  ".opencode/agents/accessibility-reviewer.md": "d659f901142486a3240262571f63ab1991565ab6d360f61efaf64028b4134a20",
@@ -82,7 +82,7 @@
82
82
  ".opencode/rules/post-change-lint.md": "3781dff4d33b8e9d6c34e0f027450c3d5f8c25a69a67a2e002552ab452bdbd69",
83
83
  ".opencode/rules/preset-layering.md": "c63d6b6aa921b70c6c9b531e9d9bcb8b3d81b6a6354da9e4109b5149f5cb8a73",
84
84
  ".opencode/rules/preset-no-cross-stack-leakage.md": "8933a929a78af3585c7b546736dc8d068bf9ff2f925c9fccbbdcf82d624d20a0",
85
- ".opencode/rules/preset-pr-checklist.md": "6dcfb78d2cf68c11944243e3e4e10f6be210a4dad1497986f4aa439d1c04543f",
85
+ ".opencode/rules/preset-pr-checklist.md": "014c6bfb23b3db0ec5f46b5cbff8effe7126a1e680103f8e3cdbfaba280eabd3",
86
86
  ".opencode/rules/preset-token-budget.md": "d539545f8ab0dc6117f87c76c044fce9a01256d8cdea8a63b69ff48ccb8b7ac0",
87
87
  ".opencode/rules/preset-twin-sync.md": "b3061cbb09ff75ecb47e98b7f7fa351240866ee8962a1d128b7c15206ef89dee",
88
88
  ".opencode/rules/product-specs-authoring.md": "e355387117e689cd957ec02a0c7c306014f7a21cdcaf0e85f57858c12ad0911e",
@@ -116,7 +116,7 @@
116
116
  ".opencode/skills/unit-testing/SKILL.md": "c70f54921d0d90bd4d0f5305317e80dd3517a60b05f3fbc31dc8527eaf75d19d",
117
117
  ".opencode/skills/ux-design/SKILL.md": "dcfd7714f6e203eba18b14b334baa872696141ca257c87a72e8a7a45c4f4c91a",
118
118
  ".opencode/skills/write-adr/SKILL.md": "3daf61c8d97a7e868e5fe5323f1cfa76dd5b298ea5cb110a9da83884d8d602da",
119
- "AGENTS.md": "16e16975c1054cd20df6aae7780d879f7477c6dc4144ed8f12dab9249ee3f580",
119
+ "AGENTS.md": "0f30e6c4a6c5d3b6cf6460e0e04f2f0c5af780dd98cf04b8e710f98321a87aac",
120
120
  "docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
121
121
  "docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
122
122
  "docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54",
@@ -166,13 +166,20 @@ Do not write \`~/.minimax/**\`.
166
166
  - Roles: \`mcode exec --file .mavis/agents/<role>.md --output-format json\`.
167
167
  - Commands: natural-language procedures in \`.mavis/commands/\`, or
168
168
  \`mcode exec --file .mavis/commands/task.md "<task>"\`.
169
- - After a producer receipt, run \`bash .mavis/hooks/chain-team-phases.sh\`.
169
+ - After a producer receipt, run the chain by hand (\`projectHooks\` is \`manual\`, not auto-registered):
170
+ \`printf '%s\\n' '{"status":"completed"}' | bash .mavis/hooks/chain-team-phases.sh\`.
171
+ Procedures: \`mcode exec --file .mavis/commands/<name>.md\`. Roles: \`mcode exec --file .mavis/agents/<role>.md\`.
170
172
  Agents must not write lifecycle fields in \`status.json\` / \`metrics.json\`.
171
173
 
172
174
  ## Essential rules (read every turn)
173
175
 
174
176
  ${essential}
175
177
 
178
+ Every turn, probe \`ls -la .ai.local\`, then apply \`.ai.local/rules/*.md\` and
179
+ \`.ai.local/conventions.md\`. Acknowledge \`Using .ai.local: <rule-name>\`.
180
+ Guide: \`docs/LOCAL-OVERLAY.md\`. These essential rules are a prompt contract.
181
+ \`nativeProjectRules\` is \`unknown\` — do not claim engine \`alwaysApply\`.
182
+
176
183
  See \`.mavis/rules/README.md\` for the full catalog and loading strategy.
177
184
 
178
185
  ## Harness wiring
@@ -203,6 +210,8 @@ npx @bonesofspring/ai-rules init mavis --preset ${stack}
203
210
  Copies rules, commands, agents, hooks, skills, \`MAVIS.md\` → \`.mavis/AGENTS.md\`,
204
211
  \`MCP.md\`, \`mcp.json\` → \`.mavis/mcp.json\`, plus \`REPO_AGENTS.md\` → root \`AGENTS.md\`.
205
212
  Seeds \`.ai.local/team/\`.
213
+ \`freshInit\` is \`unknown\`: \`mcode init\` is TTY-only and a live first \`init mavis\` is not verified.
214
+ MCP mode is \`fallback-manual-import\`: import \`.mavis/mcp.json\` in the MiniMax Code UI. Do not write \`~/.minimax/**\`.
206
215
  ${skillsLine}
207
216
  `;
208
217
  }
@@ -272,13 +272,20 @@ Root \`AGENTS.md\` is native always-on. Read it first, then this file.
272
272
  - Other rules: lazy \`Read\` \`.opencode/rules/<stem>.md\` when the task matches.
273
273
  - Agents: native \`@name\` / Task from \`.opencode/agents/\`.
274
274
  - Commands: native \`/task\` from \`.opencode/commands/\`.
275
- - After a producer receipt, run \`bash .opencode/hooks/chain-team-phases.sh\`.
275
+ - After a producer receipt, run the chain by hand (\`projectHooks\` is \`manual\`; this preset ships no plugin):
276
+ \`printf '%s\\n' '{"status":"completed"}' | bash .opencode/hooks/chain-team-phases.sh\`.
277
+ Slash commands are native (\`/task\` from \`.opencode/commands/\`). Do not assume \`SubagentStop\` auto-chain.
276
278
  Agents must not write lifecycle fields in \`status.json\` / \`metrics.json\`.
277
279
 
278
280
  ## Essential rules (read every turn)
279
281
 
280
282
  ${essential}
281
283
 
284
+ Every turn, probe \`ls -la .ai.local\`, then apply \`.ai.local/rules/*.md\` and
285
+ \`.ai.local/conventions.md\`. Acknowledge \`Using .ai.local: <rule-name>\`.
286
+ Guide: \`docs/LOCAL-OVERLAY.md\`. These essential rules are a prompt contract.
287
+ \`nativeProjectRules\` is \`no-equivalent\` — do not claim engine \`alwaysApply\`.
288
+
282
289
  See \`.opencode/rules/README.md\` for the full catalog and loading strategy.
283
290
 
284
291
  ## Harness wiring
@@ -37,9 +37,34 @@ function buildClaudePermissions(bashPermission) {
37
37
  function sync(stack) {
38
38
  const profile = getStackProfile(stack);
39
39
  const permissions = buildClaudePermissions(profile.bashPermission);
40
+ const hookCommand = (script) =>
41
+ `\${CLAUDE_PROJECT_DIR}/.claude/hooks/${script}`;
40
42
  const settings = {
41
43
  $schema: 'https://json.schemastore.org/claude-code-settings.json',
42
44
  permissions,
45
+ hooks: {
46
+ PreToolUse: [
47
+ {
48
+ matcher: 'Bash',
49
+ hooks: [
50
+ {
51
+ type: 'command',
52
+ command: hookCommand('guard-shell-command.sh'),
53
+ },
54
+ ],
55
+ },
56
+ ],
57
+ SubagentStop: [
58
+ {
59
+ hooks: [
60
+ {
61
+ type: 'command',
62
+ command: hookCommand('chain-team-phases.sh'),
63
+ },
64
+ ],
65
+ },
66
+ ],
67
+ },
43
68
  };
44
69
  const dest = path.join(presetsRoot, 'claude', stack, 'settings.json');
45
70
  fs.mkdirSync(path.dirname(dest), { recursive: true });
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env bash
2
+ # Sync monorepo dogfood root `.claude/` from Claude next preset (packages SoT).
3
+ # Also syncs repo-root AGENTS.md from REPO_AGENTS.md and project `.mcp.json`.
4
+ # Usage (from repo root or any cwd):
5
+ # ./packages/ai-rules/scripts/sync-dogfood-claude.sh
6
+ # AI_RULES_DOGFOOD_PRESET=ios-swift ./packages/ai-rules/scripts/sync-dogfood-claude.sh
7
+ #
8
+ # Note: this monorepo dogfood stays `next` (do not sync other released stacks here).
9
+ set -euo pipefail
10
+
11
+ ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
12
+ PRESET_NAME="${AI_RULES_DOGFOOD_PRESET:-next}"
13
+ SRC="$ROOT/packages/ai-rules/presets/claude/$PRESET_NAME"
14
+ DST="$ROOT/.claude"
15
+
16
+ if [[ ! -d "$SRC" ]]; then
17
+ echo "error: preset not found: $SRC" >&2
18
+ exit 1
19
+ fi
20
+
21
+ echo "Dogfood sync: $SRC → $DST (preset=$PRESET_NAME)"
22
+
23
+ mkdir -p "$DST"
24
+
25
+ for f in CLAUDE.md MCP.md settings.json README.md; do
26
+ if [[ -f "$SRC/$f" ]]; then
27
+ cp "$SRC/$f" "$DST/$f"
28
+ fi
29
+ done
30
+
31
+ if [[ -f "$SRC/REPO_AGENTS.md" ]]; then
32
+ cp "$SRC/REPO_AGENTS.md" "$ROOT/AGENTS.md"
33
+ echo "Copied REPO_AGENTS.md → $ROOT/AGENTS.md"
34
+ fi
35
+
36
+ # Claude init copies mcp.json to the project-root `.mcp.json` (not under .claude/).
37
+ if [[ -f "$SRC/mcp.json" ]]; then
38
+ cp "$SRC/mcp.json" "$ROOT/.mcp.json"
39
+ echo "Copied mcp.json → $ROOT/.mcp.json"
40
+ fi
41
+
42
+ for dir in agents commands hooks rules skills; do
43
+ if [[ -d "$SRC/$dir" ]]; then
44
+ mkdir -p "$DST/$dir"
45
+ rsync -a --delete "$SRC/$dir/" "$DST/$dir/"
46
+ fi
47
+ done
48
+
49
+ if [[ -f "$DST/hooks/chain-team-phases.sh" ]]; then
50
+ chmod +x "$DST/hooks/chain-team-phases.sh"
51
+ fi
52
+ if [[ -f "$DST/hooks/guard-shell-command.sh" ]]; then
53
+ chmod +x "$DST/hooks/guard-shell-command.sh"
54
+ fi
55
+
56
+ node -e "
57
+ const { seedAiLocalTeam } = require(process.argv[1]);
58
+ seedAiLocalTeam({ cwd: process.argv[2], presetTeamSrc: process.argv[3] });
59
+ " "$ROOT/packages/ai-rules/bin/lib/seed-ai-local-team.js" "$ROOT" "$SRC/team"
60
+
61
+ echo "Done. Review: git status -- .claude/ AGENTS.md .mcp.json .ai.local/team"
62
+ echo "Tip: run packages/ai-rules/scripts/check-shared-core-drift.sh after core edits."
@@ -33,9 +33,10 @@ assert.equal(
33
33
  false,
34
34
  'Mavis must not ship hooks.json',
35
35
  );
36
- assert.equal(contract.nativeCapabilities.projectHooks.status, 'unknown');
36
+ assert.equal(contract.nativeCapabilities.projectHooks.status, 'manual');
37
+ assert.equal(contract.nativeCapabilities.freshInit.status, 'unknown');
37
38
  assert.equal(contract.mcp.mode, 'fallback-manual-import');
38
- console.log('ok P3 semi-auto: projectHooks unknown, no hooks.json');
39
+ console.log('ok P3 semi-auto: projectHooks manual, freshInit unknown, no hooks.json');
39
40
 
40
41
  function readJson(filePath) {
41
42
  return JSON.parse(fs.readFileSync(filePath, 'utf8'));