@bonesofspring/ai-rules 0.2.29 → 0.2.31

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 (536) hide show
  1. package/package.json +5 -1
  2. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +6 -4
  3. package/presets/_shared/core/agent-team/agent-task-metrics.md +14 -1
  4. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +3 -1
  5. package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +2 -2
  6. package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +2 -2
  7. package/presets/claude/android-kotlin/agents/build-verifier.md +1 -1
  8. package/presets/claude/android-kotlin/agents/ci-investigator.md +2 -2
  9. package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -2
  10. package/presets/claude/android-kotlin/agents/debugger.md +2 -2
  11. package/presets/claude/android-kotlin/agents/feature-developer.md +2 -2
  12. package/presets/claude/android-kotlin/agents/migration-specialist.md +2 -2
  13. package/presets/claude/android-kotlin/agents/mockup-reviewer.md +2 -2
  14. package/presets/claude/android-kotlin/agents/openspec-author.md +2 -2
  15. package/presets/claude/android-kotlin/agents/performance-auditor.md +2 -2
  16. package/presets/claude/android-kotlin/agents/qa-tester.md +2 -2
  17. package/presets/claude/android-kotlin/agents/security-reviewer.md +2 -2
  18. package/presets/claude/android-kotlin/agents/task-analyst.md +1 -1
  19. package/presets/claude/android-kotlin/agents/task-router.md +1 -1
  20. package/presets/claude/android-kotlin/agents/tech-writer.md +2 -2
  21. package/presets/claude/android-kotlin/agents/unit-test-generator.md +2 -2
  22. package/presets/claude/android-kotlin/agents/unit-test-healer.md +2 -2
  23. package/presets/claude/android-kotlin/agents/unit-test-planner.md +2 -2
  24. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  25. package/presets/claude/go/agents/build-verifier.md +2 -2
  26. package/presets/claude/go/agents/code-reviewer.md +2 -2
  27. package/presets/claude/go/agents/feature-developer.md +2 -2
  28. package/presets/claude/go/agents/openspec-author.md +2 -2
  29. package/presets/claude/go/agents/task-analyst.md +1 -1
  30. package/presets/claude/go/agents/task-router.md +1 -1
  31. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  32. package/presets/claude/ios-swift/agents/build-verifier.md +2 -2
  33. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -2
  34. package/presets/claude/ios-swift/agents/feature-developer.md +2 -2
  35. package/presets/claude/ios-swift/agents/mockup-reviewer.md +2 -2
  36. package/presets/claude/ios-swift/agents/openspec-author.md +2 -2
  37. package/presets/claude/ios-swift/agents/task-analyst.md +1 -1
  38. package/presets/claude/ios-swift/agents/task-router.md +1 -1
  39. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  40. package/presets/claude/java/agents/build-verifier.md +2 -2
  41. package/presets/claude/java/agents/code-reviewer.md +2 -2
  42. package/presets/claude/java/agents/feature-developer.md +2 -2
  43. package/presets/claude/java/agents/openspec-author.md +2 -2
  44. package/presets/claude/java/agents/task-analyst.md +1 -1
  45. package/presets/claude/java/agents/task-router.md +1 -1
  46. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  47. package/presets/claude/mcp-ts/agents/build-verifier.md +2 -2
  48. package/presets/claude/mcp-ts/agents/feature-developer.md +2 -2
  49. package/presets/claude/mcp-ts/agents/task-analyst.md +1 -1
  50. package/presets/claude/mcp-ts/agents/task-router.md +1 -1
  51. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  52. package/presets/claude/next/agents/accessibility-reviewer.md +2 -2
  53. package/presets/claude/next/agents/api-contract-reviewer.md +2 -2
  54. package/presets/claude/next/agents/build-verifier.md +2 -2
  55. package/presets/claude/next/agents/ci-investigator.md +2 -2
  56. package/presets/claude/next/agents/code-reviewer.md +37 -2
  57. package/presets/claude/next/agents/debugger.md +2 -2
  58. package/presets/claude/next/agents/feature-developer.md +14 -2
  59. package/presets/claude/next/agents/migration-specialist.md +2 -2
  60. package/presets/claude/next/agents/mockup-reviewer.md +29 -3
  61. package/presets/claude/next/agents/openspec-author.md +2 -2
  62. package/presets/claude/next/agents/performance-auditor.md +2 -2
  63. package/presets/claude/next/agents/qa-tester.md +2 -2
  64. package/presets/claude/next/agents/security-reviewer.md +2 -2
  65. package/presets/claude/next/agents/solution-architect.md +2 -2
  66. package/presets/claude/next/agents/task-analyst.md +1 -1
  67. package/presets/claude/next/agents/task-router.md +1 -1
  68. package/presets/claude/next/agents/tech-writer.md +2 -2
  69. package/presets/claude/next/agents/unit-test-generator.md +2 -2
  70. package/presets/claude/next/agents/unit-test-healer.md +2 -2
  71. package/presets/claude/next/agents/unit-test-planner.md +2 -2
  72. package/presets/claude/next/hooks/chain-team-phases.sh +46 -1
  73. package/presets/claude/next/rules/README.md +2 -1
  74. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +17 -0
  75. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  76. package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +10 -0
  77. package/presets/claude/next/rules/tooling-and-review/mockup-review.md +9 -0
  78. package/presets/claude/next/rules/ui-and-accessibility/design-tokens-binding.md +42 -0
  79. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +1 -0
  80. package/presets/claude/next/skills/code-review/SKILL.md +1 -0
  81. package/presets/claude/nuxt/agents/accessibility-reviewer.md +2 -2
  82. package/presets/claude/nuxt/agents/api-contract-reviewer.md +2 -2
  83. package/presets/claude/nuxt/agents/build-verifier.md +2 -2
  84. package/presets/claude/nuxt/agents/ci-investigator.md +2 -2
  85. package/presets/claude/nuxt/agents/code-reviewer.md +2 -2
  86. package/presets/claude/nuxt/agents/debugger.md +2 -2
  87. package/presets/claude/nuxt/agents/feature-developer.md +2 -2
  88. package/presets/claude/nuxt/agents/migration-specialist.md +2 -2
  89. package/presets/claude/nuxt/agents/mockup-reviewer.md +2 -2
  90. package/presets/claude/nuxt/agents/openspec-author.md +2 -2
  91. package/presets/claude/nuxt/agents/performance-auditor.md +2 -2
  92. package/presets/claude/nuxt/agents/qa-tester.md +2 -2
  93. package/presets/claude/nuxt/agents/security-reviewer.md +2 -2
  94. package/presets/claude/nuxt/agents/solution-architect.md +2 -2
  95. package/presets/claude/nuxt/agents/task-analyst.md +1 -1
  96. package/presets/claude/nuxt/agents/task-router.md +1 -1
  97. package/presets/claude/nuxt/agents/tech-writer.md +2 -2
  98. package/presets/claude/nuxt/agents/unit-test-generator.md +2 -2
  99. package/presets/claude/nuxt/agents/unit-test-healer.md +2 -2
  100. package/presets/claude/nuxt/agents/unit-test-planner.md +2 -2
  101. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  102. package/presets/claude/php-hexagonal/agents/build-verifier.md +2 -2
  103. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -2
  104. package/presets/claude/php-hexagonal/agents/feature-developer.md +2 -2
  105. package/presets/claude/php-hexagonal/agents/openspec-author.md +2 -2
  106. package/presets/claude/php-hexagonal/agents/task-analyst.md +1 -1
  107. package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
  108. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  109. package/presets/claude/php-laravel/agents/build-verifier.md +2 -2
  110. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -2
  111. package/presets/claude/php-laravel/agents/feature-developer.md +2 -2
  112. package/presets/claude/php-laravel/agents/openspec-author.md +2 -2
  113. package/presets/claude/php-laravel/agents/task-analyst.md +1 -1
  114. package/presets/claude/php-laravel/agents/task-router.md +1 -1
  115. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  116. package/presets/claude/svelte/agents/accessibility-reviewer.md +2 -2
  117. package/presets/claude/svelte/agents/api-contract-reviewer.md +2 -2
  118. package/presets/claude/svelte/agents/build-verifier.md +2 -2
  119. package/presets/claude/svelte/agents/ci-investigator.md +2 -2
  120. package/presets/claude/svelte/agents/code-reviewer.md +2 -2
  121. package/presets/claude/svelte/agents/debugger.md +2 -2
  122. package/presets/claude/svelte/agents/feature-developer.md +2 -2
  123. package/presets/claude/svelte/agents/migration-specialist.md +2 -2
  124. package/presets/claude/svelte/agents/mockup-reviewer.md +2 -2
  125. package/presets/claude/svelte/agents/openspec-author.md +2 -2
  126. package/presets/claude/svelte/agents/performance-auditor.md +2 -2
  127. package/presets/claude/svelte/agents/qa-tester.md +2 -2
  128. package/presets/claude/svelte/agents/security-reviewer.md +2 -2
  129. package/presets/claude/svelte/agents/solution-architect.md +2 -2
  130. package/presets/claude/svelte/agents/task-analyst.md +1 -1
  131. package/presets/claude/svelte/agents/task-router.md +1 -1
  132. package/presets/claude/svelte/agents/tech-writer.md +2 -2
  133. package/presets/claude/svelte/agents/unit-test-generator.md +2 -2
  134. package/presets/claude/svelte/agents/unit-test-healer.md +2 -2
  135. package/presets/claude/svelte/agents/unit-test-planner.md +2 -2
  136. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +4 -1
  137. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +2 -2
  138. package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +2 -2
  139. package/presets/cursor/android-kotlin/agents/build-verifier.md +1 -1
  140. package/presets/cursor/android-kotlin/agents/ci-investigator.md +2 -2
  141. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -2
  142. package/presets/cursor/android-kotlin/agents/debugger.md +2 -2
  143. package/presets/cursor/android-kotlin/agents/feature-developer.md +2 -2
  144. package/presets/cursor/android-kotlin/agents/migration-specialist.md +2 -2
  145. package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +2 -2
  146. package/presets/cursor/android-kotlin/agents/openspec-author.md +2 -2
  147. package/presets/cursor/android-kotlin/agents/performance-auditor.md +2 -2
  148. package/presets/cursor/android-kotlin/agents/qa-tester.md +2 -2
  149. package/presets/cursor/android-kotlin/agents/security-reviewer.md +2 -2
  150. package/presets/cursor/android-kotlin/agents/task-analyst.md +1 -1
  151. package/presets/cursor/android-kotlin/agents/task-router.md +1 -1
  152. package/presets/cursor/android-kotlin/agents/tech-writer.md +2 -2
  153. package/presets/cursor/android-kotlin/agents/unit-test-generator.md +2 -2
  154. package/presets/cursor/android-kotlin/agents/unit-test-healer.md +2 -2
  155. package/presets/cursor/android-kotlin/agents/unit-test-planner.md +2 -2
  156. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +1 -1
  157. package/presets/cursor/go/agents/build-verifier.md +2 -2
  158. package/presets/cursor/go/agents/code-reviewer.md +2 -2
  159. package/presets/cursor/go/agents/feature-developer.md +2 -2
  160. package/presets/cursor/go/agents/openspec-author.md +2 -2
  161. package/presets/cursor/go/agents/task-analyst.md +1 -1
  162. package/presets/cursor/go/agents/task-router.md +1 -1
  163. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +3 -1
  164. package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
  165. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -2
  166. package/presets/cursor/ios-swift/agents/feature-developer.md +2 -2
  167. package/presets/cursor/ios-swift/agents/mockup-reviewer.md +2 -2
  168. package/presets/cursor/ios-swift/agents/openspec-author.md +2 -2
  169. package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
  170. package/presets/cursor/ios-swift/agents/task-router.md +1 -1
  171. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
  172. package/presets/cursor/java/agents/build-verifier.md +2 -2
  173. package/presets/cursor/java/agents/code-reviewer.md +2 -2
  174. package/presets/cursor/java/agents/feature-developer.md +2 -2
  175. package/presets/cursor/java/agents/openspec-author.md +2 -2
  176. package/presets/cursor/java/agents/task-analyst.md +1 -1
  177. package/presets/cursor/java/agents/task-router.md +1 -1
  178. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +3 -1
  179. package/presets/cursor/mcp-ts/agents/build-verifier.md +2 -2
  180. package/presets/cursor/mcp-ts/agents/feature-developer.md +2 -2
  181. package/presets/cursor/mcp-ts/agents/task-analyst.md +1 -1
  182. package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
  183. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +3 -1
  184. package/presets/cursor/next/agents/accessibility-reviewer.md +2 -2
  185. package/presets/cursor/next/agents/api-contract-reviewer.md +2 -2
  186. package/presets/cursor/next/agents/build-verifier.md +2 -2
  187. package/presets/cursor/next/agents/ci-investigator.md +2 -2
  188. package/presets/cursor/next/agents/code-reviewer.md +37 -2
  189. package/presets/cursor/next/agents/debugger.md +2 -2
  190. package/presets/cursor/next/agents/feature-developer.md +24 -2
  191. package/presets/cursor/next/agents/migration-specialist.md +2 -2
  192. package/presets/cursor/next/agents/mockup-reviewer.md +29 -3
  193. package/presets/cursor/next/agents/openspec-author.md +2 -2
  194. package/presets/cursor/next/agents/performance-auditor.md +2 -2
  195. package/presets/cursor/next/agents/qa-tester.md +2 -2
  196. package/presets/cursor/next/agents/security-reviewer.md +2 -2
  197. package/presets/cursor/next/agents/solution-architect.md +2 -2
  198. package/presets/cursor/next/agents/task-analyst.md +1 -1
  199. package/presets/cursor/next/agents/task-router.md +1 -1
  200. package/presets/cursor/next/agents/tech-writer.md +2 -2
  201. package/presets/cursor/next/agents/unit-test-generator.md +2 -2
  202. package/presets/cursor/next/agents/unit-test-healer.md +2 -2
  203. package/presets/cursor/next/agents/unit-test-planner.md +2 -2
  204. package/presets/cursor/next/hooks/chain-team-phases.sh +46 -1
  205. package/presets/cursor/next/rules/README.md +3 -1
  206. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +3 -1
  207. package/presets/cursor/next/rules/code-review-mr.mdc +10 -0
  208. package/presets/cursor/next/rules/design-tokens-binding.mdc +41 -0
  209. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +17 -0
  210. package/presets/cursor/next/rules/mockup-review.mdc +9 -0
  211. package/presets/cursor/next/rules/react-ui.mdc +1 -0
  212. package/presets/cursor/next/skills/code-review/SKILL.md +1 -0
  213. package/presets/cursor/nuxt/agents/accessibility-reviewer.md +2 -2
  214. package/presets/cursor/nuxt/agents/api-contract-reviewer.md +2 -2
  215. package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
  216. package/presets/cursor/nuxt/agents/ci-investigator.md +2 -2
  217. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -2
  218. package/presets/cursor/nuxt/agents/debugger.md +2 -2
  219. package/presets/cursor/nuxt/agents/feature-developer.md +2 -2
  220. package/presets/cursor/nuxt/agents/migration-specialist.md +2 -2
  221. package/presets/cursor/nuxt/agents/mockup-reviewer.md +2 -2
  222. package/presets/cursor/nuxt/agents/openspec-author.md +2 -2
  223. package/presets/cursor/nuxt/agents/performance-auditor.md +2 -2
  224. package/presets/cursor/nuxt/agents/qa-tester.md +2 -2
  225. package/presets/cursor/nuxt/agents/security-reviewer.md +2 -2
  226. package/presets/cursor/nuxt/agents/solution-architect.md +2 -2
  227. package/presets/cursor/nuxt/agents/task-analyst.md +1 -1
  228. package/presets/cursor/nuxt/agents/task-router.md +1 -1
  229. package/presets/cursor/nuxt/agents/tech-writer.md +2 -2
  230. package/presets/cursor/nuxt/agents/unit-test-generator.md +2 -2
  231. package/presets/cursor/nuxt/agents/unit-test-healer.md +2 -2
  232. package/presets/cursor/nuxt/agents/unit-test-planner.md +2 -2
  233. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +3 -1
  234. package/presets/cursor/php-hexagonal/agents/build-verifier.md +2 -2
  235. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -2
  236. package/presets/cursor/php-hexagonal/agents/feature-developer.md +2 -2
  237. package/presets/cursor/php-hexagonal/agents/openspec-author.md +2 -2
  238. package/presets/cursor/php-hexagonal/agents/task-analyst.md +1 -1
  239. package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
  240. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +3 -1
  241. package/presets/cursor/php-laravel/agents/build-verifier.md +2 -2
  242. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -2
  243. package/presets/cursor/php-laravel/agents/feature-developer.md +2 -2
  244. package/presets/cursor/php-laravel/agents/openspec-author.md +2 -2
  245. package/presets/cursor/php-laravel/agents/task-analyst.md +1 -1
  246. package/presets/cursor/php-laravel/agents/task-router.md +1 -1
  247. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +3 -1
  248. package/presets/cursor/svelte/agents/accessibility-reviewer.md +2 -2
  249. package/presets/cursor/svelte/agents/api-contract-reviewer.md +2 -2
  250. package/presets/cursor/svelte/agents/build-verifier.md +2 -2
  251. package/presets/cursor/svelte/agents/ci-investigator.md +2 -2
  252. package/presets/cursor/svelte/agents/code-reviewer.md +2 -2
  253. package/presets/cursor/svelte/agents/debugger.md +2 -2
  254. package/presets/cursor/svelte/agents/feature-developer.md +2 -2
  255. package/presets/cursor/svelte/agents/migration-specialist.md +2 -2
  256. package/presets/cursor/svelte/agents/mockup-reviewer.md +2 -2
  257. package/presets/cursor/svelte/agents/openspec-author.md +2 -2
  258. package/presets/cursor/svelte/agents/performance-auditor.md +2 -2
  259. package/presets/cursor/svelte/agents/qa-tester.md +2 -2
  260. package/presets/cursor/svelte/agents/security-reviewer.md +2 -2
  261. package/presets/cursor/svelte/agents/solution-architect.md +2 -2
  262. package/presets/cursor/svelte/agents/task-analyst.md +1 -1
  263. package/presets/cursor/svelte/agents/task-router.md +1 -1
  264. package/presets/cursor/svelte/agents/tech-writer.md +2 -2
  265. package/presets/cursor/svelte/agents/unit-test-generator.md +2 -2
  266. package/presets/cursor/svelte/agents/unit-test-healer.md +2 -2
  267. package/presets/cursor/svelte/agents/unit-test-planner.md +2 -2
  268. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +3 -1
  269. package/presets/mavis/android-kotlin/agents/accessibility-reviewer.md +2 -2
  270. package/presets/mavis/android-kotlin/agents/api-contract-reviewer.md +2 -2
  271. package/presets/mavis/android-kotlin/agents/build-verifier.md +1 -1
  272. package/presets/mavis/android-kotlin/agents/ci-investigator.md +2 -2
  273. package/presets/mavis/android-kotlin/agents/code-reviewer.md +2 -2
  274. package/presets/mavis/android-kotlin/agents/debugger.md +2 -2
  275. package/presets/mavis/android-kotlin/agents/feature-developer.md +2 -2
  276. package/presets/mavis/android-kotlin/agents/migration-specialist.md +2 -2
  277. package/presets/mavis/android-kotlin/agents/mockup-reviewer.md +2 -2
  278. package/presets/mavis/android-kotlin/agents/openspec-author.md +2 -2
  279. package/presets/mavis/android-kotlin/agents/performance-auditor.md +2 -2
  280. package/presets/mavis/android-kotlin/agents/qa-tester.md +2 -2
  281. package/presets/mavis/android-kotlin/agents/security-reviewer.md +2 -2
  282. package/presets/mavis/android-kotlin/agents/task-analyst.md +1 -1
  283. package/presets/mavis/android-kotlin/agents/task-router.md +1 -1
  284. package/presets/mavis/android-kotlin/agents/tech-writer.md +2 -2
  285. package/presets/mavis/android-kotlin/agents/unit-test-generator.md +2 -2
  286. package/presets/mavis/android-kotlin/agents/unit-test-healer.md +2 -2
  287. package/presets/mavis/android-kotlin/agents/unit-test-planner.md +2 -2
  288. package/presets/mavis/android-kotlin/rules/agent-team-orchestrator.md +4 -1
  289. package/presets/mavis/go/agents/build-verifier.md +2 -2
  290. package/presets/mavis/go/agents/code-reviewer.md +2 -2
  291. package/presets/mavis/go/agents/feature-developer.md +2 -2
  292. package/presets/mavis/go/agents/openspec-author.md +2 -2
  293. package/presets/mavis/go/agents/task-analyst.md +1 -1
  294. package/presets/mavis/go/agents/task-router.md +1 -1
  295. package/presets/mavis/go/rules/agent-team-orchestrator.md +4 -1
  296. package/presets/mavis/ios-swift/agents/build-verifier.md +2 -2
  297. package/presets/mavis/ios-swift/agents/code-reviewer.md +2 -2
  298. package/presets/mavis/ios-swift/agents/feature-developer.md +2 -2
  299. package/presets/mavis/ios-swift/agents/mockup-reviewer.md +2 -2
  300. package/presets/mavis/ios-swift/agents/openspec-author.md +2 -2
  301. package/presets/mavis/ios-swift/agents/task-analyst.md +1 -1
  302. package/presets/mavis/ios-swift/agents/task-router.md +1 -1
  303. package/presets/mavis/ios-swift/rules/agent-team-orchestrator.md +4 -1
  304. package/presets/mavis/java/agents/build-verifier.md +2 -2
  305. package/presets/mavis/java/agents/code-reviewer.md +2 -2
  306. package/presets/mavis/java/agents/feature-developer.md +2 -2
  307. package/presets/mavis/java/agents/openspec-author.md +2 -2
  308. package/presets/mavis/java/agents/task-analyst.md +1 -1
  309. package/presets/mavis/java/agents/task-router.md +1 -1
  310. package/presets/mavis/java/rules/agent-team-orchestrator.md +4 -1
  311. package/presets/mavis/mcp-ts/agents/build-verifier.md +2 -2
  312. package/presets/mavis/mcp-ts/agents/feature-developer.md +2 -2
  313. package/presets/mavis/mcp-ts/agents/task-analyst.md +1 -1
  314. package/presets/mavis/mcp-ts/agents/task-router.md +1 -1
  315. package/presets/mavis/mcp-ts/rules/agent-team-orchestrator.md +4 -1
  316. package/presets/mavis/next/adapter-map.json +9 -1
  317. package/presets/mavis/next/agents/accessibility-reviewer.md +2 -2
  318. package/presets/mavis/next/agents/api-contract-reviewer.md +2 -2
  319. package/presets/mavis/next/agents/build-verifier.md +2 -2
  320. package/presets/mavis/next/agents/ci-investigator.md +2 -2
  321. package/presets/mavis/next/agents/code-reviewer.md +37 -2
  322. package/presets/mavis/next/agents/debugger.md +2 -2
  323. package/presets/mavis/next/agents/feature-developer.md +24 -2
  324. package/presets/mavis/next/agents/migration-specialist.md +2 -2
  325. package/presets/mavis/next/agents/mockup-reviewer.md +29 -3
  326. package/presets/mavis/next/agents/openspec-author.md +2 -2
  327. package/presets/mavis/next/agents/performance-auditor.md +2 -2
  328. package/presets/mavis/next/agents/qa-tester.md +2 -2
  329. package/presets/mavis/next/agents/security-reviewer.md +2 -2
  330. package/presets/mavis/next/agents/solution-architect.md +2 -2
  331. package/presets/mavis/next/agents/task-analyst.md +1 -1
  332. package/presets/mavis/next/agents/task-router.md +1 -1
  333. package/presets/mavis/next/agents/tech-writer.md +2 -2
  334. package/presets/mavis/next/agents/unit-test-generator.md +2 -2
  335. package/presets/mavis/next/agents/unit-test-healer.md +2 -2
  336. package/presets/mavis/next/agents/unit-test-planner.md +2 -2
  337. package/presets/mavis/next/hooks/chain-team-phases.sh +46 -1
  338. package/presets/mavis/next/rules/agent-team-orchestrator.md +4 -1
  339. package/presets/mavis/next/rules/code-review-mr.md +10 -0
  340. package/presets/mavis/next/rules/design-tokens-binding.md +35 -0
  341. package/presets/mavis/next/rules/feature-delivery-workflow.md +17 -0
  342. package/presets/mavis/next/rules/mockup-review.md +9 -0
  343. package/presets/mavis/next/rules/react-ui.md +1 -0
  344. package/presets/mavis/next/skills/code-review/SKILL.md +1 -0
  345. package/presets/mavis/nuxt/agents/accessibility-reviewer.md +2 -2
  346. package/presets/mavis/nuxt/agents/api-contract-reviewer.md +2 -2
  347. package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
  348. package/presets/mavis/nuxt/agents/ci-investigator.md +2 -2
  349. package/presets/mavis/nuxt/agents/code-reviewer.md +2 -2
  350. package/presets/mavis/nuxt/agents/debugger.md +2 -2
  351. package/presets/mavis/nuxt/agents/feature-developer.md +2 -2
  352. package/presets/mavis/nuxt/agents/migration-specialist.md +2 -2
  353. package/presets/mavis/nuxt/agents/mockup-reviewer.md +2 -2
  354. package/presets/mavis/nuxt/agents/openspec-author.md +2 -2
  355. package/presets/mavis/nuxt/agents/performance-auditor.md +2 -2
  356. package/presets/mavis/nuxt/agents/qa-tester.md +2 -2
  357. package/presets/mavis/nuxt/agents/security-reviewer.md +2 -2
  358. package/presets/mavis/nuxt/agents/solution-architect.md +2 -2
  359. package/presets/mavis/nuxt/agents/task-analyst.md +1 -1
  360. package/presets/mavis/nuxt/agents/task-router.md +1 -1
  361. package/presets/mavis/nuxt/agents/tech-writer.md +2 -2
  362. package/presets/mavis/nuxt/agents/unit-test-generator.md +2 -2
  363. package/presets/mavis/nuxt/agents/unit-test-healer.md +2 -2
  364. package/presets/mavis/nuxt/agents/unit-test-planner.md +2 -2
  365. package/presets/mavis/nuxt/rules/agent-team-orchestrator.md +4 -1
  366. package/presets/mavis/php-hexagonal/agents/build-verifier.md +2 -2
  367. package/presets/mavis/php-hexagonal/agents/code-reviewer.md +2 -2
  368. package/presets/mavis/php-hexagonal/agents/feature-developer.md +2 -2
  369. package/presets/mavis/php-hexagonal/agents/openspec-author.md +2 -2
  370. package/presets/mavis/php-hexagonal/agents/task-analyst.md +1 -1
  371. package/presets/mavis/php-hexagonal/agents/task-router.md +1 -1
  372. package/presets/mavis/php-hexagonal/rules/agent-team-orchestrator.md +4 -1
  373. package/presets/mavis/php-laravel/agents/build-verifier.md +2 -2
  374. package/presets/mavis/php-laravel/agents/code-reviewer.md +2 -2
  375. package/presets/mavis/php-laravel/agents/feature-developer.md +2 -2
  376. package/presets/mavis/php-laravel/agents/openspec-author.md +2 -2
  377. package/presets/mavis/php-laravel/agents/task-analyst.md +1 -1
  378. package/presets/mavis/php-laravel/agents/task-router.md +1 -1
  379. package/presets/mavis/php-laravel/rules/agent-team-orchestrator.md +4 -1
  380. package/presets/mavis/svelte/agents/accessibility-reviewer.md +2 -2
  381. package/presets/mavis/svelte/agents/api-contract-reviewer.md +2 -2
  382. package/presets/mavis/svelte/agents/build-verifier.md +2 -2
  383. package/presets/mavis/svelte/agents/ci-investigator.md +2 -2
  384. package/presets/mavis/svelte/agents/code-reviewer.md +2 -2
  385. package/presets/mavis/svelte/agents/debugger.md +2 -2
  386. package/presets/mavis/svelte/agents/feature-developer.md +2 -2
  387. package/presets/mavis/svelte/agents/migration-specialist.md +2 -2
  388. package/presets/mavis/svelte/agents/mockup-reviewer.md +2 -2
  389. package/presets/mavis/svelte/agents/openspec-author.md +2 -2
  390. package/presets/mavis/svelte/agents/performance-auditor.md +2 -2
  391. package/presets/mavis/svelte/agents/qa-tester.md +2 -2
  392. package/presets/mavis/svelte/agents/security-reviewer.md +2 -2
  393. package/presets/mavis/svelte/agents/solution-architect.md +2 -2
  394. package/presets/mavis/svelte/agents/task-analyst.md +1 -1
  395. package/presets/mavis/svelte/agents/task-router.md +1 -1
  396. package/presets/mavis/svelte/agents/tech-writer.md +2 -2
  397. package/presets/mavis/svelte/agents/unit-test-generator.md +2 -2
  398. package/presets/mavis/svelte/agents/unit-test-healer.md +2 -2
  399. package/presets/mavis/svelte/agents/unit-test-planner.md +2 -2
  400. package/presets/mavis/svelte/rules/agent-team-orchestrator.md +4 -1
  401. package/presets/opencode/android-kotlin/agents/accessibility-reviewer.md +2 -2
  402. package/presets/opencode/android-kotlin/agents/api-contract-reviewer.md +2 -2
  403. package/presets/opencode/android-kotlin/agents/build-verifier.md +1 -1
  404. package/presets/opencode/android-kotlin/agents/ci-investigator.md +2 -2
  405. package/presets/opencode/android-kotlin/agents/code-reviewer.md +2 -2
  406. package/presets/opencode/android-kotlin/agents/debugger.md +2 -2
  407. package/presets/opencode/android-kotlin/agents/feature-developer.md +2 -2
  408. package/presets/opencode/android-kotlin/agents/migration-specialist.md +2 -2
  409. package/presets/opencode/android-kotlin/agents/mockup-reviewer.md +2 -2
  410. package/presets/opencode/android-kotlin/agents/openspec-author.md +2 -2
  411. package/presets/opencode/android-kotlin/agents/performance-auditor.md +2 -2
  412. package/presets/opencode/android-kotlin/agents/qa-tester.md +2 -2
  413. package/presets/opencode/android-kotlin/agents/security-reviewer.md +2 -2
  414. package/presets/opencode/android-kotlin/agents/task-analyst.md +1 -1
  415. package/presets/opencode/android-kotlin/agents/task-router.md +1 -1
  416. package/presets/opencode/android-kotlin/agents/tech-writer.md +2 -2
  417. package/presets/opencode/android-kotlin/agents/unit-test-generator.md +2 -2
  418. package/presets/opencode/android-kotlin/agents/unit-test-healer.md +2 -2
  419. package/presets/opencode/android-kotlin/agents/unit-test-planner.md +2 -2
  420. package/presets/opencode/android-kotlin/rules/agent-team-orchestrator.md +4 -1
  421. package/presets/opencode/go/agents/build-verifier.md +2 -2
  422. package/presets/opencode/go/agents/code-reviewer.md +2 -2
  423. package/presets/opencode/go/agents/feature-developer.md +2 -2
  424. package/presets/opencode/go/agents/openspec-author.md +2 -2
  425. package/presets/opencode/go/agents/task-analyst.md +1 -1
  426. package/presets/opencode/go/agents/task-router.md +1 -1
  427. package/presets/opencode/go/rules/agent-team-orchestrator.md +4 -1
  428. package/presets/opencode/ios-swift/agents/build-verifier.md +2 -2
  429. package/presets/opencode/ios-swift/agents/code-reviewer.md +2 -2
  430. package/presets/opencode/ios-swift/agents/feature-developer.md +2 -2
  431. package/presets/opencode/ios-swift/agents/mockup-reviewer.md +2 -2
  432. package/presets/opencode/ios-swift/agents/openspec-author.md +2 -2
  433. package/presets/opencode/ios-swift/agents/task-analyst.md +1 -1
  434. package/presets/opencode/ios-swift/agents/task-router.md +1 -1
  435. package/presets/opencode/ios-swift/rules/agent-team-orchestrator.md +4 -1
  436. package/presets/opencode/java/agents/build-verifier.md +2 -2
  437. package/presets/opencode/java/agents/code-reviewer.md +2 -2
  438. package/presets/opencode/java/agents/feature-developer.md +2 -2
  439. package/presets/opencode/java/agents/openspec-author.md +2 -2
  440. package/presets/opencode/java/agents/task-analyst.md +1 -1
  441. package/presets/opencode/java/agents/task-router.md +1 -1
  442. package/presets/opencode/java/rules/agent-team-orchestrator.md +4 -1
  443. package/presets/opencode/mcp-ts/agents/build-verifier.md +2 -2
  444. package/presets/opencode/mcp-ts/agents/feature-developer.md +2 -2
  445. package/presets/opencode/mcp-ts/agents/task-analyst.md +1 -1
  446. package/presets/opencode/mcp-ts/agents/task-router.md +1 -1
  447. package/presets/opencode/mcp-ts/rules/agent-team-orchestrator.md +4 -1
  448. package/presets/opencode/next/adapter-map.json +9 -1
  449. package/presets/opencode/next/agents/accessibility-reviewer.md +2 -2
  450. package/presets/opencode/next/agents/api-contract-reviewer.md +2 -2
  451. package/presets/opencode/next/agents/build-verifier.md +2 -2
  452. package/presets/opencode/next/agents/ci-investigator.md +2 -2
  453. package/presets/opencode/next/agents/code-reviewer.md +37 -2
  454. package/presets/opencode/next/agents/debugger.md +2 -2
  455. package/presets/opencode/next/agents/feature-developer.md +24 -2
  456. package/presets/opencode/next/agents/migration-specialist.md +2 -2
  457. package/presets/opencode/next/agents/mockup-reviewer.md +29 -3
  458. package/presets/opencode/next/agents/openspec-author.md +2 -2
  459. package/presets/opencode/next/agents/performance-auditor.md +2 -2
  460. package/presets/opencode/next/agents/qa-tester.md +2 -2
  461. package/presets/opencode/next/agents/security-reviewer.md +2 -2
  462. package/presets/opencode/next/agents/solution-architect.md +2 -2
  463. package/presets/opencode/next/agents/task-analyst.md +1 -1
  464. package/presets/opencode/next/agents/task-router.md +1 -1
  465. package/presets/opencode/next/agents/tech-writer.md +2 -2
  466. package/presets/opencode/next/agents/unit-test-generator.md +2 -2
  467. package/presets/opencode/next/agents/unit-test-healer.md +2 -2
  468. package/presets/opencode/next/agents/unit-test-planner.md +2 -2
  469. package/presets/opencode/next/hooks/chain-team-phases.sh +46 -1
  470. package/presets/opencode/next/rules/agent-team-orchestrator.md +4 -1
  471. package/presets/opencode/next/rules/code-review-mr.md +10 -0
  472. package/presets/opencode/next/rules/design-tokens-binding.md +35 -0
  473. package/presets/opencode/next/rules/feature-delivery-workflow.md +17 -0
  474. package/presets/opencode/next/rules/mockup-review.md +9 -0
  475. package/presets/opencode/next/rules/react-ui.md +1 -0
  476. package/presets/opencode/next/skills/code-review/SKILL.md +1 -0
  477. package/presets/opencode/nuxt/agents/accessibility-reviewer.md +2 -2
  478. package/presets/opencode/nuxt/agents/api-contract-reviewer.md +2 -2
  479. package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
  480. package/presets/opencode/nuxt/agents/ci-investigator.md +2 -2
  481. package/presets/opencode/nuxt/agents/code-reviewer.md +2 -2
  482. package/presets/opencode/nuxt/agents/debugger.md +2 -2
  483. package/presets/opencode/nuxt/agents/feature-developer.md +2 -2
  484. package/presets/opencode/nuxt/agents/migration-specialist.md +2 -2
  485. package/presets/opencode/nuxt/agents/mockup-reviewer.md +2 -2
  486. package/presets/opencode/nuxt/agents/openspec-author.md +2 -2
  487. package/presets/opencode/nuxt/agents/performance-auditor.md +2 -2
  488. package/presets/opencode/nuxt/agents/qa-tester.md +2 -2
  489. package/presets/opencode/nuxt/agents/security-reviewer.md +2 -2
  490. package/presets/opencode/nuxt/agents/solution-architect.md +2 -2
  491. package/presets/opencode/nuxt/agents/task-analyst.md +1 -1
  492. package/presets/opencode/nuxt/agents/task-router.md +1 -1
  493. package/presets/opencode/nuxt/agents/tech-writer.md +2 -2
  494. package/presets/opencode/nuxt/agents/unit-test-generator.md +2 -2
  495. package/presets/opencode/nuxt/agents/unit-test-healer.md +2 -2
  496. package/presets/opencode/nuxt/agents/unit-test-planner.md +2 -2
  497. package/presets/opencode/nuxt/rules/agent-team-orchestrator.md +4 -1
  498. package/presets/opencode/php-hexagonal/agents/build-verifier.md +2 -2
  499. package/presets/opencode/php-hexagonal/agents/code-reviewer.md +2 -2
  500. package/presets/opencode/php-hexagonal/agents/feature-developer.md +2 -2
  501. package/presets/opencode/php-hexagonal/agents/openspec-author.md +2 -2
  502. package/presets/opencode/php-hexagonal/agents/task-analyst.md +1 -1
  503. package/presets/opencode/php-hexagonal/agents/task-router.md +1 -1
  504. package/presets/opencode/php-hexagonal/rules/agent-team-orchestrator.md +4 -1
  505. package/presets/opencode/php-laravel/agents/build-verifier.md +2 -2
  506. package/presets/opencode/php-laravel/agents/code-reviewer.md +2 -2
  507. package/presets/opencode/php-laravel/agents/feature-developer.md +2 -2
  508. package/presets/opencode/php-laravel/agents/openspec-author.md +2 -2
  509. package/presets/opencode/php-laravel/agents/task-analyst.md +1 -1
  510. package/presets/opencode/php-laravel/agents/task-router.md +1 -1
  511. package/presets/opencode/php-laravel/rules/agent-team-orchestrator.md +4 -1
  512. package/presets/opencode/svelte/agents/accessibility-reviewer.md +2 -2
  513. package/presets/opencode/svelte/agents/api-contract-reviewer.md +2 -2
  514. package/presets/opencode/svelte/agents/build-verifier.md +2 -2
  515. package/presets/opencode/svelte/agents/ci-investigator.md +2 -2
  516. package/presets/opencode/svelte/agents/code-reviewer.md +2 -2
  517. package/presets/opencode/svelte/agents/debugger.md +2 -2
  518. package/presets/opencode/svelte/agents/feature-developer.md +2 -2
  519. package/presets/opencode/svelte/agents/migration-specialist.md +2 -2
  520. package/presets/opencode/svelte/agents/mockup-reviewer.md +2 -2
  521. package/presets/opencode/svelte/agents/openspec-author.md +2 -2
  522. package/presets/opencode/svelte/agents/performance-auditor.md +2 -2
  523. package/presets/opencode/svelte/agents/qa-tester.md +2 -2
  524. package/presets/opencode/svelte/agents/security-reviewer.md +2 -2
  525. package/presets/opencode/svelte/agents/solution-architect.md +2 -2
  526. package/presets/opencode/svelte/agents/task-analyst.md +1 -1
  527. package/presets/opencode/svelte/agents/task-router.md +1 -1
  528. package/presets/opencode/svelte/agents/tech-writer.md +2 -2
  529. package/presets/opencode/svelte/agents/unit-test-generator.md +2 -2
  530. package/presets/opencode/svelte/agents/unit-test-healer.md +2 -2
  531. package/presets/opencode/svelte/agents/unit-test-planner.md +2 -2
  532. package/presets/opencode/svelte/rules/agent-team-orchestrator.md +4 -1
  533. package/scripts/fixtures/cli-golden/claude/next.json +11 -10
  534. package/scripts/fixtures/cli-golden/cursor/next.json +10 -9
  535. package/scripts/fixtures/cli-golden/mavis/next.json +9 -8
  536. package/scripts/fixtures/cli-golden/opencode/next.json +9 -8
@@ -61,8 +61,8 @@ Write `.ai.local/team/tasks/<slug>/review.md` with verdict APPROVE | REQUEST_CHA
61
61
 
62
62
  ## Artifact contract
63
63
 
64
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation, validation evidence, and the scoped git diff.
65
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign entries.
64
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
65
+ - **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
66
66
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
67
67
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
68
68
 
@@ -115,8 +115,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
115
115
 
116
116
  ## Artifact contract
117
117
 
118
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
119
- - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign entries.
118
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
119
+ - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
120
120
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
121
121
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
122
122
 
@@ -136,8 +136,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
136
136
 
137
137
  ## Artifact contract
138
138
 
139
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and available architecture/migration/review artifacts.
140
- - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign entries; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
139
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
140
+ - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign items in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
141
141
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths under `openspec/changes/<change-id>/**`, attach `openspec validate <change-id> --type change --strict` exit code + deltas-only summary, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
142
142
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
143
143
 
@@ -88,6 +88,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
88
88
  ## Artifact contract
89
89
 
90
90
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
91
- - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
91
+ - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign items in `manifest.artifacts[]`.
92
92
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
93
93
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -150,6 +150,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
150
150
  ## Artifact contract
151
151
 
152
152
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
153
- - **Owned outputs:** `pipeline.json` and the routing manifest entry; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign entries.
153
+ - **Owned outputs:** `pipeline.json` and the routing entry in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign items in `manifest.artifacts[]`.
154
154
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
155
155
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -78,7 +78,8 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
78
78
 
79
79
  - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
80
80
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
81
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
81
+ -
82
+ Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
82
83
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite state, gate, retry, attempt, timestamp, or metrics fields.
83
84
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
84
85
 
@@ -116,6 +117,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
116
117
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
117
118
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
118
119
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
120
+ | `blocked` | Pipeline / step cannot proceed (e.g. `pipeline_parse_error`, completion of a parallel step whose producer's receipt was missing — see `agent-artifact-contracts.md` § Completion receipts) |
121
+ | `awaiting_artifact_receipt` | Producer stopped but the bound or assigned-output receipt was missing or stale; hook keeps the attempt active and does not advance. See `agent-artifact-contracts.md` (Schema field name + Receipt binding) for the silent-bug class that lands here. |
119
122
 
120
123
  ## Pipeline step options
121
124
 
@@ -69,8 +69,8 @@ Document PASS/FAIL in `validation-report.md`. Soft leakage output:
69
69
 
70
70
  ## Artifact contract
71
71
 
72
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation evidence, pipeline scope, and changed files.
73
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
72
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation evidence, pipeline scope, and changed files.
73
+ - **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign items in `manifest.artifacts[]`.
74
74
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
75
75
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
76
76
 
@@ -107,8 +107,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
107
107
 
108
108
  ## Artifact contract
109
109
 
110
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
111
- - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign entries.
110
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
111
+ - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
112
112
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
113
113
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
114
114
 
@@ -90,6 +90,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
90
90
  ## Artifact contract
91
91
 
92
92
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
93
- - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
93
+ - **Owned outputs:** `brief.md` and `decomposition.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign items in `manifest.artifacts[]`.
94
94
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
95
95
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -146,6 +146,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
146
146
  ## Artifact contract
147
147
 
148
148
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
149
- - **Owned outputs:** `pipeline.json` and the routing manifest entry; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign entries.
149
+ - **Owned outputs:** `pipeline.json` and the routing entry in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign items in `manifest.artifacts[]`.
150
150
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
151
151
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -74,7 +74,8 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Sc
74
74
 
75
75
  - Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
76
76
  - Markdown remains detailed evidence; the manifest records producer, status, authoritative paths, timestamps, outcome, and evidence paths.
77
- - Agents upsert only entries they own and preserve foreign entries. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
77
+ -
78
+ Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
78
79
  - The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite state, gate, retry, attempt, timestamp, or metrics fields.
79
80
  - Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
80
81
 
@@ -112,6 +113,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
112
113
  | `awaiting_approval` | Human gate; wait for `/task-continue` |
113
114
  | `changes_requested` | Reviewer blocked; re-run developer (`retryAfterFix`) |
114
115
  | `validation_failed` | build-verifier failed; re-run developer then build-verifier |
116
+ | `blocked` | Pipeline / step cannot proceed (e.g. `pipeline_parse_error`, completion of a parallel step whose producer's receipt was missing — see `agent-artifact-contracts.md` § Completion receipts) |
117
+ | `awaiting_artifact_receipt` | Producer stopped but the bound or assigned-output receipt was missing or stale; hook keeps the attempt active and does not advance. See `agent-artifact-contracts.md` (Schema field name + Receipt binding) for the silent-bug class that lands here. |
115
118
 
116
119
  ## Pipeline step options
117
120
 
@@ -74,8 +74,8 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
74
74
 
75
75
  ## Artifact contract
76
76
 
77
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation or UI diff scope, and prior review artifacts when present.
78
- - **Owned outputs:** `a11y-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `a11y-review`) and preserve all foreign entries.
77
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation or UI diff scope, and prior review artifacts when present.
78
+ - **Owned outputs:** `a11y-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `a11y-review`) and preserve all foreign items in `manifest.artifacts[]`.
79
79
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
80
80
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
81
81
 
@@ -72,8 +72,8 @@ For feature-developer before or during implementation.
72
72
 
73
73
  ## Artifact contract
74
74
 
75
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, architecture when present, and changed types/API/mocks against the contract docs.
76
- - **Owned outputs:** `api-contract-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign entries.
75
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, architecture when present, and changed types/API/mocks against the contract docs.
76
+ - **Owned outputs:** `api-contract-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign items in `manifest.artifacts[]`.
77
77
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
78
78
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
79
79
 
@@ -129,7 +129,7 @@ Do not fix code — report only. Do not advance to code-reviewer until PASS.
129
129
 
130
130
  ## Artifact contract
131
131
 
132
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation evidence, pipeline scope, and changed files.
133
- - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
132
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation evidence, pipeline scope, and changed files.
133
+ - **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign items in `manifest.artifacts[]`.
134
134
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
135
135
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -90,8 +90,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
90
90
 
91
91
  ## Artifact contract
92
92
 
93
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition when present, failing check context, and prior validation/debug artifacts.
94
- - **Owned outputs:** `ci-report.md` plus any minimal fix paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `ci`) and preserve all foreign entries.
93
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition when present, failing check context, and prior validation/debug artifacts.
94
+ - **Owned outputs:** `ci-report.md` plus any minimal fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `ci`) and preserve all foreign items in `manifest.artifacts[]`.
95
95
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
96
96
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
97
97
 
@@ -41,6 +41,35 @@ You **issue** reviews. Implementers acting on your findings must verify each ite
41
41
  - User-flow changes without e2e plan/spec updates → note in warnings; REQUEST_CHANGES when AC requires e2e.
42
42
  - If the MR touches `docs/specs/**`, load **`product-specs`** (+ **`product-specs-authoring`** when new/changed specs): **WARN** code/spec drift; **FAIL** broken INDEX `path` link or missing required frontmatter keys/arrays on touched spec files; required body headings missing → **FAIL** on touched files. Do not invent missing product behavior.
43
43
 
44
+ ## UI / Figma parity gate (UI-touching MR)
45
+
46
+ When the diff touches **UI / layout / styling** — paths under `app/src/ui/**` (components, pages, styles, hooks used by UI), or edits to global layout/CSS/tokens, or renamed/reordered UI files — AND a Figma mockup reference exists in `brief.md` / `decomposition.md` (Figma URL, fileKey, or node id) **or** `mockup-review.md` is present in the task:
47
+
48
+ - **Do a detailed, pixel-accurate comparison** of the implementation against the mockup, **across every viewport the project uses**. The project’s accepted viewport set is the one declared in the `mockup-review` AC-8 / Stack notes (web buckets ~375 / ~768 / ~1280 mapped to small / medium / large) and/or the Storybook viewport toolbar in this repo — fetch the full set, do not sample.
49
+ - For each viewport: pull the Figma frame via Figma MCP `get_screenshot` (prefer the node-link if present) and capture the running app at the same width (Playwright MCP / Chrome DevTools MCP). Compare structure, spacing, typography, color, iconography, states, and interactive affordances. **Storybook visual baselines are not a substitute.**
50
+
51
+ ### Per-element parity checklist (mandatory)
52
+
53
+ For every UI element in the diff scope, verify against the Figma node and the `mockup-review.md` `## Design contract` (when present) and the **`design-tokens-binding`** discipline. Findings cite **`path:line`** + Figma node id + viewport.
54
+
55
+ 1. **Typography** — font-family, size, line-height, weight, letter-spacing, color. Must match the Figma text style / `tokens-typography` mapping. A `Text variant="…"` DS component is the safe mirror; a raw `font-size: 14px; line-height: 20px;` wrapper is a finding unless the Figma text style maps to a raw token (and the token is used, not a literal).
56
+ 2. **Color** — fills, strokes, icon color, link color, placeholder color. Must bind to `@sds/tokens-colors` / `@sds/brand-colors` / the project token module (or the Figma variable mapped in the Design contract). Raw `#…` / `rgb(…)` is a finding. Hover / active / focus / disabled states must use the bound state color from the token set, not a literal.
57
+ 3. **Spacing** — padding, gap, margin, border-radius. Must match the Figma spacing / radius variable (Design contract) or the repo spacing scale. Raw `padding: 16px;` is a finding if a token exists. Auto-layout intent (direction, gap, alignment) preserved — no reflow to absolute positioning without a brief reason.
58
+ 4. **Imagery & icons** — image `src`, intrinsic `width`/`height`, aspect ratio match the Figma asset / `get_design_context` recommendation; rendered with `next/image` (or repo convention). Icons must use the `@sds/icon` (or DS) symbol name from the Figma component instance. A `placeholder`, an invented image URL, a guessed icon name, or a stretched aspect ratio is a finding. `alt` text matches the Figma node copy when meaningful.
59
+ 5. **States** — empty / loading / error / success / disabled / validation visible in the Figma must be implemented. Missing states present in the mockup → `blocker`.
60
+ 6. **Structure & responsive** — direction (row / column), alignment, wrap, overflow match the Figma. The implementation responds to the project viewport set without horizontal scroll or clipped content at any accepted width (unless the Figma explicitly clips).
61
+ 7. **Auto-layout vs absolute** — for a region that is the only responsive evidence in Figma, the implementation must use flex / grid with the same gap / padding, not absolute positioning.
62
+
63
+ ### Findings, severity, and section
64
+
65
+ - Findings cite `path:line` + Figma node id + viewport + severity. Layout / style deviations from the mockup → **`important`**; user-visible / broken / missing-state → **`blocker`**; latent / cosmetic → **`nit`**.
66
+ - Emit a `## Figma parity (UI)` section in `review.md` with the per-viewport verdict, a findings table, and screenshots / links. The section must reference the `## Design contract` from `mockup-review.md` and the **`design-tokens-binding`** discipline. **If you cannot perform the comparison** (no Figma URL in brief, or Figma MCP down with no manual screenshots) → still emit the section with verdict `unable_to_compare` and a one-line reason. **Never** skip the section on a UI-touching MR with a Figma reference.
67
+ - **Hard rules:**
68
+ - UI-touching MR with a Figma reference and a missing or `unable_to_compare` parity section → **REQUEST_CHANGES**.
69
+ - Unbound raw values where a token exists (typography / color / spacing / imagery) → `blocker` (user-visible) or `important` (latent). Do not approve on Storybook baselines alone.
70
+
71
+ The gate does **not** apply to MRs with no UI/layout diff and no Figma reference (e.g. pure store/reducer or test-only changes).
72
+
44
73
  ## Review artifact
45
74
 
46
75
  Write `.ai.local/team/tasks/<slug>/review.md` with this format:
@@ -60,6 +89,12 @@ APPROVE | APPROVE_WITH_NOTES | REQUEST_CHANGES
60
89
  ## Suggestions (nice to have)
61
90
  - ...
62
91
 
92
+ ## Figma parity (UI)
93
+ - Viewports compared: …
94
+ - Per-viewport verdict: …
95
+ - Findings: `path:line` | node id | viewport | severity | note
96
+ - (If UI gate not applicable: `N/A — no UI diff / no Figma reference`.)
97
+
63
98
  ## AC coverage
64
99
  | Criterion | Status | Notes |
65
100
  |-----------|--------|-------|
@@ -79,7 +114,7 @@ Do not mix this output with retrospective facilitation — keep review and retro
79
114
 
80
115
  ## Artifact contract
81
116
 
82
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation, validation evidence, and the scoped git diff.
83
- - **Owned outputs:** `review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign entries.
117
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
118
+ - **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
84
119
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
85
120
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -97,8 +97,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
97
97
 
98
98
  ## Artifact contract
99
99
 
100
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition when present, failing evidence, and related prior artifacts.
101
- - **Owned outputs:** `debug-report.md` plus any minimal fix paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign entries.
100
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition when present, failing evidence, and related prior artifacts.
101
+ - **Owned outputs:** `debug-report.md` plus any minimal fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign items in `manifest.artifacts[]`.
102
102
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
103
103
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
104
104
 
@@ -47,6 +47,7 @@ You are a senior frontend developer working in a Next.js monorepo with strict la
47
47
  3. Read `pipeline.json` for step context and scope.
48
48
  4. Follow the **`feature-delivery` skill** (layer order, reference features, validation handoff).
49
49
  5. **Verify carry-over at HEAD before applying** (refactor intent only). When the brief comes from a prior review's carry-over findings list, for each item run `git show HEAD:<path>` or `grep` to confirm the finding still applies at the current HEAD; if the file already contains the fix (carry-over was closed in a prior uncommitted batch), mark it as **NO-OP at HEAD** in `implementation.md` and skip the edit; if the file is unchanged, apply the fix and cite file:line. Target ≤2 NO-OP items per refactor pipeline.
50
+ 6. **Figma node-link precondition.** If `brief.md` / `decomposition.md` / the prompt contains a Figma URL with a node id (`?node-id=…`), do **not** start UI implementation until `mockup-review.md` contains **both** a `## Design contract` section (Figma variables, text styles, components/assets with the repo mapping) **and** a `## Node decomposition (AC-2)` section (child→component map with bindings) for that node. If either section is missing or empty, emit `blocked` and hand back to the analyst / mockup-reviewer (or ask the user to re-run mockup-review). The Design contract is the binding table for typography / color / spacing / imagery; the Node decomposition is the component map. Load requestable rule **`ui-and-accessibility/design-tokens-binding`** before writing UI — bind every value to a Figma variable / text style / repo token; raw `#…` / `px` are a finding.
50
51
 
51
52
  ## Task execution rules
52
53
 
@@ -91,6 +92,17 @@ Do not perform formal code review — that is the code-reviewer subagent's job.
91
92
 
92
93
  Before handoff, IDENTIFY→RUN→READ→VERIFY the scoped checks for this WP, THEN claim. Do not say the work is done without that evidence in the same turn. Full-project lint is `build-verifier`.
93
94
 
95
+ ## UI self-check vs Figma (mandatory for UI WPs with a Figma reference)
96
+
97
+ When this WP touched UI / layout / styling (paths under `app/src/ui/**`, global layout/CSS/tokens) AND a Figma reference exists in `brief.md` / `decomposition.md` (or `mockup-review.md` is present):
98
+
99
+ 1. **Render** the changed routes at **each project viewport** (the set from `mockup-review` AC-8 / Stack notes — web buckets ~375 / ~768 / ~1280 small/medium/large — and the repo’s Storybook viewport toolbar). Use Playwright MCP or Chrome DevTools MCP (the app must be running; if not, note the limitation and still perform the self-check as far as possible).
100
+ 2. **Compare** each rendered viewport to the Figma `get_screenshot` (prefer the node-link). For each UI element in the diff scope, check the per-element parity list in the `code-reviewer` UI / Figma parity gate: typography, color, spacing, imagery, states, structure/responsive, auto-layout intent.
101
+ 3. **Fix** obvious deviations before the implementation receipt (font family / size / line-height / color / spacing / image src+size / icon name / state). Bind to the Design contract; load **`ui-and-accessibility/design-tokens-binding`** if a value is missing.
102
+ 4. **Record** a `## UI self-check vs Figma` block in `implementation.md` (viewports checked, MCP/app status, deviations fixed `path:line | node id | viewport | what | fix`, remaining gaps). If the app was not runnable or MCP was down, still emit the block with the limitation — the reviewer will gate.
103
+
104
+ This is the developer-side counterpart to the `code-reviewer` UI / Figma parity gate; together they close the fidelity loop (extract contract → bind → self-check → review-block on unbound).
105
+
94
106
  ## Anti-hallucination (Next / React / RTK)
95
107
 
96
108
  - When editing `app/**/*.{ts,tsx}`, load / follow rule `react-next-anti-hallucination`.
@@ -135,7 +147,7 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
135
147
 
136
148
  ## Artifact contract
137
149
 
138
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
139
- - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign entries.
150
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
151
+ - **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
140
152
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
141
153
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -78,8 +78,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
78
78
 
79
79
  ## Artifact contract
80
80
 
81
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and stack/version context from the repo.
82
- - **Owned outputs:** `migration-plan.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `migration-plan`) and preserve all foreign entries.
81
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and stack/version context from the repo.
82
+ - **Owned outputs:** `migration-plan.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `migration-plan`) and preserve all foreign items in `manifest.artifacts[]`.
83
83
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
84
84
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
85
85
 
@@ -50,9 +50,35 @@ MCP unavailable or OAuth fail → verdict `BLOCKED_MCP`. Do not invent DS claims
50
50
 
51
51
  Follow the requestable `mockup-review` checklist (DS components, tokens, quality, coverage, viewports). Do not duplicate that checklist here.
52
52
 
53
+ ## Node-link input: child→component decomposition (AC-2, mandatory)
54
+
55
+ When the Figma URL (in prompt, `brief.md`, or `decomposition.md`) contains a node id (`?node-id=…` or `…/node/…`):
56
+
57
+ 1. **Inspect the node subtree** via Figma MCP `get_metadata` for the exact node (not the whole file). Depth ≤3 named-frame levels; ≤12 child rows in the map.
58
+ 2. **Classify each child node** as one of: library component instance (check `search_design_system` / library metadata), custom frame, text/icon/asset, container, layout-only, unknown. Skip pure decorative leaves unless they constrain the child component.
59
+ 3. **Map each child node → target component** using repo conventions:
60
+ - existing `app/src/ui/**` component → name it (e.g. `RiskProfilePage/components/ProfileHealthCard`);
61
+ - attached library component (e.g. `@sds/*`) → name the library symbol and the local wrapper;
62
+ - no analog → mark `new: <ProposedName>` and the parent component it belongs to.
63
+ 4. **Emit the map** in the report under `## Node decomposition (AC-2)` as a table (node id, node name, type, target component / action). Add a short prose summary of grouping / boundaries.
64
+ 5. **Extract the Design contract** (mandatory for node-link input) and emit it as a separate `## Design contract` section, **above** the Node decomposition table — the developer reads it first:
65
+ - **Figma variables** (one `get_variable_defs` call per file): list the variables used by the subtree (color, spacing, radius, effect). Map each to the repo equivalent: `@sds/tokens-colors` / `@sds/brand-colors` / `@sds/tokens` / project token module (e.g. `var(--text-primary, …)`).
66
+ - **Text styles**: list the Figma text style names used (e.g. `Body/M`, `Heading/L`). Map to the repo typography component / token (`@sds/tokens-typography`, `Text variant="…"`, Linaria `var(--font-…, …)`).
67
+ - **Components / assets**: list library component instances (`@sds/*` symbol name), image fills (asset URL / `get_design_context` recommendation), and icons (`@sds/icon` symbol name).
68
+ - Call this once per file; do not dump the whole variable set — only what the subtree uses.
69
+ 6. **Extend the AC-2 table** with a concise `Bindings` column (or a per-row note) capturing the text style, fill / spacing tokens, and asset source for that node. Keep the table scannable; put the long form in the Design contract section.
70
+ 7. **Verdict rule.** Missing map **or** missing Design contract on a node-link input → verdict `FAIL` (mandatory pre-implementation step) unless MCP returned `BLOCKED_MCP`. Refusal to produce the map / contract on a node-link task is not an option — narrow the node with the user first (do not silently fall back to whole-file review).
71
+
72
+ The map and the Design contract are the implementation contract the developer reads before coding; the DS/tokens/quality/coverage/viewport dimensions still apply on top.
73
+
53
74
  ## Output
54
75
 
55
- Write `.ai.local/team/tasks/<slug>/mockup-review.md` using the report headings in the `mockup-review` rule.
76
+ Write `.ai.local/team/tasks/<slug>/mockup-review.md` using the report headings in the `mockup-review` rule. When the input is a node-link, the report **must** additionally include:
77
+
78
+ - `## Design contract` (above Node decomposition) — Figma variables, text styles, components/assets used by the subtree, with the repo mapping (`@sds/tokens-*` / DS components / project token module). This is the binding table the developer uses for typography, color, spacing, and imagery.
79
+ - `## Node decomposition (AC-2)` — the child→component map (table) plus a short prose summary, with a `Bindings` column / per-row note for the Figma design bindings.
80
+
81
+ Both sections are the developer’s pre-implementation contract; do not omit either on a node-link input.
56
82
 
57
83
  ## Verdicts and receipts
58
84
 
@@ -68,8 +94,8 @@ Standalone FAIL must **not** set `changes_requested`. Embedded FAIL is a FAIL-on
68
94
 
69
95
  ## Artifact contract
70
96
 
71
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for routing + analysis when present (standalone may have only the prompt + URL).
72
- - **Owned outputs:** `mockup-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign entries.
97
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for routing + analysis when present (standalone may have only the prompt + URL).
98
+ - **Owned outputs:** `mockup-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign items in `manifest.artifacts[]`.
73
99
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed`, `changes_requested`, or `blocked` per the table above. Bind it to the supplied `attemptId` when present.
74
100
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
75
101
 
@@ -138,8 +138,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
138
138
 
139
139
  ## Artifact contract
140
140
 
141
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and available architecture/migration/review artifacts.
142
- - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign entries; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
141
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
142
+ - **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign items in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
143
143
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths under `openspec/changes/<change-id>/**`, attach `openspec validate <change-id> --type change --strict` exit code + deltas-only summary, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
144
144
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
145
145
 
@@ -77,8 +77,8 @@ If Chrome DevTools MCP is ready and the app is running, use it for console/netwo
77
77
 
78
78
  ## Artifact contract
79
79
 
80
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief when present and the scoped git diff / routes under audit.
81
- - **Owned outputs:** `perf-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `perf-report`) and preserve all foreign entries.
80
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief when present and the scoped git diff / routes under audit.
81
+ - **Owned outputs:** `perf-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `perf-report`) and preserve all foreign items in `manifest.artifacts[]`.
82
82
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
83
83
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
84
84
 
@@ -57,8 +57,8 @@ When the task is mostly e2e, prefer invoking the dedicated `playwright-test-plan
57
57
 
58
58
  ## Artifact contract
59
59
 
60
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, reviewer notes when present, and prior implementation/validation artifacts.
61
- - **Owned outputs:** changed/added test paths (and any QA notes written under the slug dir); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `qa-tester`) and preserve all foreign entries.
60
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, reviewer notes when present, and prior implementation/validation artifacts.
61
+ - **Owned outputs:** changed/added test paths (and any QA notes written under the slug dir); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `qa-tester`) and preserve all foreign items in `manifest.artifacts[]`.
62
62
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
63
63
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
64
64
 
@@ -67,8 +67,8 @@ PASS | PASS_WITH_NOTES | FAIL
67
67
 
68
68
  ## Artifact contract
69
69
 
70
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, prior `review.md` when present, and the scoped git diff.
71
- - **Owned outputs:** `security-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `security-review`) and preserve all foreign entries.
70
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, prior `review.md` when present, and the scoped git diff.
71
+ - **Owned outputs:** `security-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `security-review`) and preserve all foreign items in `manifest.artifacts[]`.
72
72
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
73
73
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
74
74
 
@@ -77,8 +77,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
77
77
 
78
78
  ## Artifact contract
79
79
 
80
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and applicable prior analysis artifacts.
81
- - **Owned outputs:** `architecture.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `architecture`) and preserve all foreign entries.
80
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and applicable prior analysis artifacts.
81
+ - **Owned outputs:** `architecture.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `architecture`) and preserve all foreign items in `manifest.artifacts[]`.
82
82
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
83
83
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
84
84
 
@@ -184,6 +184,6 @@ If the prompt/brief has a tracker URL (Linear/Jira/Notion/…) and that MCP is r
184
184
  ## Artifact contract
185
185
 
186
186
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
187
- - **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
187
+ - **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign items in `manifest.artifacts[]`.
188
188
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
189
189
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -196,6 +196,6 @@ Return the routing receipt to the orchestrator. The orchestration runtime/hook e
196
196
  ## Artifact contract
197
197
 
198
198
  - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume the user request and any existing authoritative task/decision entries.
199
- - **Owned outputs:** `pipeline.json` and the routing manifest entry; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign entries.
199
+ - **Owned outputs:** `pipeline.json` and the routing entry in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `routing`) and preserve all foreign items in `manifest.artifacts[]`.
200
200
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
201
201
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
@@ -70,8 +70,8 @@ Post-delivery: when behavior or public docs changed and `docs/specs/` is in play
70
70
 
71
71
  ## Artifact contract
72
72
 
73
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and available architecture/migration/review artifacts.
74
- - **Owned outputs:** `documentation.md` (and any explicitly requested docs paths); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `documentation`) and preserve all foreign entries.
73
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
74
+ - **Owned outputs:** `documentation.md` (and any explicitly requested docs paths); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `documentation`) and preserve all foreign items in `manifest.artifacts[]`.
75
75
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
76
76
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
77
77
 
@@ -45,8 +45,8 @@ Run affected unit tests from `app/` when feasible. Report files changed, command
45
45
 
46
46
  ## Artifact contract
47
47
 
48
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `unit-test-plan.md`, brief/decomposition when present, and target modules.
49
- - **Owned outputs:** generated/updated `*.spec.ts` / `*.spec.tsx` paths; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-generator`) and preserve all foreign entries.
48
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `unit-test-plan.md`, brief/decomposition when present, and target modules.
49
+ - **Owned outputs:** generated/updated `*.spec.ts` / `*.spec.tsx` paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-generator`) and preserve all foreign items in `manifest.artifacts[]`.
50
50
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
51
51
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
52
52
 
@@ -46,8 +46,8 @@ Report root cause, files changed, validation result, and remaining risk.
46
46
 
47
47
  ## Artifact contract
48
48
 
49
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for failing test evidence, `unit-test-plan.md` when present, and recent diff.
50
- - **Owned outputs:** healed `*.spec.ts` / `*.spec.tsx` paths (and minimal production fixes only when evidenced); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-healer`) and preserve all foreign entries.
49
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for failing test evidence, `unit-test-plan.md` when present, and recent diff.
50
+ - **Owned outputs:** healed `*.spec.ts` / `*.spec.tsx` paths (and minimal production fixes only when evidenced); upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-healer`) and preserve all foreign items in `manifest.artifacts[]`.
51
51
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
52
52
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
53
53
 
@@ -66,8 +66,8 @@ Test titles in the plan must follow Russian capitalization rules from `rules/tes
66
66
 
67
67
  ## Artifact contract
68
68
 
69
- - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition and target modules under `app/src/**`.
70
- - **Owned outputs:** `unit-test-plan.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `unit-test-planner`) and preserve all foreign entries.
69
+ - **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and target modules under `app/src/**`.
70
+ - **Owned outputs:** `unit-test-plan.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `unit-test-planner`) and preserve all foreign items in `manifest.artifacts[]`.
71
71
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
72
72
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
73
73