@bonesofspring/ai-rules 0.2.20 → 0.2.22

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 (505) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +17 -2
  3. package/bin/cli.js +83 -6
  4. package/package.json +5 -2
  5. package/presets/_shared/README.md +2 -1
  6. package/presets/_shared/assets/docs-specs/INDEX.md +4 -1
  7. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +15 -0
  8. package/presets/_shared/core/agent-team/agent-task-metrics.md +1 -1
  9. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +1 -3
  10. package/presets/_shared/core/meta/preset-pr-checklist.md +5 -1
  11. package/presets/_shared/core/meta/preset-token-budget.md +7 -3
  12. package/presets/_shared/core/meta/preset-twin-sync.md +2 -0
  13. package/presets/_shared/core/testing/testing-principles.md +70 -0
  14. package/presets/claude/android-kotlin/agents/README.md +2 -1
  15. package/presets/claude/android-kotlin/agents/build-verifier.md +2 -0
  16. package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -0
  17. package/presets/claude/android-kotlin/agents/debugger.md +1 -0
  18. package/presets/claude/android-kotlin/agents/feature-developer.md +4 -1
  19. package/presets/claude/android-kotlin/agents/openspec-author.md +163 -0
  20. package/presets/claude/android-kotlin/agents/qa-tester.md +2 -0
  21. package/presets/claude/android-kotlin/agents/task-analyst.md +1 -1
  22. package/presets/claude/android-kotlin/agents/task-router.md +9 -1
  23. package/presets/claude/android-kotlin/agents/tech-writer.md +4 -0
  24. package/presets/claude/android-kotlin/commands/README.md +0 -2
  25. package/presets/claude/android-kotlin/commands/task-continue.md +1 -1
  26. package/presets/claude/android-kotlin/commands/task.md +1 -5
  27. package/presets/claude/android-kotlin/commands/technical-retro.md +2 -2
  28. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +105 -13
  29. package/presets/claude/android-kotlin/rules/README.md +1 -0
  30. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +7 -4
  31. package/presets/claude/android-kotlin/rules/tooling-and-review/ai-local-overlay.md +48 -0
  32. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  33. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +7 -3
  34. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +2 -0
  35. package/presets/claude/go/README.md +1 -1
  36. package/presets/claude/go/agents/README.md +3 -2
  37. package/presets/claude/go/agents/build-verifier.md +4 -0
  38. package/presets/claude/go/agents/code-reviewer.md +4 -0
  39. package/presets/claude/go/agents/debugger.md +4 -0
  40. package/presets/claude/go/agents/feature-developer.md +5 -0
  41. package/presets/claude/go/agents/openspec-author.md +163 -0
  42. package/presets/claude/go/agents/qa-tester.md +4 -0
  43. package/presets/claude/go/agents/task-router.md +9 -1
  44. package/presets/claude/go/agents/tech-writer.md +4 -0
  45. package/presets/claude/go/commands/README.md +0 -2
  46. package/presets/claude/go/commands/task-continue.md +1 -1
  47. package/presets/claude/go/commands/task.md +1 -4
  48. package/presets/claude/go/hooks/chain-team-phases.sh +105 -14
  49. package/presets/claude/go/rules/README.md +1 -0
  50. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +2 -4
  51. package/presets/claude/go/rules/tooling-and-review/ai-local-overlay.md +48 -0
  52. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  53. package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +7 -3
  54. package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +2 -0
  55. package/presets/claude/ios-swift/agents/README.md +3 -2
  56. package/presets/claude/ios-swift/agents/build-verifier.md +2 -0
  57. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -0
  58. package/presets/claude/ios-swift/agents/debugger.md +1 -0
  59. package/presets/claude/ios-swift/agents/feature-developer.md +4 -1
  60. package/presets/claude/ios-swift/agents/openspec-author.md +163 -0
  61. package/presets/claude/ios-swift/agents/qa-tester.md +2 -0
  62. package/presets/claude/ios-swift/agents/task-analyst.md +1 -1
  63. package/presets/claude/ios-swift/agents/task-router.md +9 -1
  64. package/presets/claude/ios-swift/agents/tech-writer.md +4 -0
  65. package/presets/claude/ios-swift/commands/README.md +0 -2
  66. package/presets/claude/ios-swift/commands/task-continue.md +1 -1
  67. package/presets/claude/ios-swift/commands/task.md +1 -5
  68. package/presets/claude/ios-swift/commands/technical-retro.md +2 -2
  69. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +105 -13
  70. package/presets/claude/ios-swift/rules/README.md +1 -0
  71. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +7 -4
  72. package/presets/claude/ios-swift/rules/tooling-and-review/ai-local-overlay.md +48 -0
  73. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  74. package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +7 -3
  75. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +2 -0
  76. package/presets/claude/java/CLAUDE.md +1 -1
  77. package/presets/claude/java/agents/README.md +3 -2
  78. package/presets/claude/java/agents/build-verifier.md +4 -0
  79. package/presets/claude/java/agents/code-reviewer.md +4 -0
  80. package/presets/claude/java/agents/debugger.md +4 -0
  81. package/presets/claude/java/agents/feature-developer.md +5 -0
  82. package/presets/claude/java/agents/openspec-author.md +163 -0
  83. package/presets/claude/java/agents/qa-tester.md +4 -0
  84. package/presets/claude/java/agents/task-router.md +9 -1
  85. package/presets/claude/java/agents/tech-writer.md +4 -0
  86. package/presets/claude/java/commands/README.md +0 -2
  87. package/presets/claude/java/commands/task-continue.md +1 -1
  88. package/presets/claude/java/commands/task.md +1 -4
  89. package/presets/claude/java/hooks/chain-team-phases.sh +105 -14
  90. package/presets/claude/java/rules/README.md +1 -0
  91. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +2 -4
  92. package/presets/claude/java/rules/tooling-and-review/ai-local-overlay.md +48 -0
  93. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  94. package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +7 -3
  95. package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +2 -0
  96. package/presets/claude/mcp-ts/agents/build-verifier.md +4 -0
  97. package/presets/claude/mcp-ts/agents/feature-developer.md +5 -0
  98. package/presets/claude/mcp-ts/agents/task-analyst.md +1 -1
  99. package/presets/claude/mcp-ts/agents/task-router.md +1 -1
  100. package/presets/claude/mcp-ts/commands/README.md +0 -2
  101. package/presets/claude/mcp-ts/commands/task-continue.md +1 -1
  102. package/presets/claude/mcp-ts/commands/task.md +1 -4
  103. package/presets/claude/mcp-ts/commands/technical-retro.md +2 -2
  104. package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +91 -20
  105. package/presets/claude/mcp-ts/rules/README.md +1 -0
  106. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +2 -4
  107. package/presets/claude/mcp-ts/rules/tooling-and-review/ai-local-overlay.md +48 -0
  108. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  109. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +7 -3
  110. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +2 -0
  111. package/presets/claude/next/README.md +1 -0
  112. package/presets/claude/next/agents/README.md +2 -2
  113. package/presets/claude/next/agents/build-verifier.md +13 -1
  114. package/presets/claude/next/agents/code-reviewer.md +2 -0
  115. package/presets/claude/next/agents/debugger.md +4 -0
  116. package/presets/claude/next/agents/feature-developer.md +4 -1
  117. package/presets/claude/next/agents/openspec-author.md +163 -0
  118. package/presets/claude/next/agents/qa-tester.md +4 -0
  119. package/presets/claude/next/agents/task-analyst.md +1 -1
  120. package/presets/claude/next/agents/task-router.md +5 -1
  121. package/presets/claude/next/agents/tech-writer.md +4 -0
  122. package/presets/claude/next/agents/unit-test-generator.md +1 -1
  123. package/presets/claude/next/agents/unit-test-planner.md +1 -1
  124. package/presets/claude/next/commands/README.md +0 -2
  125. package/presets/claude/next/commands/task-continue.md +1 -1
  126. package/presets/claude/next/commands/task.md +1 -4
  127. package/presets/claude/next/hooks/chain-team-phases.sh +105 -13
  128. package/presets/claude/next/rules/README.md +1 -0
  129. package/presets/claude/next/rules/api-and-data/http-client.md +1 -1
  130. package/presets/claude/next/rules/architecture/reference-features.md +1 -1
  131. package/presets/claude/next/rules/testing/README.md +7 -1
  132. package/presets/claude/next/rules/testing/tests-e2e-structure.md +86 -48
  133. package/presets/claude/next/rules/testing/tests-unit.md +78 -51
  134. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +3 -4
  135. package/presets/claude/next/rules/tooling-and-review/ai-local-overlay.md +48 -0
  136. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  137. package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +7 -3
  138. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +2 -0
  139. package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +1 -1
  140. package/presets/claude/next/skills/playwright-e2e/SKILL.md +5 -3
  141. package/presets/claude/next/skills/unit-testing/SKILL.md +6 -4
  142. package/presets/claude/next/team/README.md +0 -3
  143. package/presets/claude/nuxt/agents/README.md +1 -1
  144. package/presets/claude/nuxt/agents/build-verifier.md +2 -0
  145. package/presets/claude/nuxt/agents/code-reviewer.md +2 -0
  146. package/presets/claude/nuxt/agents/debugger.md +4 -0
  147. package/presets/claude/nuxt/agents/feature-developer.md +4 -1
  148. package/presets/claude/nuxt/agents/openspec-author.md +163 -0
  149. package/presets/claude/nuxt/agents/qa-tester.md +4 -0
  150. package/presets/claude/nuxt/agents/task-analyst.md +1 -1
  151. package/presets/claude/nuxt/agents/task-router.md +5 -1
  152. package/presets/claude/nuxt/agents/tech-writer.md +4 -0
  153. package/presets/claude/nuxt/commands/README.md +0 -2
  154. package/presets/claude/nuxt/commands/task-continue.md +1 -1
  155. package/presets/claude/nuxt/commands/task.md +1 -5
  156. package/presets/claude/nuxt/commands/technical-retro.md +2 -2
  157. package/presets/claude/nuxt/hooks/chain-team-phases.sh +105 -13
  158. package/presets/claude/nuxt/rules/README.md +1 -0
  159. package/presets/claude/nuxt/rules/testing/README.md +6 -0
  160. package/presets/claude/nuxt/rules/testing/tests-e2e-structure.md +86 -43
  161. package/presets/claude/nuxt/rules/testing/tests-unit.md +58 -45
  162. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +8 -5
  163. package/presets/claude/nuxt/rules/tooling-and-review/ai-local-overlay.md +48 -0
  164. package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  165. package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +7 -3
  166. package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +2 -0
  167. package/presets/claude/nuxt/team/README.md +0 -3
  168. package/presets/claude/php-hexagonal/CLAUDE.md +1 -1
  169. package/presets/claude/php-hexagonal/agents/README.md +3 -2
  170. package/presets/claude/php-hexagonal/agents/build-verifier.md +4 -0
  171. package/presets/claude/php-hexagonal/agents/code-reviewer.md +4 -0
  172. package/presets/claude/php-hexagonal/agents/debugger.md +4 -0
  173. package/presets/claude/php-hexagonal/agents/feature-developer.md +5 -0
  174. package/presets/claude/php-hexagonal/agents/openspec-author.md +163 -0
  175. package/presets/claude/php-hexagonal/agents/qa-tester.md +4 -0
  176. package/presets/claude/php-hexagonal/agents/task-router.md +9 -1
  177. package/presets/claude/php-hexagonal/agents/tech-writer.md +4 -0
  178. package/presets/claude/php-hexagonal/commands/README.md +0 -2
  179. package/presets/claude/php-hexagonal/commands/task-continue.md +1 -1
  180. package/presets/claude/php-hexagonal/commands/task.md +1 -4
  181. package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +105 -14
  182. package/presets/claude/php-hexagonal/rules/README.md +1 -0
  183. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +2 -4
  184. package/presets/claude/php-hexagonal/rules/tooling-and-review/ai-local-overlay.md +48 -0
  185. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  186. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +7 -3
  187. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +2 -0
  188. package/presets/claude/php-laravel/agents/README.md +3 -2
  189. package/presets/claude/php-laravel/agents/build-verifier.md +4 -0
  190. package/presets/claude/php-laravel/agents/code-reviewer.md +4 -0
  191. package/presets/claude/php-laravel/agents/debugger.md +4 -0
  192. package/presets/claude/php-laravel/agents/feature-developer.md +5 -0
  193. package/presets/claude/php-laravel/agents/openspec-author.md +163 -0
  194. package/presets/claude/php-laravel/agents/qa-tester.md +4 -0
  195. package/presets/claude/php-laravel/agents/task-router.md +6 -1
  196. package/presets/claude/php-laravel/agents/tech-writer.md +4 -0
  197. package/presets/claude/php-laravel/commands/README.md +0 -2
  198. package/presets/claude/php-laravel/commands/task-continue.md +1 -1
  199. package/presets/claude/php-laravel/commands/task.md +1 -4
  200. package/presets/claude/php-laravel/hooks/chain-team-phases.sh +105 -14
  201. package/presets/claude/php-laravel/rules/README.md +1 -0
  202. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +2 -4
  203. package/presets/claude/php-laravel/rules/tooling-and-review/ai-local-overlay.md +48 -0
  204. package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  205. package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +7 -3
  206. package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +2 -0
  207. package/presets/claude/svelte/agents/README.md +1 -1
  208. package/presets/claude/svelte/agents/build-verifier.md +2 -0
  209. package/presets/claude/svelte/agents/code-reviewer.md +2 -0
  210. package/presets/claude/svelte/agents/debugger.md +4 -0
  211. package/presets/claude/svelte/agents/feature-developer.md +4 -1
  212. package/presets/claude/svelte/agents/openspec-author.md +163 -0
  213. package/presets/claude/svelte/agents/qa-tester.md +4 -0
  214. package/presets/claude/svelte/agents/task-analyst.md +1 -1
  215. package/presets/claude/svelte/agents/task-router.md +5 -1
  216. package/presets/claude/svelte/agents/tech-writer.md +4 -0
  217. package/presets/claude/svelte/commands/README.md +0 -2
  218. package/presets/claude/svelte/commands/task-continue.md +1 -1
  219. package/presets/claude/svelte/commands/task.md +1 -5
  220. package/presets/claude/svelte/commands/technical-retro.md +2 -2
  221. package/presets/claude/svelte/hooks/chain-team-phases.sh +105 -13
  222. package/presets/claude/svelte/rules/README.md +1 -0
  223. package/presets/claude/svelte/rules/testing/README.md +6 -0
  224. package/presets/claude/svelte/rules/testing/tests-e2e-structure.md +87 -45
  225. package/presets/claude/svelte/rules/testing/tests-unit.md +70 -23
  226. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +8 -5
  227. package/presets/claude/svelte/rules/tooling-and-review/ai-local-overlay.md +48 -0
  228. package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +5 -1
  229. package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +7 -3
  230. package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +2 -0
  231. package/presets/claude/svelte/team/README.md +0 -3
  232. package/presets/cursor/android-kotlin/agents/README.md +2 -1
  233. package/presets/cursor/android-kotlin/agents/build-verifier.md +2 -0
  234. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -0
  235. package/presets/cursor/android-kotlin/agents/debugger.md +1 -0
  236. package/presets/cursor/android-kotlin/agents/feature-developer.md +4 -1
  237. package/presets/cursor/android-kotlin/agents/openspec-author.md +164 -0
  238. package/presets/cursor/android-kotlin/agents/qa-tester.md +2 -0
  239. package/presets/cursor/android-kotlin/agents/task-analyst.md +1 -1
  240. package/presets/cursor/android-kotlin/agents/task-router.md +9 -1
  241. package/presets/cursor/android-kotlin/agents/tech-writer.md +4 -0
  242. package/presets/cursor/android-kotlin/commands/README.md +0 -2
  243. package/presets/cursor/android-kotlin/commands/task-continue.md +1 -1
  244. package/presets/cursor/android-kotlin/commands/task.md +1 -5
  245. package/presets/cursor/android-kotlin/commands/technical-retro.md +2 -2
  246. package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +105 -13
  247. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +7 -4
  248. package/presets/cursor/android-kotlin/rules/ai-local-overlay.mdc +43 -0
  249. package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +5 -1
  250. package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +7 -3
  251. package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +2 -0
  252. package/presets/cursor/go/README.md +6 -6
  253. package/presets/cursor/go/agents/README.md +3 -2
  254. package/presets/cursor/go/agents/build-verifier.md +4 -0
  255. package/presets/cursor/go/agents/code-reviewer.md +4 -0
  256. package/presets/cursor/go/agents/debugger.md +4 -0
  257. package/presets/cursor/go/agents/feature-developer.md +5 -0
  258. package/presets/cursor/go/agents/openspec-author.md +164 -0
  259. package/presets/cursor/go/agents/qa-tester.md +4 -0
  260. package/presets/cursor/go/agents/task-router.md +9 -1
  261. package/presets/cursor/go/agents/tech-writer.md +4 -0
  262. package/presets/cursor/go/commands/README.md +0 -2
  263. package/presets/cursor/go/commands/task-continue.md +1 -1
  264. package/presets/cursor/go/commands/task.md +1 -4
  265. package/presets/cursor/go/commands/technical-retro.md +2 -2
  266. package/presets/cursor/go/hooks/chain-team-phases.sh +105 -14
  267. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +2 -4
  268. package/presets/cursor/go/rules/ai-local-overlay.mdc +43 -0
  269. package/presets/cursor/go/rules/preset-pr-checklist.mdc +5 -1
  270. package/presets/cursor/go/rules/preset-token-budget.mdc +7 -3
  271. package/presets/cursor/go/rules/preset-twin-sync.mdc +2 -0
  272. package/presets/cursor/ios-swift/README.md +6 -6
  273. package/presets/cursor/ios-swift/agents/README.md +3 -2
  274. package/presets/cursor/ios-swift/agents/build-verifier.md +2 -0
  275. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -0
  276. package/presets/cursor/ios-swift/agents/debugger.md +1 -0
  277. package/presets/cursor/ios-swift/agents/feature-developer.md +4 -1
  278. package/presets/cursor/ios-swift/agents/openspec-author.md +164 -0
  279. package/presets/cursor/ios-swift/agents/qa-tester.md +2 -0
  280. package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
  281. package/presets/cursor/ios-swift/agents/task-router.md +9 -1
  282. package/presets/cursor/ios-swift/agents/tech-writer.md +4 -0
  283. package/presets/cursor/ios-swift/commands/README.md +1 -3
  284. package/presets/cursor/ios-swift/commands/task-continue.md +1 -1
  285. package/presets/cursor/ios-swift/commands/task.md +1 -5
  286. package/presets/cursor/ios-swift/commands/technical-retro.md +2 -2
  287. package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +105 -13
  288. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +7 -4
  289. package/presets/cursor/ios-swift/rules/ai-local-overlay.mdc +43 -0
  290. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +5 -1
  291. package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +7 -3
  292. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +2 -0
  293. package/presets/cursor/java/AGENTS.md +1 -1
  294. package/presets/cursor/java/agents/README.md +3 -2
  295. package/presets/cursor/java/agents/build-verifier.md +4 -0
  296. package/presets/cursor/java/agents/code-reviewer.md +4 -0
  297. package/presets/cursor/java/agents/debugger.md +4 -0
  298. package/presets/cursor/java/agents/feature-developer.md +5 -0
  299. package/presets/cursor/java/agents/openspec-author.md +164 -0
  300. package/presets/cursor/java/agents/qa-tester.md +4 -0
  301. package/presets/cursor/java/agents/task-router.md +9 -1
  302. package/presets/cursor/java/agents/tech-writer.md +4 -0
  303. package/presets/cursor/java/commands/README.md +0 -2
  304. package/presets/cursor/java/commands/task-continue.md +1 -1
  305. package/presets/cursor/java/commands/task.md +1 -4
  306. package/presets/cursor/java/commands/technical-retro.md +2 -2
  307. package/presets/cursor/java/hooks/chain-team-phases.sh +105 -14
  308. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +2 -4
  309. package/presets/cursor/java/rules/ai-local-overlay.mdc +43 -0
  310. package/presets/cursor/java/rules/preset-pr-checklist.mdc +5 -1
  311. package/presets/cursor/java/rules/preset-token-budget.mdc +7 -3
  312. package/presets/cursor/java/rules/preset-twin-sync.mdc +2 -0
  313. package/presets/cursor/mcp-ts/agents/build-verifier.md +4 -0
  314. package/presets/cursor/mcp-ts/agents/feature-developer.md +5 -0
  315. package/presets/cursor/mcp-ts/agents/task-analyst.md +1 -1
  316. package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
  317. package/presets/cursor/mcp-ts/commands/README.md +0 -2
  318. package/presets/cursor/mcp-ts/commands/task-continue.md +1 -1
  319. package/presets/cursor/mcp-ts/commands/task.md +1 -4
  320. package/presets/cursor/mcp-ts/commands/technical-retro.md +2 -2
  321. package/presets/cursor/mcp-ts/hooks/chain-team-phases.sh +91 -20
  322. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +2 -4
  323. package/presets/cursor/mcp-ts/rules/ai-local-overlay.mdc +43 -0
  324. package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +5 -1
  325. package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +7 -3
  326. package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +2 -0
  327. package/presets/cursor/next/README.md +8 -6
  328. package/presets/cursor/next/REPO_AGENTS.md +8 -0
  329. package/presets/cursor/next/agents/README.md +2 -2
  330. package/presets/cursor/next/agents/build-verifier.md +13 -1
  331. package/presets/cursor/next/agents/code-reviewer.md +2 -0
  332. package/presets/cursor/next/agents/debugger.md +4 -0
  333. package/presets/cursor/next/agents/feature-developer.md +4 -1
  334. package/presets/cursor/next/agents/openspec-author.md +164 -0
  335. package/presets/cursor/next/agents/qa-tester.md +4 -0
  336. package/presets/cursor/next/agents/task-analyst.md +1 -1
  337. package/presets/cursor/next/agents/task-router.md +5 -1
  338. package/presets/cursor/next/agents/tech-writer.md +4 -0
  339. package/presets/cursor/next/agents/unit-test-generator.md +1 -1
  340. package/presets/cursor/next/agents/unit-test-planner.md +1 -1
  341. package/presets/cursor/next/commands/README.md +0 -2
  342. package/presets/cursor/next/commands/task-continue.md +1 -1
  343. package/presets/cursor/next/commands/task.md +1 -4
  344. package/presets/cursor/next/commands/technical-retro.md +2 -2
  345. package/presets/cursor/next/hooks/chain-team-phases.sh +105 -13
  346. package/presets/cursor/next/rules/README.md +6 -3
  347. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +7 -5
  348. package/presets/cursor/next/rules/ai-local-overlay.mdc +43 -0
  349. package/presets/cursor/next/rules/http-client.mdc +1 -1
  350. package/presets/cursor/next/rules/preset-pr-checklist.mdc +5 -1
  351. package/presets/cursor/next/rules/preset-token-budget.mdc +7 -3
  352. package/presets/cursor/next/rules/preset-twin-sync.mdc +2 -0
  353. package/presets/cursor/next/rules/react-ui.mdc +1 -1
  354. package/presets/cursor/next/rules/reference-features.mdc +1 -1
  355. package/presets/cursor/next/rules/tests-e2e-structure.mdc +85 -43
  356. package/presets/cursor/next/rules/tests-unit.mdc +79 -48
  357. package/presets/cursor/next/skills/playwright-e2e/SKILL.md +5 -3
  358. package/presets/cursor/next/skills/unit-testing/SKILL.md +6 -4
  359. package/presets/cursor/next/team/README.md +0 -3
  360. package/presets/cursor/nuxt/README.md +6 -6
  361. package/presets/cursor/nuxt/agents/README.md +1 -1
  362. package/presets/cursor/nuxt/agents/build-verifier.md +2 -0
  363. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -0
  364. package/presets/cursor/nuxt/agents/debugger.md +4 -0
  365. package/presets/cursor/nuxt/agents/feature-developer.md +4 -1
  366. package/presets/cursor/nuxt/agents/openspec-author.md +164 -0
  367. package/presets/cursor/nuxt/agents/qa-tester.md +4 -0
  368. package/presets/cursor/nuxt/agents/task-analyst.md +1 -1
  369. package/presets/cursor/nuxt/agents/task-router.md +5 -1
  370. package/presets/cursor/nuxt/agents/tech-writer.md +4 -0
  371. package/presets/cursor/nuxt/commands/README.md +0 -2
  372. package/presets/cursor/nuxt/commands/task-continue.md +1 -1
  373. package/presets/cursor/nuxt/commands/task.md +1 -5
  374. package/presets/cursor/nuxt/commands/technical-retro.md +2 -2
  375. package/presets/cursor/nuxt/hooks/chain-team-phases.sh +105 -13
  376. package/presets/cursor/nuxt/rules/README.md +3 -1
  377. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +8 -5
  378. package/presets/cursor/nuxt/rules/ai-local-overlay.mdc +43 -0
  379. package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +5 -1
  380. package/presets/cursor/nuxt/rules/preset-token-budget.mdc +7 -3
  381. package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +2 -0
  382. package/presets/cursor/nuxt/rules/tests-e2e-structure.mdc +87 -43
  383. package/presets/cursor/nuxt/rules/tests-unit.mdc +62 -47
  384. package/presets/cursor/nuxt/team/README.md +0 -3
  385. package/presets/cursor/php-hexagonal/AGENTS.md +1 -1
  386. package/presets/cursor/php-hexagonal/agents/README.md +3 -2
  387. package/presets/cursor/php-hexagonal/agents/build-verifier.md +4 -0
  388. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +4 -0
  389. package/presets/cursor/php-hexagonal/agents/debugger.md +4 -0
  390. package/presets/cursor/php-hexagonal/agents/feature-developer.md +5 -0
  391. package/presets/cursor/php-hexagonal/agents/openspec-author.md +164 -0
  392. package/presets/cursor/php-hexagonal/agents/qa-tester.md +4 -0
  393. package/presets/cursor/php-hexagonal/agents/task-router.md +9 -1
  394. package/presets/cursor/php-hexagonal/agents/tech-writer.md +4 -0
  395. package/presets/cursor/php-hexagonal/commands/README.md +0 -2
  396. package/presets/cursor/php-hexagonal/commands/task-continue.md +1 -1
  397. package/presets/cursor/php-hexagonal/commands/task.md +1 -4
  398. package/presets/cursor/php-hexagonal/commands/technical-retro.md +2 -2
  399. package/presets/cursor/php-hexagonal/hooks/chain-team-phases.sh +105 -14
  400. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +2 -4
  401. package/presets/cursor/php-hexagonal/rules/ai-local-overlay.mdc +43 -0
  402. package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +5 -1
  403. package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +7 -3
  404. package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +2 -0
  405. package/presets/cursor/php-laravel/AGENTS.md +1 -1
  406. package/presets/cursor/php-laravel/agents/README.md +3 -2
  407. package/presets/cursor/php-laravel/agents/build-verifier.md +4 -0
  408. package/presets/cursor/php-laravel/agents/code-reviewer.md +4 -0
  409. package/presets/cursor/php-laravel/agents/debugger.md +4 -0
  410. package/presets/cursor/php-laravel/agents/feature-developer.md +5 -0
  411. package/presets/cursor/php-laravel/agents/openspec-author.md +164 -0
  412. package/presets/cursor/php-laravel/agents/qa-tester.md +4 -0
  413. package/presets/cursor/php-laravel/agents/task-router.md +6 -1
  414. package/presets/cursor/php-laravel/agents/tech-writer.md +4 -0
  415. package/presets/cursor/php-laravel/commands/README.md +0 -2
  416. package/presets/cursor/php-laravel/commands/task-continue.md +1 -1
  417. package/presets/cursor/php-laravel/commands/task.md +1 -4
  418. package/presets/cursor/php-laravel/commands/technical-retro.md +2 -2
  419. package/presets/cursor/php-laravel/hooks/chain-team-phases.sh +105 -14
  420. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +2 -4
  421. package/presets/cursor/php-laravel/rules/ai-local-overlay.mdc +43 -0
  422. package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +5 -1
  423. package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +7 -3
  424. package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +2 -0
  425. package/presets/cursor/svelte/README.md +6 -6
  426. package/presets/cursor/svelte/agents/README.md +1 -1
  427. package/presets/cursor/svelte/agents/build-verifier.md +2 -0
  428. package/presets/cursor/svelte/agents/code-reviewer.md +2 -0
  429. package/presets/cursor/svelte/agents/debugger.md +4 -0
  430. package/presets/cursor/svelte/agents/feature-developer.md +4 -1
  431. package/presets/cursor/svelte/agents/openspec-author.md +164 -0
  432. package/presets/cursor/svelte/agents/qa-tester.md +4 -0
  433. package/presets/cursor/svelte/agents/task-analyst.md +1 -1
  434. package/presets/cursor/svelte/agents/task-router.md +5 -1
  435. package/presets/cursor/svelte/agents/tech-writer.md +4 -0
  436. package/presets/cursor/svelte/commands/README.md +0 -2
  437. package/presets/cursor/svelte/commands/task-continue.md +1 -1
  438. package/presets/cursor/svelte/commands/task.md +1 -5
  439. package/presets/cursor/svelte/commands/technical-retro.md +2 -2
  440. package/presets/cursor/svelte/hooks/chain-team-phases.sh +105 -13
  441. package/presets/cursor/svelte/rules/README.md +3 -1
  442. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +8 -5
  443. package/presets/cursor/svelte/rules/ai-local-overlay.mdc +43 -0
  444. package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +5 -1
  445. package/presets/cursor/svelte/rules/preset-token-budget.mdc +7 -3
  446. package/presets/cursor/svelte/rules/preset-twin-sync.mdc +2 -0
  447. package/presets/cursor/svelte/rules/tests-e2e-structure.mdc +87 -43
  448. package/presets/cursor/svelte/rules/tests-unit.mdc +72 -23
  449. package/presets/cursor/svelte/team/README.md +0 -3
  450. package/scripts/_lib/embed-stems.json +31 -0
  451. package/scripts/aggregate-agent-task-metrics.mjs +23 -0
  452. package/scripts/check-chain-hook-coverage.sh +109 -0
  453. package/scripts/check-local-overlay.sh +136 -0
  454. package/scripts/check-preset-i18n.sh +2 -2
  455. package/scripts/check-preset-leakage.sh +4 -1
  456. package/scripts/check-preset-structure.sh +31 -1
  457. package/scripts/check-preset-token-budget.sh +120 -10
  458. package/scripts/check-rule-eval.mjs +16 -0
  459. package/scripts/check-shared-core-drift.sh +10 -32
  460. package/scripts/check-task-router-intents.sh +141 -0
  461. package/scripts/close-agent-task-human-gate.mjs +22 -5
  462. package/scripts/sync-shared-core-embeds.sh +9 -20
  463. package/scripts/test-agent-task-metrics-hooks.mjs +100 -2
  464. package/scripts/test-chain-team-phases-coverage.mjs +510 -0
  465. package/scripts/test-task-router-intents-fixtures.mjs +109 -0
  466. package/presets/claude/android-kotlin/commands/feature-continue.md +0 -23
  467. package/presets/claude/android-kotlin/commands/feature-start.md +0 -41
  468. package/presets/claude/go/commands/feature-continue.md +0 -23
  469. package/presets/claude/go/commands/feature-start.md +0 -38
  470. package/presets/claude/ios-swift/commands/feature-continue.md +0 -23
  471. package/presets/claude/ios-swift/commands/feature-start.md +0 -41
  472. package/presets/claude/java/commands/feature-continue.md +0 -23
  473. package/presets/claude/java/commands/feature-start.md +0 -38
  474. package/presets/claude/mcp-ts/commands/feature-continue.md +0 -23
  475. package/presets/claude/mcp-ts/commands/feature-start.md +0 -41
  476. package/presets/claude/next/commands/feature-continue.md +0 -23
  477. package/presets/claude/next/commands/feature-start.md +0 -38
  478. package/presets/claude/nuxt/commands/feature-continue.md +0 -23
  479. package/presets/claude/nuxt/commands/feature-start.md +0 -41
  480. package/presets/claude/php-hexagonal/commands/feature-continue.md +0 -23
  481. package/presets/claude/php-hexagonal/commands/feature-start.md +0 -38
  482. package/presets/claude/php-laravel/commands/feature-continue.md +0 -23
  483. package/presets/claude/php-laravel/commands/feature-start.md +0 -38
  484. package/presets/claude/svelte/commands/feature-continue.md +0 -23
  485. package/presets/claude/svelte/commands/feature-start.md +0 -41
  486. package/presets/cursor/android-kotlin/commands/feature-continue.md +0 -23
  487. package/presets/cursor/android-kotlin/commands/feature-start.md +0 -41
  488. package/presets/cursor/go/commands/feature-continue.md +0 -23
  489. package/presets/cursor/go/commands/feature-start.md +0 -41
  490. package/presets/cursor/ios-swift/commands/feature-continue.md +0 -23
  491. package/presets/cursor/ios-swift/commands/feature-start.md +0 -41
  492. package/presets/cursor/java/commands/feature-continue.md +0 -23
  493. package/presets/cursor/java/commands/feature-start.md +0 -41
  494. package/presets/cursor/mcp-ts/commands/feature-continue.md +0 -23
  495. package/presets/cursor/mcp-ts/commands/feature-start.md +0 -41
  496. package/presets/cursor/next/commands/feature-continue.md +0 -23
  497. package/presets/cursor/next/commands/feature-start.md +0 -41
  498. package/presets/cursor/nuxt/commands/feature-continue.md +0 -23
  499. package/presets/cursor/nuxt/commands/feature-start.md +0 -41
  500. package/presets/cursor/php-hexagonal/commands/feature-continue.md +0 -23
  501. package/presets/cursor/php-hexagonal/commands/feature-start.md +0 -41
  502. package/presets/cursor/php-laravel/commands/feature-continue.md +0 -23
  503. package/presets/cursor/php-laravel/commands/feature-start.md +0 -41
  504. package/presets/cursor/svelte/commands/feature-continue.md +0 -23
  505. package/presets/cursor/svelte/commands/feature-start.md +0 -41
@@ -17,12 +17,16 @@ Invariants for rule loading in an **installed** preset (consumer app).
17
17
 
18
18
  | Platform | Always-on | Cap |
19
19
  |----------|-----------|-----|
20
- | Cursor | `alwaysApply: true` | **≤ 3** |
20
+ | Cursor | `alwaysApply: true` | **≤ 4** |
21
21
  | Claude | rules **without** `paths:` | **exactly 3** |
22
22
 
23
+ **Cursor 4th slot is reserved for `ai-local-overlay`** (consumer-owned `.ai.local/` rules). If you do not need local overlay, demote that rule to `globs: ["**/.ai.local/**"]` and revert to ≤3.
24
+
23
25
  **Claude Option A (README exclusion):** when counting Claude rules without `paths:` / session-start, **exclude `**/README.md`** (topic indexes are not session-start rules). The intended session-start trio remains **exactly 3**; body budget sums **only those 3** rules.
24
26
 
25
- Session-start body budget (where documented): ≤140 lines total (stretch ≤120).
27
+ Session-start body budget:
28
+ - Claude trio: ≤140 lines total (stretch ≤120).
29
+ - Cursor 4-set: ≤170 lines total (4 rules including `ai-local-overlay`).
26
30
 
27
31
  ## Meta / author rules
28
32
 
@@ -38,4 +42,4 @@ Orchestrator, feature-delivery, code-review, post-change gates, domain globs —
38
42
 
39
43
  ## Verifier
40
44
 
41
- build-verifier **FAIL** if alwaysApply / session-start count exceeds 3 (Claude count **excludes `**/README.md`**), or if a `preset-*` meta rule is marked always-on.
45
+ build-verifier **FAIL** if Cursor `alwaysApply` count exceeds 4, Claude session-start count exceeds 3 (Claude count **excludes `**/README.md`**), or if a `preset-*` meta rule is marked always-on.
@@ -39,6 +39,8 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
39
39
 
40
40
  - **Domain** rules: ≥15 body lines (FAIL if thin without documented alias reason).
41
41
  - **Thin aliases** (`agent-team-intake`, `technical-retro`): may be shorter (soft) if they only point to a command/skill.
42
+ - **Slim-companion rules** (UI-edit bundle, slim app-cores, slim tooling): may be shorter than 15 lines **if and only if** the body is a pointer into shared-core / stack-prose (no standalone prose). Examples live in stack `rules/README.md` (e.g. `cursor/next/rules/README.md` "UI-edit bundle" intent).
43
+ - Mechanical enforcement lives in `packages/ai-rules/scripts/check-preset-token-budget.sh` — see `SLIM_COMPANION_ALLOWLIST` (the 53 stems accepted as slim pointers) and `MIN_SLIM_BODY_LINES` (5-line floor). Slim-companion rules with a body of 6–14 lines whose stem is **not** in the allowlist are reported as slim violations by the script.
42
44
 
43
45
  ## Severity (build-verifier)
44
46
 
@@ -55,7 +55,7 @@ For a reusable component:
55
55
 
56
56
  - Multiple constants/maps or multiple functions — still **one** `.data.ts` and one `.utils.ts`; do not split by "topic" into separate files without good reason (size, different responsibility at subcomponent level).
57
57
  - If logic belongs to a **subcomponent** in a subfolder (`components/Child/Child.tsx`), the same rules apply to **`Child.data.ts`**, **`Child.utils.ts`** for that subcomponent.
58
- - Tests for utilities and data — nearby in `__tests__/` or with `.test.ts` suffix per `testing/tests-unit.md`, same prefix (`RequestForAnalysisRecommendations.utils.test.ts`, etc.).
58
+ - Tests for utilities and data — under the mirrored path `app/__tests__/unit/<rel>` per `testing/tests-unit.md`, with the same prefix (`RequestForAnalysisRecommendations.utils.spec.ts`, etc.).
59
59
 
60
60
  # Styles and design tokens
61
61
 
@@ -8,11 +8,13 @@ description: Plans, generates, and heals Playwright e2e tests using this preset'
8
8
  ## Project Layout
9
9
 
10
10
  - Test root: `app/__tests__/e2e`.
11
- - Test plans: `*.cases.md` files under the matching feature folder.
11
+ - Mirror formula: `app/src/<rel>` `app/__tests__/e2e/<rel>` (drop `app/src`, preserve the relative path).
12
+ - Place artifacts at the deepest mirrored folder of the source under test; page-wide scenarios use the page folder.
13
+ - Test plans: `*.cases.md` files in the mirrored folder.
12
14
  - Executable specs: `*.spec.ts` files in the same folder.
13
- - Seed/setup reference: `app/__tests__/e2e/seed.spec.ts`.
15
+ - Seed/setup reference: `app/__tests__/e2e/seed.spec.ts`. Root exceptions: `_shared/`, `smoke.spec.ts`, and `seed.spec.ts`.
14
16
 
15
- Do not introduce top-level `specs/` or `tests/` folders for real coverage unless the user explicitly asks for a sandbox.
17
+ Do not introduce top-level `specs/`, `tests/`, or feature-named folders for real coverage unless the user explicitly asks for a sandbox.
16
18
 
17
19
  ## Planner
18
20
 
@@ -1,13 +1,15 @@
1
1
  ---
2
2
  name: unit-testing
3
- description: Plans, generates, and heals unit tests for mappers, thunks, HTTP client behavior, and React components using colocated *.spec.ts files and tests-unit rules. Use for unit test planning, generation, or fixing failing unit tests.
3
+ description: Plans, generates, and heals unit tests for mappers, thunks, HTTP client behavior, and React components using mirrored paths under app/__tests__/unit and tests-unit rules. Use for unit test planning, generation, or fixing failing unit tests.
4
4
  ---
5
5
 
6
6
  # Unit Testing
7
7
 
8
8
  ## Project Layout
9
9
 
10
- - Specs colocated with source: `*.spec.ts` / `*.spec.tsx` next to the module under test.
10
+ - Test root: `app/__tests__/unit`.
11
+ - Mirror formula: `app/src/<rel>` → `app/__tests__/unit/<rel>` (drop `app/src`, preserve the relative path).
12
+ - Place specs at the deepest mirrored folder of the module under test; do not colocate tests under `app/src/**`.
11
13
  - Legacy `*.test.ts` / `*.test.tsx` — do not rename without a separate task.
12
14
  - Runner: Jest or Vitest as configured in the target repo; components use `@testing-library/react`.
13
15
 
@@ -17,11 +19,11 @@ Follow **`rules/testing/tests-unit.md`**.
17
19
 
18
20
  Write or update `.claude/team/tasks/<slug>/unit-test-plan.md`.
19
21
 
20
- Each scenario needs a Russian `it()` title (capital letter after each sentence). Cover mappers, thunks, client behavior branches, and component interactions per AC.
22
+ Each scenario needs a Russian `it()` title (capital letter after each sentence). Cover mappers, thunks, client behavior branches, and component interactions per AC. Record the mirrored target path under `app/__tests__/unit/`.
21
23
 
22
24
  ## Generator
23
25
 
24
- Implement specs from `unit-test-plan.md`. Reuse project test-store, HTTP mocks, and existing test utilities. Do not change production code.
26
+ Implement specs from `unit-test-plan.md` under the mirrored `app/__tests__/unit/` path. Import the source under test through the `@/` alias. Reuse project test-store, HTTP mocks, and existing test utilities. Do not change production code.
25
27
 
26
28
  ## Healer
27
29
 
@@ -106,13 +106,10 @@ Prefer **`executing`** for pipeline mode. Legacy: `analysis`, `development`, `re
106
106
  /technical-retro <slug>
107
107
  ```
108
108
 
109
- Legacy: `/feature-start`, `/feature-continue`.
110
-
111
109
  ## Git
112
110
 
113
111
  Commit task artifacts if you want them to survive `ai-rules clean claude`. Or copy finished tasks to `docs/agent-workflow/tasks/<slug>/`.
114
112
 
115
-
116
113
  ## specMode, applyReadiness, memlog
117
114
 
118
115
  - **`specMode`:** `consume` | `generate` | `none` — primary in `brief.md` `## Spec mode`; optional top-level `pipeline.json` `specMode`. `none` skips INDEX/author mode (spike/research).
@@ -54,6 +54,7 @@ Role subagents for the Claude Code team pipeline.
54
54
  | Agent | File | Production code |
55
55
  |-------|------|-----------------|
56
56
  | Tech writer | `tech-writer.md` | docs only |
57
+ | OpenSpec author | `openspec-author.md` | `openspec/**` only (proposal/design/tasks/spec deltas; reads `app/**` for evidence) |
57
58
 
58
59
  Copied to `.claude/agents/` on `ai-rules init claude --preset nuxt`.
59
60
 
@@ -86,7 +87,6 @@ Default SoT — YAML `model` in each agent file. Optional `steps[].model` (`chea
86
87
  |---------|---------|
87
88
  | `/task <desc>` | Router → dynamic pipeline → first agent |
88
89
  | `/task-continue <slug>` | After a human gate |
89
- | `/feature-start`, `/feature-continue` | Legacy (compatibility) |
90
90
 
91
91
  Rule: `rules/tooling-and-review/agent-team-orchestrator.md`. Plan: `pipeline.json` under `.claude/team/tasks/<slug>/`.
92
92
 
@@ -96,6 +96,8 @@ Write the owned terminal receipt described under **Artifact contract**. If **FAI
96
96
 
97
97
  Do not fix code — report only. Do not advance to code-reviewer until PASS.
98
98
 
99
+ **Receipt binding.** When writing the terminal receipt to `artifact-manifest.json`, set `entry.receipt.attemptId = <attemptId supplied by the orchestrator>` (the orchestrator provides this via `attemptId` on invocation). The hook at `chain-team-phases.sh:readBoundReceiptOutcome` rejects entries whose `attemptId` does not match the current attempt, or whose `Date.parse(timestamps.completedAt) < Date.parse(attemptStartedAt)`. A missing or stale attemptId causes `awaiting_artifact_receipt` stalls. <!-- shared-core: receipt-binding -->
100
+
99
101
  ## Artifact contract
100
102
 
101
103
  - **Authoritative inputs:** read `.claude/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.
@@ -54,6 +54,8 @@ Write the owned terminal receipt described under **Artifact contract**. If **REQ
54
54
 
55
55
  Do not mix this output with retrospective facilitation — keep review and retro separate.
56
56
 
57
+ **Receipt binding.** When writing the terminal receipt to `artifact-manifest.json`, set `entry.receipt.attemptId = <attemptId supplied by the orchestrator>` (the orchestrator provides this via `attemptId` on invocation). The hook at `chain-team-phases.sh:readBoundReceiptOutcome` rejects entries whose `attemptId` does not match the current attempt, or whose `Date.parse(timestamps.completedAt) < Date.parse(attemptStartedAt)`. A missing or stale attemptId causes `awaiting_artifact_receipt` stalls. <!-- shared-core: receipt-binding -->
58
+
57
59
  ## Design guidance
58
60
 
59
61
  - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
@@ -80,3 +80,7 @@ Do not perform formal code review or write e2e plans — those are separate agen
80
80
 
81
81
  - When writing or changing code, load / follow rule `anti-sycophancy-discipline`.
82
82
  - When acting on review feedback (`changes_requested` / human comments): verify each item against the codebase before implementing; no performative agreement.
83
+
84
+ ## Receipt binding
85
+
86
+ > **Receipt binding.** When writing the terminal receipt to `artifact-manifest.json`, set `entry.receipt.attemptId = <attemptId supplied by the orchestrator>` (the orchestrator provides this via `attemptId` on invocation). The hook at `chain-team-phases.sh:readBoundReceiptOutcome` rejects entries whose `attemptId` does not match the current attempt, or whose `Date.parse(timestamps.completedAt) < Date.parse(attemptStartedAt)`. A missing or stale attemptId causes `awaiting_artifact_receipt` stalls. <!-- shared-core: receipt-binding -->
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: feature-developer
3
- description: Feature implementation specialist for Nuxt 3 stack. Implements tasks from decomposition.md following feature-delivery workflow. Use after brief approval via /task-continue or /feature-continue, or when explicitly asked to implement an approved task slug.
3
+ description: Feature implementation specialist for Nuxt 3 stack. Implements tasks from decomposition.md following feature-delivery workflow. Use after brief approval via /task-continue, or when explicitly asked to implement an approved task slug.
4
4
  model: inherit
5
5
  ---
6
6
 
@@ -12,6 +12,7 @@ You are a senior frontend developer working in a Nuxt 3 monorepo with strict lay
12
12
  2. Read `status.json` — proceed if `in_progress`, `approved`, or `retryAfterFix`.
13
13
  3. Read `pipeline.json` for step context and scope.
14
14
  4. Follow the **`feature-delivery` skill** (layer order, reference features, validation handoff).
15
+ 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.
15
16
 
16
17
  ## Task execution rules
17
18
 
@@ -39,6 +40,8 @@ Emit the owned implementation receipt with outcome `completed`. Handoff: tasks d
39
40
 
40
41
  Do not perform formal code review — that is the code-reviewer subagent's job.
41
42
 
43
+ **Receipt binding.** When writing the terminal receipt to `artifact-manifest.json`, set `entry.receipt.attemptId = <attemptId supplied by the orchestrator>` (the orchestrator provides this via `attemptId` on invocation). The hook at `chain-team-phases.sh:readBoundReceiptOutcome` rejects entries whose `attemptId` does not match the current attempt, or whose `Date.parse(timestamps.completedAt) < Date.parse(attemptStartedAt)`. A missing or stale attemptId causes `awaiting_artifact_receipt` stalls. <!-- shared-core: receipt-binding -->
44
+
42
45
  ## Design guidance
43
46
 
44
47
  - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: openspec-author
3
+ description: OpenSpec (spec-driven SDD) specialist. Explores openspec/specs/**, authors/refreshes/archives openspec/changes/** proposal–design–tasks–spec deltas per openspec/config.yaml schema. Reads app/** for evidence; never edits production code. Use when pipeline steps reference openspec/changes, /opsx:propose, /opsx:apply, /opsx:archive, openspec/specs, or scope is a change-id.
4
+ model: inherit
5
+ ---
6
+
7
+ You are an **OpenSpec** (Fission AI spec-driven SDD) author for a frontend/backend agent team.
8
+
9
+ Your only writes target `openspec/**` (and team artifact manifests). Production code lives behind `feature-developer`; you are **docs / spec only**.
10
+
11
+ ## When to load
12
+
13
+ You are invoked when:
14
+
15
+ - Pipeline step `agent` is `openspec-author`.
16
+ - Pipeline step `scope` is `openspec:<change-id>` (preferred) or `openspec-propose` (legacy alias — treat as `openspec:openspec-<change-id>` only when the handoff brief explicitly names the change-id).
17
+ - Prompt includes `/opsx:propose`, `/opsx:apply`, `/opsx:archive`, `openspec/changes`, `openspec/specs`, `openspec/config.yaml`, or `openspec validate`.
18
+ - Per task-analyst / solution-architect handoff, refresh an existing capability or scaffold a brand-new change.
19
+
20
+ If `openspec/` is absent in the repo, stop and report `blocked` with the message *"openspec/** not initialized — run `openspec init` first"* — never invent directories.
21
+
22
+ ## Inputs
23
+
24
+ 1. `.claude/team/tasks/<slug>/{brief.md, decomposition.md, architecture.md}` (Cursor: `.cursor/team/tasks/<slug>/`).
25
+ 2. `.claude/team/tasks/<slug>/artifact-manifest.json` — read first, consume `artifactInputIds`.
26
+ 3. `openspec/config.yaml` — schema, context block, `rules.proposal | specs | design | tasks`. **Source of truth** for word limits, Non-goals mandate, SHALL statement format, data-flow expectation, and task granularity. Never fork.
27
+ 4. `openspec/specs/<capability>/spec.md` — surviving applied specs (the "as-is" target).
28
+ 5. `openspec/changes/archive/<YYYY-MM-DD>-<change-id>/` — prior decisions (D-1..) and open questions (OQ-1..) reusable across changes.
29
+ 6. Source tree for code-evidence reads only — `app/src/**`, `src/**`, or stack equivalent. **Never edit.** Cite path:line in requirements, scenarios, design notes.
30
+ 7. Pipeline step `scope` — must be `openspec:<change-id>` (e.g. `openspec:MEDCARD-11762-sync-offline-consultation-spec`).
31
+
32
+ ## Phase discipline (mirrors `/opsx:propose` → `/opsx:apply` → `/opsx:archive`)
33
+
34
+ Pipeline step `scope` may encode a single phase or full lifecycle. Match the body to the phase, do not skip phases within a single invocation.
35
+
36
+ ### Phase 1 — Explore
37
+
38
+ 1. Read `openspec/config.yaml`. Confirm `schema:` and the four `rules.*` blocks.
39
+ 2. Read `openspec/specs/**/spec.md` (one file per capability) — note each capability's `## Purpose` and current `## Requirements`.
40
+ 3. Read `openspec/changes/archive/**/proposal.md` for prior decisions and OQ defaults that map to this change.
41
+ 4. Code-archaeology (read-only) on the affected source tree: list concrete routes, flags, slices, thunks, record statuses. Label every observation `code-evidence`.
42
+ 5. Emit a capability delta as `NEW | MODIFIED | REMOVED | RENAMED` with affected file paths.
43
+ 6. If a required source artefact is missing (e.g. `architecture.md` not produced), set `blocked` with the gap, do not invent.
44
+
45
+ ### Phase 2 — Propose
46
+
47
+ Scaffold `openspec/changes/<change-id>/`:
48
+
49
+ ```
50
+ openspec/changes/<change-id>/
51
+ ├── .openspec.yaml # schema mirror, change-id, created date
52
+ ├── proposal.md # Why / What Changes / Capabilities / Non-goals / Impact — under 500 words per config.rules.proposal
53
+ ├── design.md # Context / Goals / Decisions (D-1..) / Data flow (mermaid) / Open questions (OQ-1..)
54
+ ├── tasks.md # 1.1, 1.2, … — AC + verification checklists for future SDD
55
+ └── specs/<capability>/
56
+ └── spec.md # delta block: `## MODIFIED Requirements` and/or `## REMOVED Requirements`
57
+ ```
58
+
59
+ Hard constraints (read `config.yaml rules.proposal` first — they win):
60
+
61
+ - `proposal.md` ≤ 500 words.
62
+ - `## Non-goals` section mandatory (omit → `blocked`).
63
+ - `## What Changes` lists capability deltas **only**; no implementation steps.
64
+ - `## Capabilities` table groups deltas by capability slug; cite spec paths.
65
+ - Spec deltas use `## MODIFIED Requirements` heading (or `## REMOVED Requirements`); Each `### Requirement:` block carries `SHALL` statements and `#### Scenario:` Given/When/Then. Mirror existing capability voice.
66
+ - `design.md` data-flow is mermaid or ascii (no proprietary XML). Document **current as-is** unless the change is explicitly redesign.
67
+ - `tasks.md` 1.1, 1.2, 1.3 — each ≤ 5 acceptance bullets + verification note. **No production code in tasks**; tasks are **for future SDD implementation/tests**, not for rewriting the page now.
68
+
69
+ ### Phase 3 — Apply (validate, do not merge to specs)
70
+
71
+ Run from repo root:
72
+
73
+ ```bash
74
+ openspec validate <change-id> --type change --strict # must pass
75
+ openspec validate --specs --strict # must pass — surviving capabilities
76
+ openspec show <change-id> --json --deltas-only # handoff receipt
77
+ ```
78
+
79
+ On FAIL: fix the offending markdowns (cite config rule that failed), re-run. On second FAIL: stop, emit `blocked`, attach the validator output.
80
+
81
+ Do **not** move the change into `openspec/specs/` — that is the human merge step (`/opsx:apply` after review).
82
+
83
+ ### Phase 4 — Archive (post-merge)
84
+
85
+ After a human gate `applied` confirmation:
86
+
87
+ ```bash
88
+ # Move the approved change into archive; preserve prior archive intact.
89
+ mv openspec/changes/<change-id> openspec/changes/archive/<YYYY-MM-DD>-<change-id>
90
+ ```
91
+
92
+ Update `openspec/changes/archive/INDEX.md` if present. Verify that no surviving capability now references the archived `proposal.md` accidentally.
93
+
94
+ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`), one invocation may emit all four files and the validator receipts. If `scope` is single-phase, emit only the matching files.
95
+
96
+ ## Source discipline
97
+
98
+ - **Never invent** product behavior. Cite `path:line` for every requirement that depends on code. Label inferred lines as `> Status: inferred (no AC)` rather than fabricating fields.
99
+ - Reuse archive decisions: if `archive/.../proposal.md` records `D-3: X`, only fork when code-evidence contradicts X — append `D-N+1` rather than rewriting.
100
+ - Resolve OQ defaults from the most recent archive that touched the same capability; otherwise raise the OQ in the new change and stop until the human answers.
101
+ - Capability naming mirrors surviving `openspec/specs/<capability>/spec.md` slugs; new capabilities use the same domain vocabulary as `config.yaml context`.
102
+
103
+ ## Will / Will not
104
+
105
+ **Will**
106
+
107
+ - Read `app/src/**` (or stack equivalent) for evidence; never write.
108
+ - Create or update files under `openspec/changes/<change-id>/**` and the associated `specs/<capability>/spec.md` delta.
109
+ - Move an approved change into `openspec/changes/archive/<YYYY-MM-DD>-<change-id>/`.
110
+ - Run `openspec validate` and `openspec show --deltas-only`; surface FAIL output verbatim.
111
+ - Reference `openspec/config.yaml` rules in any deviation comment.
112
+
113
+ **Will not**
114
+
115
+ - Edit `app/**`, `app/src/**`, `src/**`, or any production-code tree.
116
+ - Edit `docs/specs/**` — that file tree belongs to skill `spec-authoring` (`docs/specs/INDEX.md` + page/feature templates). Hand off via `open_questions` if a request conflates the two.
117
+ - Edit `openspec/specs/**` directly (apply via the change, never in place).
118
+ - Skip the `## Non-goals` section in `proposal.md` even when the user omits it.
119
+ - Use `scope: openspec-propose` in **new** pipelines — it is a legacy alias for `openspec:<change-id>`; keep emitting the correct scope name. (Tech-writer still carries the legacy alias for in-flight replays.)
120
+ - Invent routes, flags, status names, or DTO fields. Cite or raise OQ.
121
+
122
+ ## Artifact contract
123
+
124
+ - **Authoritative inputs:** read `.claude/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.
125
+ - **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 `.claude/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`).
126
+ - **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.
127
+ - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
128
+
129
+ ## Output
130
+
131
+ When invoked directly (no pipeline), write the spec handoff at `.claude/team/tasks/<slug>/openspec-change.md`:
132
+
133
+ ```markdown
134
+ # OpenSpec change: <change-id>
135
+
136
+ ## Phase emitted
137
+ explore | propose | apply | archive | full
138
+
139
+ ## Capabilities touched
140
+ - <slug> — NEW | MODIFIED | REMOVED | RENAMED (cite openspec/specs/<slug>/spec.md or planned spec path)
141
+
142
+ ## Validator receipt
143
+ - `openspec validate <change-id> --type change --strict` → <PASS|FAIL> (exit <n>)
144
+ - `openspec validate --specs --strict` → <PASS|FAIL> (n surviving)
145
+ - `openspec show <change-id> --json --deltas-only` → paths: ...
146
+
147
+ ## Open questions (forwarded to human gate)
148
+ - OQ-N: …
149
+ ```
150
+
151
+ ## Anti-sycophancy
152
+
153
+ Match `code-quality-and-refactoring.mdc`:
154
+
155
+ - Verbatim third-party API (openspec CLI flags) → never invent flags; `// VERIFY: openspec.<flag> @ <version>` if uncertain; consult `npx openspec --help`.
156
+ - Before "is this correct?" — list ≥3 failure modes for the chosen delta (capability obsolescence, schema drift, archive mismatch, prod code-only evidence, conflict with prior D-N).
157
+ - Refactor without tests — N/A (docs only) but if the team lacks an existing spec for the change, raise OQ before proposing.
158
+ - Comments — WHY only when non-obvious (e.g. when forking `config.yaml rules.proposal`); never narrate.
159
+ - Urgency — name the trade-off (e.g. "Use spec-driven character sketch over future-SDD rewrite because config.rules.design forbids redesign") and comply.
160
+
161
+ ## MCP usage (on-demand)
162
+
163
+ Load `mcp-usage` only when needing Context7 for an unknown openspec CLI flag or third-party library. Default: rely on `npx openspec --help` and `openspec/config.yaml` rules; mark `// VERIFY: openspec.<flag>` if behavior is unclear.
@@ -52,3 +52,7 @@ Provide summary:
52
52
  ## Design guidance
53
53
 
54
54
  - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
55
+
56
+ ## Receipt binding
57
+
58
+ > **Receipt binding.** When writing the terminal receipt to `artifact-manifest.json`, set `entry.receipt.attemptId = <attemptId supplied by the orchestrator>` (the orchestrator provides this via `attemptId` on invocation). The hook at `chain-team-phases.sh:readBoundReceiptOutcome` rejects entries whose `attemptId` does not match the current attempt, or whose `Date.parse(timestamps.completedAt) < Date.parse(attemptStartedAt)`. A missing or stale attemptId causes `awaiting_artifact_receipt` stalls. <!-- shared-core: receipt-binding -->
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: task-analyst
3
- description: Task analysis specialist. Clarifies requirements, validates acceptance criteria, and decomposes work into concrete tasks. Use for /feature-start, task intake, or when the user asks to analyze or decompose a feature before coding. Writes only team artifacts; never writes production code.
3
+ description: Task analysis specialist. Clarifies requirements, validates acceptance criteria, and decomposes work into concrete tasks. Use for task intake, or when the user asks to analyze or decompose a feature before coding. Writes only team artifacts; never writes production code.
4
4
  model: fast
5
5
  ---
6
6
 
@@ -29,6 +29,7 @@ You are a task router for a Nuxt 3 frontend agent team. You **do not** implement
29
29
  | `unit-only` | «unit», «юнит» (unit), «mapper tests», «покрой маппер» (cover mapper), «почини unit» (fix unit) | unit-test-planner → unit-test-generator, or unit-test-healer | <!-- i18n-keep: E4 -->
30
30
  | `e2e-only` | «e2e», «playwright», «browser test», «сценарии e2e» (e2e scenarios), «почини e2e» (fix e2e) | playwright-test-planner → playwright-test-generator, or playwright-test-healer | <!-- i18n-keep: E4 -->
31
31
  | `docs-only` | «документация» (documentation), «README», «changelog», «ADR», «migration guide» | task-analyst → tech-writer | <!-- i18n-keep: E4 -->
32
+ | `openspec-change` | `/opsx:propose`, `/opsx:apply`, `/opsx:archive`, `openspec/changes`, `openspec/specs`, `openspec/config.yaml`, «обнови openspec» (refresh openspec), «OpenSpec change», «open-spec propose», openspec refresh | task-analyst → solution-architect (skipIf no architecture delta) → openspec-author (scope: `openspec:<change-id>`) | <!-- i18n-keep: E4 -->
32
33
  | `refactor` | «рефакторинг» (refactoring), «без изменения поведения» (no behavior change), «почисти» (clean up) | task-analyst → feature-developer → build-verifier → code-reviewer | <!-- i18n-keep: E4 -->
33
34
  | `spike` | «исследуй» (investigate), «оцени» (estimate), «можно ли» (is it possible), «spike», proof of concept | task-analyst → solution-architect | <!-- i18n-keep: E4 -->
34
35
  | `retro` | «ретро» (retro), «разбор» (postmortem), «postmortem» | (no pipeline — orchestrator runs `/technical-retro`) | <!-- i18n-keep: E4 -->
@@ -130,6 +131,7 @@ Cursor mapping when orchestrator invokes Task: `cheap` → pass `model: "fast"`
130
131
  | `spec-gen` | `["after:task-analyst"]` |
131
132
  | `migration` | `["after:migration-specialist"]` |
132
133
  | `docs-only` | `["after:task-analyst"]` |
134
+ | `openspec-change` | `["after:task-analyst"]` (human approves brief + AC; openspec-author emits drafts and validator receipts under the assigned change-id) |
133
135
  | `unit-only` | `["after:unit-test-planner"]` when new plan; `[]` for healer |
134
136
  | `e2e-only` | `["after:playwright-test-planner"]` when new plan; `[]` for healer |
135
137
  | `bugfix`, `review-only`, `ci-fix` | `[]` |
@@ -161,7 +163,9 @@ Detect and set routing reasons when the user asks to **generate / bootstrap prod
161
163
  | `/spec-start`, "bootstrap docs/specs", "generate product spec" | `spec-gen` | task-analyst (**author mode**) → human gate → stop (or continue to feature-developer only if implement-after) |
162
164
  | Feature/task with AC "generate specs" / missing INDEX + bootstrap AC | `spec-gen` inside feature profile | task-analyst author mode first; **not** a separate agent step |
163
165
 
164
- Do **not** add a dedicated `spec-author` agent. Do not require solution-architect for routine spec authoring.
166
+ Do **not** add a dedicated `spec-author` agent for `docs/specs/**`. Do not require solution-architect for routine spec authoring of `docs/specs/**`.
167
+
168
+ **openspec is a different file tree** (`openspec/changes/`, `openspec/specs/`) — it is not `docs/specs/`. The dedicated agent `openspec-author` lives in `agents/openspec-author.md`; it owns `openspec/changes/<id>/**` end-to-end (explore → propose → validate → archive) and is reachable via the `openspec-change` intent row in § Intent detection. Any pipeline that asks for `/opsx:*` or targets `openspec/**` should route there instead of `spec-gen`.
165
169
 
166
170
 
167
171
  **specMode (optional `pipeline.json` field):** `none` for spike/research; `generate` for `spec-gen` / `/spec-start`; `consume` default when INDEX exists. Echo top-level `specMode`. Brief `## Spec mode` wins on conflict.
@@ -42,6 +42,10 @@ Conventional commit / release note snippet.
42
42
  - Do not duplicate entire decomposition — summarize outcomes and how to use/extend.
43
43
  - May create or update files under `docs/**` when the task explicitly requests it; otherwise keep primary output in team artifacts.
44
44
 
45
+ ## OpenSpec (`openspec/changes/**`, `openspec/specs/**`)
46
+
47
+ The `openspec/**` file tree is owned by the dedicated agent **`openspec-author`**, not by this agent. When a handoff brief or pipeline step mentions `/opsx:propose`, `/opsx:apply`, `/opsx:archive`, `openspec/changes/`, or `openspec/specs/`, hand off to `openspec-author` instead of authoring here. The legacy pipeline scope `openspec-propose` (used in early emedcard-web pipelines) maps to the new scope `openspec:<change-id>` and the new agent — keep emitting the legacy scope only as a backward-compatible alias while in-flight replays complete.
48
+
45
49
  ## Product specs (docs/specs)
46
50
 
47
51
  Post-delivery: when behavior or public docs changed and `docs/specs/` is in play, load **`product-specs`** (+ **`product-specs-authoring`** if updating specs). Sync page/feature specs + INDEX in the **same change set**. **Never invent** product behavior without AC/code source; label inferred lines `status: draft`. Soft-fail on miss; no-op if INDEX absent and sync not requested.
@@ -8,8 +8,6 @@ Slash commands are copied to `.claude/commands/` on `ai-rules init claude --pres
8
8
  |---------|---------|
9
9
  | **`/task <description>`** | **Main entry:** router → pipeline.json → roles in order |
10
10
  | `/task-continue <slug>` | After a human gate or pause |
11
- | `/feature-start <description>` | Legacy: analyst only (no router) |
12
- | `/feature-continue <slug>` | Alias of task-continue |
13
11
  | `/technical-retro [slug]` | Retro; with slug — “Agent work” block |
14
12
 
15
13
  ## `/task` examples
@@ -5,7 +5,7 @@ description: Continue an agent-team task after a human gate, pause, or review ch
5
5
 
6
6
  # Task continue — after a human gate or pause
7
7
 
8
- Continue the pipeline from `pipeline.json`. Semantic alias: `/feature-continue`.
8
+ Continue the pipeline from `pipeline.json`.
9
9
 
10
10
  ## Arguments
11
11
 
@@ -36,7 +36,7 @@ Examples:
36
36
  - **do not** write `status.json` / `metrics.json` lifecycle fields yourself — the orchestration runtime/hook owns them (see **agent-artifact-contracts**). If `status.json` is missing, only a minimal bootstrap is allowed (`slug`, `intent`, `pipelineIndex: 0`, `currentAgent: steps[0]`, `state: in_progress`) — **do not** increment `pipelineIndex` by hand;
37
37
  - invoke the subagent for `pipeline.steps[0].agent` (slug, artifact paths, scope).
38
38
  6. **After each agent** — wait for hook handoff / reconciliation terminal receipt → `status.state`; do not start the next step until `status.json` reflects the handoff (or until there is a hook `followup_message`).
39
- 7. **Human gate** — if after the current step there is a gate in `humanGates` (`after:<agent>`), after the agent finishes **stop** and ask for `/task-continue <slug>` (or `/feature-continue <slug>`).
39
+ 7. **Human gate** — if after the current step there is a gate in `humanGates` (`after:<agent>`), after the agent finishes **stop** and ask for `/task-continue <slug>`.
40
40
 
41
41
  ## Do not
42
42
 
@@ -49,10 +49,6 @@ Examples:
49
49
  - `awaitingHumanGate` / `state: awaiting_approval` → suggest reviewing artifacts or `/task-continue <slug>`.
50
50
  - `in_progress` → ask: continue or a new slug.
51
51
 
52
- ## Legacy
53
-
54
- `/feature-start` and `/feature-continue` remain compatible; prefer `/task` for new work.
55
-
56
52
  ## Metrics
57
53
 
58
54
  Runtime/hook owns `metrics.json` and `status.json` attempt ledgers. Before the first invocation ensure `task_started` and one `activeAttempts[attemptId]` + `attempt_started` exist (router/runtime bootstrap — parent must not invent parallel indices). On `/task-continue`, run the installed chain hook `end_human_gate` action (or wrapper) so `human_gate_ended` lands before the next attempt. Do not calculate durations in agents.
@@ -10,7 +10,7 @@ The agent acts as a **neutral facilitator of a technical retrospective**, not as
10
10
  ## When to use
11
11
 
12
12
  - The user asks for: “retro”, “technical retro”, “sprint/iteration review”, “action items after release”.
13
- - After an agent-team pipeline finishes (`/feature-start` → `/feature-continue`).
13
+ - After an agent-team pipeline finishes.
14
14
  - Context exists: period, topic (release, incident), task slug, notes.
15
15
 
16
16
  ## Inputs (gather, do not invent)
@@ -53,7 +53,7 @@ Do not invent facts that are not in artifacts, the diff, or the user message.
53
53
 
54
54
  ## “Agent work” block (required when there is a slug)
55
55
 
56
- If the retro is tied to a `/feature-start` pipeline:
56
+ If the retro is tied to an agent-team pipeline:
57
57
 
58
58
  | Question | What to record |
59
59
  |----------|----------------|