@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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +244 -244
- package/.next/standalone/.next/app-path-routes-manifest.json +34 -34
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +39 -39
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/ideas/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +1 -1
- package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +1 -1
- package/.next/standalone/.next/server/app/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +5 -5
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +1 -1
- package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +1 -1
- package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +1 -1
- package/.next/standalone/.next/server/app/onboarding.rsc +2 -2
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +1 -1
- package/.next/standalone/.next/server/app/projects.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/.next/server/app-paths-manifest.json +34 -34
- package/.next/standalone/.next/server/chunks/1871.js +1 -1
- package/.next/standalone/.next/server/chunks/2618.js +1 -1
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/4043.js +1 -0
- package/.next/standalone/.next/server/chunks/5044.js +1 -1
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6592.js +1 -0
- package/.next/standalone/.next/server/chunks/6643.js +1 -1
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7578.js +2 -2
- package/.next/standalone/.next/server/chunks/8637.js +1 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/937.js +1 -1
- package/.next/standalone/.next/server/chunks/9508.js +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{4860.4aa0288b2953186b.js → 4860.29e14c631b3a4ed0.js} +1 -1
- package/.next/standalone/.next/static/chunks/{99373.00844a02fe44575b.js → 99373.20008a2c9ebbec89.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-6d49b00568c97056.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-95cdcec5e6db551f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/{page-a01b45dbe80aeecf.js → page-b153aa34b940a24c.js} +1 -1
- package/.next/standalone/.next/static/chunks/{webpack-b999409365c6a0aa.js → webpack-3cb38d4d37d2765b.js} +1 -1
- package/.next/standalone/.next/static/css/26282a3639f03089.css +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +1 -1
- package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +1 -1
- package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +198 -115
- package/.next/standalone/public/chorus-plugin/bin/tests/test-on-post-verify-task.sh +302 -50
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +166 -0
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +10 -6
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +6 -2
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +17 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +6 -7
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +7 -1
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +166 -0
- package/.next/standalone/public/skill/chorus/SKILL.md +10 -6
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +5 -1
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +17 -1
- package/.next/standalone/public/skill/package.json +1 -1
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +6 -7
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20260524144057_remove_session_expires_at/migration.sql +11 -0
- package/prisma/schema.prisma +2 -2
- package/.next/standalone/.next/server/chunks/554.js +0 -1
- package/.next/standalone/.next/server/chunks/8163.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-ae96fc9386afff88.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-062c6fef8aef25a6.js +0 -1
- package/.next/standalone/.next/static/css/a3f1e693b51f7540.css +0 -1
- /package/.next/standalone/.next/static/{3AEr6cS1BaPlwTuyPvMQF → lMRAkQ7TedkdqmIWybcRT}/_buildManifest.js +0 -0
- /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.
|
|
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` / `
|
|
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.
|
|
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
|
|
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.
|
|
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: 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.
|
|
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
|
-
| `
|
|
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
|
-
| `
|
|
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
|
-
|
|
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
|
-
|
|
267
|
-
|
|
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).
|
|
@@ -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.
|
|
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.
|
|
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` / `
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
| `
|
|
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
|
-
| `
|
|
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
|
-
|
|
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
|
-
|
|
235
|
-
|
|
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).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chorus-aidlc/chorus",
|
|
3
|
-
"version": "0.
|
|
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");
|
package/prisma/schema.prisma
CHANGED
|
@@ -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 |
|
|
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)
|