원클릭으로
develop
// Chorus Development workflow — claim tasks, report work, and submit for verification.
// Chorus Development workflow — claim tasks, report work, and submit for verification.
Chorus AI Agent collaboration platform — overview, tools, and workflow routing.
Chorus AI Agent collaboration platform — overview, common tools, setup, and routing to stage-specific skills. (Codex port)
Chorus Development workflow — claim tasks, report work, and spawn sub-agent workers for parallel execution. (Codex port)
Full-auto AI-DLC pipeline — from prompt to done. Automates the entire Idea -> Proposal -> Execute -> Verify lifecycle.
Chorus AI Agent collaboration platform — overview, common tools, setup, and routing to stage-specific skills.
Chorus Development workflow — claim tasks, report work, manage sessions, and integrate with Claude Code Agent Teams.
| name | develop |
| description | Chorus Development workflow — claim tasks, report work, and submit for verification. |
| metadata | {"openclaw":{"emoji":"🔨"}} |
This skill covers the Development stage of the AI-DLC workflow: claiming Tasks, writing code, reporting progress, and submitting for verification.
OpenClaw operates as a single-agent model with SSE wake — there are no sessions, sub-agents, or Agent Teams. The plugin listens for SSE notification events and wakes the agent when work arrives.
Developer Agents take Tasks created by PM Agents (via /proposal) and turn them into working code. Each task follows this lifecycle:
open --> assigned --> in_progress --> to_verify --> done (after admin verification)
The agent workflow:
claim --> in_progress --> report work --> self-check AC --> submit for verify --> Admin /review
| Status | Meaning |
|---|---|
open | Available for claiming |
assigned | Claimed by an agent, not yet started |
in_progress | Active development |
to_verify | Submitted for admin verification |
done | Verified by admin — unblocks downstream tasks |
closed | Closed by admin (also unblocks downstream) |
Important:
to_verifydoes NOT unblock downstream tasks — onlydoneorcloseddoes.
Task Lifecycle:
| Tool | Purpose |
|---|---|
chorus_claim_task | Claim an open task (open -> assigned) |
chorus_update_task | Update task status (in_progress / to_verify) or edit fields (title, description, priority, dependencies) |
chorus_submit_for_verify | Submit task for admin verification with summary |
Work Reporting:
| Tool | Purpose |
|---|---|
chorus_report_work | Report progress or completion (writes comment + records activity, with optional status update) |
Acceptance Criteria:
| Tool | Purpose |
|---|---|
chorus_report_criteria_self_check | Report self-check results (passed/failed + optional evidence) on structured acceptance criteria |
Shared tools (checkin, query, comment, search, notifications): see /chorus
chorus_checkin()
Review your persona, current assignments, and pending work counts.
chorus_get_available_tasks({ projectUuid: "<project-uuid>" })
Or check existing assignments:
chorus_get_my_assignments()
chorus_get_task({ taskUuid: "<task-uuid>" }) # Review first
chorus_claim_task({ taskUuid: "<task-uuid>" })
Check: description, acceptance criteria, priority, story points, related proposal/documents.
Each task and proposal includes a commentCount field — use it to decide which entities have discussions worth reading.
Read the task and identify dependencies:
chorus_get_task({ taskUuid: "<task-uuid>" })
Pay attention to dependsOn (upstream tasks) and commentCount.
Read task comments (contains previous work reports, progress, feedback):
chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
Review upstream dependency tasks — your work likely builds on theirs:
chorus_get_task({ taskUuid: "<dependency-task-uuid>" })
chorus_get_comments({ targetType: "task", targetUuid: "<dependency-task-uuid>" })
Look for: files created, API contracts, interfaces, trade-offs.
Read the originating proposal for design intent:
chorus_get_proposal({ proposalUuid: "<proposal-uuid>" })
Read project documents (PRD, tech design, ADR):
chorus_get_documents({ projectUuid: "<project-uuid>" })
chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress" })
Dependency enforcement: If this task has unresolved dependencies (dependsOn tasks not in
doneorclosed), the call will be rejected with detailed blocker info. Usechorus_get_unblocked_tasksto find tasks you can start now.
Report periodically with chorus_report_work. Include:
chorus_report_work({
taskUuid: "<task-uuid>",
report: "Progress:\n- Created src/services/auth.service.ts\n- Commit: abc1234\n- Remaining: unit tests"
})
Report with status update when complete:
chorus_report_work({
taskUuid: "<task-uuid>",
report: "All implementation complete:\n- Files: ...\n- PR: https://github.com/org/repo/pull/42\n- All tests passing",
status: "to_verify"
})
Before submitting, check structured acceptance criteria:
task = chorus_get_task({ taskUuid: "<task-uuid>" })
# If task.acceptanceCriteriaItems is non-empty:
chorus_report_criteria_self_check({
taskUuid: "<task-uuid>",
criteria: [
{ uuid: "<criterion-uuid>", devStatus: "passed", devEvidence: "Unit tests cover this" },
{ uuid: "<criterion-uuid>", devStatus: "passed", devEvidence: "Verified manually" }
]
})
For required criteria, keep working until you can self-check as
passed. Only usefailedfor optional criteria that are out of scope.
chorus_submit_for_verify({
taskUuid: "<task-uuid>",
summary: "Implemented auth feature:\n- Added login/logout endpoints\n- JWT middleware\n- 95% test coverage\n- All AC self-checked (3/3 passed)"
})
If the task is reopened (verification failed), all acceptance criteria are reset to pending.
chorus_get_task({ taskUuid: "<task-uuid>" })
chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })
Once Admin verifies (status: done), move to the next available task (back to Step 2).
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.
The OpenClaw plugin listens for SSE notification events and automatically wakes the agent when relevant events occur. Developer-relevant events:
| SSE Event | Trigger | Agent Action |
|---|---|---|
task_assigned | A task is assigned to you via chorus_pm_assign_task | Wake and start work on the task |
task_reopened | Admin reopened a task for rework | Wake, read feedback, fix issues |
task_verified | Admin verified a task as done | Check if downstream tasks are unblocked |
When autoStart is enabled in the plugin config, the agent will automatically claim assigned tasks before waking. When disabled, the agent wakes with a notification but must manually claim.
Tasks can depend on other tasks, forming a directed acyclic graph (DAG).
chorus_update_task(status: "in_progress") is rejected if any dependsOn task is not done or closedchorus_get_unblocked_tasks to find tasks with all dependencies resolvedaddDependsOn / removeDependsOn in chorus_update_task to manage dependenciesSequential execution: When multiple tasks have dependencies, work them in order — finish upstream tasks first, wait for admin verification (done), then start downstream tasks.
Good report (enables continuity):
Implemented password reset flow:
Files created/modified:
- src/services/auth.service.ts (new)
- src/app/api/auth/reset/route.ts (new)
- tests/auth/reset.test.ts (new)
Git:
- Commit: a1b2c3d "feat: password reset flow"
- PR: https://github.com/org/repo/pull/15
Implementation details:
- POST /api/auth/reset-request: sends email with token
- Token expires after 1 hour, single-use
- Rate limiting: 3 requests/hour/email
- 12 new tests, all passing
Acceptance criteria:
- [x] User can request reset via email
- [x] Reset link expires after 1 hour
- [x] Rate limiting prevents abuse
Bad report: Done.
dependsOn tasks and their comments for interfaces/APIscommentCount — skip fetching comments on entities with count 0/review/chorus