/develop
Chorus Development workflow — claim tasks, report work, manage sessions, and integrate with Pi subagents.
$ npx -y skills add Chorus-AIDLC/Chorus --skill develop --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/develop
Context preview
The summary Claude sees to decide when to auto-load this skill.
Chorus Development workflow — claim tasks, report work, manage sessions, and integrate with Pi subagents.
SKILL.md
develop.SKILL.mdname: develop
description: Chorus Development workflow — claim tasks, report work, manage sessions, and integrate with Pi subagents.
license: AGPL-3.0
metadata:
author: chorus
version: "0.16.0"
category: project-management
mcp_server: chorus
Develop Skill
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.
---
Overview
Developer Agents take Tasks created by PM Agents (via `/proposal`) and turn them into working code. Each task follows:
claim --> in_progress --> report work --> self-check AC --> submit for verify --> Admin /review
For multi-agent parallel execution, Chorus integrates with Pi subagents (parallel workers) with full session-based observability.
---
Tools
**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_session_checkin_task` | Checkin to a task before starting work | | `chorus_session_checkout_task` | Checkout from a task when work is done |
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`
---
Workflow
Step 1: Check In
chorus_checkin()
Review your persona, current assignments, and pending work counts.
Step 1.5: Get Your Session (Sub-Agents Only)
**Skip if you are the main agent or Team Lead.**
If you are a **sub-agent** (spawned via `subagent_spawn`), the Chorus extension automatically creates your session and injects it into your task prompt — look for a `--- Chorus session (auto-injected) ---` section containing your `Session UUID`. Keep it for all task operations.
Step 2: Find Work
chorus_get_available_tasks({ projectUuid: "<project-uuid>" })Or check existing assignments:
chorus_get_my_assignments()
Step 3: Claim a Task
chorus_get_task({ taskUuid: "<task-uuid>" }) # Review first
chorus_claim_task({ taskUuid: "<task-uuid>" })Check: description, acceptance criteria, priority, story points, related proposal/documents.
Step 4: Gather Context
Each task and proposal includes a `commentCount` field — use it to decide which entities have discussions worth reading.
1. **Read the task** and identify dependencies:
chorus_get_task({ taskUuid: "<task-uuid>" })Pay attention to `dependsOn` (upstream tasks) and `commentCount`.
2. **Read task comments** (contains previous work reports, progress, feedback):
chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })3. **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.
4. **Read the originating proposal** for design intent:
chorus_get_proposal({ proposalUuid: "<proposal-uuid>", section: "documents" })(`chorus_get_proposal` defaults to `section: "basic"` — just metadata + a draft index. Pass `section: "documents"` for the design docs, or `section: "full"` for docs + task drafts.)
5. **Read project documents** (PRD, tech design, ADR):
chorus_get_documents({ projectUuid: "<project-uuid>" })> **Document update flow (OpenSpec mode):** if the originating proposal `description` contains a line `OpenSpec change slug: <slug>`, the project's PRD / tech_design / spec Documents are **mirrors** of files under `openspec/changes/<slug>/`. To update such a Document (e.g. clarify an AC, fix a spec scenario before resubmitting), load the `openspec-aware` skill at `skills/openspec-aware/SKILL.md` and follow §3.8: edit the local `.md` file first, then mirror through the `chorus-mcp-call.sh` wrapper with `json_encode_file` and `chorus_check_response`. > > **⛔ Do not** call `chorus_pm_update_document` directly from the MCP harness with a hand-typed `content` field in OpenSpec mode. The local file is the source of truth; agent-typed content drifts and burns tokens (`openspec-aware` §2 Rule 1). > > When the LAST task of an OpenSpec idea is verified, the extension injects an archive reminder (`openspec-aware` §3.9) — run `openspec archive <slug> --yes`, then mirror each emitted `openspec/specs/<capability>/spec.md` back via §3.8. > > In the no-OpenSpec fallback (no slug line, or no `openspec` CLI), edit the Document content directly via the existing MCP tool with no wrapper, no local file step.
Step 5: Start Working
**Sub-agent**: checkin to the task first:
chorus_session_checkin_task({ sessionUuid: "<session-uuid>", taskUuid: "<task-uuid>" })Then mark as in-progress:
# Sub-agent:
chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress", sessionUuid: "<session-uuid>" })
# Main agent:
chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress" })> **Dependency enforcement**: If this task has unresolved dependencies (dependsOn tasks not i
Read more
name: develop description: Chorus Development workflow — claim tasks, report work, manage sessions, and integrate with Pi subagents. license: AGPL-3.0 metadata: author: chorus version: "0.16.0" category: project-management mcp_server: chorus
Develop Skill
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.
---
Overview
Developer Agents take Tasks created by PM Agents (via `/proposal`) and turn them into working code. Each task follows:
claim --> in_progress --> report work --> self-check AC --> submit for verify --> Admin /review
For multi-agent parallel execution, Chorus integrates with Pi subagents (parallel workers) with full session-based observability.
---
Tools
**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_session_checkin_task` | Checkin to a task before starting work | | `chorus_session_checkout_task` | Checkout from a task when work is done |
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`
---
Workflow
Step 1: Check In
chorus_checkin()
Review your persona, current assignments, and pending work counts.
Step 1.5: Get Your Session (Sub-Agents Only)
**Skip if you are the main agent or Team Lead.**
If you are a **sub-agent** (spawned via `subagent_spawn`), the Chorus extension automatically creates your session and injects it into your task prompt — look for a `--- Chorus session (auto-injected) ---` section containing your `Session UUID`. Keep it for all task operations.
Step 2: Find Work
chorus_get_available_tasks({ projectUuid: "<project-uuid>" })Or check existing assignments:
chorus_get_my_assignments()
Step 3: Claim a Task
chorus_get_task({ taskUuid: "<task-uuid>" }) # Review first
chorus_claim_task({ taskUuid: "<task-uuid>" })Check: description, acceptance criteria, priority, story points, related proposal/documents.
Step 4: Gather Context
Each task and proposal includes a `commentCount` field — use it to decide which entities have discussions worth reading.
1. **Read the task** and identify dependencies:
chorus_get_task({ taskUuid: "<task-uuid>" })Pay attention to `dependsOn` (upstream tasks) and `commentCount`.
2. **Read task comments** (contains previous work reports, progress, feedback):
chorus_get_comments({ targetType: "task", targetUuid: "<task-uuid>" })3. **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.
4. **Read the originating proposal** for design intent:
chorus_get_proposal({ proposalUuid: "<proposal-uuid>", section: "documents" })(`chorus_get_proposal` defaults to `section: "basic"` — just metadata + a draft index. Pass `section: "documents"` for the design docs, or `section: "full"` for docs + task drafts.)
5. **Read project documents** (PRD, tech design, ADR):
chorus_get_documents({ projectUuid: "<project-uuid>" })> **Document update flow (OpenSpec mode):** if the originating proposal `description` contains a line `OpenSpec change slug: <slug>`, the project's PRD / tech_design / spec Documents are **mirrors** of files under `openspec/changes/<slug>/`. To update such a Document (e.g. clarify an AC, fix a spec scenario before resubmitting), load the `openspec-aware` skill at `skills/openspec-aware/SKILL.md` and follow §3.8: edit the local `.md` file first, then mirror through the `chorus-mcp-call.sh` wrapper with `json_encode_file` and `chorus_check_response`. > > **⛔ Do not** call `chorus_pm_update_document` directly from the MCP harness with a hand-typed `content` field in OpenSpec mode. The local file is the source of truth; agent-typed content drifts and burns tokens (`openspec-aware` §2 Rule 1). > > When the LAST task of an OpenSpec idea is verified, the extension injects an archive reminder (`openspec-aware` §3.9) — run `openspec archive <slug> --yes`, then mirror each emitted `openspec/specs/<capability>/spec.md` back via §3.8. > > In the no-OpenSpec fallback (no slug line, or no `openspec` CLI), edit the Document content directly via the existing MCP tool with no wrapper, no local file step.
Step 5: Start Working
**Sub-agent**: checkin to the task first:
chorus_session_checkin_task({ sessionUuid: "<session-uuid>", taskUuid: "<task-uuid>" })Then mark as in-progress:
# Sub-agent:
chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress", sessionUuid: "<session-uuid>" })
# Main agent:
chorus_update_task({ taskUuid: "<task-uuid>", status: "in_progress" })> **Dependency enforcement**: If this task has unresolved dependencies (dependsOn tasks not i
The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)
Repo: Chorus-AIDLC/Chorus
Other skills on chorus.
- /blog
Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.
Open skill - /e2e-verification
Use when manually verifying a Chorus frontend change in a real browser — finding local login credentials, driving the running dev server with the Playwright MCP, logging in, navigating to a page, and capturing snapshots/screenshots for e2e acceptance.
Open skill - /openspec-apply-change
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
Open skill - /openspec-archive-change
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.
Open skill - /openspec-explore
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.
Open skill - /openspec-propose
Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.
Open skill

