@chorus-aidlc/chorus 0.8.2 → 0.9.0

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 (225) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +244 -244
  3. package/.next/standalone/.next/app-path-routes-manifest.json +34 -34
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +39 -39
  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 +2 -2
  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_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
  23. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
  26. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +1 -1
  29. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +1 -1
  34. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  37. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  38. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
  41. package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
  42. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/admin/companies.html +1 -1
  44. package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
  45. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/admin.html +1 -1
  47. package/.next/standalone/.next/server/app/admin.rsc +2 -2
  48. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
  54. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
  75. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
  81. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/mcp/route.js +5 -5
  90. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
  92. package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
  109. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
  112. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
  115. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
  132. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
  139. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/index.html +1 -1
  141. package/.next/standalone/.next/server/app/index.rsc +2 -2
  142. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/login/admin.html +1 -1
  144. package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
  145. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/login/callback.html +1 -1
  147. package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
  148. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
  151. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
  152. package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
  154. package/.next/standalone/.next/server/app/login/silent-refresh.rsc +2 -2
  155. package/.next/standalone/.next/server/app/login.html +1 -1
  156. package/.next/standalone/.next/server/app/login.rsc +2 -2
  157. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/onboarding.html +1 -1
  159. package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
  160. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/projects.html +1 -1
  162. package/.next/standalone/.next/server/app/projects.rsc +2 -2
  163. package/.next/standalone/.next/server/app/settings.html +1 -1
  164. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  165. package/.next/standalone/.next/server/app-paths-manifest.json +34 -34
  166. package/.next/standalone/.next/server/chunks/1871.js +1 -1
  167. package/.next/standalone/.next/server/chunks/2618.js +1 -1
  168. package/.next/standalone/.next/server/chunks/2961.js +1 -1
  169. package/.next/standalone/.next/server/chunks/4043.js +1 -0
  170. package/.next/standalone/.next/server/chunks/5044.js +1 -1
  171. package/.next/standalone/.next/server/chunks/6113.js +1 -1
  172. package/.next/standalone/.next/server/chunks/6592.js +1 -0
  173. package/.next/standalone/.next/server/chunks/6643.js +1 -1
  174. package/.next/standalone/.next/server/chunks/7368.js +1 -1
  175. package/.next/standalone/.next/server/chunks/7578.js +2 -2
  176. package/.next/standalone/.next/server/chunks/8637.js +1 -1
  177. package/.next/standalone/.next/server/chunks/920.js +1 -1
  178. package/.next/standalone/.next/server/chunks/937.js +1 -1
  179. package/.next/standalone/.next/server/chunks/9508.js +2 -2
  180. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  181. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  182. package/.next/standalone/.next/server/pages/404.html +1 -1
  183. package/.next/standalone/.next/server/pages/500.html +1 -1
  184. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  186. package/.next/standalone/.next/static/chunks/{4860.4aa0288b2953186b.js → 4860.29e14c631b3a4ed0.js} +1 -1
  187. package/.next/standalone/.next/static/chunks/{99373.00844a02fe44575b.js → 99373.20008a2c9ebbec89.js} +1 -1
  188. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-6d49b00568c97056.js +1 -0
  189. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-95cdcec5e6db551f.js +1 -0
  190. package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/{page-a01b45dbe80aeecf.js → page-b153aa34b940a24c.js} +1 -1
  191. package/.next/standalone/.next/static/chunks/{webpack-b999409365c6a0aa.js → webpack-3cb38d4d37d2765b.js} +1 -1
  192. package/.next/standalone/.next/static/css/26282a3639f03089.css +1 -0
  193. package/.next/standalone/package.json +1 -1
  194. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  195. package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +1 -1
  196. package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +1 -1
  197. package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +198 -115
  198. package/.next/standalone/public/chorus-plugin/bin/tests/test-on-post-verify-task.sh +302 -50
  199. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +166 -0
  200. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +10 -6
  201. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +6 -2
  202. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +17 -1
  203. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  204. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +6 -7
  205. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
  206. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
  207. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +7 -1
  208. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +166 -0
  209. package/.next/standalone/public/skill/chorus/SKILL.md +10 -6
  210. package/.next/standalone/public/skill/develop-chorus/SKILL.md +5 -1
  211. package/.next/standalone/public/skill/idea-chorus/SKILL.md +17 -1
  212. package/.next/standalone/public/skill/package.json +1 -1
  213. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +6 -7
  214. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
  215. package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
  216. package/package.json +1 -1
  217. package/prisma/migrations/20260524144057_remove_session_expires_at/migration.sql +11 -0
  218. package/prisma/schema.prisma +2 -2
  219. package/.next/standalone/.next/server/chunks/554.js +0 -1
  220. package/.next/standalone/.next/server/chunks/8163.js +0 -1
  221. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-ae96fc9386afff88.js +0 -1
  222. package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-062c6fef8aef25a6.js +0 -1
  223. package/.next/standalone/.next/static/css/a3f1e693b51f7540.css +0 -1
  224. /package/.next/standalone/.next/static/{3AEr6cS1BaPlwTuyPvMQF → lMRAkQ7TedkdqmIWybcRT}/_buildManifest.js +0 -0
  225. /package/.next/standalone/.next/static/{3AEr6cS1BaPlwTuyPvMQF → lMRAkQ7TedkdqmIWybcRT}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@ description: Chorus AI Agent collaboration platform — overview, common tools,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -136,17 +136,21 @@ Projects can be organized into **Project Groups** — a single-level grouping th
136
136
 
137
137
  | Tool | Purpose |
138
138
  |------|---------|
139
- | `chorus_get_ideas` | List project Ideas (filterable by status, paginated) |
140
- | `chorus_get_idea` | Get a single Idea's details |
139
+ | `chorus_get_ideas` | List project Ideas (filterable by status, paginated; rows include `reportCount`) |
140
+ | `chorus_get_idea` | Get a single Idea's details (includes `reports[]` with full content) |
141
141
  | `chorus_get_available_ideas` | Get claimable Ideas (status=open) |
142
142
 
143
143
  ### Documents
144
144
 
145
145
  | Tool | Purpose |
146
146
  |------|---------|
147
- | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide) |
147
+ | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide, report) |
148
148
  | `chorus_get_document` | Get a single document's content |
149
149
 
150
+ ### Reports
151
+
152
+ A **report** is a short idea-completion summary persisted as a `type="report"` Document at end-of-Idea, authored via `chorus_create_report` (gated on `document:write`). The tool's description carries the section template — read it there. `/yolo` writes one mandatorily; `/develop` offers it advisorily on last-task verify; a PostToolUse hook reminds if neither fired.
153
+
150
154
  ### Proposals
151
155
 
152
156
  | Tool | Purpose |
@@ -294,8 +298,8 @@ The table below shows default tool availability for each preset (no custom permi
294
298
  | `chorus_update_task` (field edits + status) | (public; assignee required for status) | Yes | Yes | Yes |
295
299
  | `chorus_claim_task` / `chorus_release_task` / `chorus_submit_for_verify` / `chorus_report_work` / `chorus_report_criteria_self_check` | `task:write` | Yes | **Yes** (0.7.0+) | Yes |
296
300
  | `chorus_claim_idea` / `chorus_release_idea` / `chorus_move_idea` / `chorus_pm_create_idea` / `chorus_pm_*_elaboration` | `idea:write` | No | Yes | Yes |
297
- | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_pm_create_tasks` / `chorus_pm_assign_task` / `chorus_*_task_dependency` | `proposal:write` | No | Yes | Yes |
298
- | `chorus_pm_create_document` / `chorus_pm_update_document` | `document:write` | No | Yes | Yes |
301
+ | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_create_tasks` / `chorus_pm_assign_task` / `chorus_update_task` (dependency edits via `addDependsOn`/`removeDependsOn`) | `proposal:write` | No | Yes | Yes |
302
+ | `chorus_pm_create_document` / `chorus_pm_update_document` / `chorus_create_report` | `document:write` | No | Yes | Yes |
299
303
  | `chorus_admin_create_project` / `chorus_admin_*_project_group` / `chorus_admin_move_project_to_group` | `project:write` | No | **Yes** (0.7.0+) | Yes |
300
304
  | `chorus_admin_approve_proposal` / `chorus_admin_close_proposal` | `proposal:admin` | No | No | Yes |
301
305
  | `chorus_admin_verify_task` / `chorus_admin_reopen_task` / `chorus_admin_close_task` / `chorus_mark_acceptance_criteria` / `chorus_admin_delete_task` | `task:admin` | No | No | Yes |
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, manage se
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -254,6 +254,10 @@ If the reviewer returns **FAIL**, or the task is reopened after verification:
254
254
 
255
255
  Once Admin verifies (status: `done`), move to the next available task (back to Step 2).
256
256
 
257
+ ### Step 11: Idea Completion Report (advisory)
258
+
259
+ If the task you just self-verified was the LAST one of its Idea (every Task across every approved Proposal is now `done`/`closed`) and you have `document:write`, offer to call `chorus_create_report` via `AskUserQuestion`. The tool description carries the section template. Skip on decline — the PostToolUse hook will remind on the next run.
260
+
257
261
  ---
258
262
 
259
263
  ## Session (Sub-Agents Only)
@@ -360,7 +364,7 @@ Sub-agents need MCP configured at **project level** (`.mcp.json` or `.claude/set
360
364
  |---------|----------|
361
365
  | Sub-agent can't access Chorus MCP tools | Verify MCP is configured at project level, API key has developer role |
362
366
  | UI doesn't show active workers | Sub-agent forgot `chorus_session_checkin_task`. Check: `chorus_get_session` |
363
- | Session shows "inactive" (yellow) | No heartbeat in 1h. TeammateIdle hook should auto-send. Agent may have crashed |
367
+ | Session disappears from Settings | No activity for 1h (default lists hide stale sessions). The session row still exists — it's reachable via MCP `chorus_list_sessions` / `chorus_get_session`. Send a heartbeat (or any session-touching tool) to make it visible again, or check whether the agent crashed |
364
368
  | Task stuck in wrong status | Spawn new sub-agent with same name (plugin auto-reopens session), or use `chorus_update_task` to reset |
365
369
  | Duplicate sessions | Never call `chorus_create_session` — plugin handles all session creation. Close extras via Settings page |
366
370
  | Sub-agent didn't receive session | Check plugin is loaded (`/plugin list`) and `CHORUS_URL` is set. Ensure `name` parameter is set |
@@ -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.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -114,6 +114,20 @@ Before elaborating, understand the full picture:
114
114
  chorus_get_comments({ targetType: "idea", targetUuid: "<idea-uuid>" })
115
115
  ```
116
116
 
117
+ ### Step 4.5: Brainstorm Mode (Optional Prelude)
118
+
119
+ If the Idea is fuzzy and you'd struggle to enumerate concrete multi-choice questions, offer the user a brainstorm prelude before structured elaboration. Ask once via `AskUserQuestion` (header `"Brainstorm"`, two options: `"Already clear, run structured elaboration"` and `"Brainstorm first to explore directions"`).
120
+
121
+ - **"Already clear":** Skip to Step 5.
122
+ - **"Brainstorm first":** Invoke the `/brainstorm` skill. See `/brainstorm` for the dialogue cadence and synthesis rules — do NOT re-implement them here.
123
+
124
+ When `/brainstorm` returns, you own the lifecycle decision (the brainstorm skill deliberately leaves it to you):
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.
128
+
129
+ Either outcome ends Step 4.5; skip Step 5.
130
+
117
131
  ### Step 5: Elaborate on the Idea
118
132
 
119
133
  **Every Idea should go through elaboration.** Skip only when requirements are completely unambiguous (e.g., bug fix with clear steps). Elaboration improves Proposal quality and reduces rejection cycles.
@@ -223,6 +237,8 @@ chorus_pm_skip_elaboration({
223
237
 
224
238
  6. **Validate the elaboration:**
225
239
 
240
+ `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.
241
+
226
242
  ```
227
243
  chorus_pm_validate_elaboration({
228
244
  ideaUuid: "<idea-uuid>",
@@ -4,7 +4,7 @@ description: Opt-in OpenSpec-mode authoring for Chorus PM workflows in Claude Co
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -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.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -55,12 +55,11 @@ Elaboration resolved --> Create Proposal --> Add drafts --> Validate --> Submit
55
55
 
56
56
  | Tool | Purpose |
57
57
  |------|---------|
58
- | `chorus_pm_create_tasks` | Batch create tasks (supports intra-batch dependencies via draftUuid) |
58
+ | `chorus_create_tasks` | Batch create tasks (supports intra-batch dependencies via draftUuid) |
59
59
  | `chorus_pm_assign_task` | Assign a task to a Developer Agent |
60
60
  | `chorus_pm_create_document` | Create standalone document |
61
61
  | `chorus_pm_update_document` | Update document content (increments version) |
62
- | `chorus_add_task_dependency` | Add dependency between existing tasks (with cycle detection) |
63
- | `chorus_remove_task_dependency` | Remove a task dependency |
62
+ | `chorus_update_task` (with `addDependsOn` / `removeDependsOn`) | Add or remove task dependencies (with cycle detection) |
64
63
 
65
64
  **Shared tools** (checkin, query, comment, search, notifications): see `/chorus`
66
65
 
@@ -250,7 +249,7 @@ After tasks are created, you can manage dependencies:
250
249
  **Batch create tasks with intra-batch dependencies:**
251
250
 
252
251
  ```
253
- chorus_pm_create_tasks({
252
+ chorus_create_tasks({
254
253
  projectUuid: "<project-uuid>",
255
254
  tasks: [
256
255
  { draftUuid: "draft-db", title: "Create database schema", priority: "high", storyPoints: 2 },
@@ -263,8 +262,8 @@ chorus_pm_create_tasks({
263
262
  **Add/remove dependencies on existing tasks:**
264
263
 
265
264
  ```
266
- chorus_add_task_dependency({ taskUuid: "<task-B-uuid>", dependsOnTaskUuid: "<task-A-uuid>" })
267
- chorus_remove_task_dependency({ taskUuid: "<task-B-uuid>", dependsOnTaskUuid: "<task-A-uuid>" })
265
+ chorus_update_task({ taskUuid: "<task-B-uuid>", addDependsOn: ["<task-A-uuid>"] })
266
+ chorus_update_task({ taskUuid: "<task-B-uuid>", removeDependsOn: ["<task-A-uuid>"] })
268
267
  ```
269
268
 
270
269
  Dependencies are validated: same project, no self-dependency, no cycles (DFS detection).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: quick-dev
3
- version: 0.8.3
3
+ version: 0.9.0
4
4
  description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
5
5
  ---
6
6
 
@@ -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.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the en
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.8.3"
7
+ version: "0.9.0"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -467,6 +467,12 @@ After all waves complete, output a markdown summary:
467
467
 
468
468
  ---
469
469
 
470
+ ### Phase 5b: Idea Completion Report (mandatory)
471
+
472
+ A successful `/yolo` run always finishes the Idea — call `chorus_create_report` once with `proposalUuid` set to the last verified proposal. The tool's description carries the section template; follow it. Surface the returned `documentUuid` in the Phase 5 summary. Skipping is a protocol violation.
473
+
474
+ ---
475
+
470
476
  ## Error Handling
471
477
 
472
478
  | Scenario | Action |
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: brainstorm-chorus
3
+ description: Optional divergent-then-convergent dialogue for fuzzy ideas. Invoked from the idea skill as a prelude to structured elaboration; produces one ElaborationRound of decision-point Q&A and returns control. Never writes files, never posts comments, never validates elaboration.
4
+ license: AGPL-3.0
5
+ metadata:
6
+ author: chorus
7
+ version: "0.3.1"
8
+ category: project-management
9
+ mcp_server: chorus
10
+ ---
11
+
12
+ # Brainstorm Skill
13
+
14
+ A divergent-then-convergent dialogue cadence for ideas whose direction is still being formed. Compresses the conversation into one `ElaborationRound` of decision-point Q&A — same shape as a structured elaboration round, but the questions, options and answers are synthesized at the end of the conversation rather than asked up front.
15
+
16
+ This skill is a **producer** of one elaboration round; the **scheduler** decision (validate vs. follow-up) belongs to the calling idea skill.
17
+
18
+ ---
19
+
20
+ ## When invoked
21
+
22
+ Only as a sub-step of the idea skill, only after the user has explicitly opted in via `AskUserQuestion`. Never run standalone, never run without user opt-in. The expected entry point is the idea skill's "Step 4.5: Brainstorm Mode (Optional Prelude)" — see the idea skill for the surrounding flow.
23
+
24
+ ---
25
+
26
+ ## Hard rules
27
+
28
+ 1. **One question at a time.** Each `AskUserQuestion` call MUST contain exactly one question entry. Wait for the answer before asking the next.
29
+ 2. **Multi-choice preferred.** Frame each question as 2-4 options where possible. Open-ended is acceptable when options would be premature, but lean toward concrete choices.
30
+ 3. **Propose 2-3 directions before stopping divergence.** Once the requirement direction is clear enough to enumerate, present 2-3 distinct approaches in a single `AskUserQuestion`. Mark exactly one as the recommended option per the host tool's `AskUserQuestion` recommendation convention (the spec does not dictate a specific marking format — follow the tool's documentation).
31
+ 4. **Explicit user approval required to exit divergence.** Do NOT proceed to synthesis until the user has selected one of the proposed directions.
32
+ 5. **No files written.** Do NOT write any markdown, design doc, scratch file, or any other file to disk. The conversation produces an `ElaborationRound` and nothing else on disk.
33
+ 6. **No comments posted.** Do NOT call `chorus_add_comment` from this skill. Comments belong to the idea skill or the user, not to the brainstorm step.
34
+ 7. **No design-doc handoff.** Do NOT invoke `writing-plans`, `writing-skills`, or any skill whose purpose is to produce a design document. The brainstorm output is the synthesized round — there is no separate doc.
35
+ 8. **No `validate_elaboration` call.** Do NOT call `chorus_pm_validate_elaboration` from this skill. Whether to validate (resolve elaboration) or follow up (issues + followUpQuestions) is the calling idea skill's decision, not this skill's.
36
+
37
+ ---
38
+
39
+ ## Step-by-step
40
+
41
+ ### 1. Gather context
42
+
43
+ Before asking the first divergent question, read the idea and surrounding project state. Mirror the idea skill's gather-context list:
44
+
45
+ ```
46
+ chorus_get_idea({ ideaUuid })
47
+ chorus_get_documents({ projectUuid })
48
+ chorus_get_document({ documentUuid }) # for any document worth reading in full
49
+ chorus_get_proposals({ projectUuid, status: "approved" }) # to understand patterns
50
+ chorus_list_tasks({ projectUuid }) # to avoid duplicating existing work
51
+ chorus_get_comments({ targetType: "idea", targetUuid: ideaUuid })
52
+ ```
53
+
54
+ Skim each result for: stated background, stated requirements, stated constraints, and what is conspicuously NOT stated. The gaps are the questions worth asking.
55
+
56
+ ### 2. Divergent Q&A
57
+
58
+ Ask one question at a time via `AskUserQuestion`. Aim to surface:
59
+
60
+ - The **goal** the idea is trying to serve (often more abstract than the idea statement).
61
+ - The **constraints** that exclude entire branches of solution space (deadlines, compatibility, scope).
62
+ - The **success criteria** — how will the user know this is done.
63
+
64
+ Keep each question single-purpose. If you need to ask three things, that is three rounds, not one combined `AskUserQuestion`.
65
+
66
+ ### 3. Propose 2-3 directions
67
+
68
+ When the goal, constraints, and success criteria are clear enough that you can name distinct approaches, present them in a single `AskUserQuestion`:
69
+
70
+ ```
71
+ AskUserQuestion({
72
+ questions: [
73
+ {
74
+ question: "<the convergence question>",
75
+ header: "<short header>",
76
+ options: [
77
+ { label: "Option A (Recommended)", description: "<what + tradeoff>" },
78
+ { label: "Option B", description: "<what + tradeoff>" },
79
+ { label: "Option C", description: "<what + tradeoff>" }
80
+ ],
81
+ multiSelect: false
82
+ }
83
+ ]
84
+ })
85
+ ```
86
+
87
+ The recommendation must be visibly marked to the user using the host tool's `AskUserQuestion` convention. State **why** you recommend it — usually a sentence about the dominant tradeoff.
88
+
89
+ ### 4. Wait for explicit approval
90
+
91
+ Do not proceed to synthesis if the user has not selected one of the options. If the user picks "Other" with free text, treat that as a new constraint — go back to step 2 or step 3 with the refined direction.
92
+
93
+ ### 5. Synthesize decision-point Q&A
94
+
95
+ For each material decision the user made during the conversation, build one `ElaborationQuestion`. A "material decision" is a moment where the user chose between alternatives or set scope explicitly. Map each decision per the synthesis spec below.
96
+
97
+ ### 6. Persist the round
98
+
99
+ Call `chorus_pm_start_elaboration` with the synthesized questions:
100
+
101
+ ```
102
+ chorus_pm_start_elaboration({
103
+ ideaUuid,
104
+ depth: "standard",
105
+ questions: [
106
+ { id: "q1", text: "...", category: "...", options: [...] },
107
+ ...
108
+ ]
109
+ })
110
+ ```
111
+
112
+ Then submit the answers in one call:
113
+
114
+ ```
115
+ chorus_answer_elaboration({
116
+ ideaUuid,
117
+ roundUuid,
118
+ answers: [
119
+ { questionId: "q1", selectedOptionId: "...", customText: "<rationale>" },
120
+ ...
121
+ ]
122
+ })
123
+ ```
124
+
125
+ ### 7. Return control
126
+
127
+ Stop here. Do **NOT** call `chorus_pm_validate_elaboration`. The idea skill's caller now decides:
128
+
129
+ - If the synthesized round answers cover everything → caller validates with `issues: []`.
130
+ - If gaps remain → caller validates with `issues + followUpQuestions` to start a structured Round 2.
131
+
132
+ The depth of any follow-up round is the caller's call, not yours.
133
+
134
+ ---
135
+
136
+ ## Synthesis spec
137
+
138
+ Each material decision becomes exactly one `ElaborationQuestion` with these fields:
139
+
140
+ | Field | Source |
141
+ |---|---|
142
+ | `text` | The decision question, phrased neutrally. Example: "Which depth-model placement?" |
143
+ | `category` | `functional`, `non_functional`, `business_context`, `technical_context`, `user_scenario`, or `scope` — derived from the topic. |
144
+ | `options` | All directions that were considered, length 2-5. Collapse near-duplicates into one option. |
145
+ | `selectedOptionId` | The id of the option the user approved. |
146
+ | `customText` | A 1-3 sentence rationale capturing the constraint or tradeoff that drove the choice. Not a transcript dump. |
147
+
148
+ Rules:
149
+
150
+ - A `customText` longer than ~3 sentences is a sign you are summarizing transcript instead of capturing rationale. Cut.
151
+ - An `options` array of length 2 with binary "yes / no" framing is a sign you pre-narrowed alternatives. Re-examine — there are usually at least three meaningfully different paths, even if two of them get rejected quickly.
152
+ - Skip "decisions" that were never genuinely contested. If the user agreed instantly to the only proposal, that is information for the idea content, not a decision-point Q&A.
153
+
154
+ ---
155
+
156
+ ## Anti-patterns
157
+
158
+ Do not do any of the following. Each has a specific failure mode that this skill must prevent:
159
+
160
+ - **Single-summary `customText` blob.** Compressing the entire conversation into one ElaborationQuestion with a long markdown summary in `customText`. The schema is multi-question for a reason — preserve the decision granularity.
161
+ - **Transcript-as-comment.** Posting the raw conversation log as a comment on the idea (or anywhere). The synthesized round IS the artifact. Raw transcripts pollute the audit trail with noise.
162
+ - **File writes.** Writing any markdown, design doc, plan, or scratch file to disk. There is no design doc in this flow. This is a deliberate divergence from the upstream `superpowers/brainstorming` cadence — read the design.md if confused.
163
+ - **`validate_elaboration` calls.** Closing the elaboration phase from this skill. The lifecycle decision belongs to the idea skill. Calling validate here strips the caller of its scheduler role.
164
+ - **`writing-plans` / design-doc handoff.** Invoking any skill that produces an implementation plan or design document. The Chorus pipeline already has Proposal → Document Drafts → Task Drafts for that — the brainstorm output feeds them through ElaborationRound, not through external doc skills.
165
+ - **Length-2 binary "yes / no" framings.** Reducing every decision to "do this thing — yes / no". Almost always the genuine alternatives are 3+ approaches with meaningfully different tradeoffs. Length-2 framings often mean the divergent phase ended too early.
166
+ - **Asking multiple questions in one `AskUserQuestion`.** The cadence is one question per turn during divergence, then one final convergence question with 2-3 options. Combining unrelated questions is a sign you are rushing.
@@ -4,7 +4,7 @@ description: Chorus AI Agent collaboration platform — overview, common tools,
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.3.0"
7
+ version: "0.3.1"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -165,17 +165,21 @@ Results can be filtered by project(s) using optional HTTP headers in your MCP co
165
165
 
166
166
  | Tool | Purpose |
167
167
  |------|---------|
168
- | `chorus_get_ideas` | List project Ideas (filterable by status, paginated) |
169
- | `chorus_get_idea` | Get a single Idea's details |
168
+ | `chorus_get_ideas` | List project Ideas (filterable by status, paginated; rows include `reportCount`) |
169
+ | `chorus_get_idea` | Get a single Idea's details (includes `reports[]` with full content) |
170
170
  | `chorus_get_available_ideas` | Get claimable Ideas (status=open) |
171
171
 
172
172
  ### Documents
173
173
 
174
174
  | Tool | Purpose |
175
175
  |------|---------|
176
- | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide) |
176
+ | `chorus_get_documents` | List project documents (filterable by type: prd, tech_design, adr, spec, guide, report) |
177
177
  | `chorus_get_document` | Get a single document's content |
178
178
 
179
+ ### Reports
180
+
181
+ A **report** is a short idea-completion summary persisted as a `type="report"` Document at end-of-Idea, authored via `chorus_create_report` (gated on `document:write`). The tool's description carries the section template — read it there. The `yolo` skill writes one mandatorily; the `develop` skill offers it advisorily on last-task verify.
182
+
179
183
  ### Proposals
180
184
 
181
185
  | Tool | Purpose |
@@ -328,8 +332,8 @@ The table below shows default tool availability for each preset (no custom permi
328
332
  | `chorus_update_task` (field edits + status) | (public; assignee required for status) | Yes | Yes | Yes |
329
333
  | `chorus_claim_task` / `chorus_release_task` / `chorus_submit_for_verify` / `chorus_report_work` / `chorus_report_criteria_self_check` | `task:write` | Yes | **Yes** (0.7.0+) | Yes |
330
334
  | `chorus_claim_idea` / `chorus_release_idea` / `chorus_move_idea` / `chorus_pm_create_idea` / `chorus_pm_*_elaboration` | `idea:write` | No | Yes | Yes |
331
- | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_pm_create_tasks` / `chorus_pm_assign_task` / `chorus_*_task_dependency` | `proposal:write` | No | Yes | Yes |
332
- | `chorus_pm_create_document` / `chorus_pm_update_document` | `document:write` | No | Yes | Yes |
335
+ | `chorus_pm_create_proposal` / `chorus_pm_*_proposal` / `chorus_pm_*_draft` / `chorus_create_tasks` / `chorus_pm_assign_task` | `proposal:write` | No | Yes | Yes |
336
+ | `chorus_pm_create_document` / `chorus_pm_update_document` / `chorus_create_report` | `document:write` | No | Yes | Yes |
333
337
  | `chorus_admin_create_project` / `chorus_admin_*_project_group` / `chorus_admin_move_project_to_group` | `project:write` | No | **Yes** (0.7.0+) | Yes |
334
338
  | `chorus_admin_approve_proposal` / `chorus_admin_close_proposal` | `proposal:admin` | No | No | Yes |
335
339
  | `chorus_admin_verify_task` / `chorus_admin_reopen_task` / `chorus_admin_close_task` / `chorus_mark_acceptance_criteria` / `chorus_admin_delete_task` | `task:admin` | No | No | Yes |
@@ -4,7 +4,7 @@ description: Chorus Development workflow — claim tasks, report work, self-chec
4
4
  license: AGPL-3.0
5
5
  metadata:
6
6
  author: chorus
7
- version: "0.2.0"
7
+ version: "0.3.1"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -198,6 +198,10 @@ If reopened (verification failed), **all acceptance criteria are reset to pendin
198
198
 
199
199
  Once Admin verifies (status: `done`), move to the next available task (back to Step 2).
200
200
 
201
+ ### Step 11: Idea Completion Report (advisory)
202
+
203
+ If the task you just self-verified was the LAST one of its Idea (every Task across every approved Proposal is now `done`/`closed`) and you have `document:write`, prompt the user and call `chorus_create_report` on accept. The tool description carries the section template. Skip on decline.
204
+
201
205
  ---
202
206
 
203
207
  ## Work Report Best Practices
@@ -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.2.0"
7
+ version: "0.3.1"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -114,6 +114,20 @@ Before elaborating, understand the full picture:
114
114
  chorus_get_comments({ targetType: "idea", targetUuid: "<idea-uuid>" })
115
115
  ```
116
116
 
117
+ ### Step 4.5: Brainstorm Mode (Optional Prelude)
118
+
119
+ If the Idea is fuzzy and you'd struggle to enumerate concrete multi-choice questions, offer the user a brainstorm prelude before structured elaboration. Use your IDE's interactive prompt mechanism if available, or present options as text — the same convention used elsewhere in this skill. Two choices: `"Already clear, run structured elaboration"` and `"Brainstorm first to explore directions"`.
120
+
121
+ - **"Already clear":** Skip to Step 5.
122
+ - **"Brainstorm first":** Invoke the `brainstorm-chorus` skill (`<BASE_URL>/skill/brainstorm-chorus/SKILL.md`). See that skill for the dialogue cadence and synthesis rules — do NOT re-implement them here.
123
+
124
+ When the brainstorm skill returns, you own the lifecycle decision (the brainstorm skill deliberately leaves it to you):
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.
128
+
129
+ Either outcome ends Step 4.5; skip Step 5.
130
+
117
131
  ### Step 5: Elaborate on the Idea
118
132
 
119
133
  **Every Idea should go through elaboration.** Skip only when requirements are completely unambiguous (e.g., bug fix with clear steps). Elaboration improves Proposal quality and reduces rejection cycles.
@@ -218,6 +232,8 @@ chorus_pm_skip_elaboration({
218
232
 
219
233
  6. **Validate the elaboration:**
220
234
 
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.
236
+
221
237
  ```
222
238
  chorus_pm_validate_elaboration({
223
239
  ideaUuid: "<idea-uuid>",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chorus-skill",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
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",
@@ -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.2.1"
7
+ version: "0.3.1"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
@@ -55,12 +55,11 @@ Elaboration resolved --> Create Proposal --> Add drafts --> Validate --> Submit
55
55
 
56
56
  | Tool | Purpose |
57
57
  |------|---------|
58
- | `chorus_pm_create_tasks` | Batch create tasks (supports intra-batch dependencies via draftUuid) |
58
+ | `chorus_create_tasks` | Batch create tasks (supports intra-batch dependencies via draftUuid) |
59
59
  | `chorus_pm_assign_task` | Assign a task to a Developer Agent |
60
60
  | `chorus_pm_create_document` | Create standalone document |
61
61
  | `chorus_pm_update_document` | Update document content (increments version) |
62
- | `chorus_add_task_dependency` | Add dependency between existing tasks (with cycle detection) |
63
- | `chorus_remove_task_dependency` | Remove a task dependency |
62
+ | `chorus_update_task` (with `addDependsOn` / `removeDependsOn`) | Manage dependencies between existing tasks (with cycle detection) |
64
63
 
65
64
  **Shared tools** (checkin, query, comment, search, notifications): see `chorus` skill at `<BASE_URL>/skill/chorus/SKILL.md`
66
65
 
@@ -218,7 +217,7 @@ After tasks are created, you can manage dependencies:
218
217
  **Batch create tasks with intra-batch dependencies:**
219
218
 
220
219
  ```
221
- chorus_pm_create_tasks({
220
+ chorus_create_tasks({
222
221
  projectUuid: "<project-uuid>",
223
222
  tasks: [
224
223
  { draftUuid: "draft-db", title: "Create database schema", priority: "high", storyPoints: 2 },
@@ -231,8 +230,8 @@ chorus_pm_create_tasks({
231
230
  **Add/remove dependencies on existing tasks:**
232
231
 
233
232
  ```
234
- chorus_add_task_dependency({ taskUuid: "<task-B-uuid>", dependsOnTaskUuid: "<task-A-uuid>" })
235
- chorus_remove_task_dependency({ taskUuid: "<task-B-uuid>", dependsOnTaskUuid: "<task-A-uuid>" })
233
+ chorus_update_task({ taskUuid: "<task-B-uuid>", addDependsOn: ["<task-A-uuid>"] })
234
+ chorus_update_task({ taskUuid: "<task-B-uuid>", removeDependsOn: ["<task-A-uuid>"] })
236
235
  ```
237
236
 
238
237
  Dependencies are validated: same project, no self-dependency, no cycles (DFS detection).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: quick-dev-chorus
3
- version: 0.1.1
3
+ version: 0.3.1
4
4
  description: Quick Task workflow — skip Idea→Proposal, create tasks directly, execute, and verify.
5
5
  ---
6
6
 
@@ -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.0"
7
+ version: "0.3.1"
8
8
  category: project-management
9
9
  mcp_server: chorus
10
10
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus",
3
- "version": "0.8.2",
3
+ "version": "0.9.0",
4
4
  "description": "The Agent Harness for AI-Human Collaboration — session lifecycle, task state, sub-agent orchestration, observability, and failure recovery",
5
5
  "homepage": "https://github.com/Chorus-AIDLC/Chorus",
6
6
  "repository": {
@@ -0,0 +1,11 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `expiresAt` on the `AgentSession` table. All the data in the column will be lost.
5
+
6
+ */
7
+ -- AlterTable
8
+ ALTER TABLE "AgentSession" DROP COLUMN "expiresAt";
9
+
10
+ -- CreateIndex
11
+ CREATE INDEX "AgentSession_lastActiveAt_idx" ON "AgentSession"("lastActiveAt");
@@ -354,9 +354,8 @@ model AgentSession {
354
354
  agent Agent @relation(fields: [agentUuid], references: [uuid], onDelete: Cascade)
355
355
  name String
356
356
  description String?
357
- status String @default("active") // active | inactive | closed
357
+ status String @default("active") // active | closed
358
358
  lastActiveAt DateTime @default(now())
359
- expiresAt DateTime?
360
359
  createdAt DateTime @default(now())
361
360
  updatedAt DateTime @updatedAt
362
361
  taskCheckins SessionTaskCheckin[]
@@ -364,6 +363,7 @@ model AgentSession {
364
363
  @@index([companyUuid])
365
364
  @@index([agentUuid])
366
365
  @@index([status])
366
+ @@index([lastActiveAt])
367
367
  }
368
368
 
369
369
  // Session-Task checkin relation (many-to-many)