@bonesofspring/ai-rules 0.2.22 → 0.2.24

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 (429) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +10 -2
  3. package/bin/cli.js +56 -9
  4. package/bin/mavis-install.js +441 -0
  5. package/bin/opencode-install.js +531 -0
  6. package/package.json +17 -3
  7. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +2 -2
  8. package/presets/_shared/core/meta/preset-layering.md +3 -3
  9. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +1 -1
  10. package/presets/_shared/core/meta/preset-pr-checklist.md +5 -3
  11. package/presets/_shared/core/meta/preset-token-budget.md +3 -0
  12. package/presets/_shared/core/meta/preset-twin-sync.md +32 -0
  13. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +3 -3
  14. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  15. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  16. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +3 -0
  17. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +32 -0
  18. package/presets/claude/go/rules/tooling-and-review/preset-layering.md +3 -3
  19. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  20. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  21. package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +3 -0
  22. package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +32 -0
  23. package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +3 -3
  24. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  25. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  26. package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +3 -0
  27. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +32 -0
  28. package/presets/claude/java/rules/tooling-and-review/preset-layering.md +3 -3
  29. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  30. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  31. package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +3 -0
  32. package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +32 -0
  33. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +3 -3
  34. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  35. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  36. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +3 -0
  37. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +32 -0
  38. package/presets/claude/next/REPO_AGENTS.md +10 -5
  39. package/presets/claude/next/agents/build-verifier.md +3 -1
  40. package/presets/claude/next/rules/tooling-and-review/ai-local-overlay.md +1 -1
  41. package/presets/claude/next/rules/tooling-and-review/preset-layering.md +3 -3
  42. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  43. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  44. package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +3 -0
  45. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +32 -0
  46. package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +3 -3
  47. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  48. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  49. package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +3 -0
  50. package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +32 -0
  51. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +3 -3
  52. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  53. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  54. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +3 -0
  55. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +32 -0
  56. package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +3 -3
  57. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  58. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  59. package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +3 -0
  60. package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +32 -0
  61. package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +3 -3
  62. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
  63. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +5 -3
  64. package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +3 -0
  65. package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +32 -0
  66. package/presets/cursor/android-kotlin/rules/preset-layering.mdc +3 -3
  67. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +1 -1
  68. package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +5 -3
  69. package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +3 -0
  70. package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +32 -0
  71. package/presets/cursor/go/rules/preset-layering.mdc +3 -3
  72. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +1 -1
  73. package/presets/cursor/go/rules/preset-pr-checklist.mdc +5 -3
  74. package/presets/cursor/go/rules/preset-token-budget.mdc +3 -0
  75. package/presets/cursor/go/rules/preset-twin-sync.mdc +32 -0
  76. package/presets/cursor/ios-swift/rules/preset-layering.mdc +3 -3
  77. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +1 -1
  78. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +5 -3
  79. package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +3 -0
  80. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +32 -0
  81. package/presets/cursor/java/rules/preset-layering.mdc +3 -3
  82. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +1 -1
  83. package/presets/cursor/java/rules/preset-pr-checklist.mdc +5 -3
  84. package/presets/cursor/java/rules/preset-token-budget.mdc +3 -0
  85. package/presets/cursor/java/rules/preset-twin-sync.mdc +32 -0
  86. package/presets/cursor/mcp-ts/rules/preset-layering.mdc +3 -3
  87. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +1 -1
  88. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +5 -3
  89. package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +3 -0
  90. package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +32 -0
  91. package/presets/cursor/next/REPO_AGENTS.md +10 -5
  92. package/presets/cursor/next/agents/build-verifier.md +3 -1
  93. package/presets/cursor/next/rules/ai-local-overlay.mdc +1 -1
  94. package/presets/cursor/next/rules/preset-layering.mdc +3 -3
  95. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +1 -1
  96. package/presets/cursor/next/rules/preset-pr-checklist.mdc +5 -3
  97. package/presets/cursor/next/rules/preset-token-budget.mdc +3 -0
  98. package/presets/cursor/next/rules/preset-twin-sync.mdc +32 -0
  99. package/presets/cursor/nuxt/rules/preset-layering.mdc +3 -3
  100. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +1 -1
  101. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +5 -3
  102. package/presets/cursor/nuxt/rules/preset-token-budget.mdc +3 -0
  103. package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +32 -0
  104. package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +3 -3
  105. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +1 -1
  106. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +5 -3
  107. package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +3 -0
  108. package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +32 -0
  109. package/presets/cursor/php-laravel/rules/preset-layering.mdc +3 -3
  110. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +1 -1
  111. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +5 -3
  112. package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +3 -0
  113. package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +32 -0
  114. package/presets/cursor/svelte/rules/preset-layering.mdc +3 -3
  115. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +1 -1
  116. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +5 -3
  117. package/presets/cursor/svelte/rules/preset-token-budget.mdc +3 -0
  118. package/presets/cursor/svelte/rules/preset-twin-sync.mdc +32 -0
  119. package/presets/mavis/README.md +60 -0
  120. package/presets/mavis/next/MAVIS.md +67 -0
  121. package/presets/mavis/next/MCP.md +36 -0
  122. package/presets/mavis/next/README.md +15 -0
  123. package/presets/mavis/next/REPO_AGENTS.md +96 -0
  124. package/presets/mavis/next/adapter-map.json +959 -0
  125. package/presets/mavis/next/agents/README.md +206 -0
  126. package/presets/mavis/next/agents/accessibility-reviewer.md +61 -0
  127. package/presets/mavis/next/agents/api-contract-reviewer.md +57 -0
  128. package/presets/mavis/next/agents/build-verifier.md +112 -0
  129. package/presets/mavis/next/agents/ci-investigator.md +63 -0
  130. package/presets/mavis/next/agents/code-reviewer.md +61 -0
  131. package/presets/mavis/next/agents/codebase-analyzer.md +21 -0
  132. package/presets/mavis/next/agents/debugger.md +80 -0
  133. package/presets/mavis/next/agents/feature-developer.md +101 -0
  134. package/presets/mavis/next/agents/migration-specialist.md +67 -0
  135. package/presets/mavis/next/agents/mockup-reviewer.md +53 -0
  136. package/presets/mavis/next/agents/openspec-author.md +157 -0
  137. package/presets/mavis/next/agents/performance-auditor.md +68 -0
  138. package/presets/mavis/next/agents/playwright-test-generator.md +28 -0
  139. package/presets/mavis/next/agents/playwright-test-healer.md +28 -0
  140. package/presets/mavis/next/agents/playwright-test-planner.md +21 -0
  141. package/presets/mavis/next/agents/qa-tester.md +52 -0
  142. package/presets/mavis/next/agents/security-reviewer.md +54 -0
  143. package/presets/mavis/next/agents/solution-architect.md +68 -0
  144. package/presets/mavis/next/agents/task-analyst.md +166 -0
  145. package/presets/mavis/next/agents/task-router.md +178 -0
  146. package/presets/mavis/next/agents/tech-writer.md +57 -0
  147. package/presets/mavis/next/agents/unit-test-generator.md +31 -0
  148. package/presets/mavis/next/agents/unit-test-healer.md +32 -0
  149. package/presets/mavis/next/agents/unit-test-planner.md +54 -0
  150. package/presets/mavis/next/commands/README.md +49 -0
  151. package/presets/mavis/next/commands/spec-start.md +24 -0
  152. package/presets/mavis/next/commands/task-continue.md +50 -0
  153. package/presets/mavis/next/commands/task.md +50 -0
  154. package/presets/mavis/next/commands/technical-retro.md +80 -0
  155. package/presets/mavis/next/hooks/README.md +22 -0
  156. package/presets/mavis/next/hooks/chain-team-phases.sh +845 -0
  157. package/presets/mavis/next/mcp.json +19 -0
  158. package/presets/mavis/next/rules/README.md +16 -0
  159. package/presets/mavis/next/rules/agent-team-intake.md +11 -0
  160. package/presets/mavis/next/rules/agent-team-orchestrator.md +210 -0
  161. package/presets/mavis/next/rules/ai-local-overlay.md +37 -0
  162. package/presets/mavis/next/rules/anti-sycophancy-discipline.md +23 -0
  163. package/presets/mavis/next/rules/api-services.md +72 -0
  164. package/presets/mavis/next/rules/architecture-boundaries-ui.md +9 -0
  165. package/presets/mavis/next/rules/architecture-boundaries.md +86 -0
  166. package/presets/mavis/next/rules/arrow-functions.md +25 -0
  167. package/presets/mavis/next/rules/code-quality-and-refactoring.md +40 -0
  168. package/presets/mavis/next/rules/code-review-mr.md +40 -0
  169. package/presets/mavis/next/rules/css-property-order-stylelint.md +5 -0
  170. package/presets/mavis/next/rules/design-guidance.md +99 -0
  171. package/presets/mavis/next/rules/feature-delivery-workflow.md +49 -0
  172. package/presets/mavis/next/rules/http-client.md +55 -0
  173. package/presets/mavis/next/rules/layer-barrel-exports.md +68 -0
  174. package/presets/mavis/next/rules/mcp-usage.md +86 -0
  175. package/presets/mavis/next/rules/mockup-review.md +107 -0
  176. package/presets/mavis/next/rules/navigation-router-stack.md +56 -0
  177. package/presets/mavis/next/rules/navigation-router-ui.md +10 -0
  178. package/presets/mavis/next/rules/next-app-core.md +29 -0
  179. package/presets/mavis/next/rules/next-app-router.md +44 -0
  180. package/presets/mavis/next/rules/no-props-spread.md +56 -0
  181. package/presets/mavis/next/rules/no-type-assertion-as-import-export.md +51 -0
  182. package/presets/mavis/next/rules/package-manager.md +11 -0
  183. package/presets/mavis/next/rules/playwright-agents.md +67 -0
  184. package/presets/mavis/next/rules/post-change-lint.md +35 -0
  185. package/presets/mavis/next/rules/preset-layering.md +27 -0
  186. package/presets/mavis/next/rules/preset-no-cross-stack-leakage.md +90 -0
  187. package/presets/mavis/next/rules/preset-pr-checklist.md +36 -0
  188. package/presets/mavis/next/rules/preset-token-budget.md +39 -0
  189. package/presets/mavis/next/rules/preset-twin-sync.md +81 -0
  190. package/presets/mavis/next/rules/product-specs-authoring.md +112 -0
  191. package/presets/mavis/next/rules/product-specs.md +56 -0
  192. package/presets/mavis/next/rules/public-imports.md +50 -0
  193. package/presets/mavis/next/rules/react-a11y-coding.md +31 -0
  194. package/presets/mavis/next/rules/react-next-anti-hallucination.md +60 -0
  195. package/presets/mavis/next/rules/react-ui.md +105 -0
  196. package/presets/mavis/next/rules/reference-features.md +45 -0
  197. package/presets/mavis/next/rules/security-next.md +45 -0
  198. package/presets/mavis/next/rules/store-rtk.md +78 -0
  199. package/presets/mavis/next/rules/technical-retro.md +11 -0
  200. package/presets/mavis/next/rules/tests-e2e-structure.md +72 -0
  201. package/presets/mavis/next/rules/tests-unit.md +72 -0
  202. package/presets/mavis/next/rules/types-jsdoc.md +43 -0
  203. package/presets/mavis/next/rules/ux-design.md +99 -0
  204. package/presets/mavis/next/skills/README.md +21 -0
  205. package/presets/mavis/next/skills/ci-investigation/SKILL.md +39 -0
  206. package/presets/mavis/next/skills/code-review/SKILL.md +39 -0
  207. package/presets/mavis/next/skills/debug-investigation/SKILL.md +26 -0
  208. package/presets/mavis/next/skills/feature-delivery/SKILL.md +34 -0
  209. package/presets/mavis/next/skills/mockup-review/SKILL.md +24 -0
  210. package/presets/mavis/next/skills/playwright-e2e/SKILL.md +28 -0
  211. package/presets/mavis/next/skills/react-performance/SKILL.md +39 -0
  212. package/presets/mavis/next/skills/spec-authoring/SKILL.md +21 -0
  213. package/presets/mavis/next/skills/spec-discovery/SKILL.md +53 -0
  214. package/presets/mavis/next/skills/technical-retro/SKILL.md +49 -0
  215. package/presets/mavis/next/skills/unit-testing/SKILL.md +29 -0
  216. package/presets/mavis/next/skills/ux-design/SKILL.md +31 -0
  217. package/presets/mavis/next/skills/write-adr/SKILL.md +36 -0
  218. package/presets/mavis/next/team/README.md +148 -0
  219. package/presets/mavis/next/team/conventions.md +21 -0
  220. package/presets/mavis/next/team/fixtures/artifact-manifest.example.json +79 -0
  221. package/presets/mavis/next/team/fixtures/bugfix-standard.json +25 -0
  222. package/presets/mavis/next/team/fixtures/feature-full.json +29 -0
  223. package/presets/mavis/next/team/fixtures/feature-light.json +27 -0
  224. package/presets/mavis/next/team/fixtures/feature-with-figma-url.json +17 -0
  225. package/presets/mavis/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
  226. package/presets/mavis/next/team/fixtures/memlog.example.md +9 -0
  227. package/presets/mavis/next/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  228. package/presets/mavis/next/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  229. package/presets/mavis/next/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  230. package/presets/mavis/next/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  231. package/presets/mavis/next/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  232. package/presets/mavis/next/team/fixtures/metrics.example.json +54 -0
  233. package/presets/mavis/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  234. package/presets/mavis/next/team/fixtures/mockup-review-standalone.json +14 -0
  235. package/presets/mavis/next/team/fixtures/ux-design-standalone.json +15 -0
  236. package/presets/mavis/next/team/tasks/.gitkeep +0 -0
  237. package/presets/mavis/platform-contract.json +131 -0
  238. package/presets/opencode/README.md +61 -0
  239. package/presets/opencode/next/MCP.md +36 -0
  240. package/presets/opencode/next/OPENCODE.md +65 -0
  241. package/presets/opencode/next/README.md +16 -0
  242. package/presets/opencode/next/REPO_AGENTS.md +97 -0
  243. package/presets/opencode/next/adapter-map.json +959 -0
  244. package/presets/opencode/next/agents/README.md +201 -0
  245. package/presets/opencode/next/agents/accessibility-reviewer.md +73 -0
  246. package/presets/opencode/next/agents/api-contract-reviewer.md +69 -0
  247. package/presets/opencode/next/agents/build-verifier.md +124 -0
  248. package/presets/opencode/next/agents/ci-investigator.md +71 -0
  249. package/presets/opencode/next/agents/code-reviewer.md +73 -0
  250. package/presets/opencode/next/agents/codebase-analyzer.md +33 -0
  251. package/presets/opencode/next/agents/debugger.md +88 -0
  252. package/presets/opencode/next/agents/feature-developer.md +109 -0
  253. package/presets/opencode/next/agents/migration-specialist.md +79 -0
  254. package/presets/opencode/next/agents/mockup-reviewer.md +65 -0
  255. package/presets/opencode/next/agents/openspec-author.md +169 -0
  256. package/presets/opencode/next/agents/performance-auditor.md +80 -0
  257. package/presets/opencode/next/agents/playwright-test-generator.md +36 -0
  258. package/presets/opencode/next/agents/playwright-test-healer.md +36 -0
  259. package/presets/opencode/next/agents/playwright-test-planner.md +33 -0
  260. package/presets/opencode/next/agents/qa-tester.md +60 -0
  261. package/presets/opencode/next/agents/security-reviewer.md +66 -0
  262. package/presets/opencode/next/agents/solution-architect.md +80 -0
  263. package/presets/opencode/next/agents/task-analyst.md +178 -0
  264. package/presets/opencode/next/agents/task-router.md +190 -0
  265. package/presets/opencode/next/agents/tech-writer.md +69 -0
  266. package/presets/opencode/next/agents/unit-test-generator.md +39 -0
  267. package/presets/opencode/next/agents/unit-test-healer.md +40 -0
  268. package/presets/opencode/next/agents/unit-test-planner.md +66 -0
  269. package/presets/opencode/next/commands/README.md +49 -0
  270. package/presets/opencode/next/commands/spec-start.md +32 -0
  271. package/presets/opencode/next/commands/task-continue.md +58 -0
  272. package/presets/opencode/next/commands/task.md +58 -0
  273. package/presets/opencode/next/commands/technical-retro.md +88 -0
  274. package/presets/opencode/next/hooks/README.md +22 -0
  275. package/presets/opencode/next/hooks/chain-team-phases.sh +845 -0
  276. package/presets/opencode/next/opencode.json +33 -0
  277. package/presets/opencode/next/rules/README.md +20 -0
  278. package/presets/opencode/next/rules/agent-team-intake.md +11 -0
  279. package/presets/opencode/next/rules/agent-team-orchestrator.md +214 -0
  280. package/presets/opencode/next/rules/ai-local-overlay.md +37 -0
  281. package/presets/opencode/next/rules/anti-sycophancy-discipline.md +23 -0
  282. package/presets/opencode/next/rules/api-services.md +72 -0
  283. package/presets/opencode/next/rules/architecture-boundaries-ui.md +9 -0
  284. package/presets/opencode/next/rules/architecture-boundaries.md +86 -0
  285. package/presets/opencode/next/rules/arrow-functions.md +25 -0
  286. package/presets/opencode/next/rules/code-quality-and-refactoring.md +40 -0
  287. package/presets/opencode/next/rules/code-review-mr.md +40 -0
  288. package/presets/opencode/next/rules/css-property-order-stylelint.md +5 -0
  289. package/presets/opencode/next/rules/design-guidance.md +99 -0
  290. package/presets/opencode/next/rules/feature-delivery-workflow.md +49 -0
  291. package/presets/opencode/next/rules/http-client.md +55 -0
  292. package/presets/opencode/next/rules/layer-barrel-exports.md +68 -0
  293. package/presets/opencode/next/rules/mcp-usage.md +86 -0
  294. package/presets/opencode/next/rules/mockup-review.md +107 -0
  295. package/presets/opencode/next/rules/navigation-router-stack.md +56 -0
  296. package/presets/opencode/next/rules/navigation-router-ui.md +10 -0
  297. package/presets/opencode/next/rules/next-app-core.md +29 -0
  298. package/presets/opencode/next/rules/next-app-router.md +44 -0
  299. package/presets/opencode/next/rules/no-props-spread.md +56 -0
  300. package/presets/opencode/next/rules/no-type-assertion-as-import-export.md +51 -0
  301. package/presets/opencode/next/rules/package-manager.md +11 -0
  302. package/presets/opencode/next/rules/playwright-agents.md +67 -0
  303. package/presets/opencode/next/rules/post-change-lint.md +35 -0
  304. package/presets/opencode/next/rules/preset-layering.md +27 -0
  305. package/presets/opencode/next/rules/preset-no-cross-stack-leakage.md +90 -0
  306. package/presets/opencode/next/rules/preset-pr-checklist.md +36 -0
  307. package/presets/opencode/next/rules/preset-token-budget.md +39 -0
  308. package/presets/opencode/next/rules/preset-twin-sync.md +81 -0
  309. package/presets/opencode/next/rules/product-specs-authoring.md +112 -0
  310. package/presets/opencode/next/rules/product-specs.md +56 -0
  311. package/presets/opencode/next/rules/public-imports.md +50 -0
  312. package/presets/opencode/next/rules/react-a11y-coding.md +31 -0
  313. package/presets/opencode/next/rules/react-next-anti-hallucination.md +60 -0
  314. package/presets/opencode/next/rules/react-ui.md +105 -0
  315. package/presets/opencode/next/rules/reference-features.md +45 -0
  316. package/presets/opencode/next/rules/security-next.md +45 -0
  317. package/presets/opencode/next/rules/store-rtk.md +78 -0
  318. package/presets/opencode/next/rules/technical-retro.md +11 -0
  319. package/presets/opencode/next/rules/tests-e2e-structure.md +72 -0
  320. package/presets/opencode/next/rules/tests-unit.md +72 -0
  321. package/presets/opencode/next/rules/types-jsdoc.md +43 -0
  322. package/presets/opencode/next/rules/ux-design.md +99 -0
  323. package/presets/opencode/next/skills/README.md +21 -0
  324. package/presets/opencode/next/skills/ci-investigation/SKILL.md +44 -0
  325. package/presets/opencode/next/skills/code-review/SKILL.md +44 -0
  326. package/presets/opencode/next/skills/debug-investigation/SKILL.md +59 -0
  327. package/presets/opencode/next/skills/feature-delivery/SKILL.md +39 -0
  328. package/presets/opencode/next/skills/mockup-review/SKILL.md +29 -0
  329. package/presets/opencode/next/skills/playwright-e2e/SKILL.md +33 -0
  330. package/presets/opencode/next/skills/react-performance/SKILL.md +44 -0
  331. package/presets/opencode/next/skills/spec-authoring/SKILL.md +26 -0
  332. package/presets/opencode/next/skills/spec-discovery/SKILL.md +58 -0
  333. package/presets/opencode/next/skills/technical-retro/SKILL.md +54 -0
  334. package/presets/opencode/next/skills/unit-testing/SKILL.md +34 -0
  335. package/presets/opencode/next/skills/ux-design/SKILL.md +36 -0
  336. package/presets/opencode/next/skills/write-adr/SKILL.md +41 -0
  337. package/presets/opencode/next/team/README.md +148 -0
  338. package/presets/opencode/next/team/conventions.md +21 -0
  339. package/presets/opencode/next/team/fixtures/artifact-manifest.example.json +79 -0
  340. package/presets/opencode/next/team/fixtures/bugfix-standard.json +25 -0
  341. package/presets/opencode/next/team/fixtures/feature-full.json +29 -0
  342. package/presets/opencode/next/team/fixtures/feature-light.json +27 -0
  343. package/presets/opencode/next/team/fixtures/feature-with-figma-url.json +17 -0
  344. package/presets/opencode/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
  345. package/presets/opencode/next/team/fixtures/memlog.example.md +9 -0
  346. package/presets/opencode/next/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
  347. package/presets/opencode/next/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
  348. package/presets/opencode/next/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
  349. package/presets/opencode/next/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
  350. package/presets/opencode/next/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
  351. package/presets/opencode/next/team/fixtures/metrics.example.json +54 -0
  352. package/presets/opencode/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  353. package/presets/opencode/next/team/fixtures/mockup-review-standalone.json +14 -0
  354. package/presets/opencode/next/team/fixtures/ux-design-standalone.json +15 -0
  355. package/presets/opencode/next/team/tasks/.gitkeep +0 -0
  356. package/presets/opencode/platform-contract.json +131 -0
  357. package/scripts/capture-cli-golden.mjs +48 -0
  358. package/scripts/check-chain-hook-coverage.sh +2 -0
  359. package/scripts/check-mavis-adapter-map.mjs +294 -0
  360. package/scripts/check-mavis-local-overlay.mjs +56 -0
  361. package/scripts/check-mavis-platform-contract.mjs +388 -0
  362. package/scripts/check-mavis-token-budget.mjs +48 -0
  363. package/scripts/check-opencode-adapter-map.mjs +294 -0
  364. package/scripts/check-opencode-local-overlay.mjs +56 -0
  365. package/scripts/check-opencode-platform-contract.mjs +388 -0
  366. package/scripts/check-opencode-token-budget.mjs +48 -0
  367. package/scripts/check-preset-leakage.sh +64 -3
  368. package/scripts/check-preset-structure.sh +108 -0
  369. package/scripts/check-shared-core-drift.sh +18 -0
  370. package/scripts/check-task-router-intents.sh +15 -2
  371. package/scripts/fixtures/cli-golden/claude/next.json +130 -0
  372. package/scripts/fixtures/cli-golden/cursor/next.json +132 -0
  373. package/scripts/fixtures/cli-golden/mavis/next.json +125 -0
  374. package/scripts/fixtures/cli-golden/opencode/next.json +125 -0
  375. package/scripts/fixtures/mavis-adapter-map/invalid-unmapped/cursor/AGENTS.md +1 -0
  376. package/scripts/fixtures/mavis-adapter-map/invalid-unmapped/cursor/rules/extra.mdc +1 -0
  377. package/scripts/fixtures/mavis-adapter-map/invalid-unmapped/cursor/rules/sample.mdc +2 -0
  378. package/scripts/fixtures/mavis-adapter-map/invalid-unmapped/mavis/MAVIS.md +1 -0
  379. package/scripts/fixtures/mavis-adapter-map/invalid-unmapped/mavis/adapter-map.json +26 -0
  380. package/scripts/fixtures/mavis-adapter-map/invalid-unmapped/mavis/rules/sample.md +2 -0
  381. package/scripts/fixtures/mavis-adapter-map/valid/cursor/AGENTS.md +1 -0
  382. package/scripts/fixtures/mavis-adapter-map/valid/cursor/rules/sample.mdc +2 -0
  383. package/scripts/fixtures/mavis-adapter-map/valid/mavis/MAVIS.md +1 -0
  384. package/scripts/fixtures/mavis-adapter-map/valid/mavis/adapter-map.json +26 -0
  385. package/scripts/fixtures/mavis-adapter-map/valid/mavis/rules/sample.md +2 -0
  386. package/scripts/fixtures/mavis-platform-contract/invalid-minimax-destination.json +131 -0
  387. package/scripts/fixtures/mavis-platform-contract/invalid-missing-capability.json +126 -0
  388. package/scripts/fixtures/mavis-platform-contract/invalid-released-unknown-stack.json +133 -0
  389. package/scripts/fixtures/mavis-platform-contract/invalid-unknown-native-path.json +131 -0
  390. package/scripts/fixtures/mavis-platform-contract/invalid-version-pin.json +132 -0
  391. package/scripts/fixtures/mavis-platform-contract/valid.json +131 -0
  392. package/scripts/fixtures/mavis-probe/AGENTS.md +6 -0
  393. package/scripts/fixtures/mavis-probe/agents/probe-agent.md +6 -0
  394. package/scripts/fixtures/mavis-probe/fake-mcode.mjs +98 -0
  395. package/scripts/fixtures/mavis-probe/output.schema.json +28 -0
  396. package/scripts/fixtures/mavis-probe/rules/probe.md +5 -0
  397. package/scripts/fixtures/mavis-probe/skills/probe/SKILL.md +11 -0
  398. package/scripts/fixtures/opencode-adapter-map/invalid-unmapped/cursor/AGENTS.md +1 -0
  399. package/scripts/fixtures/opencode-adapter-map/invalid-unmapped/cursor/rules/extra.mdc +1 -0
  400. package/scripts/fixtures/opencode-adapter-map/invalid-unmapped/cursor/rules/sample.mdc +2 -0
  401. package/scripts/fixtures/opencode-adapter-map/invalid-unmapped/opencode/OPENCODE.md +1 -0
  402. package/scripts/fixtures/opencode-adapter-map/invalid-unmapped/opencode/adapter-map.json +26 -0
  403. package/scripts/fixtures/opencode-adapter-map/invalid-unmapped/opencode/rules/sample.md +2 -0
  404. package/scripts/fixtures/opencode-adapter-map/valid/cursor/AGENTS.md +1 -0
  405. package/scripts/fixtures/opencode-adapter-map/valid/cursor/rules/sample.mdc +2 -0
  406. package/scripts/fixtures/opencode-adapter-map/valid/opencode/OPENCODE.md +1 -0
  407. package/scripts/fixtures/opencode-adapter-map/valid/opencode/adapter-map.json +26 -0
  408. package/scripts/fixtures/opencode-adapter-map/valid/opencode/rules/sample.md +2 -0
  409. package/scripts/fixtures/opencode-platform-contract/invalid-home-destination.json +131 -0
  410. package/scripts/fixtures/opencode-platform-contract/invalid-missing-capability.json +126 -0
  411. package/scripts/fixtures/opencode-platform-contract/invalid-released-unknown-stack.json +133 -0
  412. package/scripts/fixtures/opencode-platform-contract/invalid-unknown-native-path.json +131 -0
  413. package/scripts/fixtures/opencode-platform-contract/invalid-version-pin.json +132 -0
  414. package/scripts/fixtures/opencode-platform-contract/valid.json +131 -0
  415. package/scripts/generate-mavis-next.mjs +706 -0
  416. package/scripts/generate-opencode-next.mjs +831 -0
  417. package/scripts/lib/cli-golden.mjs +50 -0
  418. package/scripts/lib/discover-hooks.mjs +94 -0
  419. package/scripts/probe-mavis-capabilities.mjs +480 -0
  420. package/scripts/sync-dogfood-mavis.sh +90 -0
  421. package/scripts/sync-dogfood-opencode.sh +85 -0
  422. package/scripts/test-agent-task-metrics-hooks.mjs +25 -16
  423. package/scripts/test-chain-team-phases-coverage.mjs +15 -7
  424. package/scripts/test-cli-init-clean.mjs +367 -0
  425. package/scripts/test-cli-mcp-merge.mjs +23 -0
  426. package/scripts/test-mavis-context-budget.mjs +55 -0
  427. package/scripts/test-mavis-orchestration.mjs +649 -0
  428. package/scripts/test-opencode-context-budget.mjs +53 -0
  429. package/scripts/test-probe-mavis-capabilities.mjs +205 -0
@@ -0,0 +1,148 @@
1
+ # Agent team artifacts
2
+
3
+ Artifact directory for the Cursor “agent team” pipeline.
4
+
5
+ ## Layout
6
+
7
+ ```
8
+ .mavis/team/
9
+ active-task.json
10
+ fixtures/ # pipeline profile examples (feature-full, feature-light, bugfix-standard)
11
+ tasks/
12
+ <slug>/
13
+ pipeline.json
14
+ status.json
15
+ metrics.json # schema-v1 append-only event ledger (see Local metrics ledger)
16
+ brief.md
17
+ decomposition.md
18
+ debug-report.md # fixApplied: true/false
19
+ validation-report.md # build-verifier: PASS | FAIL
20
+ architecture.md
21
+ migration-plan.md
22
+ ci-report.md
23
+ a11y-review.md
24
+ perf-report.md
25
+ security-review.md
26
+ api-contract-review.md
27
+ unit-test-plan.md
28
+ documentation.md
29
+ review.md
30
+ .memlog.md # append-only agent notes (optional)
31
+ ```
32
+
33
+ ## pipeline.json schema
34
+
35
+ ```json
36
+ {
37
+ "slug": "order-history-date-filter",
38
+ "intent": "feature",
39
+ "specMode": "consume",
40
+ "summary": "Add date filter to Order History",
41
+ "steps": [
42
+ { "agent": "task-analyst", "label": "Clarify and decompose" },
43
+ { "agent": "feature-developer", "label": "Implement + unit tests", "scope": "unit-in-dev" },
44
+ { "agent": "build-verifier", "label": "Validation gate" },
45
+ { "agent": "code-reviewer", "label": "Code review" },
46
+ { "agent": "qa-tester", "label": "E2E", "scope": "e2e-only" }
47
+ ],
48
+ "humanGates": ["after:task-analyst"],
49
+ "autoChain": true,
50
+ "skipped": []
51
+ }
52
+ ```
53
+
54
+ ### Step fields
55
+
56
+ | Field | Description |
57
+ |-------|-------------|
58
+ | `agent` | kebab-case name or array when `parallel: true` |
59
+ | `label` | Human-readable step name |
60
+ | `scope` | Passed to agents (e.g. `unit-in-dev`, `e2e-only`) |
61
+ | `skipIf` | `debugger.fixed` \| `ci-investigator.resolved` |
62
+ | `parallel` | Invoke all `agent` values in one parent turn |
63
+
64
+ Optional top-level **`specMode`:** `consume` | `generate` | `none` (router echo; `brief.md` `## Spec mode` wins).
65
+
66
+ ## status.json (pipeline mode)
67
+
68
+ ```json
69
+ {
70
+ "slug": "order-history-date-filter",
71
+ "intent": "feature",
72
+ "pipelineIndex": 0,
73
+ "currentAgent": "task-analyst",
74
+ "phase": "executing",
75
+ "state": "in_progress",
76
+ "awaitingHumanGate": false,
77
+ "retryAfterFix": null,
78
+ "activeAttempts": {},
79
+ "lastCompletedAttempt": null,
80
+ "parallelCompleted": [],
81
+ "parallelOutcomes": {},
82
+ "updatedAt": "2026-05-29T12:00:00.000Z"
83
+ }
84
+ ```
85
+
86
+ ### phase
87
+
88
+ Prefer **`executing`** for pipeline mode. Legacy: `analysis`, `development`, `review`, `testing`, `done`.
89
+
90
+ ### state
91
+
92
+ | Value | Description |
93
+ |-------|-------------|
94
+ | `in_progress` | Current step running |
95
+ | `completed` | Current step finished |
96
+ | `awaiting_approval` | Human gate; use `/task-continue` |
97
+ | `changes_requested` | Reviewer requires fixes |
98
+ | `validation_failed` | build-verifier failed |
99
+ | `approved` | Legacy continue |
100
+
101
+ ## Workflow entry
102
+
103
+ ```bash
104
+ /task <task description>
105
+ /task-continue <slug>
106
+ /technical-retro <slug>
107
+ ```
108
+
109
+ ## Creating task dirs
110
+
111
+ Bootstrap `<slug>/` by **writing** `pipeline.json` (Write tool). Runtime/hook owns `status.json` lifecycle; parent may only create a minimal bootstrap if missing. Do **not** use Shell `mkdir -p` — Cursor’s default sandbox returns `Operation not permitted` (especially for repos on macOS Desktop/Documents).
112
+
113
+ ## Git
114
+
115
+ Commit task artifacts if you want them to survive `ai-rules clean cursor`. Or copy finished tasks to `docs/agent-workflow/tasks/<slug>/`.
116
+
117
+ ## specMode, applyReadiness, memlog
118
+
119
+ - **`specMode`:** `consume` | `generate` | `none` — primary in `brief.md` `## Spec mode`; optional top-level `pipeline.json` `specMode`. `none` skips INDEX/author mode (spike/research).
120
+ - **`applyReadiness`:** YAML frontmatter on developer `implementation.md`; JSON-shaped `{ "state": "blocked"|"ready"|"all_done", "contextFiles": [] }` on the analyst receipt (analyst may emit `blocked` pre-gate). See `agent-artifact-contracts`.
121
+ - **Memlog:** `.mavis/team/tasks/<slug>/.memlog.md` (Claude: `.claude/team/tasks/<slug>/.memlog.md`) — append-only, agent-written; `/task-continue` may read. Hook does not parse it. Example: `fixtures/memlog.example.md`.
122
+
123
+ ## Artifact manifest and receipts
124
+
125
+ Each slug stores one context index at `.mavis/team/tasks/<slug>/artifact-manifest.json`. Schema v1 is defined by shared core `agent-team/agent-artifact-contracts.md`: every entry declares its producer, status, authoritative paths, acceptance-criteria IDs, decomposition task IDs, timestamps, and a terminal completion receipt.
126
+
127
+ Producer/consumer rules:
128
+
129
+ - Read the manifest first and use only the authoritative inputs needed by the current step; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` when it is missing or stale, and report that gap.
130
+ - Producers upsert only their stable entry IDs, preserve foreign entries, and finish with `completed`, `blocked`, `changes_requested`, or `validation_failed` receipt evidence.
131
+ - The router owns `pipeline.json` and its routing entry; analyst, developer, verifier, and reviewer own their named outputs and receipts. Consumers do not edit another producer's receipt.
132
+ - Agents do not mutate `status.json` or `metrics.json`. The orchestration runtime/hook is their single writer. Parallel receipt merges are serialized by the parent/orchestrator.
133
+
134
+ ## Local metrics ledger
135
+
136
+ `metrics.json` is an append-only schema-v1 event ledger for one task run. It contains only allowlisted IDs, task dimensions, timestamps, outcomes, and attribution confidence—never prompts, secrets, file paths, or contents. Policy SoT: `presets/_shared/core/agent-team/agent-task-metrics.md`. The orchestration runtime writes `task_started` / `attempt_started`; the hook records host-clock completion and human-gate edges under a per-task lock with temp-and-rename.
137
+
138
+ `status.json.activeAttempts` is a transient timing bridge keyed by `attemptId`; `lastCompletedAttempt` is diagnostic; `parallelOutcomes` holds per-agent outcomes for the current parallel join until the step advances. For parallel stops, the hook must use a stable payload identity or the sole active attempt. Otherwise an explicit `.metrics-receipts.json` receipt is fallback data marked `source: agent`, `attributionConfidence: fallback`; it must never guess from `currentAgent`.
139
+
140
+ After a human gate, `/task-continue` closes wait via the installed hook (do not hand-edit `pipelineIndex` first):
141
+
142
+ ```bash
143
+ printf '%s\n' '{"status":"completed","action":"end_human_gate","activateNext":true}' | bash .mavis/hooks/chain-team-phases.sh
144
+ ```
145
+
146
+ That appends `human_gate_ended` before the next `attempt_started`. Claude twins use the same payload against `.claude/hooks/chain-team-phases.sh`. Other installable stacks ship the same ledger contract in their `team/README.md`.
147
+
148
+ Aggregate with `node packages/ai-rules/scripts/aggregate-agent-task-metrics.mjs --team-root .mavis/team`. It reports role/agent count, completed count, total/average duration, distinct completed run IDs, separate human-gate wait, and incomplete artifacts. For retros, see `/technical-retro` → **Metrics evidence**.
@@ -0,0 +1,21 @@
1
+ # Living conventions (team)
2
+
3
+ Consumer-owned store for post-init gotchas, patterns, and decisions. **Not** always-on. Fill after `ai-rules init`. Root `AGENTS.md` only points here.
4
+
5
+ ## Gotchas
6
+
7
+ <!-- e.g. fragile flows, “never do X in this repo” -->
8
+
9
+ -
10
+
11
+ ## Patterns
12
+
13
+ <!-- local patterns beyond reference-features table -->
14
+
15
+ -
16
+
17
+ ## Decisions
18
+
19
+ <!-- short pointers to ADRs / product choices that affect code -->
20
+
21
+ -
@@ -0,0 +1,79 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "slug": "order-history-date-filter",
4
+ "updatedAt": "2026-07-31T12:20:00.000Z",
5
+ "artifacts": [
6
+ {
7
+ "id": "routing",
8
+ "producer": "task-router",
9
+ "status": "completed",
10
+ "authoritativePaths": ["pipeline.json"],
11
+ "acceptanceCriteriaIds": [],
12
+ "taskIds": [],
13
+ "timestamps": {
14
+ "createdAt": "2026-07-31T12:00:00.000Z",
15
+ "updatedAt": "2026-07-31T12:00:00.000Z",
16
+ "completedAt": "2026-07-31T12:00:00.000Z"
17
+ },
18
+ "receipt": {
19
+ "outcome": "completed",
20
+ "summary": "The feature pipeline and routing evidence are authoritative.",
21
+ "evidencePaths": ["pipeline.json"]
22
+ }
23
+ },
24
+ {
25
+ "id": "analysis",
26
+ "producer": "task-analyst",
27
+ "status": "completed",
28
+ "authoritativePaths": ["brief.md", "decomposition.md", "ux-design.md"],
29
+ "acceptanceCriteriaIds": ["AC-1", "AC-2"],
30
+ "taskIds": ["T1", "T2"],
31
+ "timestamps": {
32
+ "createdAt": "2026-07-31T12:01:00.000Z",
33
+ "updatedAt": "2026-07-31T12:05:00.000Z",
34
+ "completedAt": "2026-07-31T12:05:00.000Z"
35
+ },
36
+ "receipt": {
37
+ "outcome": "completed",
38
+ "summary": "The acceptance criteria and implementation tasks are ready.",
39
+ "evidencePaths": ["brief.md", "decomposition.md", "ux-design.md"]
40
+ }
41
+ },
42
+ {
43
+ "id": "implementation",
44
+ "producer": "feature-developer",
45
+ "status": "completed",
46
+ "authoritativePaths": ["implementation.md"],
47
+ "acceptanceCriteriaIds": ["AC-1", "AC-2"],
48
+ "taskIds": ["T1", "T2"],
49
+ "timestamps": {
50
+ "createdAt": "2026-07-31T12:06:00.000Z",
51
+ "updatedAt": "2026-07-31T12:20:00.000Z",
52
+ "completedAt": "2026-07-31T12:20:00.000Z"
53
+ },
54
+ "receipt": {
55
+ "outcome": "completed",
56
+ "summary": "Implementation and focused unit coverage are complete.",
57
+ "evidencePaths": ["implementation.md"]
58
+ }
59
+ },
60
+ {
61
+ "id": "mockup-review",
62
+ "producer": "mockup-reviewer",
63
+ "status": "completed",
64
+ "authoritativePaths": ["mockup-review.md"],
65
+ "acceptanceCriteriaIds": ["AC-4", "AC-5", "AC-6", "AC-7", "AC-8"],
66
+ "taskIds": [],
67
+ "timestamps": {
68
+ "createdAt": "2026-07-31T12:05:30.000Z",
69
+ "updatedAt": "2026-07-31T12:05:45.000Z",
70
+ "completedAt": "2026-07-31T12:05:45.000Z"
71
+ },
72
+ "receipt": {
73
+ "outcome": "completed",
74
+ "summary": "Mockup review completed with verdict PASS_WITH_NOTES.",
75
+ "evidencePaths": ["mockup-review.md"]
76
+ }
77
+ }
78
+ ]
79
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "slug": "example-bugfix-standard",
3
+ "intent": "bugfix",
4
+ "profile": "standard",
5
+ "routingDecision": {
6
+ "complexity": "moderate",
7
+ "riskFlags": ["behavior-regression"],
8
+ "routingReasons": [
9
+ "The regression needs root-cause evidence before deciding whether a separate fix pass is necessary.",
10
+ "The bounded behavior change still requires validation and independent review."
11
+ ],
12
+ "estimatedWorkPackages": 1,
13
+ "openDecisionCount": 0
14
+ },
15
+ "summary": "Regression fix with review",
16
+ "steps": [
17
+ { "agent": "debugger", "label": "Root cause" },
18
+ { "agent": "feature-developer", "label": "Fix if needed", "skipIf": "debugger.fixed" },
19
+ { "agent": "build-verifier", "label": "Validation gate" },
20
+ { "agent": "code-reviewer", "label": "Code review" }
21
+ ],
22
+ "humanGates": [],
23
+ "autoChain": true,
24
+ "skipped": []
25
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "slug": "example-feature-full",
3
+ "intent": "feature",
4
+ "specMode": "consume",
5
+ "profile": "full",
6
+ "routingDecision": {
7
+ "complexity": "high",
8
+ "riskFlags": ["cross-layer", "public-contract", "broad-test-surface"],
9
+ "routingReasons": [
10
+ "The feature spans UI, state, and API boundaries, so architecture and implementation checkpoints are required.",
11
+ "The public contract and e2e acceptance surface require independent validation and review."
12
+ ],
13
+ "estimatedWorkPackages": 2,
14
+ "openDecisionCount": 1
15
+ },
16
+ "summary": "Multi-layer feature with e2e coverage",
17
+ "steps": [
18
+ { "agent": "task-analyst", "label": "Clarify and decompose" },
19
+ { "agent": "solution-architect", "label": "Design boundaries", "model": "strong" },
20
+ { "agent": "feature-developer", "label": "Implement + unit tests", "scope": "unit-in-dev" },
21
+ { "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
22
+ { "agent": "security-reviewer", "label": "Security review", "model": "strong" },
23
+ { "agent": "code-reviewer", "label": "Code review", "model": "cheap" },
24
+ { "agent": "qa-tester", "label": "E2E", "scope": "e2e-only" }
25
+ ],
26
+ "humanGates": ["after:task-analyst"],
27
+ "autoChain": true,
28
+ "skipped": []
29
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "slug": "example-feature-light",
3
+ "intent": "feature",
4
+ "profile": "light",
5
+ "routingDecision": {
6
+ "complexity": "low",
7
+ "riskFlags": [],
8
+ "routingReasons": [
9
+ "The request has explicit acceptance criteria and a reversible single-file scope.",
10
+ "No public contract, cross-layer coordination, or open decision requires analysis or architecture."
11
+ ],
12
+ "estimatedWorkPackages": 1,
13
+ "openDecisionCount": 0
14
+ },
15
+ "summary": "Trivial single-file change with explicit AC",
16
+ "steps": [
17
+ { "agent": "feature-developer", "label": "Implement", "model": "cheap" },
18
+ { "agent": "build-verifier", "label": "Validation gate", "model": "cheap" }
19
+ ],
20
+ "humanGates": [],
21
+ "autoChain": true,
22
+ "skipped": [
23
+ { "agent": "task-analyst", "reason": "Explicit AC and single-file scope" },
24
+ { "agent": "code-reviewer", "reason": "Light profile — non-trivial app changes should use standard" },
25
+ { "agent": "qa-tester", "reason": "No e2e AC" }
26
+ ]
27
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "slug": "example-feature-with-figma",
3
+ "intent": "feature",
4
+ "profile": "full",
5
+ "summary": "Feature with Figma mockup URL — mockup-reviewer after analyst, before architect and developer",
6
+ "steps": [
7
+ { "agent": "task-analyst", "label": "Clarify and decompose" },
8
+ { "agent": "mockup-reviewer", "label": "Figma mockup review", "model": "strong" },
9
+ { "agent": "solution-architect", "label": "Design boundaries", "model": "strong" },
10
+ { "agent": "feature-developer", "label": "Implement" },
11
+ { "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
12
+ { "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
13
+ ],
14
+ "humanGates": ["after:task-analyst"],
15
+ "autoChain": true,
16
+ "skipped": []
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "slug": "example-feature-with-ux-no-figma",
3
+ "intent": "feature",
4
+ "profile": "standard",
5
+ "summary": "Feature with required-signal UX and no Figma URL — task-analyst loads skill ux-design; no mockup-reviewer step",
6
+ "steps": [
7
+ { "agent": "task-analyst", "label": "Clarify, UX design, decompose" },
8
+ { "agent": "feature-developer", "label": "Implement" },
9
+ { "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
10
+ { "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
11
+ ],
12
+ "humanGates": ["after:task-analyst"],
13
+ "autoChain": true,
14
+ "skipped": [
15
+ { "agent": "mockup-reviewer", "reason": "No figma.com URL; analyst skill ux-design covers behavioral UX" }
16
+ ]
17
+ }
@@ -0,0 +1,9 @@
1
+ # Memlog example
2
+
3
+ Append-only. Agents write; `/task-continue` may read. The hook does not parse this file.
4
+
5
+ ## 2026-08-13
6
+
7
+ - `decision`: specMode=generate; research-before-spec requested
8
+ - `claim`: empty-cart copy lives in CartEmpty.tsx (code-archaeology, inferred)
9
+ - `assumption`: no guest checkout in v1
@@ -0,0 +1,69 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "task": {
4
+ "runId": "human-gate-run",
5
+ "slug": "human-gate",
6
+ "preset": "ai-rules",
7
+ "stack": "next",
8
+ "platform": "cursor",
9
+ "intent": "feature",
10
+ "profile": "full"
11
+ },
12
+ "events": [
13
+ {
14
+ "eventId": "human-gate-run:task",
15
+ "type": "task_started",
16
+ "at": "2026-07-31T17:00:00.000Z",
17
+ "source": "router",
18
+ "attributionConfidence": "high"
19
+ },
20
+ {
21
+ "eventId": "human-gate-run:gate:1",
22
+ "type": "human_gate_started",
23
+ "at": "2026-07-31T17:01:00.000Z",
24
+ "source": "hook",
25
+ "attributionConfidence": "high"
26
+ },
27
+ {
28
+ "eventId": "human-gate-run:gate:end",
29
+ "type": "human_gate_ended",
30
+ "at": "2026-07-31T17:11:00.000Z",
31
+ "gateStartedEventId": "human-gate-run:gate:1",
32
+ "source": "command",
33
+ "attributionConfidence": "high"
34
+ },
35
+ {
36
+ "eventId": "human-gate-run:1:feature-developer:1:start",
37
+ "type": "attempt_started",
38
+ "at": "2026-07-31T17:11:00.000Z",
39
+ "attemptId": "human-gate-run:step-1:feature-developer:attempt-1",
40
+ "stepIndex": 1,
41
+ "stepLabel": null,
42
+ "agent": "feature-developer",
43
+ "role": "implementation",
44
+ "attempt": 1,
45
+ "parallelGroupId": null,
46
+ "source": "hook",
47
+ "attributionConfidence": "high"
48
+ },
49
+ {
50
+ "eventId": "human-gate-run:1:feature-developer:1:finish",
51
+ "type": "attempt_finished",
52
+ "at": "2026-07-31T17:12:00.000Z",
53
+ "attemptId": "human-gate-run:step-1:feature-developer:attempt-1",
54
+ "outcome": "completed",
55
+ "durationMs": 60000,
56
+ "retryAfterFix": null,
57
+ "source": "hook",
58
+ "attributionConfidence": "high"
59
+ },
60
+ {
61
+ "eventId": "human-gate-run:done",
62
+ "type": "task_completed",
63
+ "at": "2026-07-31T17:12:00.000Z",
64
+ "outcome": "completed",
65
+ "source": "hook",
66
+ "attributionConfidence": "high"
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "slug": "missing-ledger",
3
+ "state": "completed",
4
+ "note": "Intentional fixture: metrics.json is absent."
5
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "task": {
4
+ "runId": "parallel-receipts-run",
5
+ "slug": "parallel-receipts",
6
+ "preset": "ai-rules",
7
+ "stack": "next",
8
+ "platform": "cursor",
9
+ "intent": "feature",
10
+ "profile": "full"
11
+ },
12
+ "events": [
13
+ {
14
+ "eventId": "parallel-receipts-run:task",
15
+ "type": "task_started",
16
+ "at": "2026-07-31T16:00:00.000Z",
17
+ "source": "router",
18
+ "attributionConfidence": "high"
19
+ },
20
+ {
21
+ "eventId": "parallel-receipts-run:1:code-reviewer:1:start",
22
+ "type": "attempt_started",
23
+ "at": "2026-07-31T16:00:00.000Z",
24
+ "attemptId": "parallel-receipts-run:step-1:code-reviewer:attempt-1",
25
+ "stepIndex": 1,
26
+ "stepLabel": null,
27
+ "agent": "code-reviewer",
28
+ "role": "review",
29
+ "attempt": 1,
30
+ "parallelGroupId": "parallel-receipts-run:step-1",
31
+ "source": "hook",
32
+ "attributionConfidence": "high"
33
+ },
34
+ {
35
+ "eventId": "parallel-receipts-run:1:security-reviewer:1:start",
36
+ "type": "attempt_started",
37
+ "at": "2026-07-31T16:00:00.000Z",
38
+ "attemptId": "parallel-receipts-run:step-1:security-reviewer:attempt-1",
39
+ "stepIndex": 1,
40
+ "stepLabel": null,
41
+ "agent": "security-reviewer",
42
+ "role": "review",
43
+ "attempt": 1,
44
+ "parallelGroupId": "parallel-receipts-run:step-1",
45
+ "source": "hook",
46
+ "attributionConfidence": "high"
47
+ },
48
+ {
49
+ "eventId": "parallel-receipts-run:1:security-reviewer:1:finish",
50
+ "type": "attempt_finished",
51
+ "at": "2026-07-31T16:01:00.000Z",
52
+ "attemptId": "parallel-receipts-run:step-1:security-reviewer:attempt-1",
53
+ "outcome": "completed",
54
+ "durationMs": 60000,
55
+ "retryAfterFix": null,
56
+ "source": "agent",
57
+ "attributionConfidence": "fallback"
58
+ },
59
+ {
60
+ "eventId": "parallel-receipts-run:1:code-reviewer:1:finish",
61
+ "type": "attempt_finished",
62
+ "at": "2026-07-31T16:02:00.000Z",
63
+ "attemptId": "parallel-receipts-run:step-1:code-reviewer:attempt-1",
64
+ "outcome": "completed",
65
+ "durationMs": 120000,
66
+ "retryAfterFix": null,
67
+ "source": "agent",
68
+ "attributionConfidence": "fallback"
69
+ },
70
+ {
71
+ "eventId": "parallel-receipts-run:done",
72
+ "type": "task_completed",
73
+ "at": "2026-07-31T16:02:00.000Z",
74
+ "outcome": "completed",
75
+ "source": "hook",
76
+ "attributionConfidence": "high"
77
+ }
78
+ ]
79
+ }
@@ -0,0 +1,124 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "task": {
4
+ "runId": "serial-retry-run",
5
+ "slug": "serial-retry",
6
+ "preset": "ai-rules",
7
+ "stack": "next",
8
+ "platform": "cursor",
9
+ "intent": "feature",
10
+ "profile": "full"
11
+ },
12
+ "events": [
13
+ {
14
+ "eventId": "serial-retry-run:task",
15
+ "type": "task_started",
16
+ "at": "2026-07-31T14:00:00.000Z",
17
+ "source": "router",
18
+ "attributionConfidence": "high"
19
+ },
20
+ {
21
+ "eventId": "serial-retry-run:2:code-reviewer:1:start",
22
+ "type": "attempt_started",
23
+ "at": "2026-07-31T14:00:00.000Z",
24
+ "attemptId": "serial-retry-run:step-2:code-reviewer:attempt-1",
25
+ "stepIndex": 2,
26
+ "stepLabel": null,
27
+ "agent": "code-reviewer",
28
+ "role": "review",
29
+ "attempt": 1,
30
+ "parallelGroupId": null,
31
+ "source": "hook",
32
+ "attributionConfidence": "high"
33
+ },
34
+ {
35
+ "eventId": "serial-retry-run:2:code-reviewer:1:finish",
36
+ "type": "attempt_finished",
37
+ "at": "2026-07-31T14:01:00.000Z",
38
+ "attemptId": "serial-retry-run:step-2:code-reviewer:attempt-1",
39
+ "outcome": "changes_requested",
40
+ "durationMs": 60000,
41
+ "retryAfterFix": null,
42
+ "source": "hook",
43
+ "attributionConfidence": "high"
44
+ },
45
+ {
46
+ "eventId": "serial-retry-run:retry:1",
47
+ "type": "retry_scheduled",
48
+ "at": "2026-07-31T14:01:00.000Z",
49
+ "attemptId": "serial-retry-run:step-2:code-reviewer:attempt-1",
50
+ "nextAgent": "feature-developer",
51
+ "retryAfterFix": "code-reviewer",
52
+ "source": "hook",
53
+ "attributionConfidence": "high"
54
+ },
55
+ {
56
+ "eventId": "serial-retry-run:1:feature-developer:1:start",
57
+ "type": "attempt_started",
58
+ "at": "2026-07-31T14:01:00.000Z",
59
+ "attemptId": "serial-retry-run:step-1:feature-developer:attempt-1",
60
+ "stepIndex": 1,
61
+ "stepLabel": null,
62
+ "agent": "feature-developer",
63
+ "role": "implementation",
64
+ "attempt": 1,
65
+ "parallelGroupId": null,
66
+ "source": "hook",
67
+ "attributionConfidence": "high"
68
+ },
69
+ {
70
+ "eventId": "serial-retry-run:1:feature-developer:1:finish",
71
+ "type": "attempt_finished",
72
+ "at": "2026-07-31T14:03:00.000Z",
73
+ "attemptId": "serial-retry-run:step-1:feature-developer:attempt-1",
74
+ "outcome": "completed",
75
+ "durationMs": 120000,
76
+ "retryAfterFix": null,
77
+ "source": "hook",
78
+ "attributionConfidence": "high"
79
+ },
80
+ {
81
+ "eventId": "serial-retry-run:retry:2",
82
+ "type": "retry_scheduled",
83
+ "at": "2026-07-31T14:03:00.000Z",
84
+ "attemptId": "serial-retry-run:step-1:feature-developer:attempt-1",
85
+ "nextAgent": "code-reviewer",
86
+ "retryAfterFix": null,
87
+ "source": "hook",
88
+ "attributionConfidence": "high"
89
+ },
90
+ {
91
+ "eventId": "serial-retry-run:2:code-reviewer:2:start",
92
+ "type": "attempt_started",
93
+ "at": "2026-07-31T14:03:00.000Z",
94
+ "attemptId": "serial-retry-run:step-2:code-reviewer:attempt-2",
95
+ "stepIndex": 2,
96
+ "stepLabel": null,
97
+ "agent": "code-reviewer",
98
+ "role": "review",
99
+ "attempt": 2,
100
+ "parallelGroupId": null,
101
+ "source": "hook",
102
+ "attributionConfidence": "high"
103
+ },
104
+ {
105
+ "eventId": "serial-retry-run:2:code-reviewer:2:finish",
106
+ "type": "attempt_finished",
107
+ "at": "2026-07-31T14:04:00.000Z",
108
+ "attemptId": "serial-retry-run:step-2:code-reviewer:attempt-2",
109
+ "outcome": "completed",
110
+ "durationMs": 60000,
111
+ "retryAfterFix": null,
112
+ "source": "hook",
113
+ "attributionConfidence": "high"
114
+ },
115
+ {
116
+ "eventId": "serial-retry-run:done",
117
+ "type": "task_completed",
118
+ "at": "2026-07-31T14:04:00.000Z",
119
+ "outcome": "completed",
120
+ "source": "hook",
121
+ "attributionConfidence": "high"
122
+ }
123
+ ]
124
+ }