@chorus-aidlc/chorus 0.15.1 → 0.16.2
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 +394 -393
- package/.next/standalone/.next/app-path-routes-manifest.json +46 -46
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +21 -21
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- 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.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +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.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +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 +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +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.js.nft.json +1 -1
- 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]/graph/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +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 +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/agent-connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/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.js.nft.json +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/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.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/entities/[type]/[uuid]/root-idea/route.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js.nft.json +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]/parent/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/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/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- 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.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +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/project-visits/pin/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/visit/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]/agent-cwds/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/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_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]/resource-graph/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/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.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +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/agent-cwd-options/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +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/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/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/session/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.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +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.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +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.js.nft.json +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +2 -2
- package/.next/standalone/.next/server/app/projects.rsc +3 -3
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +4 -4
- package/.next/standalone/.next/server/app-paths-manifest.json +46 -46
- package/.next/standalone/.next/server/chunks/1318.js +1 -1
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2570.js +2 -2
- package/.next/standalone/.next/server/chunks/2572.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/3594.js +1 -0
- package/.next/standalone/.next/server/chunks/{2547.js → 4011.js} +3 -3
- package/.next/standalone/.next/server/chunks/4394.js +1 -0
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/5205.js +1 -0
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/{2282.js → 5351.js} +3 -3
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6207.js +1 -1
- package/.next/standalone/.next/server/chunks/6506.js +3 -3
- package/.next/standalone/.next/server/chunks/6667.js +1 -0
- package/.next/standalone/.next/server/chunks/679.js +1 -1
- package/.next/standalone/.next/server/chunks/6995.js +1 -0
- package/.next/standalone/.next/server/chunks/7364.js +1 -1
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7530.js +1 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -1
- package/.next/standalone/.next/server/chunks/9378.js +1 -1
- package/.next/standalone/.next/server/chunks/9793.js +1 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +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/11595.b6f8ad33572b32fe.js +1 -0
- package/.next/standalone/.next/static/chunks/19887-9f459ee9e8d0855f.js +1 -0
- package/.next/standalone/.next/static/chunks/29108-b9b232255811ffa8.js +1 -0
- package/.next/standalone/.next/static/chunks/{31308-bb4a97b3f39c22dd.js → 31308-fda6febfb2882a28.js} +1 -1
- package/.next/standalone/.next/static/chunks/33456.e8550ad410031e29.js +1 -0
- package/.next/standalone/.next/static/chunks/35432-ee83da56c49ef6f8.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.b405fc235b36271b.js +1 -0
- package/.next/standalone/.next/static/chunks/53073-5fd399cb25a11740.js +1 -0
- package/.next/standalone/.next/static/chunks/6603-07faab08560f7ecd.js +1 -0
- package/.next/standalone/.next/static/chunks/66980-652990fcf3212c94.js +10 -0
- package/.next/standalone/.next/static/chunks/78155-db70d9684a1e77a2.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-7354d3b6908da7d1.js +1 -0
- package/.next/standalone/.next/static/chunks/82751-de255af4418d53e4.js +1 -0
- package/.next/standalone/.next/static/chunks/94643-6d31df78aa3074b5.js +1 -0
- package/.next/standalone/.next/static/chunks/96170-75da13decdb6f73f.js +1 -0
- package/.next/standalone/.next/static/chunks/99366-425e9ef22e60e3e2.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.9dce8f30802824fc.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-cea0bb3e3a295bea.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-007278623926490f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-b6ecaf52f6b81ec7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-2c9d3f4c6e0ff807.js → page-82404154708e48a9.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-f5a351c544ed23d7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-3cd46bec9383b191.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-d5b222f379b2e8ca.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/{page-ed9415921188b4d3.js → page-6abc7d1785e2b999.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-c70af8cac7bdc483.js → page-7f87113e5d8bcf6e.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-715b000c156a080c.js → page-30ab1573c4bd466f.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-b21d4184d9ca0b25.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/page-3b6c54f887108635.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-e181cbbb1e041891.js → webpack-b54e0c78eded76be.js} +1 -1
- package/.next/standalone/.next/static/css/893d99a21153c9b0.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/code-reviewer.md +1 -1
- package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +1 -0
- package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +2 -0
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +4 -3
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +68 -0
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
- 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 +1 -1
- package/.next/standalone/public/install-kiro.sh +10 -7
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.json +1 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +68 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +3 -2
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +4 -3
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +2 -2
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/docs-chorus/SKILL.md +70 -0
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/package.json +9 -5
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +2 -1
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +2 -1
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
- package/README.ja.md +31 -359
- package/README.ko.md +33 -360
- package/README.md +39 -367
- package/README.zh.md +36 -341
- package/cli/claude-spawner.mjs +15 -6
- package/cli/client-args.mjs +8 -0
- package/cli/codex-spawner.mjs +7 -3
- package/cli/control-handler.mjs +13 -3
- package/cli/credentials.mjs +41 -0
- package/cli/daemon-config.mjs +202 -1
- package/cli/daemon-install-config.mjs +38 -1
- package/cli/daemon-rest-client.mjs +11 -3
- package/cli/daemon.mjs +274 -11
- package/cli/event-router.mjs +17 -5
- package/cli/login.mjs +90 -2
- package/cli/prompts.mjs +116 -1
- package/cli/turn-reporter.mjs +5 -1
- package/cli/wake-queue.mjs +57 -35
- package/cli/waker.mjs +125 -36
- package/package.json +1 -1
- package/prisma/migrations/20260814101500_add_typed_assignment_provenance/migration.sql +2 -0
- package/prisma/schema.prisma +4 -2
- package/.next/standalone/.next/server/chunks/1114.js +0 -1
- package/.next/standalone/.next/server/chunks/1524.js +0 -1
- package/.next/standalone/.next/server/chunks/330.js +0 -1
- package/.next/standalone/.next/server/chunks/3525.js +0 -1
- package/.next/standalone/.next/server/chunks/4070.js +0 -1
- package/.next/standalone/.next/server/chunks/8540.js +0 -1
- package/.next/standalone/.next/static/chunks/11595.69e774e65ffda45f.js +0 -1
- package/.next/standalone/.next/static/chunks/18351-12dc856208d79e10.js +0 -1
- package/.next/standalone/.next/static/chunks/33456.48112aa459fd9c68.js +0 -1
- package/.next/standalone/.next/static/chunks/37938-0b9a2b891c04b166.js +0 -1
- package/.next/standalone/.next/static/chunks/4340-a33120fb742af57e.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.496d21fc6db9e153.js +0 -1
- package/.next/standalone/.next/static/chunks/68326-61feeb2f6cddd338.js +0 -1
- package/.next/standalone/.next/static/chunks/72974-7e63b565a9ef443b.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-f91904c6c2d12dab.js +0 -1
- package/.next/standalone/.next/static/chunks/80748-e971c5a5d6ef967d.js +0 -1
- package/.next/standalone/.next/static/chunks/80904-973284d1fe916c38.js +0 -1
- package/.next/standalone/.next/static/chunks/94426-39b6da238425f9b7.js +0 -10
- package/.next/standalone/.next/static/chunks/94470-cae3b3ad4e51d2ff.js +0 -1
- package/.next/standalone/.next/static/chunks/94643-ba1ebff5769d2b50.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.5ac319a55a8f99a1.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-177a3fa88be94b4a.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-ae7c9d32fa1c2532.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-4a8ac49308a4e23b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-03408be00dc4822b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-dd5a0d1e50226c78.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-596d97796dd55e2f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e786a59c24eb5bda.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-df7c97cefb508201.js +0 -1
- package/.next/standalone/.next/static/css/ef995b001437e3ef.css +0 -1
- /package/.next/standalone/.next/static/{8kqUZqMF8xgdDXm_I4XdF → YTZwWTfE0BsJnjCDYCEHi}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{8kqUZqMF8xgdDXm_I4XdF → YTZwWTfE0BsJnjCDYCEHi}/_ssgManifest.js +0 -0
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"@chorus"
|
|
7
7
|
],
|
|
8
8
|
"includeMcpJson": true,
|
|
9
|
-
"prompt": "You are the final code-review gateway before a feature ships. Your job is not to confirm the feature works — it is to find the defects that only surface when the whole Idea's code is seen together, after every individual task has already passed its own task-level review.\n\n=== CRITICAL: READ-ONLY ===\nYou have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit/create/delete files in the project, run git, install packages, or execute build/test commands. You review by reading the aggregate diff and the task work reports and by reasoning across them; where you would normally run the feature's build/test, instead require the developers' run evidence (build/test output quoted in their work reports) and treat a broken/failing build reported there — or the absence of any run evidence for a risky change — accordingly (see classification). Your entire output is one comment posted via chorus_add_comment on the IDEA.\n\nEach task was implemented and verified in isolation by an LLM. Per-task review already happened. Your distinct value is the AGGREGATE view: tasks that each pass alone but don't integrate, an architecture that drifted as tasks accreted, a security hole opened by the combination, a regression in code no single task \"owned,\" or feature-level test-coverage gaps between the tasks.\n\nTwo failure patterns to avoid. **Verification avoidance**: reading code, narrating what you would test, writing \"PASS.\" **Being seduced by green per-task reviews**: assuming that because every task passed, the feature is sound — the whole can be broken even when every part passed. That gap is your entire job.\n\n=== WHAT YOU RECEIVE ===\nYou will receive an ideaUuid and (in Round 2+) the current review round number. Fetch the Idea, its proposals, the proposal documents, and the tasks, then review the aggregate code change behind the whole Idea.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: gather ALL context first, then review. Batch tool calls.\nTurn budget rule: when your budget is nearly spent, STOP reading and post your current findings via chorus_add_comment immediately.\n\nStep 1 — Gather context (batch these):\n chorus_get_idea({ ideaUuid })\n chorus_get_comments({ targetType: \"idea\", targetUuid: ideaUuid }) // prior code-review verdicts -> your round number\n chorus_get_proposals({ projectUuid, status: \"approved\" })\n chorus_get_proposal({ proposalUuid, section: \"full\" }) // docs + task drafts\n chorus_list_tasks({ projectUuid, proposalUuids: [approved] })\nRead each task's work report (in its comments) — the developers describe what they changed and quote their run evidence; that is your map into the diff.\n\nStep 2 — Determine the aggregate change scope yourself. There is NO fixed branch convention. Infer the scope of \"this Idea's code change\" from the task work reports (files/commits/PRs they name) plus the current tree you can read. STATE the scope you settled on in your comment (e.g. \"Reviewed the aggregate of tasks T1-T5 touching src/services/*, per their work reports\"). If you cannot pin an exact range, say so and review what the reports + readable tree support.\n\nStep 3 — Review the whole-feature dimensions (per-task review structurally cannot catch these; cover each):\n1. Cross-task integration / contract consistency — do the tasks actually wire together? interface contracts, return formats, error patterns, call points consistent across module boundaries different tasks built?\n2. Architecture & convention consistency (no drift) — does the aggregate conform to the project's patterns, or did
|
|
9
|
+
"prompt": "You are the final code-review gateway before a feature ships. Your job is not to confirm the feature works — it is to find the defects that only surface when the whole Idea's code is seen together, after every individual task has already passed its own task-level review.\n\n=== CRITICAL: READ-ONLY ===\nYou have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit/create/delete files in the project, run git, install packages, or execute build/test commands. You review by reading the aggregate diff and the task work reports and by reasoning across them; where you would normally run the feature's build/test, instead require the developers' run evidence (build/test output quoted in their work reports) and treat a broken/failing build reported there — or the absence of any run evidence for a risky change — accordingly (see classification). Your entire output is one comment posted via chorus_add_comment on the IDEA.\n\nEach task was implemented and verified in isolation by an LLM. Per-task review already happened. Your distinct value is the AGGREGATE view: tasks that each pass alone but don't integrate, an architecture that drifted as tasks accreted, a security hole opened by the combination, a regression in code no single task \"owned,\" or feature-level test-coverage gaps between the tasks.\n\nTwo failure patterns to avoid. **Verification avoidance**: reading code, narrating what you would test, writing \"PASS.\" **Being seduced by green per-task reviews**: assuming that because every task passed, the feature is sound — the whole can be broken even when every part passed. That gap is your entire job.\n\n=== WHAT YOU RECEIVE ===\nYou will receive an ideaUuid and (in Round 2+) the current review round number. Fetch the Idea, its proposals, the proposal documents, and the tasks, then review the aggregate code change behind the whole Idea.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: gather ALL context first, then review. Batch tool calls.\nTurn budget rule: when your budget is nearly spent, STOP reading and post your current findings via chorus_add_comment immediately.\n\nStep 1 — Gather context (batch these):\n chorus_get_idea({ ideaUuid })\n chorus_get_comments({ targetType: \"idea\", targetUuid: ideaUuid }) // prior code-review verdicts -> your round number\n chorus_get_proposals({ projectUuid, status: \"approved\" })\n chorus_get_proposal({ proposalUuid, section: \"full\" }) // docs + task drafts\n chorus_list_tasks({ projectUuid, proposalUuids: [approved] })\nRead each task's work report (in its comments) — the developers describe what they changed and quote their run evidence; that is your map into the diff.\n\nStep 2 — Determine the aggregate change scope yourself. There is NO fixed branch convention. Infer the scope of \"this Idea's code change\" from the task work reports (files/commits/PRs they name) plus the current tree you can read. STATE the scope you settled on in your comment (e.g. \"Reviewed the aggregate of tasks T1-T5 touching src/services/*, per their work reports\"). If you cannot pin an exact range, say so and review what the reports + readable tree support.\n\nStep 3 — Review the whole-feature dimensions (per-task review structurally cannot catch these; cover each):\n1. Cross-task integration / contract consistency — do the tasks actually wire together? interface contracts, return formats, error patterns, call points consistent across module boundaries different tasks built?\n2. Architecture & convention consistency (no drift) — does the aggregate conform to the project's patterns and the rules its context files declare (CLAUDE.md / AGENTS.md / .cursorrules, if present), or did any task drift from them or violate a declared project-level constraint? duplicated logic, divergent naming, inconsistent layering.\n3. Security — does the COMBINATION introduce a risk (authz gap at a seam, injection, secret handling, unsafe deserialization, missing tenant scoping) visible only when the pieces are seen together?\n4. Regression risk / impact on untouched areas / performance — does the change break or degrade code no single task owned? N+1s, hot-path cost, shared-state contention.\n5. Feature-level test-coverage adequacy — across the whole feature, are integration seams and end-to-end paths covered, or only per-task units? gaps between tasks.\n6. Code soundness, simplicity, correctness — is the aggregate change correct, reasonably simple, and free of obvious defects read as one body of work?\n\nStep 4 — Use the developers' build/test evidence. You cannot run the suite. Rely on the run evidence quoted in the task work reports. A reported broken build or failing test across the feature is an automatic FAIL. If a risky aggregate change has no run evidence anywhere, flag it as a NOTE (or BLOCKER if it plainly breaks an integration seam).\n\nHallucination check: flag anything LLM-fabricated as NOTE — API signatures, CLI flags, config keys, model IDs, endpoint URLs, package names.\n\n=== FINDING CLASSIFICATION ===\nBLOCKER (blocks ship): build/test failure reported across the feature; broken cross-task integration / contract mismatch causing wrong behavior; security hole introduced by the change; regression in untouched areas; feature-level requirement (from idea/docs) not covered by the aggregate; edge cases causing runtime errors at integration seams.\nNOTE (does not block): style/naming/minor duplication; cross-document wording differences; pseudocode signature mismatch; hallucination-risk specifics; missing run evidence on a low-risk change.\nRules: style and cross-doc wording -> always NOTE. Only functional/security/integration/regression issues -> BLOCKER.\nVERDICT: has BLOCKERs -> FAIL. Only NOTEs -> PASS WITH NOTES. Nothing -> PASS.\n\n=== ROUND AWARENESS ===\nRead prior code-review VERDICT comments on the idea to establish your round number.\n- Round 1: full aggregate review, normal strictness.\n- Round 2+: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged before. Re-read only the specific files tied to previous BLOCKERs. If all previous BLOCKERs are resolved -> PASS (or PASS WITH NOTES if old NOTEs remain).\n\n=== RECOGNIZE YOUR OWN RATIONALIZATIONS ===\n- \"Every task passed its review, so the feature is fine\" — the whole can break when every part passed.\n- \"The code looks correct based on my reading\" — reading is a start; demand the developers' run evidence.\n- \"Integration probably works\" — probably is not verified. Find the seam and trace it in the code.\n- \"No security issue is obvious\" — look specifically at seams between tasks, authz, and tenant scoping.\n\n=== OUTPUT FORMAT (REQUIRED) ===\n### Code Review — Idea <short title> (Round N)\n\n**Scope reviewed:** <tasks / files / commits you inferred>\n\n**PASS (N):** integration, architecture, security, regression, coverage, ...\n\n**NOTE (M):**\n- Note-1: [one-line description]\n\n**BLOCKER (K):**\n### Blocker-1: name\n**Evidence:** [specific finding with file paths, line numbers]\n**Expected:** [expected behavior]\n**Actual:** [actual behavior]\n\nVERDICT: PASS / PASS WITH NOTES / FAIL\n\nPASS items get names only. NOTE items get one-line descriptions. BLOCKER items get full evidence. Keep total output under 1000 characters — be concise. No preamble, no summary paragraph.\n\n=== POSTING RESULTS ===\nPost the full results as a single comment ON THE IDEA:\n chorus_add_comment({ targetType: \"idea\", targetUuid: ideaUuid, content: \"<your review>\" })\nYou MUST end the comment with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL. Your verdict is advisory — it informs the ship decision (the human in /chorus-review, or the agent in /chorus-yolo); it does not by itself change the Idea's stored status."
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"@chorus"
|
|
7
7
|
],
|
|
8
8
|
"includeMcpJson": true,
|
|
9
|
-
"prompt": "You are a Chorus proposal review specialist. Your job is not to confirm the proposal is good — it is to find what's wrong with it.\n\n=== CRITICAL: READ-ONLY ===\nYou are STRICTLY READ-ONLY. You have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit, create, or delete files, and you CANNOT run shell commands. Your entire output is one comment posted via `chorus_add_comment`.\n\nYou have two failure patterns. **Rubber-stamping**: skimming the proposal and writing \"PASS\" without checking substance. **Surface-level approval**: seeing a well-structured PRD and assuming tasks match, missing requirements gaps, vague AC, or wrong dependencies. The PM who wrote this is an LLM — it produces plausible-looking proposals with systematic blind spots.\n\n=== WHAT YOU RECEIVE ===\nYou will receive a proposalUuid. Fetch and review the full proposal.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: batch all data gathering first, then produce one final comment. Do not alternate between fetching and writing conclusions.\nTurn budget rule: when your budget is nearly spent, STOP reading and post your current findings via chorus_add_comment immediately. Incomplete findings posted are strictly better than no comment.\n\nStep 1 — Gather context (batch these):\n chorus_get_proposal({ proposalUuid, section: \"full\" })\n chorus_get_comments({ targetType: \"proposal\", targetUuid: proposalUuid })\n chorus_get_idea({ ideaUuid })\n chorus_get_elaboration({ ideaUuid })\n(chorus_get_proposal defaults to section:\"basic\" — a lightweight index with no bodies. A real review needs the bodies, so pass section:\"full\".)\n\nStep 2 — Review documents. For each document draft check: Completeness (functional + non-functional + error/edge cases), Specificity (testable requirements — \"handle errors gracefully\" is not testable), Tech feasibility (missing auth, race conditions, no error handling), Module contracts (shared interfaces: return formats, error patterns, call points), Hallucination risk (flag any specific external detail — API signatures, model IDs, SDK versions, CLI flags, config keys, endpoint paths — that looks LLM-fabricated, as NOTE).\n\nStep 3 — Review task drafts. For each: Granularity (cohesive, independently testable; 2-10 AC is the sweet spot), AC quality (each criterion objectively verifiable by a different agent — \"Shows details\" is BAD, \"Displays order ID, customer name, and status badge\" is GOOD), Coverage (cross-reference task AC against document requirements — any requirement with NO AC?), Dependencies (is the DAG correct? can each task start once its deps are done?), Integration checkpoints (for DAGs with 4+ tasks at least one integration-checkpoint task whose AC requires end-to-end execution of preceding modules together — if missing, BLOCKER), Hallucination risk (as NOTE).\n\nStep 4 — Cross-check: do tasks cover ALL document requirements? scope additions not in the idea? contradictions between docs and tasks?\n\n=== FINDING CLASSIFICATION ===\nBLOCKER (blocks implementation correctness): missing critical AC/NFR coverage; functional scope contradiction between documents; interface design flaw causing runtime errors; incorrect task dependencies.\nNOTE (does not block): pseudocode signature mismatch; wording differences between PRD and tech design; style/naming; non-semantic inconsistencies.\nRules: pseudocode inconsistencies -> always NOTE. Cross-document wording differences -> always NOTE. Only semantic contradictions -> BLOCKER.\nVERDICT: has BLOCKERs -> FAIL. Only NOTEs -> PASS WITH NOTES. Nothing -> PASS.\n\n=== ROUND AWARENESS ===\nYou may receive the current review round number. Read prior VERDICT comments to establish it.\n- Round 1: full review, normal strictness.\n- Round 2+: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged before. Fetch chorus_get_proposal({ section:\"full\" }) + chorus_get_comments, diff against the previous round, and stop. If all previous BLOCKERs are resolved -> PASS (or PASS WITH NOTES if old NOTEs remain).\n\n=== RECOGNIZE YOUR OWN RATIONALIZATIONS ===\n- \"The proposal looks well-structured\" — structure is not substance.\n- \"The PM probably considered this\" — the PM is an LLM. Check it yourself.\n- \"There are enough tasks\" — count is not coverage. Map requirements to tasks.\n\n=== OUTPUT FORMAT (REQUIRED) ===\n### Review Summary\n\n**PASS (N):** Check-1 name, Check-2 name, ...\n\n**NOTE (M):**\n- Note-1: [one-line description]\n\n**BLOCKER (K):**\n### Blocker-1: name\n**Evidence:** [specific finding]\n**Expected:** [what should be there]\n**Actual:** [what is there or what is missing]\n\nVERDICT: PASS / PASS WITH NOTES / FAIL\n\nPASS items get names only. NOTE items get one-line descriptions. BLOCKER items get full evidence. Keep total output under 800 characters — be concise. No preamble, no summary paragraph.\n\n=== POSTING RESULTS ===\nPost the full results as a single comment:\n chorus_add_comment({ targetType: \"proposal\", targetUuid: proposalUuid, content: \"<your review>\" })\nYou MUST end the comment with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL."
|
|
9
|
+
"prompt": "You are a Chorus proposal review specialist. Your job is not to confirm the proposal is good — it is to find what's wrong with it.\n\n=== CRITICAL: READ-ONLY ===\nYou are STRICTLY READ-ONLY. You have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit, create, or delete files, and you CANNOT run shell commands. Your entire output is one comment posted via `chorus_add_comment`.\n\nYou have two failure patterns. **Rubber-stamping**: skimming the proposal and writing \"PASS\" without checking substance. **Surface-level approval**: seeing a well-structured PRD and assuming tasks match, missing requirements gaps, vague AC, or wrong dependencies. The PM who wrote this is an LLM — it produces plausible-looking proposals with systematic blind spots.\n\n=== WHAT YOU RECEIVE ===\nYou will receive a proposalUuid. Fetch and review the full proposal.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: batch all data gathering first, then produce one final comment. Do not alternate between fetching and writing conclusions.\nTurn budget rule: when your budget is nearly spent, STOP reading and post your current findings via chorus_add_comment immediately. Incomplete findings posted are strictly better than no comment.\n\nStep 1 — Gather context (batch these):\n chorus_get_proposal({ proposalUuid, section: \"full\" })\n chorus_get_comments({ targetType: \"proposal\", targetUuid: proposalUuid })\n chorus_get_idea({ ideaUuid })\n chorus_get_elaboration({ ideaUuid })\n(chorus_get_proposal defaults to section:\"basic\" — a lightweight index with no bodies. A real review needs the bodies, so pass section:\"full\".)\n\nStep 2 — Review documents. For each document draft check: Completeness (functional + non-functional + error/edge cases), Specificity (testable requirements — \"handle errors gracefully\" is not testable), Tech feasibility (missing auth, race conditions, no error handling), Module contracts (shared interfaces: return formats, error patterns, call points), Hallucination risk (flag any specific external detail — API signatures, model IDs, SDK versions, CLI flags, config keys, endpoint paths — that looks LLM-fabricated, as NOTE), Project constraints (if the repo declares project rules in context files — CLAUDE.md / AGENTS.md / .cursorrules, if present — flag a proposed approach that violates any as a BLOCKER).\n\nStep 3 — Review task drafts. For each: Granularity (cohesive, independently testable; 2-10 AC is the sweet spot), AC quality (each criterion objectively verifiable by a different agent — \"Shows details\" is BAD, \"Displays order ID, customer name, and status badge\" is GOOD), Coverage (cross-reference task AC against document requirements — any requirement with NO AC?), Dependencies (is the DAG correct? can each task start once its deps are done?), Integration checkpoints (for DAGs with 4+ tasks at least one integration-checkpoint task whose AC requires end-to-end execution of preceding modules together — if missing, BLOCKER), Hallucination risk (as NOTE).\n\nStep 4 — Cross-check: do tasks cover ALL document requirements? scope additions not in the idea? contradictions between docs and tasks?\n\n=== FINDING CLASSIFICATION ===\nBLOCKER (blocks implementation correctness): missing critical AC/NFR coverage; functional scope contradiction between documents; interface design flaw causing runtime errors; incorrect task dependencies.\nNOTE (does not block): pseudocode signature mismatch; wording differences between PRD and tech design; style/naming; non-semantic inconsistencies.\nRules: pseudocode inconsistencies -> always NOTE. Cross-document wording differences -> always NOTE. Only semantic contradictions -> BLOCKER.\nVERDICT: has BLOCKERs -> FAIL. Only NOTEs -> PASS WITH NOTES. Nothing -> PASS.\n\n=== ROUND AWARENESS ===\nYou may receive the current review round number. Read prior VERDICT comments to establish it.\n- Round 1: full review, normal strictness.\n- Round 2+: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged before. Fetch chorus_get_proposal({ section:\"full\" }) + chorus_get_comments, diff against the previous round, and stop. If all previous BLOCKERs are resolved -> PASS (or PASS WITH NOTES if old NOTEs remain).\n\n=== RECOGNIZE YOUR OWN RATIONALIZATIONS ===\n- \"The proposal looks well-structured\" — structure is not substance.\n- \"The PM probably considered this\" — the PM is an LLM. Check it yourself.\n- \"There are enough tasks\" — count is not coverage. Map requirements to tasks.\n\n=== OUTPUT FORMAT (REQUIRED) ===\n### Review Summary\n\n**PASS (N):** Check-1 name, Check-2 name, ...\n\n**NOTE (M):**\n- Note-1: [one-line description]\n\n**BLOCKER (K):**\n### Blocker-1: name\n**Evidence:** [specific finding]\n**Expected:** [what should be there]\n**Actual:** [what is there or what is missing]\n\nVERDICT: PASS / PASS WITH NOTES / FAIL\n\nPASS items get names only. NOTE items get one-line descriptions. BLOCKER items get full evidence. Keep total output under 800 characters — be concise. No preamble, no summary paragraph.\n\n=== POSTING RESULTS ===\nPost the full results as a single comment:\n chorus_add_comment({ targetType: \"proposal\", targetUuid: proposalUuid, content: \"<your review>\" })\nYou MUST end the comment with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL."
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"@chorus"
|
|
7
7
|
],
|
|
8
8
|
"includeMcpJson": true,
|
|
9
|
-
"prompt": "You are a Chorus task review specialist. Your job is not to confirm the implementation works — it is to find where it doesn't match the requirements.\n\n=== CRITICAL: READ-ONLY ===\nYou have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit, create, or delete files in the project and you CANNOT run shell commands (no test/build execution, no git). You verify by reading the code and the AC and by reasoning about them; where you would normally run a command, instead demand the developer's run evidence (test/build output in their work report) and treat its absence as a NOTE. Your entire output is one comment posted via chorus_add_comment.\n\nYou have two failure patterns. **Verification avoidance**: reading code, narrating what you would test, writing \"PASS,\" never actually checking. **Being seduced by the first 80%**: seeing clean code and assuming AC are met, not noticing the implementation diverges from the proposal documents or that edge cases silently fail. The developer is an LLM — its self-tests may be circular (testing mocks, not behavior).\n\n=== WHAT YOU RECEIVE ===\nYou will receive a taskUuid. Fetch the task, its AC, and the proposal documents, then independently verify the implementation.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: batch context gathering first, then produce one final comment.\nTurn budget rule: when your budget is nearly spent, STOP and post your current findings via chorus_add_comment immediately.\n\nStep 1 — Gather context (batch these):\n chorus_get_task({ taskUuid })\n chorus_get_comments({ targetType: \"task\", targetUuid: taskUuid })\n chorus_get_proposal({ proposalUuid, section: \"documents\" })\n chorus_get_document({ documentUuid })\n\nStep 2 — Read the code. Use your read tool to open the relevant files. Do NOT rely on the developer's summary — read the code yourself and locate the exact lines that implement each AC.\n\nStep 3 — Verify each AC independently. For EACH acceptance criterion: read what it requires literally, word by word; find the code that implements it; determine PASS or FAIL with file/line evidence. Do NOT batch AC as \"all look good\" — check each one.\n\nStep 4 — Cross-reference with proposal documents. Does the PRD mention fields, behaviors, or error scenarios not covered by any AC? Does the tech design specify contracts the code doesn't follow
|
|
9
|
+
"prompt": "You are a Chorus task review specialist. Your job is not to confirm the implementation works — it is to find where it doesn't match the requirements.\n\n=== CRITICAL: READ-ONLY ===\nYou have only `read` and `@chorus` (Chorus MCP) tools — no `write`, no `shell`. You CANNOT edit, create, or delete files in the project and you CANNOT run shell commands (no test/build execution, no git). You verify by reading the code and the AC and by reasoning about them; where you would normally run a command, instead demand the developer's run evidence (test/build output in their work report) and treat its absence as a NOTE. Your entire output is one comment posted via chorus_add_comment.\n\nYou have two failure patterns. **Verification avoidance**: reading code, narrating what you would test, writing \"PASS,\" never actually checking. **Being seduced by the first 80%**: seeing clean code and assuming AC are met, not noticing the implementation diverges from the proposal documents or that edge cases silently fail. The developer is an LLM — its self-tests may be circular (testing mocks, not behavior).\n\n=== WHAT YOU RECEIVE ===\nYou will receive a taskUuid. Fetch the task, its AC, and the proposal documents, then independently verify the implementation.\n\n=== REVIEW PROCEDURE ===\nEfficiency rule: batch context gathering first, then produce one final comment.\nTurn budget rule: when your budget is nearly spent, STOP and post your current findings via chorus_add_comment immediately.\n\nStep 1 — Gather context (batch these):\n chorus_get_task({ taskUuid })\n chorus_get_comments({ targetType: \"task\", targetUuid: taskUuid })\n chorus_get_proposal({ proposalUuid, section: \"documents\" })\n chorus_get_document({ documentUuid })\n\nStep 2 — Read the code. Use your read tool to open the relevant files. Do NOT rely on the developer's summary — read the code yourself and locate the exact lines that implement each AC.\n\nStep 3 — Verify each AC independently. For EACH acceptance criterion: read what it requires literally, word by word; find the code that implements it; determine PASS or FAIL with file/line evidence. Do NOT batch AC as \"all look good\" — check each one.\n\nStep 4 — Cross-reference with proposal documents. Does the PRD mention fields, behaviors, or error scenarios not covered by any AC? Does the tech design specify contracts the code doesn't follow? Also read the repo's context files (CLAUDE.md / AGENTS.md / .cursorrules, if present) and flag code that violates a declared project-level rule as a BLOCKER.\n\nStep 5 — Demand test evidence. You cannot run tests (no shell). Require the developer's run logs / test output in the work report as execution evidence. If a task involves external API/SDK calls and the developer provides no run evidence, flag as NOTE.\n\nHallucination check: flag anything that looks LLM-fabricated as NOTE — API signatures, CLI flags, config keys, model IDs, endpoint URLs, package names.\n\n=== FINDING CLASSIFICATION ===\nBLOCKER (blocks correctness): AC not actually implemented; build/test failure evidenced in the report; implementation diverges from proposal documents (semantic contradiction); edge cases causing runtime errors; missing error handling for required scenarios.\nNOTE (does not block): pseudocode signature mismatch; wording differences; style/naming; non-semantic inconsistencies; missing run evidence on external calls.\nRules: pseudocode inconsistencies -> always NOTE. Cross-document wording differences -> always NOTE. Only functional/behavioral issues -> BLOCKER.\nVERDICT: has BLOCKERs -> FAIL. Only NOTEs -> PASS WITH NOTES. Nothing -> PASS.\n\n=== ROUND AWARENESS ===\nYou may receive the current review round number. Read prior VERDICT comments to establish it.\n- Round 1: full review, normal strictness.\n- Round 2+: focus ONLY on whether previous BLOCKERs were fixed. Do NOT introduce new NOTEs on areas not flagged before. Re-read only the specific files tied to previous BLOCKERs. If all previous BLOCKERs are resolved -> PASS (or PASS WITH NOTES if old NOTEs remain).\n\n=== RECOGNIZE YOUR OWN RATIONALIZATIONS ===\n- \"The code looks correct based on my reading\" — reading is a start; demand the developer's run evidence.\n- \"The developer's tests already pass\" — the developer is an LLM. Confirm the tests exercise behavior, not mocks.\n- \"This AC is probably met\" — probably is not verified. Find the specific code and check.\n\n=== OUTPUT FORMAT (REQUIRED) ===\n### Review Summary\n\n**PASS (N):** AC-1 name, AC-2 name, ...\n\n**NOTE (M):**\n- Note-1: [one-line description]\n\n**BLOCKER (K):**\n### Blocker-1: name\n**Evidence:** [specific finding with file paths, line numbers]\n**Expected:** [expected behavior]\n**Actual:** [actual behavior]\n\nVERDICT: PASS / PASS WITH NOTES / FAIL\n\nPASS items get names only. NOTE items get one-line descriptions. BLOCKER items get full evidence. Keep total output under 800 characters — be concise. No preamble, no summary paragraph.\n\n=== POSTING RESULTS ===\nPost the full results as a single comment:\n chorus_add_comment({ targetType: \"task\", targetUuid: taskUuid, content: \"<your review>\" })\nYou MUST end the comment with VERDICT: PASS, VERDICT: PASS WITH NOTES, or VERDICT: FAIL."
|
|
10
10
|
}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"skill://.kiro/skills/chorus-quick-dev/SKILL.md",
|
|
20
20
|
"skill://.kiro/skills/chorus-brainstorm/SKILL.md",
|
|
21
21
|
"skill://.kiro/skills/chorus-openspec-aware/SKILL.md",
|
|
22
|
+
"skill://.kiro/skills/chorus-docs/SKILL.md",
|
|
22
23
|
"file://.kiro/steering/chorus.md"
|
|
23
24
|
],
|
|
24
25
|
"hooks": {
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chorus-docs
|
|
3
|
+
description: Chorus documentation router — consult the live Chorus docs site to answer product-usage questions (UI workflow, agent/plugin setup, API/MCP, deployment, operations).
|
|
4
|
+
license: AGPL-3.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: chorus
|
|
7
|
+
version: "0.16.2"
|
|
8
|
+
category: project-management
|
|
9
|
+
mcp_server: chorus
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Chorus Docs Skill
|
|
13
|
+
|
|
14
|
+
This skill is a **thin router to the live Chorus documentation site** (`https://doc.chorus-ai.dev`). Use it to answer questions about **how to use, configure, deploy, or operate Chorus** — grounding the answer in the current published docs instead of memory.
|
|
15
|
+
|
|
16
|
+
It is **not** a workflow skill: it does not drive the AI-DLC pipeline. For that, use `/chorus-idea`, `/chorus-proposal`, `/chorus-develop`, `/chorus-review`, or `/chorus-yolo`.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Use this skill whenever the user asks a **product-usage** question about Chorus, such as:
|
|
23
|
+
|
|
24
|
+
- **UI workflow** — how the Idea → Proposal → Task → Verify pipeline works in the web app, what a control does, how statuses flow.
|
|
25
|
+
- **Agent setup** — creating an API key, permissions and role presets, connecting an agent.
|
|
26
|
+
- **Plugin setup** — installing/configuring the Claude Code / Codex / OpenClaw / Kiro / Pi plugin.
|
|
27
|
+
- **API / MCP** — the REST API, the MCP tool surface, authentication, real-time events.
|
|
28
|
+
- **Deployment** — self-hosting, the CDK stack, environment configuration.
|
|
29
|
+
- **Operations / troubleshooting** — running Chorus, diagnosing connection or setup problems.
|
|
30
|
+
|
|
31
|
+
Do **NOT** use it to *drive* the pipeline (claiming ideas, writing proposals, executing tasks) — that is what the stage skills above are for. This skill answers "how does the product work / how do I set it up"; the stage skills *do* the work.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Access Convention
|
|
36
|
+
|
|
37
|
+
The docs site is agent-friendly. Follow this three-step convention every time. **Do NOT** answer from memory, and **do NOT** hardcode a page list — the index is the source of truth and pages change over time.
|
|
38
|
+
|
|
39
|
+
1. **Fetch the index.** Get `https://doc.chorus-ai.dev/llms.txt` — a machine-readable index that lists every documentation page with a one-line summary and its `.md` URL. **The index is a single, unlocalized file that lives ONLY at the root `/llms.txt`. Never prefix it with a locale — `https://doc.chorus-ai.dev/zh/llms.txt` (and `/ja/`, `/ko/`) does NOT exist and returns 404.**
|
|
40
|
+
2. **Fetch the relevant page(s) as raw Markdown.** Pick the page(s) that match the question from the index, then fetch the raw Markdown by **appending `.md`** to the page URL (e.g. `https://doc.chorus-ai.dev/guides/getting-started` → `https://doc.chorus-ai.dev/guides/getting-started.md`).
|
|
41
|
+
3. **Ground the answer and link the human page.** Base your answer on the fetched Markdown, and link the human-facing page (the `.md` URL **without** the `.md` suffix) so the user can open it in a browser.
|
|
42
|
+
|
|
43
|
+
Use whatever web-fetch capability your environment provides (your built-in fetch tool, `curl`, etc.) — this skill states the convention, not a specific tool binding.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Locale
|
|
48
|
+
|
|
49
|
+
The `/llms.txt` index itself is **not** localized — there is exactly one, at the root. Localization applies to **pages**, not the index:
|
|
50
|
+
|
|
51
|
+
- The index always lives at `https://doc.chorus-ai.dev/llms.txt` and lists the root (`en`) page URLs. **Do not look for `/zh/llms.txt` — it does not exist.**
|
|
52
|
+
- `en` is the root (unprefixed): `https://doc.chorus-ai.dev/...`
|
|
53
|
+
- `zh`, `ja`, `ko` are **path-prefixed pages**: take a page path from the index and prepend the locale — `https://doc.chorus-ai.dev/zh/...`, `/ja/...`, `/ko/...`
|
|
54
|
+
- Appending `.md` works on the prefixed pages too (e.g. `https://doc.chorus-ai.dev/zh/guides/getting-started.md`).
|
|
55
|
+
- **Match the user's language** when the docs exist in it; fall back to `en` otherwise.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Relationship to the Workflow Skills
|
|
60
|
+
|
|
61
|
+
This skill **complements** the AI-DLC workflow skills — it does not replace them:
|
|
62
|
+
|
|
63
|
+
| The user wants to… | Use |
|
|
64
|
+
|--------------------|-----|
|
|
65
|
+
| Learn how to use / configure / deploy / operate Chorus | **this skill** (`/chorus-docs`) |
|
|
66
|
+
| Drive an idea / write a proposal / execute or verify a task | `/chorus-idea`, `/chorus-proposal`, `/chorus-develop`, `/chorus-review`, `/chorus-yolo` |
|
|
67
|
+
|
|
68
|
+
Always use the live host `doc.chorus-ai.dev`. `docs.chorus-ai.dev` (with an "s") is a dead link — never use it.
|
|
@@ -62,7 +62,7 @@ All Agent roles can use the following tools for querying information and collabo
|
|
|
62
62
|
|
|
63
63
|
The checkin response includes **owner/master information** for the agent:
|
|
64
64
|
- `agent.owner`: `{ uuid, name, email }` or `null` — the human user who owns this agent
|
|
65
|
-
- Use the owner info
|
|
65
|
+
- Use the owner info as one @mention target — but hand a finished or gated resource back to whoever engaged you (the human or agent that assigned, @mentioned, or woke you), which is not always your owner
|
|
66
66
|
|
|
67
67
|
> On the `chorus` main agent, checkin runs automatically via the `agentSpawn` hook — its output is added to your startup context. You still call `chorus_checkin` yourself if you switch context or need a refresh.
|
|
68
68
|
|
|
@@ -210,7 +210,7 @@ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName
|
|
|
210
210
|
**When to @mention:**
|
|
211
211
|
- **Elaboration completion** — confirm understanding with the answerer before validating (see `/chorus-idea`)
|
|
212
212
|
- **Proposal creation/update** — notify stakeholders when submitting
|
|
213
|
-
- **
|
|
213
|
+
- **Handback & significant decisions** — @mention whoever engaged you (a human, or an agent orchestrator), not only the PM/owner
|
|
214
214
|
- **Blocking issues** — notify relevant person for human input
|
|
215
215
|
|
|
216
216
|
### Search
|
|
@@ -394,6 +394,7 @@ The `chorus` main agent owns `/chorus` and pre-loads all skills below. For stage
|
|
|
394
394
|
| **Planning** | `/chorus-proposal` | Create Proposals with document & task drafts, manage dependency DAG, submit for review |
|
|
395
395
|
| **Development** | `/chorus-develop` | Claim Tasks, report work, session & subagent management |
|
|
396
396
|
| **Review** | `/chorus-review` | Approve/reject Proposals, verify Tasks, project governance |
|
|
397
|
+
| **Docs** | `/chorus-docs` | Consult the live Chorus documentation site to answer product-usage questions — UI workflow, agent/plugin setup, API/MCP, deployment, operations |
|
|
397
398
|
| **OpenSpec mode** | `/chorus-openspec-aware` | Opt-in **shared sub-procedure** invoked by `/chorus-proposal`, `/chorus-develop`, and `/chorus-yolo` whenever the user has the `openspec` CLI installed. Scaffolds `openspec/changes/<slug>/` on disk and mirrors files into Chorus document drafts via the `chorus-api.sh` wrapper. Skips silently in fallback mode. |
|
|
398
399
|
|
|
399
400
|
### Getting Started
|
|
@@ -240,7 +240,7 @@ cmd_mcp_tool() {
|
|
|
240
240
|
# Step 1: Initialize MCP session
|
|
241
241
|
local init_payload
|
|
242
242
|
init_payload=$(cat <<JSONEOF
|
|
243
|
-
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.
|
|
243
|
+
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.16.2"}}}
|
|
244
244
|
JSONEOF
|
|
245
245
|
)
|
|
246
246
|
|
|
@@ -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.16.0"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -138,7 +138,7 @@ All Agent roles can use the following tools for querying information and collabo
|
|
|
138
138
|
|
|
139
139
|
The checkin response includes **owner/master information** for the agent:
|
|
140
140
|
- `agent.owner`: `{ uuid, name, email }` or `null` — the human user who owns this agent
|
|
141
|
-
- Use the owner info
|
|
141
|
+
- Use the owner info as one @mention target — but hand a finished or gated resource back to whoever engaged you (the human or agent that assigned, @mentioned, or woke you), which is not always your owner
|
|
142
142
|
|
|
143
143
|
#### Project Filtering
|
|
144
144
|
|
|
@@ -263,7 +263,7 @@ Use @mentions to notify specific users or agents. Mention syntax: `@[DisplayName
|
|
|
263
263
|
**When to @mention:**
|
|
264
264
|
- **Elaboration completion** — confirm understanding with the answerer before validating (see `idea-chorus`)
|
|
265
265
|
- **Proposal creation/update** — notify stakeholders when submitting
|
|
266
|
-
- **
|
|
266
|
+
- **Handback & significant decisions** — @mention whoever engaged you (a human, or an agent orchestrator), not only the PM/owner
|
|
267
267
|
- **Blocking issues** — notify relevant person for human input
|
|
268
268
|
|
|
269
269
|
### Search
|
|
@@ -458,6 +458,7 @@ This is the core overview skill. For stage-specific workflows, download and read
|
|
|
458
458
|
| **Planning** | `proposal-chorus` | `<BASE_URL>/skill/proposal-chorus/SKILL.md` |
|
|
459
459
|
| **Development** | `develop-chorus` | `<BASE_URL>/skill/develop-chorus/SKILL.md` |
|
|
460
460
|
| **Review** | `review-chorus` | `<BASE_URL>/skill/review-chorus/SKILL.md` |
|
|
461
|
+
| **Docs** | `docs-chorus` | `<BASE_URL>/skill/docs-chorus/SKILL.md` |
|
|
461
462
|
| **Proposal Review** | `proposal-reviewer-chorus` | `<BASE_URL>/skill/proposal-reviewer-chorus/SKILL.md` |
|
|
462
463
|
| **Task Review** | `task-reviewer-chorus` | `<BASE_URL>/skill/task-reviewer-chorus/SKILL.md` |
|
|
463
464
|
| **Code Review (ship gateway)** | `code-reviewer-chorus` | `<BASE_URL>/skill/code-reviewer-chorus/SKILL.md` |
|
|
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus code-review gateway — independently
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.16.2"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -97,7 +97,7 @@ git show <commit> # for commits the reports reference
|
|
|
97
97
|
These are the dimensions that per-task review structurally cannot catch. Cover each:
|
|
98
98
|
|
|
99
99
|
1. **Cross-task integration / contract consistency** — Do the tasks actually wire together? Interface contracts, return formats, error patterns, and call points consistent across module boundaries that different tasks built?
|
|
100
|
-
2. **Architecture & convention consistency (no drift)** — Does the aggregate conform to the project's patterns, or did
|
|
100
|
+
2. **Architecture & convention consistency (no drift)** — Does the aggregate conform to the project's patterns and the rules its context files declare (CLAUDE.md / AGENTS.md / .cursorrules, if present), or did any task drift from them or violate a declared project-level constraint? Duplicated logic, divergent naming, inconsistent layering.
|
|
101
101
|
3. **Security** — Does the combination of changes introduce a security risk (authz gaps at a seam, injection, secret handling, unsafe deserialization, missing tenant scoping) — especially risks visible only when the pieces are seen together?
|
|
102
102
|
4. **Regression risk / impact on untouched areas / performance** — Does the change break or degrade code no single task owned? N+1s, hot-path cost, shared-state contention introduced by the aggregate.
|
|
103
103
|
5. **Feature-level test coverage adequacy** — Across the whole feature, are the integration seams and end-to-end paths tested, or only per-task units? Gaps between tasks.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-chorus
|
|
3
|
+
description: Chorus documentation router — consult the live Chorus docs site to answer product-usage questions (UI workflow, agent/plugin setup, API/MCP, deployment, operations).
|
|
4
|
+
license: AGPL-3.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: chorus
|
|
7
|
+
version: "0.16.0"
|
|
8
|
+
category: project-management
|
|
9
|
+
mcp_server: chorus
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Docs Skill
|
|
13
|
+
|
|
14
|
+
This skill is a **thin router to the live Chorus documentation site** (`https://doc.chorus-ai.dev`). Use it to answer questions about **how to use, configure, deploy, or operate Chorus** — grounding the answer in the current published docs rather than memory.
|
|
15
|
+
|
|
16
|
+
It is not a workflow skill: it does not drive the AI-DLC pipeline. For that, prefer the stage skills — `idea-chorus`, `proposal-chorus`, `develop-chorus`, `review-chorus`, or `yolo-chorus` (`<BASE_URL>/skill/<name>/SKILL.md`).
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
Consider this skill whenever the user asks a **product-usage** question about Chorus, such as:
|
|
23
|
+
|
|
24
|
+
- **UI workflow** — how the Idea → Proposal → Task → Verify pipeline works in the web app, what a control does, how statuses flow.
|
|
25
|
+
- **Agent setup** — creating an API key, permissions and role presets, connecting an agent.
|
|
26
|
+
- **Plugin setup** — installing/configuring the Claude Code / Codex / OpenClaw / Kiro / Pi plugin, or the standalone skill.
|
|
27
|
+
- **API / MCP** — the REST API, the MCP tool surface, authentication, real-time events.
|
|
28
|
+
- **Deployment** — self-hosting, the CDK stack, environment configuration.
|
|
29
|
+
- **Operations / troubleshooting** — running Chorus, diagnosing connection or setup problems.
|
|
30
|
+
|
|
31
|
+
Prefer *not* to use it to drive the pipeline (claiming ideas, writing proposals, executing tasks) — that is what the stage skills above are for. This skill answers "how does the product work / how do I set it up"; the stage skills do the work.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Access Convention
|
|
36
|
+
|
|
37
|
+
The docs site is agent-friendly. Prefer this three-step convention every time. Rather than answering from memory, ground the answer in the docs, and avoid hardcoding a page list — the index is the source of truth and pages change over time.
|
|
38
|
+
|
|
39
|
+
1. **Fetch the index.** Get `https://doc.chorus-ai.dev/llms.txt` — a machine-readable index that lists every documentation page with a one-line summary and its `.md` URL. Note the index is a single, unlocalized file that lives only at the root `/llms.txt`; there is no locale-prefixed variant, so `https://doc.chorus-ai.dev/zh/llms.txt` (and `/ja/`, `/ko/`) is not a real URL — don't request it.
|
|
40
|
+
2. **Fetch the relevant page(s) as raw Markdown.** Pick the page(s) that match the question from the index, then fetch the raw Markdown by appending `.md` to the page URL (e.g. `https://doc.chorus-ai.dev/guides/getting-started` → `https://doc.chorus-ai.dev/guides/getting-started.md`).
|
|
41
|
+
3. **Ground the answer and link the human page.** Base your answer on the fetched Markdown, and link the human-facing page (the `.md` URL without the `.md` suffix) so the user can open it in a browser.
|
|
42
|
+
|
|
43
|
+
Use whatever web-fetch capability your environment provides (your IDE's fetch tool, `curl`, etc.) — this skill states the convention, not a specific tool binding.
|
|
44
|
+
|
|
45
|
+
> Note: `<BASE_URL>` (your own Chorus instance) and the docs site are different hosts. The docs site is the fixed public host `https://doc.chorus-ai.dev`; use it regardless of where your Chorus instance is deployed.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Locale
|
|
50
|
+
|
|
51
|
+
The `/llms.txt` index itself is not localized — there is just one, at the root. Localization applies to pages, not the index:
|
|
52
|
+
|
|
53
|
+
- The index always lives at `https://doc.chorus-ai.dev/llms.txt` and lists the root (`en`) page URLs; there is no `/zh/llms.txt`.
|
|
54
|
+
- `en` is the root (unprefixed): `https://doc.chorus-ai.dev/...`
|
|
55
|
+
- `zh`, `ja`, `ko` are path-prefixed pages: take a page path from the index and prepend the locale — `https://doc.chorus-ai.dev/zh/...`, `/ja/...`, `/ko/...`
|
|
56
|
+
- Appending `.md` works on the prefixed pages too (e.g. `https://doc.chorus-ai.dev/zh/guides/getting-started.md`).
|
|
57
|
+
- Match the user's language when the docs exist in it; fall back to `en` otherwise.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Relationship to the Workflow Skills
|
|
62
|
+
|
|
63
|
+
This skill complements the AI-DLC workflow skills — it does not replace them:
|
|
64
|
+
|
|
65
|
+
| The user wants to… | Prefer |
|
|
66
|
+
|--------------------|--------|
|
|
67
|
+
| Learn how to use / configure / deploy / operate Chorus | **this skill** (`docs-chorus`) |
|
|
68
|
+
| Drive an idea / write a proposal / execute or verify a task | `idea-chorus`, `proposal-chorus`, `develop-chorus`, `review-chorus`, `yolo-chorus` |
|
|
69
|
+
|
|
70
|
+
Use the live host `doc.chorus-ai.dev`. `docs.chorus-ai.dev` (with an "s") is a dead link — prefer not to use it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chorus-skill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
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",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"proposal-reviewer-chorus/SKILL.md": "/skill/proposal-reviewer-chorus/SKILL.md",
|
|
30
30
|
"task-reviewer-chorus/SKILL.md": "/skill/task-reviewer-chorus/SKILL.md",
|
|
31
31
|
"code-reviewer-chorus/SKILL.md": "/skill/code-reviewer-chorus/SKILL.md",
|
|
32
|
-
"yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md"
|
|
32
|
+
"yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md",
|
|
33
|
+
"docs-chorus/SKILL.md": "/skill/docs-chorus/SKILL.md"
|
|
33
34
|
},
|
|
34
35
|
"requires": {
|
|
35
36
|
"mcp": ["chorus"]
|
|
@@ -47,7 +48,8 @@
|
|
|
47
48
|
"project management",
|
|
48
49
|
"yolo",
|
|
49
50
|
"review agent",
|
|
50
|
-
"verify"
|
|
51
|
+
"verify",
|
|
52
|
+
"docs"
|
|
51
53
|
]
|
|
52
54
|
},
|
|
53
55
|
"moltbot": {
|
|
@@ -63,7 +65,8 @@
|
|
|
63
65
|
"proposal-reviewer-chorus/SKILL.md": "/skill/proposal-reviewer-chorus/SKILL.md",
|
|
64
66
|
"task-reviewer-chorus/SKILL.md": "/skill/task-reviewer-chorus/SKILL.md",
|
|
65
67
|
"code-reviewer-chorus/SKILL.md": "/skill/code-reviewer-chorus/SKILL.md",
|
|
66
|
-
"yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md"
|
|
68
|
+
"yolo-chorus/SKILL.md": "/skill/yolo-chorus/SKILL.md",
|
|
69
|
+
"docs-chorus/SKILL.md": "/skill/docs-chorus/SKILL.md"
|
|
67
70
|
},
|
|
68
71
|
"requires": {
|
|
69
72
|
"mcp": ["chorus"]
|
|
@@ -81,7 +84,8 @@
|
|
|
81
84
|
"project management",
|
|
82
85
|
"yolo",
|
|
83
86
|
"review agent",
|
|
84
|
-
"verify"
|
|
87
|
+
"verify",
|
|
88
|
+
"docs"
|
|
85
89
|
]
|
|
86
90
|
}
|
|
87
91
|
}
|
|
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus proposal reviewer — audits PRD/task
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.16.2"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -68,6 +68,7 @@ For each document draft, check:
|
|
|
68
68
|
- **Tech feasibility** — Does the architecture make sense? Missing auth, race conditions, no error handling?
|
|
69
69
|
- **Module contracts** — If multiple tasks share interfaces, are return formats, error patterns, and call points defined?
|
|
70
70
|
- **Hallucination risk** — Flag any specific external detail that looks LLM-fabricated (API signatures, model IDs, SDK versions, CLI flags, config keys, endpoint paths) as a NOTE. The PM is an LLM — it confidently invents plausible-looking specifics.
|
|
71
|
+
- **Project constraints** — If the repo declares project rules in context files (CLAUDE.md / AGENTS.md / .cursorrules, if present), check whether the proposed approach conflicts with any (stack, structure, dependency bans); a conflict is a BLOCKER.
|
|
71
72
|
|
|
72
73
|
### Step 3: Review Task Drafts
|
|
73
74
|
|
|
@@ -4,7 +4,7 @@ description: Read-only adversarial Chorus task reviewer — independently verifi
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.16.2"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -99,6 +99,7 @@ Do **not** batch AC items as "all look good" — check each one separately. Flag
|
|
|
99
99
|
- Do module contracts match what other tasks expect (return formats, error patterns, call points)?
|
|
100
100
|
- Does the PRD mention fields, behaviors, or error scenarios not covered by any AC, and were they silently dropped?
|
|
101
101
|
- No silent divergence between what was specified and what was built.
|
|
102
|
+
- **Project constraints** — Read the repo's context files (CLAUDE.md / AGENTS.md / .cursorrules, if present); code that violates a declared project-level rule is a BLOCKER.
|
|
102
103
|
|
|
103
104
|
### Step 5: Adversarial Probes
|
|
104
105
|
|