@chorus-aidlc/chorus 0.9.2 → 0.9.4

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 (299) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +321 -302
  3. package/.next/standalone/.next/app-path-routes-manifest.json +31 -31
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +24 -24
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
  37. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +3 -3
  41. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  45. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  46. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  49. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  50. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  52. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  53. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/admin.html +1 -1
  55. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  56. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  62. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  83. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  86. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  92. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  95. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/mcp/route.js +3 -3
  98. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  101. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  120. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
  126. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route.js +1 -1
  128. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route.js +1 -1
  130. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
  137. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
  138. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
  141. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route.js +1 -1
  143. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route.js +1 -1
  145. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route.js +1 -1
  147. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route.js +1 -1
  149. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  152. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
  153. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
  155. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
  158. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
  161. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
  164. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
  165. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  170. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
  171. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/index.html +1 -1
  173. package/.next/standalone/.next/server/app/index.rsc +2 -2
  174. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  176. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  177. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  179. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  180. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  183. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  184. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  186. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +2 -2
  187. package/.next/standalone/.next/server/app/login.html +1 -1
  188. package/.next/standalone/.next/server/app/login.rsc +2 -2
  189. package/.next/standalone/.next/server/app/onboarding/page.js +2 -32
  190. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  191. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  193. package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
  194. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/projects.html +1 -1
  196. package/.next/standalone/.next/server/app/projects.rsc +3 -3
  197. package/.next/standalone/.next/server/app/settings.html +1 -1
  198. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  199. package/.next/standalone/.next/server/app-paths-manifest.json +31 -31
  200. package/.next/standalone/.next/server/chunks/1165.js +1 -1
  201. package/.next/standalone/.next/server/chunks/1615.js +31 -0
  202. package/.next/standalone/.next/server/chunks/1871.js +1 -1
  203. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  204. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  205. package/.next/standalone/.next/server/chunks/2990.js +1 -1
  206. package/.next/standalone/.next/server/chunks/5491.js +1 -1
  207. package/.next/standalone/.next/server/chunks/5561.js +7 -0
  208. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  209. package/.next/standalone/.next/server/chunks/{6320.js → 7063.js} +1 -1
  210. package/.next/standalone/.next/server/chunks/7228.js +2 -2
  211. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  212. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  213. package/.next/standalone/.next/server/chunks/896.js +1 -0
  214. package/.next/standalone/.next/server/chunks/920.js +1 -1
  215. package/.next/standalone/.next/server/chunks/937.js +1 -1
  216. package/.next/standalone/.next/server/chunks/9508.js +2 -2
  217. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  218. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  219. package/.next/standalone/.next/server/pages/404.html +1 -1
  220. package/.next/standalone/.next/server/pages/500.html +1 -1
  221. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  223. package/.next/standalone/.next/static/chunks/16984-8ab5580b8e63a200.js +1 -0
  224. package/.next/standalone/.next/static/chunks/19898-2a3d83a3996794cd.js +1 -0
  225. package/.next/standalone/.next/static/chunks/20051-d9233fd4578d66cc.js +1 -0
  226. package/.next/standalone/.next/static/chunks/35486-592daa5c9fdf701d.js +1 -0
  227. package/.next/standalone/.next/static/chunks/{4860.60152a625f2a714f.js → 4860.1bebb2a898b170f6.js} +1 -1
  228. package/.next/standalone/.next/static/chunks/52206-6048525f57a21502.js +1 -0
  229. package/.next/standalone/.next/static/chunks/55469-ed5ff019ff71ef59.js +1 -0
  230. package/.next/standalone/.next/static/chunks/59296-4fa84fe82e2c7789.js +1 -0
  231. package/.next/standalone/.next/static/chunks/66205-8d7eae6a0f0a032d.js +1 -0
  232. package/.next/standalone/.next/static/chunks/{86944-95f8c67fb7a51911.js → 70093-0ff6fd59445b5cb9.js} +1 -1
  233. package/.next/standalone/.next/static/chunks/94655-1c75e0590a66215e.js +1 -0
  234. package/.next/standalone/.next/static/chunks/95627-8d9f6d2d88f7a641.js +1 -0
  235. package/.next/standalone/.next/static/chunks/{99373.4d93aaaf56fe7819.js → 99373.13c8ac5da1ddabe9.js} +1 -1
  236. package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-dd7eb66bb4ffd252.js → layout-b55a8d6d9bd27276.js} +1 -1
  237. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/{page-6d92b9867caf0fe1.js → page-fd10bca891f0f73a.js} +1 -1
  238. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/{page-f8f17f58cf779d37.js → page-2e000a7010d1e9ea.js} +1 -1
  239. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-75e42d130404ca2b.js +1 -0
  240. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-6a38c21b164cdc07.js +1 -0
  241. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-48c840cb3011bf97.js +1 -0
  242. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-7ec535fac7bbc75d.js +1 -0
  243. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-8f91ed174c14d5f0.js +1 -0
  244. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-f6814f25bbacdbea.js +1 -0
  245. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-92e8980da0d98d48.js +1 -0
  246. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/{page-db79d84fa8ca8cbf.js → page-ab87cbb18d0ee538.js} +1 -1
  247. package/.next/standalone/.next/static/chunks/app/onboarding/page-922a196db6eb2385.js +1 -0
  248. package/.next/standalone/.next/static/chunks/{webpack-8e0df5e10bc6b98f.js → webpack-4a8c75a0d40c2106.js} +1 -1
  249. package/.next/standalone/.next/static/css/bfe962487ee66da7.css +1 -0
  250. package/.next/standalone/package.json +1 -1
  251. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  252. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +7 -7
  253. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
  254. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
  255. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +32 -33
  256. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  257. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +13 -4
  258. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +9 -4
  259. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  260. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +9 -6
  261. package/.next/standalone/public/install-codex.sh +200 -90
  262. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +7 -7
  263. package/.next/standalone/public/skill/chorus/SKILL.md +55 -3
  264. package/.next/standalone/public/skill/develop-chorus/SKILL.md +2 -2
  265. package/.next/standalone/public/skill/idea-chorus/SKILL.md +32 -33
  266. package/.next/standalone/public/skill/package.json +21 -5
  267. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +13 -4
  268. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +198 -0
  269. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +9 -4
  270. package/.next/standalone/public/skill/review-chorus/SKILL.md +13 -3
  271. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +219 -0
  272. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +531 -0
  273. package/.next/standalone/public/test-install-codex.sh +4 -0
  274. package/package.json +1 -1
  275. package/prisma/migrations/20260604130604_add_elaboration_round_is_appended/migration.sql +2 -0
  276. package/prisma/schema.prisma +2 -1
  277. package/.next/standalone/.next/server/chunks/1002.js +0 -1
  278. package/.next/standalone/.next/server/chunks/1854.js +0 -7
  279. package/.next/standalone/.next/server/chunks/6878.js +0 -1
  280. package/.next/standalone/.next/static/chunks/19898-7e07c69b635e3662.js +0 -1
  281. package/.next/standalone/.next/static/chunks/29660-edf78f7a4c65f416.js +0 -1
  282. package/.next/standalone/.next/static/chunks/34775-387b9a9967a35ccb.js +0 -1
  283. package/.next/standalone/.next/static/chunks/35486-1978488574385a45.js +0 -1
  284. package/.next/standalone/.next/static/chunks/4457-b86052b2e954e357.js +0 -1
  285. package/.next/standalone/.next/static/chunks/52206-51a89715ca643e44.js +0 -1
  286. package/.next/standalone/.next/static/chunks/53298-82b9c818cd70686d.js +0 -1
  287. package/.next/standalone/.next/static/chunks/65642-e75efce9967747bc.js +0 -1
  288. package/.next/standalone/.next/static/chunks/75444-976ac95fd66e7988.js +0 -1
  289. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-83e2e42b27132b41.js +0 -1
  290. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page-55148db4b28ee5f5.js +0 -1
  291. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/ideas/page-556c181809c9e4f6.js +0 -1
  292. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-656797940b35b23c.js +0 -1
  293. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-af88aeaedc3f4ae5.js +0 -1
  294. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-6524ab00e6cdf59a.js +0 -1
  295. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-7b0bb5f037cd320b.js +0 -1
  296. package/.next/standalone/.next/static/chunks/app/onboarding/page-7a00689ba561c111.js +0 -1
  297. package/.next/standalone/.next/static/css/ea3f196c7951f8d6.css +0 -1
  298. /package/.next/standalone/.next/static/{-kClYg0a7zvFcgkw_LnG7 → YJZurE1onX9K-RDNIplc5}/_buildManifest.js +0 -0
  299. /package/.next/standalone/.next/static/{-kClYg0a7zvFcgkw_LnG7 → YJZurE1onX9K-RDNIplc5}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ description: Chorus Idea workflow — claim ideas, run elaboration rounds, and p
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.3.1"
7
+ version: "0.9.4"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -44,10 +44,10 @@ All post-elaboration progress (planning, building, verifying, done) is **derived
44
44
 
45
45
  | Tool | Purpose |
46
46
  |------|---------|
47
- | `chorus_pm_start_elaboration` | Start an elaboration round with structured questions |
48
- | `chorus_pm_validate_elaboration` | Validate answers (resolve or create follow-up round) |
47
+ | `chorus_pm_start_elaboration` | Generate an elaboration round (first, follow-up, or appended-after-resolution) |
48
+ | `chorus_pm_validate_elaboration` | Mark the whole elaboration complete (requires `idea:admin`; requires human confirmation first) |
49
49
  | `chorus_pm_skip_elaboration` | Skip elaboration for trivially clear Ideas |
50
- | `chorus_answer_elaboration` | Submit answers for an elaboration round |
50
+ | `chorus_answer_elaboration` | Submit answers for an elaboration round (`roundUuid` optional — auto-locates the active round) |
51
51
  | `chorus_get_elaboration` | Get full elaboration state (rounds, questions, answers) |
52
52
 
53
53
  **Shared tools** (checkin, query, comment, search, notifications): see `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`)
@@ -123,8 +123,8 @@ If the Idea is fuzzy and you'd struggle to enumerate concrete multi-choice quest
123
123
 
124
124
  When the brainstorm skill returns, you own the lifecycle decision (the brainstorm skill deliberately leaves it to you):
125
125
 
126
- - If the synthesized round answers cover everything → call `chorus_pm_validate_elaboration` with `issues: []` to resolve elaboration.
127
- - If gaps remain → call `chorus_pm_validate_elaboration` with `issues + followUpQuestions` to start a structured Round 2. Pick the depth yourself — do NOT re-prompt the user.
126
+ - If the synthesized round answers cover everything → obtain human confirmation, then call `chorus_pm_validate_elaboration` to resolve the elaboration. (Resolve needs `idea:admin` see Step 5.6 if your key is `pm_agent`-preset.)
127
+ - If gaps remain → call `chorus_pm_start_elaboration` again to open a structured Round 2. Pick the depth yourself — do NOT re-prompt the user.
128
128
 
129
129
  Either outcome ends Step 4.5; skip Step 5.
130
130
 
@@ -145,6 +145,12 @@ chorus_pm_skip_elaboration({
145
145
 
146
146
  #### Standard/Complex Ideas (run elaboration)
147
147
 
148
+ > **Elaboration is a loop, not a straight line.** Steps 2–5 below are **one round**. Keep looping back to `chorus_pm_start_elaboration` (a new round) until every open question is settled, then resolve **once** in Step 6. You re-enter the loop whenever:
149
+ > - the answers to a round **derive new questions** or surface a contradiction/gap, **or**
150
+ > - at the resolve gate (Step 5d / Step 6) the **human raises a new concern or correction**.
151
+ >
152
+ > Each new round is just another `chorus_pm_start_elaboration` call — there is no separate "follow-up" flag, and you do not resolve until the loop is genuinely done. Round cap is 10.
153
+
148
154
  1. **Determine depth** based on idea complexity:
149
155
  - `"minimal"` — 2-4 questions (small features, minor enhancements)
150
156
  - `"standard"` — 5-10 questions (typical new features)
@@ -205,9 +211,11 @@ chorus_pm_skip_elaboration({
205
211
  - **Select an option + add a note**: `selectedOptionId: "a", customText: "additional context"`
206
212
  - **Choose "Other" (free text)**: `selectedOptionId: null, customText: "your answer"` — customText is required when no option is selected
207
213
 
214
+ > `roundUuid` is **optional** on `chorus_answer_elaboration`. Omit it and the service auto-locates the Idea's single active (`pending_answers`) round. Pass it explicitly only when you need to target a specific round.
215
+
208
216
  5. **Review answers and confirm with the owner (@mention flow):**
209
217
 
210
- After answers are submitted, **@mention the answerer** (typically the agent's owner) with a summary of your understanding. This prevents misinterpretation before you validate.
218
+ After answers are submitted, **@mention the answerer** (typically the agent's owner) with a summary of your understanding. This prevents misinterpretation before you resolve.
211
219
 
212
220
  a. **Get owner info** from checkin response (`agent.owner`) or search:
213
221
  ```
@@ -225,39 +233,32 @@ chorus_pm_skip_elaboration({
225
233
 
226
234
  c. **Wait for confirmation** via comments.
227
235
 
228
- d. **Based on the response:**
229
- - **Confirmed** — Proceed to validate with empty issues
230
- - **Additions/corrections** — Incorporate feedback, optionally start a follow-up round
231
- - **Unclear** — Ask clarifying questions via another comment
236
+ d. **Based on the response — this is the loop decision point:**
237
+ - **Confirmed, nothing left to discuss** — Treat this as the human confirmation required to resolve; proceed to Step 6 and call `chorus_pm_validate_elaboration`.
238
+ - **Human raises a new concern / correction / question** — Do **NOT** resolve. Loop back: open a **new round** with `chorus_pm_start_elaboration` capturing the new questions, collect answers (Steps 2–5 again), and re-confirm. Repeat until the human has no remaining concerns.
239
+ - **The answers themselves derived new questions or a contradiction** — Same as above: loop back to `chorus_pm_start_elaboration` for another round before resolving.
240
+ - **Unclear** — Ask clarifying questions via another comment, then continue the loop.
232
241
 
233
- 6. **Validate the elaboration:**
242
+ 6. **Resolve the elaboration (the single commit gate — only when the loop is done):**
234
243
 
235
- `chorus_pm_validate_elaboration` is the **single commit gate for the entire elaboration phase**, NOT a per-round close. Calling it with `issues: []` resolves the whole elaboration (sets `idea.elaborationStatus = "resolved"`); calling it with `issues + followUpQuestions` opens a new round while keeping elaboration in progress. Do not call validate after every round call it once when you believe elaboration is done, or when you want to start a follow-up round.
244
+ Resolving marks the **whole elaboration phase** complete it sets `idea.elaborationStatus = "resolved"` (Idea `elaborated`), which is the gating signal that lets a downstream Proposal be submitted. It is an **Idea-level** action (takes only `ideaUuid`, does not target a round). Resolve **once**, only after the Step 5d loop has fully settled — every derived question answered and the human has no remaining concerns. If anything is still open, go back to `chorus_pm_start_elaboration` instead of resolving.
236
245
 
237
- ```
238
- chorus_pm_validate_elaboration({
239
- ideaUuid: "<idea-uuid>",
240
- roundUuid: "<round-uuid>",
241
- issues: [],
242
- followUpQuestions: []
243
- })
244
- ```
246
+ > **Precondition:** resolve requires the Idea to have at least one round and **every** round to be fully answered (none left in `pending_answers`). If a round still has open questions, answer it (or it'll be rejected).
245
247
 
246
- If issues are found (contradictions, ambiguities, incomplete answers), include them in `issues` and provide `followUpQuestions` for a new round:
248
+ > **⚠️ Human confirmation required.** Outside YOLO automation you MUST obtain explicit human confirmation before resolving. The "Confirmed" reply in step 5d above counts as that confirmation. Never resolve on your own judgment alone.
249
+
250
+ > **Permission (N1): `chorus_pm_validate_elaboration` requires `idea:admin`.** The `pm_agent` preset only grants `idea:write`, so a PM-preset agent **cannot** resolve — it must hand off to an `admin_agent`-preset agent (or an admin-preset API key) to perform the resolve. If your key lacks `idea:admin`, surface this to the human and request the handoff instead of failing silently.
251
+
252
+ > **Assignee precondition (N2):** the resolving actor must be the Idea's **assignee**. A separate human reviewer resolving a PM-owned Idea therefore needs **both** `idea:admin` **and** to be assigned the Idea (claim/reassign it first). Admin permission alone is not enough.
247
253
 
248
254
  ```
249
255
  chorus_pm_validate_elaboration({
250
- ideaUuid: "<idea-uuid>",
251
- roundUuid: "<round-uuid>",
252
- issues: [
253
- { questionId: "q1", type: "ambiguity", description: "Role-based access selected but no roles defined" }
254
- ],
255
- followUpQuestions: [
256
- { id: "fq1", text: "Which specific roles should have access?", category: "functional", options: [...] }
257
- ]
256
+ ideaUuid: "<idea-uuid>"
258
257
  })
259
258
  ```
260
259
 
260
+ **Want a follow-up round instead of resolving?** Just call `chorus_pm_start_elaboration` again — there is no separate "open a round" flag. It works while still `elaborating` (a normal follow-up round) and, after you've already resolved, as an **appended round** (`isAppended: true`) that keeps the Idea `elaborated` and never blocks an in-flight Proposal. Per-question issue tagging no longer exists.
261
+
261
262
  7. **Check elaboration status** at any time:
262
263
  ```
263
264
  chorus_get_elaboration({ ideaUuid: "<idea-uuid>" })
@@ -267,8 +268,6 @@ chorus_pm_skip_elaboration({
267
268
 
268
269
  **Question categories:** `functional`, `non_functional`, `business_context`, `technical_context`, `user_scenario`, `scope`
269
270
 
270
- **Validation issue types:** `contradiction`, `ambiguity`, `incomplete`
271
-
272
271
  ---
273
272
 
274
273
  ## Tips
@@ -277,7 +276,7 @@ chorus_pm_skip_elaboration({
277
276
  - Elaboration improves Proposal quality — prefer not to skip it unless the requirements are trivially clear
278
277
  - Use your IDE's interactive prompt mechanism if available for user-facing questions; otherwise present options as text
279
278
  - Record decisions made in conversation as elaboration rounds for auditability
280
- - Consider @mentioning the owner to confirm understanding before validating
279
+ - Consider @mentioning the owner to confirm understanding before resolving
281
280
 
282
281
  ---
283
282
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chorus-skill",
3
- "version": "0.3.1",
3
+ "version": "0.9.3",
4
4
  "description": "Chorus AI Agent collaboration platform skill. Supports PM, Developer, and Admin roles via MCP tools for the Idea-Proposal-Task workflow.",
5
5
  "author": "chorus",
6
6
  "license": "AGPL-3.0",
@@ -23,7 +23,12 @@
23
23
  "idea-chorus/SKILL.md": "/skill/idea-chorus/SKILL.md",
24
24
  "proposal-chorus/SKILL.md": "/skill/proposal-chorus/SKILL.md",
25
25
  "develop-chorus/SKILL.md": "/skill/develop-chorus/SKILL.md",
26
- "review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md"
26
+ "review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md",
27
+ "quick-dev-chorus/SKILL.md": "/skill/quick-dev-chorus/SKILL.md",
28
+ "brainstorm-chorus/SKILL.md": "/skill/brainstorm-chorus/SKILL.md",
29
+ "proposal-reviewer-chorus/SKILL.md": "/skill/proposal-reviewer-chorus/SKILL.md",
30
+ "task-reviewer-chorus/SKILL.md": "/skill/task-reviewer-chorus/SKILL.md",
31
+ "yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md"
27
32
  },
28
33
  "requires": {
29
34
  "mcp": ["chorus"]
@@ -38,7 +43,10 @@
38
43
  "report work",
39
44
  "verify task",
40
45
  "approve proposal",
41
- "project management"
46
+ "project management",
47
+ "yolo",
48
+ "review agent",
49
+ "verify"
42
50
  ]
43
51
  },
44
52
  "moltbot": {
@@ -48,7 +56,12 @@
48
56
  "idea-chorus/SKILL.md": "/skill/idea-chorus/SKILL.md",
49
57
  "proposal-chorus/SKILL.md": "/skill/proposal-chorus/SKILL.md",
50
58
  "develop-chorus/SKILL.md": "/skill/develop-chorus/SKILL.md",
51
- "review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md"
59
+ "review-chorus/SKILL.md": "/skill/review-chorus/SKILL.md",
60
+ "quick-dev-chorus/SKILL.md": "/skill/quick-dev-chorus/SKILL.md",
61
+ "brainstorm-chorus/SKILL.md": "/skill/brainstorm-chorus/SKILL.md",
62
+ "proposal-reviewer-chorus/SKILL.md": "/skill/proposal-reviewer-chorus/SKILL.md",
63
+ "task-reviewer-chorus/SKILL.md": "/skill/task-reviewer-chorus/SKILL.md",
64
+ "yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md"
52
65
  },
53
66
  "requires": {
54
67
  "mcp": ["chorus"]
@@ -63,7 +76,10 @@
63
76
  "report work",
64
77
  "verify task",
65
78
  "approve proposal",
66
- "project management"
79
+ "project management",
80
+ "yolo",
81
+ "review agent",
82
+ "verify"
67
83
  ]
68
84
  }
69
85
  }
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.3.1"
7
+ version: "0.9.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -111,6 +111,8 @@ chorus_pm_add_document_draft({
111
111
 
112
112
  Add task drafts one at a time. The response returns the new draft's `draftUuid` — use it directly for `dependsOnDraftUuids` in subsequent drafts.
113
113
 
114
+ **`acceptanceCriteriaItems` is required** — every task draft must include at least one item with a non-blank `description`, or the call is rejected. Use the structured `acceptanceCriteriaItems` array (the legacy `acceptanceCriteria` Markdown string does not satisfy the requirement).
115
+
114
116
  ```
115
117
  # First task -> response includes { draftUuid, draftTitle }
116
118
  chorus_pm_add_task_draft({
@@ -119,7 +121,10 @@ chorus_pm_add_task_draft({
119
121
  description: "Detailed description of what to build...",
120
122
  priority: "high",
121
123
  storyPoints: 3,
122
- acceptanceCriteria: "- [ ] Criteria 1\n- [ ] Criteria 2"
124
+ acceptanceCriteriaItems: [
125
+ { description: "Criteria 1", required: true },
126
+ { description: "Criteria 2", required: true }
127
+ ]
123
128
  })
124
129
 
125
130
  # Second task — depends on first
@@ -129,11 +134,15 @@ chorus_pm_add_task_draft({
129
134
  description: "Unit and integration tests...",
130
135
  priority: "medium",
131
136
  storyPoints: 2,
132
- acceptanceCriteria: "- [ ] Test coverage > 80%",
137
+ acceptanceCriteriaItems: [
138
+ { description: "Test coverage > 80%", required: true }
139
+ ],
133
140
  dependsOnDraftUuids: ["<draftUuid-from-first-task>"]
134
141
  })
135
142
  ```
136
143
 
144
+ > To edit a draft's criteria later via `chorus_pm_update_task_draft`, pass a non-empty `acceptanceCriteriaItems` to replace them; omit the field to leave them unchanged. The field cannot be used to clear criteria.
145
+
137
146
  **Task priority:** `low`, `medium`, `high`
138
147
 
139
148
  ### Step 4: Review and Refine Drafts
@@ -302,7 +311,7 @@ Potential issues and how to address them.
302
311
 
303
312
  Good tasks are:
304
313
  - **Module-scoped** — One cohesive functional module per task, not a single function or file
305
- - **Testable** — Clear, cohesive acceptance criteria (max 6 items per task; group related checks into one criterion but list key coverage, e.g. "All tests pass: service layer unit tests, API integration tests, edge case handling")
314
+ - **Testable** — Clear, cohesive acceptance criteria are **required** on every task (at least one non-blank item; max 6; group related checks into one criterion but list key coverage, e.g. "All tests pass: service layer unit tests, API integration tests, edge case handling")
306
315
  - **Sized** — 1-8 story points (hours of agent work)
307
316
  - **Ordered** — Use `dependsOnDraftUuids` / `dependsOnTaskUuids` to express execution order
308
317
  - **Descriptive** — Include enough context for a developer agent to start without questions. For tasks with cross-module dependencies, reference the tech design's Module Contracts in the AC
@@ -0,0 +1,198 @@
1
+ ---
2
+ name: proposal-reviewer-chorus
3
+ description: Read-only adversarial Chorus proposal reviewer — audits PRD/task drafts against the originating Idea and posts a single structured VERDICT comment.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.9.3"
8
+ category: project-management
9
+ mcp_server: chorus
10
+ ---
11
+
12
+ # Proposal Reviewer Skill
13
+
14
+ This skill is the **read-only adversarial reviewer** for a submitted Chorus proposal. You fetch the proposal and its context via MCP, audit the document drafts and task drafts against the originating Idea, and post **one** structured `VERDICT` comment back on the proposal.
15
+
16
+ You are a proposal review specialist. Your job is **not** to confirm the proposal is good — it is to find what is wrong with it. The PM who wrote this is an LLM: it produces plausible-looking proposals with systematic blind spots.
17
+
18
+ Two failure patterns to avoid:
19
+
20
+ - **Rubber-stamping** — skimming and writing "PASS" without checking substance.
21
+ - **Surface-level approval** — seeing a well-structured PRD and assuming the tasks match it, missing requirements gaps, vague AC, or wrong dependencies.
22
+
23
+ ---
24
+
25
+ ## READ-ONLY Posture (Hard Constraints)
26
+
27
+ You are **strictly prohibited** from:
28
+
29
+ - Creating, modifying, or deleting any files.
30
+ - Running any shell commands.
31
+ - Installing dependencies or packages.
32
+
33
+ Your only side effect is posting a single comment via `chorus_add_comment`. Everything else is read-only MCP queries. Do **not** modify the project in any way.
34
+
35
+ ---
36
+
37
+ ## What You Receive
38
+
39
+ A `proposalUuid` (and, in Round 2+, a review round number). Your job is to fetch and review the full proposal.
40
+
41
+ ---
42
+
43
+ ## Review Procedure
44
+
45
+ **Efficiency rule:** Gather ALL data first (Step 1), then analyze. Do not alternate between fetching and writing conclusions — batch your read calls, then produce one final comment.
46
+
47
+ **Turn-budget rule:** When few turns remain in your budget, STOP reading immediately and post your current findings as a comment via `chorus_add_comment`. Incomplete posted findings are strictly better than no comment at all.
48
+
49
+ ### Step 1: Gather Context (batch these)
50
+
51
+ ```
52
+ chorus_get_proposal({ proposalUuid: "<uuid>", section: "full" })
53
+ chorus_get_comments({ targetType: "proposal", targetUuid: "<uuid>" })
54
+ chorus_get_idea({ ideaUuid: "<idea-uuid>" })
55
+ chorus_get_elaboration({ ideaUuid: "<idea-uuid>" })
56
+ ```
57
+
58
+ > `chorus_get_proposal` defaults to `section: "basic"` (metadata + a lightweight draft index, no bodies). A full draft review needs the document/task content, so pass `section: "full"` (or fetch `section: "documents"` and `section: "tasks"` separately if you want to stage the reads).
59
+
60
+ Use `chorus_get_idea` + `chorus_get_elaboration` to recover the original intent and decision points so you can detect scope drift and missing requirements.
61
+
62
+ ### Step 2: Review Document Drafts
63
+
64
+ For each document draft, check:
65
+
66
+ - **Completeness** — Does the PRD cover functional, non-functional, error scenarios, and edge cases?
67
+ - **Specificity** — Are requirements testable? "Should handle errors gracefully" is not testable.
68
+ - **Tech feasibility** — Does the architecture make sense? Missing auth, race conditions, no error handling?
69
+ - **Module contracts** — If multiple tasks share interfaces, are return formats, error patterns, and call points defined?
70
+ - **Hallucination risk** — Flag any specific external detail that looks LLM-fabricated (API signatures, model IDs, SDK versions, CLI flags, config keys, endpoint paths) as a NOTE. The PM is an LLM — it confidently invents plausible-looking specifics.
71
+
72
+ ### Step 3: Review Task Drafts
73
+
74
+ For each task draft, check:
75
+
76
+ - **Granularity** — Each task should be cohesive and independently testable. 2-10 AC items is the sweet spot.
77
+ - **AC quality** — Each criterion must be objectively verifiable by a different agent. "Shows details" is BAD. "Displays order ID, customer name, and status badge" is GOOD.
78
+ - **Coverage** — Cross-reference task AC against document requirements. Any requirements with NO corresponding AC?
79
+ - **Dependencies** — Is the DAG correct? Missing dependencies? Circular? Can each task start once its dependencies are done?
80
+ - **Integration checkpoint** — For DAGs with **4 or more tasks**, at least one task MUST be an integration checkpoint whose AC requires end-to-end execution of the preceding modules together. If this is missing, classify it as a **BLOCKER** — without integration verification, module-level passes do not guarantee the system works.
81
+
82
+ ### Step 4: Cross-Reference Requirements ↔ AC
83
+
84
+ - Each requirement in the PRD → at least one task AC covers it.
85
+ - Each task AC → traceable back to a requirement.
86
+ - No orphan tasks, no orphan requirements.
87
+ - No scope additions absent from the original Idea; no contradictions between documents and tasks.
88
+
89
+ ---
90
+
91
+ ## Finding Classification: BLOCKER vs NOTE
92
+
93
+ Classify **every** finding as exactly one of:
94
+
95
+ **BLOCKER** — Blocks implementation correctness:
96
+
97
+ - Missing critical AC or NFR coverage.
98
+ - Functional scope contradiction between documents.
99
+ - Interface design flaw causing runtime errors.
100
+ - Incorrect task dependencies.
101
+ - Missing integration checkpoint in a 4+ task DAG.
102
+
103
+ **NOTE** — Does not block implementation:
104
+
105
+ - Pseudocode signature mismatch (parameter order, naming).
106
+ - Wording differences between PRD and tech design.
107
+ - Style / naming suggestions.
108
+ - Non-semantic document inconsistencies.
109
+ - Hallucination-risk specifics (SDK versions, API paths, CLI flags).
110
+
111
+ **Rules:** Pseudocode inconsistencies → **always NOTE**. Cross-document wording differences → **always NOTE**. Only semantic contradictions → BLOCKER.
112
+
113
+ ---
114
+
115
+ ## Round 2+ Awareness
116
+
117
+ You may receive the current review round number in your context.
118
+
119
+ - **Round 1** — Full review at normal strictness.
120
+ - **Round 2+** — Focus ONLY on whether the previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged in earlier rounds. Round 1 already did the full-depth draft review. In Round 2+, re-fetch `chorus_get_proposal({ proposalUuid, section: "full" })` and `chorus_get_comments`, diff against the previous round, confirm each prior BLOCKER is addressed, and stop. If all previous BLOCKERs are resolved → `VERDICT: PASS` (or `VERDICT: PASS WITH NOTES` if old NOTEs remain).
121
+
122
+ ---
123
+
124
+ ## Recognize Your Own Rationalizations
125
+
126
+ - "The proposal looks well-structured" — structure is not substance.
127
+ - "The PM probably considered this" — the PM is an LLM. Check it yourself.
128
+ - "There are enough tasks" — count is not coverage. Map requirements to tasks.
129
+
130
+ ---
131
+
132
+ ## VERDICT Contract
133
+
134
+ You MUST end your comment with exactly one of these three **literal** strings (automation greps for them):
135
+
136
+ - `VERDICT: PASS`
137
+ - `VERDICT: PASS WITH NOTES`
138
+ - `VERDICT: FAIL`
139
+
140
+ Mapping:
141
+
142
+ | Findings | Verdict |
143
+ |----------|---------|
144
+ | Any BLOCKER | `VERDICT: FAIL` |
145
+ | Only NOTEs (no BLOCKER) | `VERDICT: PASS WITH NOTES` |
146
+ | Nothing | `VERDICT: PASS` |
147
+
148
+ Do NOT invent other verdicts like "APPROVE" or "OK" — automation greps for the three exact strings above.
149
+
150
+ > The verdict is **advisory**. It informs the admin's decision in the `review-chorus` workflow; it does not by itself block or approve the proposal.
151
+
152
+ ---
153
+
154
+ ## Output Format (Required)
155
+
156
+ Keep total output **under ~800 characters** — be concise. No preamble, no trailing summary paragraph. PASS items: names only. NOTE items: one-line descriptions. BLOCKER items: full evidence.
157
+
158
+ ```
159
+ ### Review Summary
160
+
161
+ **PASS (N):** Check-1 name, Check-2 name, ...
162
+
163
+ **NOTE (M):**
164
+ - Note-1: [one-line description]
165
+ - Note-2: [one-line description]
166
+
167
+ **BLOCKER (K):**
168
+ ### Blocker-1: name
169
+ **Evidence:** [specific finding]
170
+ **Expected:** [what should be there]
171
+ **Actual:** [what is there or what is missing]
172
+
173
+ VERDICT: PASS
174
+ ```
175
+
176
+ (or `VERDICT: PASS WITH NOTES` / `VERDICT: FAIL` — exact literal, no other variants)
177
+
178
+ ---
179
+
180
+ ## Posting Results
181
+
182
+ Post the full review as a **single** comment:
183
+
184
+ ```
185
+ chorus_add_comment({
186
+ targetType: "proposal",
187
+ targetUuid: "<proposal-uuid>",
188
+ content: "<your review>"
189
+ })
190
+ ```
191
+
192
+ ---
193
+
194
+ ## Next
195
+
196
+ - The admin reads your VERDICT comment, then approves or rejects in the `review-chorus` skill (`<BASE_URL>/skill/review-chorus/SKILL.md`).
197
+ - For platform overview and shared tools, see `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`).
198
+ - For Proposal creation (what you are reviewing), see `proposal-chorus` skill (`<BASE_URL>/skill/proposal-chorus/SKILL.md`).
@@ -1,7 +1,12 @@
1
1
  ---
2
2
  name: quick-dev-chorus
3
- version: 0.3.1
4
3
  description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.9.3"
8
+ category: project-management
9
+ mcp_server: chorus
5
10
  ---
6
11
 
7
12
  # Quick Dev Skill
@@ -63,7 +68,7 @@ This matters because admin agents can call `chorus_admin_verify_task` to close t
63
68
 
64
69
  ### Step 1: Create a Quick Task
65
70
 
66
- **Always include `acceptanceCriteriaItems`** these are the foundation for self-checking in Step 6. Write specific, testable criteria that you can objectively verify after development. Vague AC like "works correctly" defeats the purpose; prefer "returns 200 on GET /api/foo with valid token".
71
+ **`acceptanceCriteriaItems` is required** `chorus_create_tasks` rejects any task without at least one non-blank criterion (and rejects the whole batch if any task is missing them). These are also the foundation for self-checking in Step 6. Write specific, testable criteria that you can objectively verify after development. Vague AC like "works correctly" defeats the purpose; prefer "returns 200 on GET /api/foo with valid token".
67
72
 
68
73
  ```
69
74
  chorus_create_tasks({
@@ -93,7 +98,7 @@ chorus_claim_task({ taskUuid: "<task-uuid>" })
93
98
 
94
99
  ### Step 3: Edit Details (if needed)
95
100
 
96
- Use `chorus_update_task` to refine the task after creation. **If you skipped AC in Step 1, add them now** you will need them for self-check later. Also update AC when your understanding of the task changes during development.
101
+ Use `chorus_update_task` to refine the task after creation. Tasks always have AC (creation requires them), but **update them when your understanding changes during development**. Passing `acceptanceCriteriaItems` **replaces** the task's criteria with the provided non-empty set; omit the field to leave them unchanged (it cannot be used to clear AC).
97
102
 
98
103
  ```
99
104
  chorus_update_task({
@@ -156,7 +161,7 @@ This completes the full autonomous cycle: create → develop → verify → done
156
161
  ## Tips
157
162
 
158
163
  - Keep Quick Tasks small — if you need more than 2-3 tasks, consider using a proposal
159
- - **Always write acceptance criteria at creation time** — they are your self-check contract. Specific, testable AC enables autonomous verification and makes the entire workflow self-contained
164
+ - **Acceptance criteria are required at creation time** — `chorus_create_tasks` rejects tasks without them. They are your self-check contract; specific, testable AC enables autonomous verification and makes the entire workflow self-contained
160
165
  - Use `chorus_update_task` to refine tasks (including AC) after creation rather than deleting and recreating
161
166
  - Pass `proposalUuid` to attach follow-up or gap-filling tasks to an existing proposal — this keeps related work grouped in the same project context and DAG
162
167
  - Quick Tasks appear in the same project task list and DAG as proposal-based tasks
@@ -4,7 +4,7 @@ description: Chorus Review workflow — approve/reject proposals, verify tasks,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.3.1"
7
+ version: "0.9.3"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -128,9 +128,11 @@ The `full` view returns: title, description, input ideas, **document drafts** (P
128
128
  chorus_get_comments({ targetType: "proposal", targetUuid: "<proposal-uuid>" })
129
129
  ```
130
130
 
131
- #### A3.5: Independent Review (Automatic)
131
+ #### A3.5: Independent Review
132
132
 
133
- After `chorus_pm_submit_proposal`, consider spawning `chorus:proposal-reviewer` a read-only agent that adversarially reviews the proposal's document quality, task granularity, AC alignment, and dependency DAG. Check for its VERDICT comment before approving.
133
+ Before approving, run an independent review of the proposal. Spawn a read-only sub-agent that loads the `proposal-reviewer-chorus` skill (`<BASE_URL>/skill/proposal-reviewer-chorus/SKILL.md`), pass it the `proposalUuid`, and let it adversarially audit document quality, task granularity, AC alignment, and the dependency DAG. It posts a single `VERDICT` comment (PASS / PASS WITH NOTES / FAIL) on the proposal; read it with `chorus_get_comments` before deciding.
134
+
135
+ The spawn mechanism is harness-specific, and an inline self-review fallback exists when sub-agents are unavailable — see the canonical **Independent Review** section in the `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`) for the full pattern.
134
136
 
135
137
  > **VERDICT: FAIL is advisory** — the reviewer's opinion does not block approval. The admin reads the review comment and makes the final decision.
136
138
 
@@ -195,6 +197,14 @@ Check: developer's work summary, acceptance criteria, self-check results.
195
197
  chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
196
198
  ```
197
199
 
200
+ #### B2.5: Independent Review
201
+
202
+ Before marking acceptance criteria and verifying, run an independent review of the task. Spawn a read-only sub-agent that loads the `task-reviewer-chorus` skill (`<BASE_URL>/skill/task-reviewer-chorus/SKILL.md`), pass it the `taskUuid`, and let it independently verify the implementation against the acceptance criteria and proposal documents. It posts a single `VERDICT` comment (PASS / PASS WITH NOTES / FAIL) on the task; read it with `chorus_get_comments` before deciding.
203
+
204
+ The spawn mechanism is harness-specific, and an inline self-review fallback exists when sub-agents are unavailable — see the canonical **Independent Review** section in the `chorus` skill (`<BASE_URL>/skill/chorus/SKILL.md`) for the full pattern.
205
+
206
+ > **VERDICT is advisory** — a `FAIL` does not block verification and a `PASS` does not auto-verify. The admin reads the review comment, marks the acceptance criteria, and makes the final decision.
207
+
198
208
  #### B3: Mark Acceptance Criteria
199
209
 
200
210
  Review and mark each criterion: