blog
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Chorus Development workflow — claim tasks, report work, manage sessions, and run wave-based execution on dsh.
Claude Code
$ npx -y skills add Chorus-AIDLC/Chorus --skill develop-chorus --agent claude-code
Codex
$ npx skills add Chorus-AIDLC/Chorus --skill develop-chorus -a codex -y
Cursor
$ npx skills add Chorus-AIDLC/Chorus --skill develop-chorus -a cursor -y
Gemini CLI
$ npx skills add Chorus-AIDLC/Chorus --skill develop-chorus -a gemini-cli -y
GitHub Copilot
$ npx skills add Chorus-AIDLC/Chorus --skill develop-chorus -a github-copilot -y
OpenCode
$ npx skills add Chorus-AIDLC/Chorus --skill develop-chorus -a opencode -y
Windsurf
$ npx skills add Chorus-AIDLC/Chorus --skill develop-chorus -a windsurf -y
name: develop-chorus description: Chorus Development workflow — claim tasks, report work, manage sessions, and run wave-based execution on dsh. license: AGPL-3.0 metadata: author: chorus version: "0.24.0" category: project-management mcp_server: chorus
This skill covers the **Development** stage of the AI-DLC workflow: claiming Tasks, writing code, reporting progress, submitting for verification, and managing sessions for sub-agent observability.
> **Tool namespace:** Chorus tools are exposed by the connected MCP server under a `mcp__chorus__` prefix on dsh (e.g. `mcp__chorus__chorus_claim_task`). Bare names are used below for readability — prepend `mcp__chorus__` when invoking. See `chorus` for the full rule.
---
These rules apply only to wakes handled by an updated Chorus CLI daemon that honors the server-delivered SSE `sessionId`. They do not upgrade OpenClaw, Hermes, or dsh-native session routing; those native runtimes retain their existing behavior. Older daemons may fall back to legacy entity/Idea routing, so do not assume task/review isolation there.
These are backend conversation and wake-queue anchors, not the Chorus Agent Session `sessionUuid` used by session check-in tools. Session separation does not isolate files or change the host's existing session check-in lifecycle.
Developer Agents take Tasks created by PM Agents (via `proposal-chorus`) and turn them into working code. Each task follows:
claim --> in_progress --> report work --> self-check AC --> submit for verify --> reviewer --> Admin /review
For multi-task execution, dispatch **one `subagent` per unblocked task** (whole wave in one message), falling back to **sequential waves** (the main agent works tasks in dependency order) when `subagent` is unavailable or workers fail repeatedly — see [Wave-Based Execution](#wave-based-execution-on-dsh) below.
---
**Task Lifecycle:**
| Tool | Purpose | |------|---------| | `chorus_claim_task` | Claim an open task (open -> assigned) | | `chorus_release_task` | Release a claimed task (assigned -> open) | | `chorus_update_task` | Update task status (in_progress / to_verify) | | `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 |
**Session (sub-agents only — main agent skips these):**
| Tool | Purpose | |------|---------| | `chorus_create_session` | Create a session for a sub-agent (manual on dsh — see below) | | `chorus_session_checkin_task` | Checkin to a task before starting work | | `chorus_session_checkout_task` | Checkout from a task when work is done | | `chorus_close_session` | Close the session when the sub-agent finishes |
Sub-agents: always pass `sessionUuid` to `chorus_update_task` and `chorus_report_work` for attribution. Main agent / Team Lead: call these tools without `sessionUuid` — no session needed.
**Shared tools** (checkin, query, comment, search, notifications): see `chorus`
---
chorus_checkin()
Review your persona, current assignments, and pending work counts.
**Skip if you are the main agent.**
> **dsh difference:** the Claude Code plugin auto-creates and auto-injects a sub-agent's session via a SubagentStart hook. **dsh does not run that hook.** Session handling is **manual**: if you are a sub-agent and the host did not hand you a `sessionUuid`, create one yourself once at the start, keep it for all task operations, and close it when you finish.
# Create your own session (only if no sessionUuid was provided to you)
chorus_create_session({ name: "<descriptive-worker-name>" })
# -> keep the returned sessionUuid for every task call belowIf the dsh host *did* inject a `sessionUuid` into your prompt (some hosts forward parent context), reuse it instead of creating a new one. When in doubt, create one — duplicate idle sessions are harmless and auto-go-inactive after 1h.
chorus_get_available_tasks({ projectUuid: "<project-uuid>" })Or check existing assignments:
The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Use when manually verifying a Chorus frontend change in a real browser — finding local login credentials, driving the running dev…
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through…
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after…
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the…
Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to…
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration