refactor: replace Task tool with Agent tool and fix schema compliance

## Task -> Agent Replacement
- Replace all Task({}) calls with Agent({}) across .claude/ directory
- Update allowed-tools declarations from Task to Agent
- Update documentation references from "Task tool" to "Agent tool"

## Schema Compliance Fixes

### Agent Schema
- Add missing required `description` parameter in 6 files
- Add missing `run_in_background: false` for subagent calls
- Add missing `subagent_type` parameter

### AskUserQuestion Schema
- Fix issue-manage/SKILL.md: reduce options from 5 to 4 (max allowed)

### SendMessage Schema
- Fix team-worker.md: use correct params (type, content, summary)
- Remove invalid `team_name` parameter

### TaskCreate/TaskUpdate Schema
- Remove invalid `blockedBy`, `owner`, `status` from TaskCreate calls
- Use separate TaskUpdate calls for dependencies and ownership
- Fix TaskUpdate syntax to use object parameter

### TeamDelete Schema
- Remove parameters from TeamDelete() calls (should be no params)

### TaskOutput Schema
- Fix Python-style syntax to JavaScript object syntax

## Files Changed
- 146 files updated across commands/, skills/, skills_lib/, agents/
This commit is contained in:
catlog22
2026-03-04 22:40:39 +08:00
parent 64e772f9b8
commit 16bbfcd12a
146 changed files with 505 additions and 516 deletions

View File

@@ -16,7 +16,7 @@ Available CLI endpoints are dynamically defined by the config file
- **File Modification**: @~/.ccw/workflows/file-modification.md - **File Modification**: @~/.ccw/workflows/file-modification.md
### Agent Calls ### Agent Calls
- **Always use `run_in_background: false`** for Task tool agent calls: `Task({ subagent_type: "xxx", prompt: "...", run_in_background: false })` to ensure synchronous execution and immediate result visibility - **Always use `run_in_background: false`** for Agent tool calls: `Agent({ subagent_type: "xxx", prompt: "...", run_in_background: false })` to ensure synchronous execution and immediate result visibility
- **TaskOutput usage**: Only use `TaskOutput({ task_id: "xxx", block: false })` + sleep loop to poll completion status. NEVER read intermediate output during agent/CLI execution - wait for final result only - **TaskOutput usage**: Only use `TaskOutput({ task_id: "xxx", block: false })` + sleep loop to poll completion status. NEVER read intermediate output during agent/CLI execution - wait for final result only
### CLI Tool Calls (ccw cli) ### CLI Tool Calls (ccw cli)
@@ -27,7 +27,7 @@ Available CLI endpoints are dynamically defined by the config file
run_in_background: true // Bash tool parameter, not ccw cli parameter run_in_background: true // Bash tool parameter, not ccw cli parameter
}) })
``` ```
- **CRITICAL — Agent-specific instructions ALWAYS override this default.** If an agent's definition file (`.claude/agents/*.md`) specifies `run_in_background: false`, that instruction takes highest priority. Subagents (Task tool agents) CANNOT receive hook callbacks, so they MUST use `run_in_background: false` for CLI calls that produce required results. - **CRITICAL — Agent-specific instructions ALWAYS override this default.** If an agent's definition file (`.claude/agents/*.md`) specifies `run_in_background: false`, that instruction takes highest priority. Subagents (Agent tool agents) CANNOT receive hook callbacks, so they MUST use `run_in_background: false` for CLI calls that produce required results.
- **After CLI call (main conversation only)**: Stop output immediately - let CLI execute in background. **DO NOT use TaskOutput polling** - wait for hook callback to receive results - **After CLI call (main conversation only)**: Stop output immediately - let CLI execute in background. **DO NOT use TaskOutput polling** - wait for hook callback to receive results
### CLI Analysis Calls ### CLI Analysis Calls

View File

@@ -105,7 +105,7 @@ Execute on every loop iteration:
- If inner loop continuation → proceed to Phase 5-F (all done) - If inner loop continuation → proceed to Phase 5-F (all done)
4. **Has matching tasks** → pick first by ID order 4. **Has matching tasks** → pick first by ID order
5. `TaskGet(taskId)` → read full task details 5. `TaskGet(taskId)` → read full task details
6. `TaskUpdate(taskId, status="in_progress")` → claim the task 6. `TaskUpdate({ taskId: taskId, status: "in_progress" })` → claim the task
### Resume Artifact Check ### Resume Artifact Check
@@ -130,7 +130,7 @@ When role_spec instructs to call a subagent, use these templates:
**Discuss subagent** (for inline discuss rounds): **Discuss subagent** (for inline discuss rounds):
``` ```
Task({ Agent({
subagent_type: "cli-discuss-agent", subagent_type: "cli-discuss-agent",
run_in_background: false, run_in_background: false,
description: "Discuss <round-id>", description: "Discuss <round-id>",
@@ -169,7 +169,7 @@ JSON with: verdict (consensus_reached|consensus_blocked), severity (HIGH|MEDIUM|
**Explore subagent** (for codebase exploration): **Explore subagent** (for codebase exploration):
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore <angle>", description: "Explore <angle>",
@@ -196,7 +196,7 @@ Return summary: file count, pattern count, top 5 files, output path`
**Doc-generation subagent** (for writer document generation): **Doc-generation subagent** (for writer document generation):
``` ```
Task({ Agent({
subagent_type: "universal-executor", subagent_type: "universal-executor",
run_in_background: false, run_in_background: false,
description: "Generate <doc-type>", description: "Generate <doc-type>",
@@ -294,8 +294,13 @@ After Phase 4 completes, determine Phase 5 variant (see Execution Flow for decis
1. **TaskUpdate**: Mark current task `completed` 1. **TaskUpdate**: Mark current task `completed`
2. **Message Bus**: Log state_update (same call as Phase 5-L step 2) 2. **Message Bus**: Log state_update (same call as Phase 5-L step 2)
3. **Compile final report** and **SendMessage** to coordinator: 3. **Compile final report** and **SendMessage** to coordinator:
``` ```javascript
SendMessage(team_name=<team_name>, recipient="coordinator", message="[<role>] <final-report>") SendMessage({
type: "message",
recipient: "coordinator",
content: "[<role>] <final-report>",
summary: "[<role>] Final report delivered"
})
``` ```
Report contents: tasks completed (count + list), artifacts produced (paths), files modified (with evidence), discuss results (verdicts + ratings), key decisions (from context_accumulator), verification summary, warnings/issues. Report contents: tasks completed (count + list), artifacts produced (paths), files modified (with evidence), discuss results (verdicts + ratings), key decisions (from context_accumulator), verification summary, warnings/issues.
4. **Fast-Advance Check**: Call `TaskList()`, find pending tasks whose blockedBy are ALL completed, apply rules: 4. **Fast-Advance Check**: Call `TaskList()`, find pending tasks whose blockedBy are ALL completed, apply rules:
@@ -303,7 +308,7 @@ After Phase 4 completes, determine Phase 5 variant (see Execution Flow for decis
| Condition | Action | | Condition | Action |
|-----------|--------| |-----------|--------|
| Same-prefix successor (inner loop role) | Do NOT spawn — main agent handles via inner loop | | Same-prefix successor (inner loop role) | Do NOT spawn — main agent handles via inner loop |
| 1 ready task, simple linear successor, different prefix | Spawn directly via `Task(run_in_background: true)` + log `fast_advance` | | 1 ready task, simple linear successor, different prefix | Spawn directly via `Agent(run_in_background: true)` + log `fast_advance` |
| Multiple ready tasks (parallel window) | SendMessage to coordinator (needs orchestration) | | Multiple ready tasks (parallel window) | SendMessage to coordinator (needs orchestration) |
| No ready tasks + others running | SendMessage to coordinator (status update) | | No ready tasks + others running | SendMessage to coordinator (status update) |
| No ready tasks + nothing running | SendMessage to coordinator (pipeline may be complete) | | No ready tasks + nothing running | SendMessage to coordinator (pipeline may be complete) |
@@ -314,7 +319,7 @@ After Phase 4 completes, determine Phase 5 variant (see Execution Flow for decis
When fast-advancing to a different-prefix successor: When fast-advancing to a different-prefix successor:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <successor-role> worker", description: "Spawn <successor-role> worker",
team_name: <team_name>, team_name: <team_name>,

View File

@@ -2,7 +2,7 @@
name: ccw-coordinator name: ccw-coordinator
description: Command orchestration tool - analyze requirements, recommend chain, execute sequentially with state persistence description: Command orchestration tool - analyze requirements, recommend chain, execute sequentially with state persistence
argument-hint: "[task description]" argument-hint: "[task description]"
allowed-tools: Task(*), AskUserQuestion(*), Read(*), Write(*), Bash(*), Glob(*), Grep(*) allowed-tools: Agent(*), AskUserQuestion(*), Read(*), Write(*), Bash(*), Glob(*), Grep(*)
--- ---
# CCW Coordinator Command # CCW Coordinator Command

View File

@@ -2,7 +2,7 @@
name: run-coordinate name: run-coordinate
description: IDAW coordinator - execute task skill chains via external CLI with hook callbacks and git checkpoints description: IDAW coordinator - execute task skill chains via external CLI with hook callbacks and git checkpoints
argument-hint: "[-y|--yes] [--task <id>[,<id>,...]] [--dry-run] [--tool <tool>]" argument-hint: "[-y|--yes] [--task <id>[,<id>,...]] [--dry-run] [--tool <tool>]"
allowed-tools: Task(*), AskUserQuestion(*), Read(*), Write(*), Bash(*), Glob(*), Grep(*) allowed-tools: Agent(*), AskUserQuestion(*), Read(*), Write(*), Bash(*), Glob(*), Grep(*)
--- ---
# IDAW Run Coordinate Command (/idaw:run-coordinate) # IDAW Run Coordinate Command (/idaw:run-coordinate)
@@ -216,7 +216,7 @@ const chain = firstTask.skill_chain || SKILL_CHAIN_MAP[resolvedType] || SKILL_CH
firstTask.status = 'in_progress'; firstTask.status = 'in_progress';
firstTask.task_type = resolvedType; firstTask.task_type = resolvedType;
firstTask.execution.started_at = new Date().toISOString(); firstTask.execution.started_at = new Date().toISOString();
Write(`.workflow/.idaw/tasks/${firstTask.id}.json`, JSON.stringify(firstTask, null, 2)); Write(`.workflow/.idaw/tasks/${firstTask.id}.json`, JSON.stringify(firstAgent, null, 2));
// Update session // Update session
session.current_task = firstTask.id; session.current_task = firstTask.id;
@@ -239,7 +239,7 @@ CONSTRAINTS: Keep concise`;
// Assemble prompt for first skill // Assemble prompt for first skill
const skillName = chain[0]; const skillName = chain[0];
const prompt = assembleCliPrompt(skillName, firstTask, null, autoYes); const prompt = assembleCliPrompt(skillName, firstAgent, null, autoYes);
session.prompts_used.push({ session.prompts_used.push({
task_id: firstTask.id, task_id: firstTask.id,
@@ -403,7 +403,7 @@ CONSTRAINTS: Actionable diagnosis`;
nextTask.status = 'in_progress'; nextTask.status = 'in_progress';
nextTask.task_type = nextType; nextTask.task_type = nextType;
nextTask.execution.started_at = new Date().toISOString(); nextTask.execution.started_at = new Date().toISOString();
Write(`.workflow/.idaw/tasks/${nextTaskId}.json`, JSON.stringify(nextTask, null, 2)); Write(`.workflow/.idaw/tasks/${nextTaskId}.json`, JSON.stringify(nextAgent, null, 2));
session.current_task = nextTaskId; session.current_task = nextTaskId;
session.current_skill_index = 0; session.current_skill_index = 0;
@@ -417,7 +417,7 @@ CONSTRAINTS: Actionable diagnosis`;
} }
const nextSkillName = nextChain[0]; const nextSkillName = nextChain[0];
const nextPrompt = assembleCliPrompt(nextSkillName, nextTask, null, true); const nextPrompt = assembleCliPrompt(nextSkillName, nextAgent, null, true);
session.prompts_used.push({ session.prompts_used.push({
task_id: nextTaskId, task_id: nextTaskId,

View File

@@ -2,7 +2,7 @@
name: issue:discover-by-prompt name: issue:discover-by-prompt
description: Discover issues from user prompt with Gemini-planned iterative multi-agent exploration. Uses ACE semantic search for context gathering and supports cross-module comparison (e.g., frontend vs backend API contracts). description: Discover issues from user prompt with Gemini-planned iterative multi-agent exploration. Uses ACE semantic search for context gathering and supports cross-module comparison (e.g., frontend vs backend API contracts).
argument-hint: "[-y|--yes] <prompt> [--scope=src/**] [--depth=standard|deep] [--max-iterations=5]" argument-hint: "[-y|--yes] <prompt> [--scope=src/**] [--depth=standard|deep] [--max-iterations=5]"
allowed-tools: Skill(*), TodoWrite(*), Read(*), Bash(*), Task(*), AskUserQuestion(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), mcp__exa__search(*) allowed-tools: Skill(*), TodoWrite(*), Read(*), Bash(*), Agent(*), AskUserQuestion(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), mcp__exa__search(*)
--- ---
## Auto Mode ## Auto Mode
@@ -404,7 +404,7 @@ while (shouldContinue && iteration < maxIterations) {
// Step 3: Launch dimension agents with ACE context // Step 3: Launch dimension agents with ACE context
const agentPromises = iterationPlan.dimensions.map(dimension => const agentPromises = iterationPlan.dimensions.map(dimension =>
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Explore ${dimension.name} (iteration ${iteration})`, description: `Explore ${dimension.name} (iteration ${iteration})`,

View File

@@ -2,7 +2,7 @@
name: issue:discover name: issue:discover
description: Discover potential issues from multiple perspectives (bug, UX, test, quality, security, performance, maintainability, best-practices) using CLI explore. Supports Exa external research for security and best-practices perspectives. description: Discover potential issues from multiple perspectives (bug, UX, test, quality, security, performance, maintainability, best-practices) using CLI explore. Supports Exa external research for security and best-practices perspectives.
argument-hint: "[-y|--yes] <path-pattern> [--perspectives=bug,ux,...] [--external]" argument-hint: "[-y|--yes] <path-pattern> [--perspectives=bug,ux,...] [--external]"
allowed-tools: Skill(*), TodoWrite(*), Read(*), Bash(*), Task(*), AskUserQuestion(*), Glob(*), Grep(*) allowed-tools: Skill(*), TodoWrite(*), Read(*), Bash(*), Agent(*), AskUserQuestion(*), Glob(*), Grep(*)
--- ---
## Auto Mode ## Auto Mode
@@ -185,7 +185,7 @@ Launch N agents in parallel (one per selected perspective):
```javascript ```javascript
// Launch agents in parallel - agents write JSON and return summary // Launch agents in parallel - agents write JSON and return summary
const agentPromises = selectedPerspectives.map(perspective => const agentPromises = selectedPerspectives.map(perspective =>
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Discover ${perspective} issues`, description: `Discover ${perspective} issues`,
@@ -322,7 +322,7 @@ if (response === "Export to Issues") {
**Perspective Analysis Agent**: **Perspective Analysis Agent**:
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Discover ${perspective} issues`, description: `Discover ${perspective} issues`,
@@ -368,7 +368,7 @@ Task({
**Exa Research Agent** (for security and best-practices): **Exa Research Agent** (for security and best-practices):
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `External research for ${perspective} via Exa`, description: `External research for ${perspective} via Exa`,

View File

@@ -429,7 +429,7 @@ On failure, run:
{ timeout: 3600000, run_in_background: true } { timeout: 3600000, run_in_background: true }
); );
} else { } else {
return Task({ return Agent({
subagent_type: 'code-developer', subagent_type: 'code-developer',
run_in_background: false, run_in_background: false,
description: `Execute solution ${solutionId}`, description: `Execute solution ${solutionId}`,

View File

@@ -2,7 +2,7 @@
name: plan name: plan
description: Batch plan issue resolution using issue-plan-agent (explore + plan closed-loop) description: Batch plan issue resolution using issue-plan-agent (explore + plan closed-loop)
argument-hint: "[-y|--yes] --all-pending <issue-id>[,<issue-id>,...] [--batch-size 3]" argument-hint: "[-y|--yes] --all-pending <issue-id>[,<issue-id>,...] [--batch-size 3]"
allowed-tools: TodoWrite(*), Task(*), Skill(*), AskUserQuestion(*), Bash(*), Read(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), Skill(*), AskUserQuestion(*), Bash(*), Read(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -222,7 +222,7 @@ for (let i = 0; i < agentTasks.length; i += MAX_PARALLEL) {
// Collect results from this chunk // Collect results from this chunk
for (const { taskId, batchIndex } of taskIds) { for (const { taskId, batchIndex } of taskIds) {
const result = TaskOutput(task_id=taskId, block=true); const result = TaskOutput({ task_id: taskId, block: true });
// Extract JSON from potential markdown code blocks (agent may wrap in ```json...```) // Extract JSON from potential markdown code blocks (agent may wrap in ```json...```)
const jsonText = extractJsonFromMarkdown(result); const jsonText = extractJsonFromMarkdown(result);

View File

@@ -2,7 +2,7 @@
name: queue name: queue
description: Form execution queue from bound solutions using issue-queue-agent (solution-level) description: Form execution queue from bound solutions using issue-queue-agent (solution-level)
argument-hint: "[-y|--yes] [--queues <n>] [--issue <id>]" argument-hint: "[-y|--yes] [--queues <n>] [--issue <id>]"
allowed-tools: TodoWrite(*), Task(*), Bash(*), Read(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), Bash(*), Read(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -247,7 +247,7 @@ if (numQueues === 1) {
description=`Queue ${i + 1}/${numQueues}: ${group.length} solutions` description=`Queue ${i + 1}/${numQueues}: ${group.length} solutions`
) )
); );
// All agents launched in parallel via single message with multiple Task tool calls // All agents launched in parallel via single message with multiple Agent tool calls
} }
``` ```

View File

@@ -2,7 +2,7 @@
name: prepare name: prepare
description: Delegate to universal-executor agent to analyze project via Gemini/Qwen CLI and return JSON core content package for task context description: Delegate to universal-executor agent to analyze project via Gemini/Qwen CLI and return JSON core content package for task context
argument-hint: "[--tool gemini|qwen] \"task context description\"" argument-hint: "[--tool gemini|qwen] \"task context description\""
allowed-tools: Task(*), Bash(*) allowed-tools: Agent(*), Bash(*)
examples: examples:
- /memory:prepare "在当前前端基础上开发用户认证功能" - /memory:prepare "在当前前端基础上开发用户认证功能"
- /memory:prepare --tool qwen "重构支付模块API" - /memory:prepare --tool qwen "重构支付模块API"

View File

@@ -2,7 +2,7 @@
name: analyze-with-file name: analyze-with-file
description: Interactive collaborative analysis with documented discussions, CLI-assisted exploration, and evolving understanding description: Interactive collaborative analysis with documented discussions, CLI-assisted exploration, and evolving understanding
argument-hint: "[-y|--yes] [-c|--continue] \"topic or question\"" argument-hint: "[-y|--yes] [-c|--continue] \"topic or question\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -226,7 +226,7 @@ Interactive collaborative analysis workflow with **documented discussion process
**Single Exploration Example**: **Single Exploration Example**:
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Explore codebase: ${topicSlug}`, description: `Explore codebase: ${topicSlug}`,
@@ -256,7 +256,7 @@ Schema: {relevant_files, patterns, key_findings, questions_for_user, _metadata}
```javascript ```javascript
// Launch parallel explorations for each selected perspective // Launch parallel explorations for each selected perspective
selectedPerspectives.forEach(perspective => { selectedPerspectives.forEach(perspective => {
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, // Sequential execution, wait for each run_in_background: false, // Sequential execution, wait for each
description: `Explore ${perspective.name}: ${topicSlug}`, description: `Explore ${perspective.name}: ${topicSlug}`,
@@ -399,7 +399,7 @@ CONSTRAINTS: ${perspective.constraints}
- explorations.json contains initial findings - explorations.json contains initial findings
- discussion.md has Round 1 results - discussion.md has Round 1 results
**Guideline**: For complex tasks (code analysis, implementation, refactoring), delegate to agents via Task tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process. **Guideline**: For complex tasks (code analysis, implementation, refactoring), delegate to agents via Agent tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process.
**Workflow Steps**: **Workflow Steps**:
@@ -739,7 +739,7 @@ In round 1 we discussed X, then in round 2 user said Y...
## Best Practices ## Best Practices
1. **Clear Topic Definition**: Detailed topics lead to better dimension identification 1. **Clear Topic Definition**: Detailed topics lead to better dimension identification
2. **Agent-First for Complex Tasks**: For code analysis, implementation, or refactoring tasks during discussion, delegate to agents via Task tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process 2. **Agent-First for Complex Tasks**: For code analysis, implementation, or refactoring tasks during discussion, delegate to agents via Agent tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process
3. **Review discussion.md**: Check understanding evolution before conclusions 3. **Review discussion.md**: Check understanding evolution before conclusions
4. **Embrace Corrections**: Track wrong-to-right transformations as learnings 4. **Embrace Corrections**: Track wrong-to-right transformations as learnings
5. **Document Evolution**: discussion.md captures full thinking process 5. **Document Evolution**: discussion.md captures full thinking process

View File

@@ -2,7 +2,7 @@
name: brainstorm-with-file name: brainstorm-with-file
description: Interactive brainstorming with multi-CLI collaboration, idea expansion, and documented thought evolution description: Interactive brainstorming with multi-CLI collaboration, idea expansion, and documented thought evolution
argument-hint: "[-y|--yes] [-c|--continue] [-m|--mode creative|structured] \"idea or topic\"" argument-hint: "[-y|--yes] [-c|--continue] [-m|--mode creative|structured] \"idea or topic\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -245,7 +245,7 @@ Output as structured exploration vectors for multi-perspective analysis.
**Agent Call Example**: **Agent Call Example**:
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Explore codebase for brainstorm: ${topicSlug}`, description: `Explore codebase for brainstorm: ${topicSlug}`,
@@ -410,7 +410,7 @@ CONSTRAINTS: Consider existing system architecture
- perspectives.json contains initial ideas - perspectives.json contains initial ideas
- brainstorm.md has Round 2 findings - brainstorm.md has Round 2 findings
**Guideline**: For complex tasks (code analysis, implementation, POC creation), delegate to agents via Task tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process. **Guideline**: For complex tasks (code analysis, implementation, POC creation), delegate to agents via Agent tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process.
**Workflow Steps**: **Workflow Steps**:
@@ -725,7 +725,7 @@ Dimensions matched against topic keywords to identify focus areas:
## Best Practices ## Best Practices
1. **Clear Topic Definition**: Detailed topics → better role selection and exploration 1. **Clear Topic Definition**: Detailed topics → better role selection and exploration
2. **Agent-First for Complex Tasks**: For code analysis, POC implementation, or technical validation during refinement, delegate to agents via Task tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process 2. **Agent-First for Complex Tasks**: For code analysis, POC implementation, or technical validation during refinement, delegate to agents via Agent tool (cli-explore-agent, code-developer, universal-executor) or CLI calls (ccw cli). Avoid direct analysis/execution in main process
3. **Review brainstorm.md**: Check thought evolution before final decisions 3. **Review brainstorm.md**: Check thought evolution before final decisions
4. **Embrace Conflicts**: Perspective conflicts often reveal important tradeoffs 4. **Embrace Conflicts**: Perspective conflicts often reveal important tradeoffs
5. **Document Evolution**: brainstorm.md captures full thinking process for team review 5. **Document Evolution**: brainstorm.md captures full thinking process for team review

View File

@@ -2,7 +2,7 @@
name: clean name: clean
description: Intelligent code cleanup with mainline detection, stale artifact discovery, and safe execution description: Intelligent code cleanup with mainline detection, stale artifact discovery, and safe execution
argument-hint: "[-y|--yes] [--dry-run] [\"focus area\"]" argument-hint: "[-y|--yes] [--dry-run] [\"focus area\"]"
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Glob(*), Bash(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Glob(*), Bash(*), Write(*)
--- ---
# Clean Command (/workflow:clean) # Clean Command (/workflow:clean)

View File

@@ -2,7 +2,7 @@
name: workflow:collaborative-plan-with-file name: workflow:collaborative-plan-with-file
description: Collaborative planning with Plan Note - Understanding agent creates shared plan-note.md template, parallel agents fill pre-allocated sections, conflict detection without merge. Outputs executable plan-note.md. description: Collaborative planning with Plan Note - Understanding agent creates shared plan-note.md template, parallel agents fill pre-allocated sections, conflict detection without merge. Outputs executable plan-note.md.
argument-hint: "[-y|--yes] <task description> [--max-agents=5]" argument-hint: "[-y|--yes] <task description> [--max-agents=5]"
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Bash(*), Write(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Bash(*), Write(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*)
--- ---
## Auto Mode ## Auto Mode

View File

@@ -2,7 +2,7 @@
name: debug-with-file name: debug-with-file
description: Interactive hypothesis-driven debugging with documented exploration, understanding evolution, and Gemini-assisted correction description: Interactive hypothesis-driven debugging with documented exploration, understanding evolution, and Gemini-assisted correction
argument-hint: "[-y|--yes] \"bug description or error message\"" argument-hint: "[-y|--yes] \"bug description or error message\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
--- ---
## Auto Mode ## Auto Mode

View File

@@ -2,7 +2,7 @@
name: integration-test-cycle name: integration-test-cycle
description: Self-iterating integration test workflow with codebase exploration, test development, autonomous test-fix cycles, and reflection-driven strategy adjustment description: Self-iterating integration test workflow with codebase exploration, test development, autonomous test-fix cycles, and reflection-driven strategy adjustment
argument-hint: "[-y|--yes] [-c|--continue] [--max-iterations=N] \"module or feature description\"" argument-hint: "[-y|--yes] [-c|--continue] [--max-iterations=N] \"module or feature description\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*), Skill(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*), Skill(*)
--- ---
## Auto Mode ## Auto Mode
@@ -209,7 +209,7 @@ Unified integration test workflow: **Explore → Design → Develop → Test →
1. **Codebase Exploration via cli-explore-agent** 1. **Codebase Exploration via cli-explore-agent**
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Explore integration points: ${topicSlug}`, description: `Explore integration points: ${topicSlug}`,
@@ -391,7 +391,7 @@ Also set `state.json.phase` to `"designed"`.
1. **Generate Integration Tests via @code-developer** 1. **Generate Integration Tests via @code-developer**
```javascript ```javascript
Task({ Agent({
subagent_type: "code-developer", subagent_type: "code-developer",
run_in_background: false, run_in_background: false,
description: `Generate integration tests: ${topicSlug}`, description: `Generate integration tests: ${topicSlug}`,
@@ -435,7 +435,7 @@ Also set state.json "phase" to "developed".
2. **Code Validation Gate via @test-fix-agent** 2. **Code Validation Gate via @test-fix-agent**
```javascript ```javascript
Task({ Agent({
subagent_type: "test-fix-agent", subagent_type: "test-fix-agent",
run_in_background: false, run_in_background: false,
description: `Validate generated tests: ${topicSlug}`, description: `Validate generated tests: ${topicSlug}`,
@@ -605,7 +605,7 @@ After each iteration, update the `## Cumulative Learnings` section in reflection
**@test-fix-agent** (test execution): **@test-fix-agent** (test execution):
```javascript ```javascript
Task({ Agent({
subagent_type: "test-fix-agent", subagent_type: "test-fix-agent",
run_in_background: false, run_in_background: false,
description: `Execute integration tests: iteration ${N}`, description: `Execute integration tests: iteration ${N}`,
@@ -637,7 +637,7 @@ For each failure, assign:
**@cli-planning-agent** (failure analysis with reflection): **@cli-planning-agent** (failure analysis with reflection):
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-planning-agent", subagent_type: "cli-planning-agent",
run_in_background: false, run_in_background: false,
description: `Analyze failures: iteration ${N} - ${strategy}`, description: `Analyze failures: iteration ${N} - ${strategy}`,
@@ -676,7 +676,7 @@ Analyze test failures using reflection context and generate fix strategy.
**@test-fix-agent** (apply fixes): **@test-fix-agent** (apply fixes):
```javascript ```javascript
Task({ Agent({
subagent_type: "test-fix-agent", subagent_type: "test-fix-agent",
run_in_background: false, run_in_background: false,
description: `Apply fixes: iteration ${N} - ${strategy}`, description: `Apply fixes: iteration ${N} - ${strategy}`,

View File

@@ -2,7 +2,7 @@
name: refactor-cycle name: refactor-cycle
description: Tech debt discovery and self-iterating refactoring with multi-dimensional analysis, prioritized execution, regression validation, and reflection-driven adjustment description: Tech debt discovery and self-iterating refactoring with multi-dimensional analysis, prioritized execution, regression validation, and reflection-driven adjustment
argument-hint: "[-y|--yes] [-c|--continue] [--scope=module|project] \"module or refactoring goal\"" argument-hint: "[-y|--yes] [-c|--continue] [--scope=module|project] \"module or refactoring goal\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -200,7 +200,7 @@ Closed-loop tech debt lifecycle: **Discover → Assess → Plan → Refactor →
1. **Codebase Exploration via cli-explore-agent** 1. **Codebase Exploration via cli-explore-agent**
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Explore codebase for debt: ${topicSlug}`, description: `Explore codebase for debt: ${topicSlug}`,
@@ -465,7 +465,7 @@ Set `state.json.current_item` to item ID.
#### Step 4.2: Execute Refactoring #### Step 4.2: Execute Refactoring
```javascript ```javascript
Task({ Agent({
subagent_type: "code-developer", subagent_type: "code-developer",
run_in_background: false, run_in_background: false,
description: `Refactor ${item.id}: ${item.title}`, description: `Refactor ${item.id}: ${item.title}`,
@@ -499,7 +499,7 @@ ${JSON.stringify(item.refactor_plan, null, 2)}
```javascript ```javascript
// 1. Run tests // 1. Run tests
Task({ Agent({
subagent_type: "test-fix-agent", subagent_type: "test-fix-agent",
run_in_background: false, run_in_background: false,
description: `Validate refactoring: ${item.id}`, description: `Validate refactoring: ${item.id}`,

View File

@@ -2,7 +2,7 @@
name: roadmap-with-file name: roadmap-with-file
description: Strategic requirement roadmap with iterative decomposition and issue creation. Outputs roadmap.md (human-readable, single source) + issues.jsonl (machine-executable). Handoff to team-planex. description: Strategic requirement roadmap with iterative decomposition and issue creation. Outputs roadmap.md (human-readable, single source) + issues.jsonl (machine-executable). Handoff to team-planex.
argument-hint: "[-y|--yes] [-c|--continue] [-m progressive|direct|auto] \"requirement description\"" argument-hint: "[-y|--yes] [-c|--continue] [-m progressive|direct|auto] \"requirement description\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -355,12 +355,12 @@ Bash(`mkdir -p ${sessionFolder}`)
**Agent Prompt Template**: **Agent Prompt Template**:
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-roadmap-plan-agent", subagent_type: "cli-roadmap-plan-agent",
run_in_background: false, run_in_background: false,
description: `Roadmap decomposition: ${slug}`, description: `Roadmap decomposition: ${slug}`,
prompt: ` prompt: `
## Roadmap Decomposition Task ## Roadmap Decomposition Agent
### Input Context ### Input Context
- **Requirement**: ${requirement} - **Requirement**: ${requirement}

View File

@@ -2,7 +2,7 @@
name: animation-extract name: animation-extract
description: Extract animation and transition patterns from prompt inference and image references for design system documentation description: Extract animation and transition patterns from prompt inference and image references for design system documentation
argument-hint: "[-y|--yes] [--design-id <id>] [--session <id>] [--images "<glob>"] [--focus "<types>"] [--interactive] [--refine]" argument-hint: "[-y|--yes] [--design-id <id>] [--session <id>] [--images "<glob>"] [--focus "<types>"] [--interactive] [--refine]"
allowed-tools: TodoWrite(*), Read(*), Write(*), Glob(*), Bash(*), AskUserQuestion(*), Task(ui-design-agent) allowed-tools: TodoWrite(*), Read(*), Write(*), Glob(*), Bash(*), AskUserQuestion(*), Agent(ui-design-agent)
--- ---
## Auto Mode ## Auto Mode
@@ -207,14 +207,14 @@ IF has_images:
### Step 2: Generate Animation Specification Options (Agent Task 1) ### Step 2: Generate Animation Specification Options (Agent Task 1)
**Executor**: `Task(ui-design-agent)` **Executor**: `Agent(ui-design-agent)`
**Conditional Logic**: Branch based on `refine_mode` flag **Conditional Logic**: Branch based on `refine_mode` flag
```javascript ```javascript
IF NOT refine_mode: IF NOT refine_mode:
// EXPLORATION MODE (default) // EXPLORATION MODE (default)
Task(ui-design-agent): ` Agent(ui-design-agent): `
[ANIMATION_SPECIFICATION_GENERATION_TASK] [ANIMATION_SPECIFICATION_GENERATION_TASK]
Generate context-aware animation specification questions Generate context-aware animation specification questions
@@ -308,7 +308,7 @@ IF NOT refine_mode:
ELSE: ELSE:
// REFINEMENT MODE // REFINEMENT MODE
Task(ui-design-agent): ` Agent(ui-design-agent): `
[ANIMATION_REFINEMENT_OPTIONS_TASK] [ANIMATION_REFINEMENT_OPTIONS_TASK]
Generate refinement options for existing animation system Generate refinement options for existing animation system
@@ -656,7 +656,7 @@ ELSE:
## Phase 2: Animation System Generation (Agent Task 2) ## Phase 2: Animation System Generation (Agent Task 2)
**Executor**: `Task(ui-design-agent)` for animation token generation **Executor**: `Agent(ui-design-agent)` for animation token generation
### Step 1: Load User Selection or Use Defaults ### Step 1: Load User Selection or Use Defaults
@@ -706,14 +706,14 @@ IF has_images:
bash(mkdir -p {base_path}/animation-extraction) bash(mkdir -p {base_path}/animation-extraction)
``` ```
### Step 3: Launch Animation Generation Task ### Step 3: Launch Animation Generation Agent
**Conditional Task**: Branch based on `refine_mode` flag **Conditional Task**: Branch based on `refine_mode` flag
```javascript ```javascript
IF NOT refine_mode: IF NOT refine_mode:
// EXPLORATION MODE // EXPLORATION MODE
Task(ui-design-agent): ` Agent(ui-design-agent): `
[ANIMATION_SYSTEM_GENERATION_TASK] [ANIMATION_SYSTEM_GENERATION_TASK]
Generate production-ready animation system based on user preferences and CSS extraction Generate production-ready animation system based on user preferences and CSS extraction
@@ -871,7 +871,7 @@ IF NOT refine_mode:
ELSE: ELSE:
// REFINEMENT MODE // REFINEMENT MODE
Task(ui-design-agent): ` Agent(ui-design-agent): `
[ANIMATION_SYSTEM_REFINEMENT_TASK] [ANIMATION_SYSTEM_REFINEMENT_TASK]
Apply selected refinements to existing animation system Apply selected refinements to existing animation system

View File

@@ -2,7 +2,7 @@
name: explore-auto name: explore-auto
description: Interactive exploratory UI design workflow with style-centric batch generation, creates design variants from prompts/images with parallel execution and user selection description: Interactive exploratory UI design workflow with style-centric batch generation, creates design variants from prompts/images with parallel execution and user selection
argument-hint: "[--input "<value>"] [--targets "<list>"] [--target-type "page|component"] [--session <id>] [--style-variants <count>] [--layout-variants <count>]" argument-hint: "[--input "<value>"] [--targets "<list>"] [--target-type "page|component"] [--session <id>] [--style-variants <count>] [--layout-variants <count>]"
allowed-tools: Skill(*), TodoWrite(*), Read(*), Bash(*), Glob(*), Write(*), Task(conceptual-planning-agent) allowed-tools: Skill(*), TodoWrite(*), Read(*), Bash(*), Glob(*), Write(*), Agent(conceptual-planning-agent)
--- ---
# UI Design Auto Workflow Command # UI Design Auto Workflow Command

View File

@@ -2,7 +2,7 @@
name: generate name: generate
description: Assemble UI prototypes by combining layout templates with design tokens (default animation support), pure assembler without new content generation description: Assemble UI prototypes by combining layout templates with design tokens (default animation support), pure assembler without new content generation
argument-hint: [--design-id <id>] [--session <id>] argument-hint: [--design-id <id>] [--session <id>]
allowed-tools: TodoWrite(*), Read(*), Write(*), Task(ui-design-agent), Bash(*) allowed-tools: TodoWrite(*), Read(*), Write(*), Agent(ui-design-agent), Bash(*)
--- ---
# Generate UI Prototypes (/workflow:ui-design:generate) # Generate UI Prototypes (/workflow:ui-design:generate)
@@ -129,7 +129,7 @@ ELSE:
## Phase 2: Assembly (Agent) ## Phase 2: Assembly (Agent)
**Executor**: `Task(ui-design-agent)` grouped by `target × style` (max 10 layouts per agent, max 6 concurrent agents) **Executor**: `Agent(ui-design-agent)` grouped by `target × style` (max 10 layouts per agent, max 6 concurrent agents)
**⚠️ Core Principle**: **Each agent processes ONLY ONE style** (but can process multiple layouts for that style) **⚠️ Core Principle**: **Each agent processes ONLY ONE style** (but can process multiple layouts for that style)
@@ -204,7 +204,7 @@ TodoWrite({todos: [
For each batch (up to 6 parallel agents per batch): For each batch (up to 6 parallel agents per batch):
For each agent group `{target, style_id, layout_ids[]}` in current batch: For each agent group `{target, style_id, layout_ids[]}` in current batch:
```javascript ```javascript
Task(ui-design-agent): ` Agent(ui-design-agent): `
[LAYOUT_STYLE_ASSEMBLY] [LAYOUT_STYLE_ASSEMBLY]
🎯 {target} × Style-{style_id} × Layouts-{layout_ids} 🎯 {target} × Style-{style_id} × Layouts-{layout_ids}
⚠️ CONSTRAINT: Use ONLY style-{style_id}/design-tokens.json (never mix styles) ⚠️ CONSTRAINT: Use ONLY style-{style_id}/design-tokens.json (never mix styles)

View File

@@ -2,7 +2,7 @@
name: workflow:ui-design:import-from-code name: workflow:ui-design:import-from-code
description: Import design system from code files (CSS/JS/HTML/SCSS) with automatic file discovery and parallel agent analysis description: Import design system from code files (CSS/JS/HTML/SCSS) with automatic file discovery and parallel agent analysis
argument-hint: "[--design-id <id>] [--session <id>] [--source <path>]" argument-hint: "[--design-id <id>] [--session <id>] [--source <path>]"
allowed-tools: Read,Write,Bash,Glob,Grep,Task,TodoWrite allowed-tools: Read,Write,Bash,Glob,Grep,Agent,TodoWrite
auto-continue: true auto-continue: true
--- ---

View File

@@ -2,7 +2,7 @@
name: layout-extract name: layout-extract
description: Extract structural layout information from reference images or text prompts using Claude analysis with variant generation or refinement mode description: Extract structural layout information from reference images or text prompts using Claude analysis with variant generation or refinement mode
argument-hint: "[-y|--yes] [--design-id <id>] [--session <id>] [--images "<glob>"] [--prompt "<desc>"] [--targets "<list>"] [--variants <count>] [--device-type <desktop|mobile|tablet|responsive>] [--interactive] [--refine]" argument-hint: "[-y|--yes] [--design-id <id>] [--session <id>] [--images "<glob>"] [--prompt "<desc>"] [--targets "<list>"] [--variants <count>] [--device-type <desktop|mobile|tablet|responsive>] [--interactive] [--refine]"
allowed-tools: TodoWrite(*), Read(*), Write(*), Glob(*), Bash(*), AskUserQuestion(*), Task(ui-design-agent), mcp__exa__web_search_exa(*) allowed-tools: TodoWrite(*), Read(*), Write(*), Glob(*), Bash(*), AskUserQuestion(*), Agent(ui-design-agent), mcp__exa__web_search_exa(*)
--- ---
## Auto Mode ## Auto Mode
@@ -162,7 +162,7 @@ IF refine_mode:
``` ```
### Step 1: Generate Options (Agent Task 1 - Mode-Specific) ### Step 1: Generate Options (Agent Task 1 - Mode-Specific)
**Executor**: `Task(ui-design-agent)` **Executor**: `Agent(ui-design-agent)`
**Exploration Mode** (default): Generate contrasting layout concepts **Exploration Mode** (default): Generate contrasting layout concepts
**Refinement Mode** (`--refine`): Generate refinement options for existing layouts **Refinement Mode** (`--refine`): Generate refinement options for existing layouts
@@ -171,7 +171,7 @@ IF refine_mode:
// Conditional agent task based on refine_mode // Conditional agent task based on refine_mode
IF NOT refine_mode: IF NOT refine_mode:
// EXPLORATION MODE // EXPLORATION MODE
Task(ui-design-agent): ` Agent(ui-design-agent): `
[LAYOUT_CONCEPT_GENERATION_TASK] [LAYOUT_CONCEPT_GENERATION_TASK]
Generate {variants_count} structurally distinct layout concepts for each target Generate {variants_count} structurally distinct layout concepts for each target
@@ -217,7 +217,7 @@ IF NOT refine_mode:
` `
ELSE: ELSE:
// REFINEMENT MODE // REFINEMENT MODE
Task(ui-design-agent): ` Agent(ui-design-agent): `
[LAYOUT_REFINEMENT_OPTIONS_TASK] [LAYOUT_REFINEMENT_OPTIONS_TASK]
Generate refinement options for existing layout(s) Generate refinement options for existing layout(s)
@@ -461,7 +461,7 @@ Proceeding to generate {total_selections} detailed layout template(s)...
## Phase 2: Layout Template Generation (Agent Task 2) ## Phase 2: Layout Template Generation (Agent Task 2)
**Executor**: `Task(ui-design-agent)` × `Total_Selected_Templates` in **parallel** **Executor**: `Agent(ui-design-agent)` × `Total_Selected_Templates` in **parallel**
### Step 1: Load User Selections or Default to All ### Step 1: Load User Selections or Default to All
```bash ```bash
@@ -512,7 +512,7 @@ REPORT: "Generating {total_tasks} layout templates across {targets.length} targe
Generate layout templates for ALL selected concepts in parallel: Generate layout templates for ALL selected concepts in parallel:
```javascript ```javascript
FOR each task in task_list: FOR each task in task_list:
Task(ui-design-agent): ` Agent(ui-design-agent): `
[LAYOUT_TEMPLATE_GENERATION_TASK #{task.variant_id} for {task.target}] [LAYOUT_TEMPLATE_GENERATION_TASK #{task.variant_id} for {task.target}]
Generate detailed layout template based on user-selected concept. Generate detailed layout template based on user-selected concept.
Focus ONLY on structure and layout. DO NOT concern with visual style (colors, fonts, etc.). Focus ONLY on structure and layout. DO NOT concern with visual style (colors, fonts, etc.).

View File

@@ -2,7 +2,7 @@
name: workflow:ui-design:reference-page-generator name: workflow:ui-design:reference-page-generator
description: Generate multi-component reference pages and documentation from design run extraction description: Generate multi-component reference pages and documentation from design run extraction
argument-hint: "[--design-run <path>] [--package-name <name>] [--output-dir <path>]" argument-hint: "[--design-run <path>] [--package-name <name>] [--output-dir <path>]"
allowed-tools: Read,Write,Bash,Task,TodoWrite allowed-tools: Read,Write,Bash,Agent,TodoWrite
auto-continue: true auto-continue: true
--- ---
@@ -198,7 +198,7 @@ echo "[Phase 1] Component data preparation complete"
**Agent Task**: **Agent Task**:
```javascript ```javascript
Task(ui-design-agent): ` Agent(ui-design-agent): `
[PREVIEW_SHOWCASE_GENERATION] [PREVIEW_SHOWCASE_GENERATION]
Generate interactive multi-component showcase panel for reference package Generate interactive multi-component showcase panel for reference package
@@ -210,7 +210,7 @@ Task(ui-design-agent): `
2. ${package_dir}/design-tokens.json (design tokens - REQUIRED) 2. ${package_dir}/design-tokens.json (design tokens - REQUIRED)
3. ${package_dir}/animation-tokens.json (optional, if exists) 3. ${package_dir}/animation-tokens.json (optional, if exists)
## Generation Task ## Generation Agent
Create interactive showcase with these sections: Create interactive showcase with these sections:

View File

@@ -2,7 +2,7 @@
name: unified-execute-with-file name: unified-execute-with-file
description: Universal execution engine for consuming any planning/brainstorm/analysis output with minimal progress tracking, multi-agent coordination, and incremental execution description: Universal execution engine for consuming any planning/brainstorm/analysis output with minimal progress tracking, multi-agent coordination, and incremental execution
argument-hint: "[-y|--yes] [<path>[,<path2>] | -p|--plan <path>[,<path2>]] [--auto-commit] [--commit-prefix \"prefix\"] [\"execution context or task name\"]" argument-hint: "[-y|--yes] [<path>[,<path2>] | -p|--plan <path>[,<path2>]] [--auto-commit] [--commit-prefix \"prefix\"] [\"execution context or task name\"]"
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*) allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
--- ---
## Auto Mode ## Auto Mode
@@ -34,7 +34,7 @@ When `--yes` or `-y`: Auto-confirm execution decisions, follow plan's DAG depend
``` ```
**Execution Methods**: **Execution Methods**:
- **Agent**: Task tool with code-developer (recommended for standard tasks) - **Agent**: Agent tool with code-developer (recommended for standard tasks)
- **CLI-Codex**: `ccw cli --tool codex` (complex tasks, git-aware) - **CLI-Codex**: `ccw cli --tool codex` (complex tasks, git-aware)
- **CLI-Gemini**: `ccw cli --tool gemini` (analysis-heavy tasks) - **CLI-Gemini**: `ccw cli --tool gemini` (analysis-heavy tasks)
- **Auto**: Select based on task complexity (default in `-y` mode) - **Auto**: Select based on task complexity (default in `-y` mode)
@@ -99,7 +99,7 @@ Universal execution engine consuming **any** planning output and executing it wi
│ Phase 5: Per-Task Execution (Agent OR CLI) │ │ Phase 5: Per-Task Execution (Agent OR CLI) │
│ ├─ Extract relevant notes from previous tasks │ │ ├─ Extract relevant notes from previous tasks │
│ ├─ Inject notes into execution context │ │ ├─ Inject notes into execution context │
│ ├─ Route to Agent (Task tool) OR CLI (ccw cli command) │ │ ├─ Route to Agent (Agent tool) OR CLI (ccw cli command) │
│ ├─ Generate structured notes for next task │ │ ├─ Generate structured notes for next task │
│ ├─ Auto-commit if enabled (conventional commit format) │ │ ├─ Auto-commit if enabled (conventional commit format) │
│ └─ Append event to unified log │ │ └─ Append event to unified log │
@@ -507,10 +507,10 @@ ${recommendations.map(r => \`- ${r}\`).join('\\n')}
When: `executionMethod === "Agent"` or `Auto + Low Complexity` When: `executionMethod === "Agent"` or `Auto + Low Complexity`
Execute task via Task tool with code-developer agent: Execute task via Agent tool with code-developer agent:
```javascript ```javascript
Task({ Agent({
subagent_type: "code-developer", // or other agent types subagent_type: "code-developer", // or other agent types
run_in_background: false, run_in_background: false,
description: task.title, description: task.title,

View File

@@ -83,7 +83,7 @@
| 内容类型 | 保留要求 | 示例 | | 内容类型 | 保留要求 | 示例 |
|---------|---------|------| |---------|---------|------|
| **Bash命令** | 完整命令,包含所有参数、管道、重定向 | `find . -name "*.json" \| head -1` | | **Bash命令** | 完整命令,包含所有参数、管道、重定向 | `find . -name "*.json" \| head -1` |
| **Agent Prompt** | 全文保留包含OBJECTIVE、TASK、EXPECTED等所有节 | 完整的Task({prompt: "..."}) | | **Agent Prompt** | 全文保留包含OBJECTIVE、TASK、EXPECTED等所有节 | 完整的Agent({prompt: "..."}) |
| **代码函数** | 完整函数体所有if/else分支 | `analyzeTaskComplexity()` 全部代码 | | **代码函数** | 完整函数体所有if/else分支 | `analyzeTaskComplexity()` 全部代码 |
| **参数表格** | 所有行列,不省略任何参数 | Session Types表格 | | **参数表格** | 所有行列,不省略任何参数 | Session Types表格 |
| **JSON Schema** | 所有字段、类型、required定义 | context-package.json schema | | **JSON Schema** | 所有字段、类型、required定义 | context-package.json schema |
@@ -95,7 +95,7 @@
1. **将代码替换为描述** 1. **将代码替换为描述**
- ❌ 错误:`Execute context gathering agent` - ❌ 错误:`Execute context gathering agent`
- ✅ 正确:完整的 `Task({ subagent_type: "context-search-agent", prompt: "...[完整200行prompt]..." })` - ✅ 正确:完整的 `Agent({ subagent_type: "context-search-agent", prompt: "...[完整200行prompt]..." })`
2. **省略Prompt内容** 2. **省略Prompt内容**
- ❌ 错误:`Agent prompt for context gathering (see original file)` - ❌ 错误:`Agent prompt for context gathering (see original file)`
@@ -277,7 +277,7 @@ commands/ skills/
--- ---
name: {skill-name} name: {skill-name}
description: {简短描述}. Triggers on "{trigger-phrase}". description: {简短描述}. Triggers on "{trigger-phrase}".
allowed-tools: Task, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash, Glob, Grep allowed-tools: Agent, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash, Glob, Grep
--- ---
``` ```
@@ -440,7 +440,7 @@ Complete: IMPL_PLAN.md + Task JSONs
|--------|---------|---------| |--------|---------|---------|
| **代码块数量** | 计数 ` ```bash `` ```javascript ` | 与原文件相等 | | **代码块数量** | 计数 ` ```bash `` ```javascript ` | 与原文件相等 |
| **表格数量** | 计数 ` \| ` 开头的行 | 与原文件相等 | | **表格数量** | 计数 ` \| ` 开头的行 | 与原文件相等 |
| **Agent Prompt** | 搜索 `Task({` | 完整的prompt参数内容 | | **Agent Prompt** | 搜索 `Agent({` | 完整的prompt参数内容 |
| **步骤编号** | 检查 `### Step` | 编号序列与原文件一致 | | **步骤编号** | 检查 `### Step` | 编号序列与原文件一致 |
| **文件行数** | `wc -l` | ±20%以内 | | **文件行数** | `wc -l` | ±20%以内 |
| **关键函数** | 搜索函数名 | 所有函数完整保留 | | **关键函数** | 搜索函数名 | 所有函数完整保留 |
@@ -492,10 +492,10 @@ Execute the context-search-agent to gather project context.
### Step 2: Run context gathering ### Step 2: Run context gathering
```javascript ```javascript
Task({ Agent({
subagent_type: "context-search-agent", subagent_type: "context-search-agent",
prompt: ` prompt: `
## Context Search Task ## Context Search Agent
### OBJECTIVE ### OBJECTIVE
Gather comprehensive context for planning session ${sessionId} Gather comprehensive context for planning session ${sessionId}
@@ -535,7 +535,7 @@ Gather comprehensive context for planning session ${sessionId}
│ └─→ 数量应相等 │ │ └─→ 数量应相等 │
│ │ │ │
│ Step 3: 关键内容抽查 │ │ Step 3: 关键内容抽查 │
│ - 搜索 Task({ → Agent Prompt 完整性 │ │ - 搜索 Agent({ → Agent Prompt 完整性 │
│ - 搜索函数名 → 函数体完整性 │ │ - 搜索函数名 → 函数体完整性 │
│ - 搜索表格标记 → 表格完整性 │ │ - 搜索表格标记 → 表格完整性 │
│ │ │ │
@@ -562,8 +562,8 @@ grep -c '^|' commands/workflow/tools/context-gather.md
grep -c '^|' skills/workflow-plan/phases/02-context-gathering.md grep -c '^|' skills/workflow-plan/phases/02-context-gathering.md
# 4. Agent Prompt检查 # 4. Agent Prompt检查
grep -c 'Task({' commands/workflow/tools/context-gather.md grep -c 'Agent({' commands/workflow/tools/context-gather.md
grep -c 'Task({' skills/workflow-plan/phases/02-context-gathering.md grep -c 'Agent({' skills/workflow-plan/phases/02-context-gathering.md
# 5. 函数定义检查 # 5. 函数定义检查
grep -E '^(function|const.*=.*=>|async function)' commands/workflow/tools/context-gather.md grep -E '^(function|const.*=.*=>|async function)' commands/workflow/tools/context-gather.md

View File

@@ -140,7 +140,7 @@ graph TD
--- ---
name: {skill-name} name: {skill-name}
description: {一句话描述}. {触发关键词}. Triggers on "{关键词1}", "{关键词2}". description: {一句话描述}. {触发关键词}. Triggers on "{关键词1}", "{关键词2}".
allowed-tools: Task, AskUserQuestion, Read, Bash, Glob, Grep, Write, {其他MCP工具} allowed-tools: Agent, AskUserQuestion, Read, Bash, Glob, Grep, Write, {其他MCP工具}
--- ---
# {Skill 标题} # {Skill 标题}
@@ -192,7 +192,7 @@ description: | # 必需:描述 + 触发词
Generate XXX documents. Generate XXX documents.
Triggers on "keyword1", "keyword2". Triggers on "keyword1", "keyword2".
allowed-tools: | # 必需:允许使用的工具 allowed-tools: | # 必需:允许使用的工具
Task, AskUserQuestion, Read, Bash, Agent, AskUserQuestion, Read, Bash,
Glob, Grep, Write, mcp__chrome__* Glob, Grep, Write, mcp__chrome__*
--- ---
``` ```
@@ -641,7 +641,7 @@ touch my-skill/templates/agent-base.md
--- ---
name: my-skill name: my-skill
description: Generate XXX. Triggers on "keyword1", "keyword2". description: Generate XXX. Triggers on "keyword1", "keyword2".
allowed-tools: Task, AskUserQuestion, Read, Bash, Glob, Grep, Write allowed-tools: Agent, AskUserQuestion, Read, Bash, Glob, Grep, Write
--- ---
# My Skill # My Skill
@@ -680,7 +680,7 @@ Generate XXX through multi-phase analysis.
| 工具 | 用途 | 适用 Skill | | 工具 | 用途 | 适用 Skill |
|------|------|------------| |------|------|------------|
| `Task` | 启动子 Agent | 所有 | | `Agent` | 启动子 Agent | 所有 |
| `AskUserQuestion` | 用户交互 | 所有 | | `AskUserQuestion` | 用户交互 | 所有 |
| `Read/Write/Glob/Grep` | 文件操作 | 所有 | | `Read/Write/Glob/Grep` | 文件操作 | 所有 |
| `Bash` | 脚本执行 | 需要自动化 | | `Bash` | 脚本执行 | 需要自动化 |

View File

@@ -1,7 +1,7 @@
--- ---
name: brainstorm name: brainstorm
description: Unified brainstorming skill with dual-mode operation - auto pipeline and single role analysis. Triggers on "brainstorm", "头脑风暴". description: Unified brainstorming skill with dual-mode operation - auto pipeline and single role analysis. Triggers on "brainstorm", "头脑风暴".
allowed-tools: Skill(*), Task(conceptual-planning-agent, context-search-agent), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Glob(*), Bash(*) allowed-tools: Skill(*), Agent(conceptual-planning-agent, context-search-agent), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Glob(*), Bash(*)
--- ---
# Brainstorm # Brainstorm

View File

@@ -1,7 +1,7 @@
--- ---
name: issue-manage name: issue-manage
description: Interactive issue management with menu-driven CRUD operations. Use when managing issues, viewing issue status, editing issue fields, performing bulk operations, or viewing issue history. Triggers on "manage issue", "list issues", "edit issue", "delete issue", "bulk update", "issue dashboard", "issue history", "completed issues". description: Interactive issue management with menu-driven CRUD operations. Use when managing issues, viewing issue status, editing issue fields, performing bulk operations, or viewing issue history. Triggers on "manage issue", "list issues", "edit issue", "delete issue", "bulk update", "issue dashboard", "issue history", "completed issues".
allowed-tools: Bash, Read, Write, AskUserQuestion, Task, Glob allowed-tools: Bash, Read, Write, AskUserQuestion, Agent, Glob
--- ---
# Issue Management Skill # Issue Management Skill
@@ -219,9 +219,8 @@ const action = AskUserQuestion({
header: 'Action', header: 'Action',
options: [ options: [
{ label: 'List Issues', description: 'Browse active issues' }, { label: 'List Issues', description: 'Browse active issues' },
{ label: 'View Issue', description: 'Detail view' }, { label: 'View Issue', description: 'Detail view (includes history)' },
{ label: 'Edit Issue', description: 'Modify fields' }, { label: 'Edit Issue', description: 'Modify fields' },
{ label: 'View History', description: 'Completed issues' },
{ label: 'Bulk Operations', description: 'Batch actions' } { label: 'Bulk Operations', description: 'Batch actions' }
] ]
}] }]

View File

@@ -1,7 +1,7 @@
--- ---
name: memory-manage name: memory-manage
description: Unified memory management - CLAUDE.md updates and documentation generation with interactive routing. Triggers on "memory manage", "update claude", "update memory", "generate docs", "更新记忆", "生成文档". description: Unified memory management - CLAUDE.md updates and documentation generation with interactive routing. Triggers on "memory manage", "update claude", "update memory", "generate docs", "更新记忆", "生成文档".
allowed-tools: Task(*), Bash(*), AskUserQuestion(*), Read(*) allowed-tools: Agent(*), Bash(*), AskUserQuestion(*), Read(*)
--- ---
# Memory Management Skill # Memory Management Skill

View File

@@ -1,7 +1,7 @@
--- ---
name: review-code name: review-code
description: Multi-dimensional code review with structured reports. Analyzes correctness, readability, performance, security, testing, and architecture. Triggers on "review code", "code review", "审查代码", "代码审查". description: Multi-dimensional code review with structured reports. Analyzes correctness, readability, performance, security, testing, and architecture. Triggers on "review code", "code review", "审查代码", "代码审查".
allowed-tools: Task, AskUserQuestion, Read, Write, Glob, Grep, Bash, mcp__ace-tool__search_context, mcp__ide__getDiagnostics allowed-tools: Agent, AskUserQuestion, Read, Write, Glob, Grep, Bash, mcp__ace-tool__search_context, mcp__ide__getDiagnostics
--- ---
# Review Code # Review Code

View File

@@ -132,8 +132,9 @@ async function runOrchestrator() {
// 确定当前需要审查的维度(使用 StateManager // 确定当前需要审查的维度(使用 StateManager
const currentDimension = StateManager.getNextDimension(state); const currentDimension = StateManager.getNextDimension(state);
const result = await Task({ const result = await Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
description: `Execute code review action: ${actionId}`,
run_in_background: false, run_in_background: false,
prompt: ` prompt: `
[WORK_DIR] [WORK_DIR]

View File

@@ -1,7 +1,7 @@
--- ---
name: review-cycle name: review-cycle
description: Unified multi-dimensional code review with automated fix orchestration. Routes to session-based (git changes), module-based (path patterns), or fix mode. Triggers on "workflow:review-cycle", "workflow:review-session-cycle", "workflow:review-module-cycle", "workflow:review-cycle-fix". description: Unified multi-dimensional code review with automated fix orchestration. Routes to session-based (git changes), module-based (path patterns), or fix mode. Triggers on "workflow:review-cycle", "workflow:review-session-cycle", "workflow:review-module-cycle", "workflow:review-cycle-fix".
allowed-tools: Task, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Read, Write, Edit, Bash, Glob, Grep, Skill allowed-tools: Agent, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Read, Write, Edit, Bash, Glob, Grep, Skill
--- ---
# Review Cycle # Review Cycle

View File

@@ -332,7 +332,7 @@ for (let i = 0; i < batches.length; i += MAX_PARALLEL) {
// Launch agents in parallel (run_in_background=true) // Launch agents in parallel (run_in_background=true)
for (const batch of chunk) { for (const batch of chunk) {
const taskId = Task({ const taskId = Agent({
subagent_type: "cli-planning-agent", subagent_type: "cli-planning-agent",
run_in_background: true, run_in_background: true,
description: `Plan batch ${batch.batch_id}: ${batch.findings.length} findings`, description: `Plan batch ${batch.batch_id}: ${batch.findings.length} findings`,
@@ -386,7 +386,7 @@ for (let i = 1; i <= aggregatedPlan.groups.length; i++) {
**Planning Agent (Batch Mode - Partial Plan Only)**: **Planning Agent (Batch Mode - Partial Plan Only)**:
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-planning-agent", subagent_type: "cli-planning-agent",
run_in_background: true, run_in_background: true,
description: `Plan batch ${batch.batch_id}: ${batch.findings.length} findings`, description: `Plan batch ${batch.batch_id}: ${batch.findings.length} findings`,
@@ -488,7 +488,7 @@ Before finalizing outputs:
**Execution Agent** (per group): **Execution Agent** (per group):
```javascript ```javascript
Task({ Agent({
subagent_type: "cli-execute-agent", subagent_type: "cli-execute-agent",
description: `Fix ${group.findings.length} issues: ${group.group_name}`, description: `Fix ${group.findings.length} issues: ${group.group_name}`,
prompt: ` prompt: `

View File

@@ -1,7 +1,7 @@
--- ---
name: skill-generator name: skill-generator
description: Meta-skill for creating new Claude Code skills with configurable execution modes. Supports sequential (fixed order) and autonomous (stateless) phase patterns. Use for skill scaffolding, skill creation, or building new workflows. Triggers on "create skill", "new skill", "skill generator". description: Meta-skill for creating new Claude Code skills with configurable execution modes. Supports sequential (fixed order) and autonomous (stateless) phase patterns. Use for skill scaffolding, skill creation, or building new workflows. Triggers on "create skill", "new skill", "skill generator".
allowed-tools: Task, AskUserQuestion, Read, Bash, Glob, Grep, Write allowed-tools: Agent, AskUserQuestion, Read, Bash, Glob, Grep, Write
--- ---
# Skill Generator # Skill Generator

View File

@@ -240,7 +240,7 @@ async function executePhase(phaseId, phaseConfig, workDir) {
const phasePrompt = Read(\`\${skillDir}/phases/\${phaseId}.md\`); const phasePrompt = Read(\`\${skillDir}/phases/\${phaseId}.md\`);
// Use Task to invoke Agent // Use Task to invoke Agent
const result = await Task({ const result = await Agent({
subagent_type: phaseConfig.agent?.type || 'universal-executor', subagent_type: phaseConfig.agent?.type || 'universal-executor',
run_in_background: phaseConfig.agent?.run_in_background || false, run_in_background: phaseConfig.agent?.run_in_background || false,
prompt: \` prompt: \`
@@ -573,7 +573,7 @@ async function runOrchestrator(workDir) {
try { try {
const actionPrompt = Read(\`\${skillDir}/phases/actions/\${actionId}.md\`); const actionPrompt = Read(\`\${skillDir}/phases/actions/\${actionId}.md\`);
const result = await Task({ const result = await Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
run_in_background: false, run_in_background: false,
prompt: \` prompt: \`

View File

@@ -12,7 +12,7 @@ Suitable for scenarios that need immediate results.
```javascript ```javascript
// Agent call - synchronous // Agent call - synchronous
const result = Task({ const result = Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
prompt: 'Execute task...', prompt: 'Execute task...',
run_in_background: false // Key: synchronous execution run_in_background: false // Key: synchronous execution
@@ -77,7 +77,7 @@ ccw cli -p "<PROMPT>" --tool <gemini|qwen|codex> --mode <analysis|write>
General-purpose executor, the most commonly used agent type. General-purpose executor, the most commonly used agent type.
```javascript ```javascript
Task({ Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
prompt: ` prompt: `
Execute task: Execute task:
@@ -99,7 +99,7 @@ Execute task:
Code exploration agent for quick codebase understanding. Code exploration agent for quick codebase understanding.
```javascript ```javascript
Task({ Agent({
subagent_type: 'Explore', subagent_type: 'Explore',
prompt: ` prompt: `
Explore src/ directory: Explore src/ directory:
@@ -123,7 +123,7 @@ Thoroughness: medium
Deep code analysis agent. Deep code analysis agent.
```javascript ```javascript
Task({ Agent({
subagent_type: 'cli-explore-agent', subagent_type: 'cli-explore-agent',
prompt: ` prompt: `
Deep analysis of src/auth/ module: Deep analysis of src/auth/ module:

View File

@@ -111,7 +111,7 @@ async function runOrchestrator() {
try { try {
const actionPrompt = Read(\`phases/actions/${actionId}.md\`); const actionPrompt = Read(\`phases/actions/${actionId}.md\`);
const result = await Task({ const result = await Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
run_in_background: false, run_in_background: false,
prompt: \` prompt: \`

View File

@@ -96,7 +96,7 @@ async function execute${toPascalCase(id)}(context) {
\` : '// No MCP tools configured'} \` : '// No MCP tools configured'}
// 3. Launch Agent for in-depth analysis // 3. Launch Agent for in-depth analysis
const agentResult = await Task({ const agentResult = await Agent({
subagent_type: '\${agent.type}', subagent_type: '\${agent.type}',
prompt: \` prompt: \`
\${generateAgentPrompt(analysis_type, scope)} \${generateAgentPrompt(analysis_type, scope)}
@@ -408,7 +408,7 @@ const semanticContext = await mcp__ace_tool__search_context({
}); });
// Use semantic search results as Agent input context // Use semantic search results as Agent input context
const agentResult = await Task({ const agentResult = await Agent({
subagent_type: 'Explore', subagent_type: 'Explore',
prompt: \` prompt: \`
Based on following semantic search results, perform in-depth analysis: Based on following semantic search results, perform in-depth analysis:

View File

@@ -274,7 +274,7 @@ const tasks = [
\`\`\`javascript \`\`\`javascript
const results = await Promise.all( const results = await Promise.all(
tasks.map(task => tasks.map(task =>
Task({ Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
run_in_background: false, run_in_background: false,
prompt: task.prompt prompt: task.prompt

View File

@@ -223,7 +223,7 @@ function filterDocsByPhase(specs, phase, phaseIndex) {
--- ---
name: api-docs-generator name: api-docs-generator
description: Generate API documentation from source code. Triggers on "generate api docs", "api documentation". description: Generate API documentation from source code. Triggers on "generate api docs", "api documentation".
allowed-tools: Task, Read, Write, Glob, Grep, Bash allowed-tools: Agent, Read, Write, Glob, Grep, Bash
--- ---
# API Docs Generator # API Docs Generator
@@ -265,7 +265,7 @@ Phase 3: Generation → api-docs.md
--- ---
name: task-manager name: task-manager
description: Interactive task management with CRUD operations. Triggers on "manage tasks", "task list". description: Interactive task management with CRUD operations. Triggers on "manage tasks", "task list".
allowed-tools: Task, AskUserQuestion, Read, Write allowed-tools: Agent, AskUserQuestion, Read, Write
--- ---
# Task Manager # Task Manager

View File

@@ -1,7 +1,7 @@
--- ---
name: skill-tuning name: skill-tuning
description: Universal skill diagnosis and optimization tool. Detect and fix skill execution issues including context explosion, long-tail forgetting, data flow disruption, and agent coordination failures. Supports Gemini CLI for deep analysis. Triggers on "skill tuning", "tune skill", "skill diagnosis", "optimize skill", "skill debug". description: Universal skill diagnosis and optimization tool. Detect and fix skill execution issues including context explosion, long-tail forgetting, data flow disruption, and agent coordination failures. Supports Gemini CLI for deep analysis. Triggers on "skill tuning", "tune skill", "skill diagnosis", "optimize skill", "skill debug".
allowed-tools: Task, AskUserQuestion, Read, Write, Bash, Glob, Grep, mcp__ace-tool__search_context allowed-tools: Agent, AskUserQuestion, Read, Write, Bash, Glob, Grep, mcp__ace-tool__search_context
--- ---
# Skill Tuning # Skill Tuning

View File

@@ -193,7 +193,7 @@ async function execute(state, workDir) {
type: 'agent_failure', type: 'agent_failure',
severity: 'medium', severity: 'medium',
location: { file: 'SKILL.md' }, location: { file: 'SKILL.md' },
description: 'Task tool used but not declared in allowed-tools', description: 'Agent tool used but not declared in allowed-tools',
evidence: [`${totalCalls} Task calls found, but Task not in allowed-tools`], evidence: [`${totalCalls} Task calls found, but Task not in allowed-tools`],
root_cause: 'Tool declaration mismatch', root_cause: 'Tool declaration mismatch',
impact: 'May cause runtime permission issues', impact: 'May cause runtime permission issues',

View File

@@ -216,7 +216,7 @@ async function execute(state, workDir) {
file: 'phases/*.md', file: 'phases/*.md',
action: 'modify', action: 'modify',
diff: `+ try { diff: `+ try {
const result = await Task({...}); const result = await Agent({...});
+ if (!result) throw new Error('Empty result'); + if (!result) throw new Error('Empty result');
+ } catch (e) { + } catch (e) {
+ updateState({ errors: [...errors, e.message], error_count: error_count + 1 }); + updateState({ errors: [...errors, e.message], error_count: error_count + 1 });

View File

@@ -99,8 +99,9 @@ async function runOrchestrator(workDir) {
target_skill: { name: state.target_skill.name, path: state.target_skill.path } target_skill: { name: state.target_skill.name, path: state.target_skill.path }
}; };
const result = await Task({ const result = await Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
description: `Execute skill-tuning action: ${actionId}`,
run_in_background: false, run_in_background: false,
prompt: ` prompt: `
[CONTEXT] [CONTEXT]

View File

@@ -114,18 +114,21 @@ Write(`${workDir}/final-output.json`, finalResult); // 只存最终结果
// 上下文流转模式 // 上下文流转模式
async function executePhase(context) { async function executePhase(context) {
const { previousResult, constraints, config } = context; const { previousResult, constraints, config } = context;
const result = await Task({ const result = await Agent({
subagent_type: 'universal-executor',
description: 'Execute phase with context passing',
run_in_background: false,
prompt: ` prompt: `
[CONTEXT] [CONTEXT]
Previous: ${JSON.stringify(previousResult)} Previous: ${JSON.stringify(previousResult)}
Constraints: ${constraints.join(', ')} Constraints: ${constraints.join(', ')}
[TASK] [TASK]
Process and return result directly. Process and return result directly.
` `
}); });
return { return {
...context, ...context,
currentResult: result, currentResult: result,

View File

@@ -140,8 +140,10 @@ function updateHistory(state, newItem) {
```javascript ```javascript
// Add summarization before passing to next phase // Add summarization before passing to next phase
const summary = await Task({ const summary = await Agent({
subagent_type: 'universal-executor', subagent_type: 'universal-executor',
description: 'Summarize content for context compression',
run_in_background: false,
prompt: `Summarize in <100 words: ${fullContent}\nReturn JSON: { summary, key_points[] }` prompt: `Summarize in <100 words: ${fullContent}\nReturn JSON: { summary, key_points[] }`
}); });
nextPhasePrompt = `Previous summary: ${summary.summary}`; nextPhasePrompt = `Previous summary: ${summary.summary}`;
@@ -268,12 +270,17 @@ function validateAgentResult(result, requiredFields) {
### flatten_nesting ### flatten_nesting
```javascript ```javascript
// Before: Agent A's prompt tells it to call Task({subagent_type: 'B'}) // Before: Agent A's prompt tells it to call Agent({subagent_type: 'B'})
// After: Agent A returns signal, orchestrator handles // After: Agent A returns signal, orchestrator handles
// Agent A: return { needs_agent_b: true, context: {...} } // Agent A: return { needs_agent_b: true, context: {...} }
// Orchestrator: // Orchestrator:
if (parsedA.needs_agent_b) { if (parsedA.needs_agent_b) {
resultB = await Task({ subagent_type: 'B', prompt: `Context: ${parsedA.context}` }); resultB = await Agent({
subagent_type: 'B',
description: 'Handle delegated task from Agent A',
run_in_background: false,
prompt: `Context: ${parsedA.context}`
});
} }
``` ```

View File

@@ -1,7 +1,7 @@
--- ---
name: spec-generator name: spec-generator
description: Specification generator - 6 phase document chain producing product brief, PRD, architecture, and epics. Triggers on "generate spec", "create specification", "spec generator", "workflow:spec". description: Specification generator - 6 phase document chain producing product brief, PRD, architecture, and epics. Triggers on "generate spec", "create specification", "spec generator", "workflow:spec".
allowed-tools: Task, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Read, Write, Edit, Bash, Glob, Grep, Skill allowed-tools: Agent, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Read, Write, Edit, Bash, Glob, Grep, Skill
--- ---
# Spec Generator # Spec Generator

View File

@@ -117,7 +117,7 @@ const hasCodebase = Glob('**/*.{ts,js,py,java,go,rs}').length > 0
|| Glob('Cargo.toml').length > 0; || Glob('Cargo.toml').length > 0;
if (hasCodebase) { if (hasCodebase) {
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: `Explore codebase for spec: ${slug}`, description: `Explore codebase for spec: ${slug}`,

View File

@@ -1,7 +1,7 @@
--- ---
name: team-arch-opt name: team-arch-opt
description: Unified team skill for architecture optimization. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Triggers on "team arch-opt". description: Unified team skill for architecture optimization. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Triggers on "team arch-opt".
allowed-tools: Task, TaskCreate, TaskList, TaskGet, TaskUpdate, TeamCreate, TeamDelete, SendMessage, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, mcp__ace-tool__search_context allowed-tools: Agent, TaskCreate, TaskList, TaskGet, TaskUpdate, TeamCreate, TeamDelete, SendMessage, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, mcp__ace-tool__search_context
--- ---
# Team Architecture Optimization # Team Architecture Optimization
@@ -137,7 +137,7 @@ Phase 3 needs task dispatch
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: <team-name>, team_name: <team-name>,
@@ -361,7 +361,7 @@ AskUserQuestion({
| Choice | Action | | Choice | Action |
|--------|--------| |--------|--------|
| Archive & Clean | Update session status="completed" -> TeamDelete(arch-opt) -> output final summary | | Archive & Clean | Update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-arch-opt", args="resume")` | | Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-arch-opt", args="resume")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean | | Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

@@ -27,7 +27,6 @@ Every task description uses structured format for clarity:
``` ```
TaskCreate({ TaskCreate({
subject: "<TASK-ID>", subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria> description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
TASK: TASK:
- <step 1: specific action> - <step 1: specific action>
@@ -43,10 +42,9 @@ EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits, focus areas> CONSTRAINTS: <scope limits, focus areas>
--- ---
InnerLoop: <true|false> InnerLoop: <true|false>
BranchId: <B01|A|none>", BranchId: <B01|A|none>"
blockedBy: [<dependency-list>],
status: "pending"
}) })
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
``` ```
### Mode Router ### Mode Router
@@ -81,9 +79,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/architecture-baseline.json + <session>/artifacts/architecture-report.md | Quantified metrics with evidence EXPECTED: <session>/artifacts/architecture-baseline.json + <session>/artifacts/architecture-report.md | Quantified metrics with evidence
CONSTRAINTS: Focus on <refactoring-scope> | Analyze before any changes CONSTRAINTS: Focus on <refactoring-scope> | Analyze before any changes
--- ---
InnerLoop: false", InnerLoop: false"
status: "pending"
}) })
TaskUpdate({ taskId: "ANALYZE-001", owner: "analyzer" })
``` ```
**DESIGN-001** (designer, Stage 2): **DESIGN-001** (designer, Stage 2):
@@ -105,10 +103,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/refactoring-plan.md | Priority-ordered with structural improvement targets, discrete REFACTOR-IDs EXPECTED: <session>/artifacts/refactoring-plan.md | Priority-ordered with structural improvement targets, discrete REFACTOR-IDs
CONSTRAINTS: Focus on highest-impact refactorings | Risk assessment required | Non-overlapping file targets per REFACTOR-ID CONSTRAINTS: Focus on highest-impact refactorings | Risk assessment required | Non-overlapping file targets per REFACTOR-ID
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["ANALYZE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "DESIGN-001", addBlockedBy: ["ANALYZE-001"], owner: "designer" })
``` ```
**REFACTOR-001** (refactorer, Stage 3): **REFACTOR-001** (refactorer, Stage 3):
@@ -130,10 +127,9 @@ CONTEXT:
EXPECTED: Modified source files + validation passing | Refactorings applied without regressions EXPECTED: Modified source files + validation passing | Refactorings applied without regressions
CONSTRAINTS: Preserve existing behavior | Update all references | Follow code conventions CONSTRAINTS: Preserve existing behavior | Update all references | Follow code conventions
--- ---
InnerLoop: true", InnerLoop: true"
blockedBy: ["DESIGN-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "REFACTOR-001", addBlockedBy: ["DESIGN-001"], owner: "refactorer" })
``` ```
**VALIDATE-001** (validator, Stage 4 - parallel): **VALIDATE-001** (validator, Stage 4 - parallel):
@@ -156,10 +152,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/validation-results.json | Per-dimension validation with verdicts EXPECTED: <session>/artifacts/validation-results.json | Per-dimension validation with verdicts
CONSTRAINTS: Must compare against baseline | Flag any regressions or broken imports CONSTRAINTS: Must compare against baseline | Flag any regressions or broken imports
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["REFACTOR-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "VALIDATE-001", addBlockedBy: ["REFACTOR-001"], owner: "validator" })
``` ```
**REVIEW-001** (reviewer, Stage 4 - parallel): **REVIEW-001** (reviewer, Stage 4 - parallel):
@@ -180,10 +175,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/review-report.md | Per-dimension findings with severity EXPECTED: <session>/artifacts/review-report.md | Per-dimension findings with severity
CONSTRAINTS: Focus on refactoring changes only | Provide specific file:line references CONSTRAINTS: Focus on refactoring changes only | Provide specific file:line references
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["REFACTOR-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "REVIEW-001", addBlockedBy: ["REFACTOR-001"], owner: "reviewer" })
``` ```
--- ---
@@ -210,11 +204,15 @@ For each target index `i` (0-based), with prefix char `P = pipeline_prefix_chars
// Create session subdirectory for this pipeline // Create session subdirectory for this pipeline
Bash("mkdir -p <session>/artifacts/pipelines/<P>") Bash("mkdir -p <session>/artifacts/pipelines/<P>")
TaskCreate({ subject: "ANALYZE-<P>01", ... }) // blockedBy: [] TaskCreate({ subject: "ANALYZE-<P>01", ... })
TaskCreate({ subject: "DESIGN-<P>01", ... }) // blockedBy: ["ANALYZE-<P>01"] TaskCreate({ subject: "DESIGN-<P>01", ... })
TaskCreate({ subject: "REFACTOR-<P>01", ... }) // blockedBy: ["DESIGN-<P>01"] TaskUpdate({ taskId: "DESIGN-<P>01", addBlockedBy: ["ANALYZE-<P>01"] })
TaskCreate({ subject: "VALIDATE-<P>01", ... }) // blockedBy: ["REFACTOR-<P>01"] TaskCreate({ subject: "REFACTOR-<P>01", ... })
TaskCreate({ subject: "REVIEW-<P>01", ... }) // blockedBy: ["REFACTOR-<P>01"] TaskUpdate({ taskId: "REFACTOR-<P>01", addBlockedBy: ["DESIGN-<P>01"] })
TaskCreate({ subject: "VALIDATE-<P>01", ... })
TaskUpdate({ taskId: "VALIDATE-<P>01", addBlockedBy: ["REFACTOR-<P>01"] })
TaskCreate({ subject: "REVIEW-<P>01", ... })
TaskUpdate({ taskId: "REVIEW-<P>01", addBlockedBy: ["REFACTOR-<P>01"] })
``` ```
Task descriptions follow same template as single mode, with additions: Task descriptions follow same template as single mode, with additions:
@@ -241,9 +239,9 @@ EXPECTED: <session>/artifacts/pipelines/A/architecture-baseline.json + architect
CONSTRAINTS: Focus on auth module scope CONSTRAINTS: Focus on auth module scope
--- ---
InnerLoop: false InnerLoop: false
PipelineId: A", PipelineId: A"
status: "pending"
}) })
TaskUpdate({ taskId: "ANALYZE-A01", owner: "analyzer" })
``` ```
--- ---
@@ -298,10 +296,9 @@ EXPECTED: Modified source files for REFACTOR-{NNN} only
CONSTRAINTS: Only implement this branch's refactoring | Do not touch files outside REFACTOR-{NNN} scope CONSTRAINTS: Only implement this branch's refactoring | Do not touch files outside REFACTOR-{NNN} scope
--- ---
InnerLoop: false InnerLoop: false
BranchId: B{NN}", BranchId: B{NN}"
blockedBy: ["DESIGN-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "REFACTOR-B{NN}", addBlockedBy: ["DESIGN-001"], owner: "refactorer" })
TaskCreate({ TaskCreate({
subject: "VALIDATE-B{NN}", subject: "VALIDATE-B{NN}",
@@ -319,10 +316,9 @@ EXPECTED: <session>/artifacts/branches/B{NN}/validation-results.json
CONSTRAINTS: Only validate this branch's changes CONSTRAINTS: Only validate this branch's changes
--- ---
InnerLoop: false InnerLoop: false
BranchId: B{NN}", BranchId: B{NN}"
blockedBy: ["REFACTOR-B{NN}"],
status: "pending"
}) })
TaskUpdate({ taskId: "VALIDATE-B{NN}", addBlockedBy: ["REFACTOR-B{NN}"], owner: "validator" })
TaskCreate({ TaskCreate({
subject: "REVIEW-B{NN}", subject: "REVIEW-B{NN}",
@@ -340,10 +336,9 @@ EXPECTED: <session>/artifacts/branches/B{NN}/review-report.md
CONSTRAINTS: Only review this branch's changes CONSTRAINTS: Only review this branch's changes
--- ---
InnerLoop: false InnerLoop: false
BranchId: B{NN}", BranchId: B{NN}"
blockedBy: ["REFACTOR-B{NN}"],
status: "pending"
}) })
TaskUpdate({ taskId: "REVIEW-B{NN}", addBlockedBy: ["REFACTOR-B{NN}"], owner: "reviewer" })
``` ```
7. Update session.json: 7. Update session.json:

View File

@@ -65,7 +65,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker: 2. For each ready task, spawn team-worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>", description: "Spawn <role> worker for <task-id>",
team_name: "arch-opt", team_name: "arch-opt",
@@ -171,10 +171,9 @@ EXPECTED: Fixed source files for B{NN} only
CONSTRAINTS: Targeted fixes only | Do not touch other branches CONSTRAINTS: Targeted fixes only | Do not touch other branches
--- ---
InnerLoop: false InnerLoop: false
BranchId: B{NN}", BranchId: B{NN}"
blockedBy: [],
status: "pending"
}) })
TaskUpdate({ taskId: "FIX-B{NN}-{cycle}", owner: "refactorer" })
``` ```
Create new VALIDATE and REVIEW with retry suffix: Create new VALIDATE and REVIEW with retry suffix:
@@ -186,9 +185,8 @@ Create new VALIDATE and REVIEW with retry suffix:
TaskCreate({ TaskCreate({
subject: "FIX-{P}01-{cycle}", subject: "FIX-{P}01-{cycle}",
...same pattern with pipeline prefix... ...same pattern with pipeline prefix...
blockedBy: [],
status: "pending"
}) })
TaskUpdate({ taskId: "FIX-{P}01-{cycle}", owner: "refactorer" })
``` ```
Create `VALIDATE-{P}01-R{cycle}` and `REVIEW-{P}01-R{cycle}`. Create `VALIDATE-{P}01-R{cycle}` and `REVIEW-{P}01-R{cycle}`.

View File

@@ -229,7 +229,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task and spawn its worker: Find first unblocked task and spawn its worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn analyzer worker", description: "Spawn analyzer worker",
team_name: "arch-opt", team_name: "arch-opt",
@@ -298,6 +298,6 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("arch-opt") -> output final summary with artifact paths | | Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete() -> output final summary with artifact paths |
| Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-arch-opt', args='resume')" | | Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-arch-opt', args='resume')" |
| Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow | | Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow |

View File

@@ -11,7 +11,7 @@ Complex refactoring decisions (e.g., choosing between dependency inversion vs me
Called by designer, reviewer after their primary analysis when complexity warrants multi-perspective evaluation: Called by designer, reviewer after their primary analysis when complexity warrants multi-perspective evaluation:
``` ```
Task({ Agent({
subagent_type: "cli-discuss-agent", subagent_type: "cli-discuss-agent",
run_in_background: false, run_in_background: false,
description: "Discuss <round-id>: <topic> for architecture optimization", description: "Discuss <round-id>: <topic> for architecture optimization",

View File

@@ -11,7 +11,7 @@ Codebase exploration is a read-only operation shared between analyzer (mapping s
Called by analyzer, refactorer after needing codebase context for architecture analysis or implementation: Called by analyzer, refactorer after needing codebase context for architecture analysis or implementation:
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore codebase for architecture-critical structures in <target-scope>", description: "Explore codebase for architecture-critical structures in <target-scope>",

View File

@@ -1,7 +1,7 @@
--- ---
name: team-brainstorm name: team-brainstorm
description: Unified team skill for brainstorming team. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team brainstorm". description: Unified team skill for brainstorming team. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team brainstorm".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team Brainstorm # Team Brainstorm
@@ -306,7 +306,7 @@ Beat 1 2 3-4 5 6
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: "brainstorm", team_name: "brainstorm",
@@ -338,7 +338,7 @@ Execute built-in Phase 1 (task discovery) -> role-spec Phase 2-4 -> built-in Pha
| Quick/Deep pipeline (single ideator) | Standard spawn: single `ideator` team-worker agent | | Quick/Deep pipeline (single ideator) | Standard spawn: single `ideator` team-worker agent |
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn ideator-<N> worker", description: "Spawn ideator-<N> worker",
team_name: "brainstorm", team_name: "brainstorm",
@@ -384,7 +384,7 @@ AskUserQuestion({
| Choice | Action | | Choice | Action |
|--------|--------| |--------|--------|
| Archive & Clean | Update session status="completed" -> TeamDelete(brainstorm) -> output final summary | | Archive & Clean | Update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-brainstorm", args="resume")` | | Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-brainstorm", args="resume")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean | | Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

@@ -23,7 +23,6 @@ Every task description uses structured format:
``` ```
TaskCreate({ TaskCreate({
subject: "<TASK-ID>", subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <completion criteria> description: "PURPOSE: <what this task achieves> | Success: <completion criteria>
TASK: TASK:
- <step 1> - <step 1>
@@ -37,10 +36,9 @@ CONTEXT:
EXPECTED: <deliverable path> + <quality criteria> EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits> CONSTRAINTS: <scope limits>
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: [<dependency-list>],
status: "pending"
}) })
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
``` ```
### Pipeline Router ### Pipeline Router
@@ -59,7 +57,6 @@ InnerLoop: false",
``` ```
TaskCreate({ TaskCreate({
subject: "IDEA-001", subject: "IDEA-001",
owner: "ideator",
description: "PURPOSE: Generate multi-angle ideas for brainstorm topic | Success: >= 6 unique ideas across all angles description: "PURPOSE: Generate multi-angle ideas for brainstorm topic | Success: >= 6 unique ideas across all angles
TASK: TASK:
- Read topic and angles from session context - Read topic and angles from session context
@@ -72,17 +69,15 @@ CONTEXT:
EXPECTED: <session>/ideas/idea-001.md with >= 6 ideas EXPECTED: <session>/ideas/idea-001.md with >= 6 ideas
CONSTRAINTS: Divergent thinking only, no evaluation CONSTRAINTS: Divergent thinking only, no evaluation
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: [],
status: "pending"
}) })
TaskUpdate({ taskId: "IDEA-001", owner: "ideator" })
``` ```
**CHALLENGE-001** (challenger): **CHALLENGE-001** (challenger):
``` ```
TaskCreate({ TaskCreate({
subject: "CHALLENGE-001", subject: "CHALLENGE-001",
owner: "challenger",
description: "PURPOSE: Challenge assumptions and assess feasibility of generated ideas | Success: Each idea rated by severity description: "PURPOSE: Challenge assumptions and assess feasibility of generated ideas | Success: Each idea rated by severity
TASK: TASK:
- Read all idea files from ideas/ directory - Read all idea files from ideas/ directory
@@ -95,17 +90,15 @@ CONTEXT:
EXPECTED: <session>/critiques/critique-001.md with severity table and GC signal EXPECTED: <session>/critiques/critique-001.md with severity table and GC signal
CONSTRAINTS: Critical analysis only, do not generate alternative ideas CONSTRAINTS: Critical analysis only, do not generate alternative ideas
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["IDEA-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "CHALLENGE-001", addBlockedBy: ["IDEA-001"], owner: "challenger" })
``` ```
**SYNTH-001** (synthesizer): **SYNTH-001** (synthesizer):
``` ```
TaskCreate({ TaskCreate({
subject: "SYNTH-001", subject: "SYNTH-001",
owner: "synthesizer",
description: "PURPOSE: Synthesize ideas and critiques into integrated proposals | Success: >= 1 consolidated proposal description: "PURPOSE: Synthesize ideas and critiques into integrated proposals | Success: >= 1 consolidated proposal
TASK: TASK:
- Read all ideas and critiques - Read all ideas and critiques
@@ -117,10 +110,9 @@ CONTEXT:
EXPECTED: <session>/synthesis/synthesis-001.md with proposals EXPECTED: <session>/synthesis/synthesis-001.md with proposals
CONSTRAINTS: Integration and synthesis only, no new ideas CONSTRAINTS: Integration and synthesis only, no new ideas
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["CHALLENGE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "SYNTH-001", addBlockedBy: ["CHALLENGE-001"], owner: "synthesizer" })
``` ```
### Deep Pipeline ### Deep Pipeline
@@ -131,7 +123,6 @@ Creates all 6 tasks. First 2 same as Quick, then:
``` ```
TaskCreate({ TaskCreate({
subject: "IDEA-002", subject: "IDEA-002",
owner: "ideator",
description: "PURPOSE: Revise ideas based on critique feedback (GC Round 1) | Success: HIGH/CRITICAL challenges addressed description: "PURPOSE: Revise ideas based on critique feedback (GC Round 1) | Success: HIGH/CRITICAL challenges addressed
TASK: TASK:
- Read critique feedback from critiques/ - Read critique feedback from critiques/
@@ -143,17 +134,15 @@ CONTEXT:
EXPECTED: <session>/ideas/idea-002.md with revised ideas EXPECTED: <session>/ideas/idea-002.md with revised ideas
CONSTRAINTS: Address critique only, focused revision CONSTRAINTS: Address critique only, focused revision
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["CHALLENGE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "IDEA-002", addBlockedBy: ["CHALLENGE-001"], owner: "ideator" })
``` ```
**CHALLENGE-002** (challenger, round 2): **CHALLENGE-002** (challenger, round 2):
``` ```
TaskCreate({ TaskCreate({
subject: "CHALLENGE-002", subject: "CHALLENGE-002",
owner: "challenger",
description: "PURPOSE: Validate revised ideas (GC Round 2) | Success: Severity assessment of revised ideas description: "PURPOSE: Validate revised ideas (GC Round 2) | Success: Severity assessment of revised ideas
TASK: TASK:
- Read revised idea files - Read revised idea files
@@ -165,10 +154,9 @@ CONTEXT:
EXPECTED: <session>/critiques/critique-002.md EXPECTED: <session>/critiques/critique-002.md
CONSTRAINTS: Focus on revised/new ideas CONSTRAINTS: Focus on revised/new ideas
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["IDEA-002"],
status: "pending"
}) })
TaskUpdate({ taskId: "CHALLENGE-002", addBlockedBy: ["IDEA-002"], owner: "challenger" })
``` ```
**SYNTH-001** blocked by CHALLENGE-002. **EVAL-001** blocked by SYNTH-001: **SYNTH-001** blocked by CHALLENGE-002. **EVAL-001** blocked by SYNTH-001:
@@ -176,7 +164,6 @@ InnerLoop: false",
``` ```
TaskCreate({ TaskCreate({
subject: "EVAL-001", subject: "EVAL-001",
owner: "evaluator",
description: "PURPOSE: Score and rank synthesized proposals | Success: Ranked list with weighted scores description: "PURPOSE: Score and rank synthesized proposals | Success: Ranked list with weighted scores
TASK: TASK:
- Read synthesis results - Read synthesis results
@@ -188,10 +175,9 @@ CONTEXT:
EXPECTED: <session>/evaluation/evaluation-001.md with scoring matrix EXPECTED: <session>/evaluation/evaluation-001.md with scoring matrix
CONSTRAINTS: Evaluation only, no new proposals CONSTRAINTS: Evaluation only, no new proposals
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["SYNTH-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "EVAL-001", addBlockedBy: ["SYNTH-001"], owner: "evaluator" })
``` ```
### Full Pipeline ### Full Pipeline

View File

@@ -74,7 +74,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker: 2. For each ready task, spawn team-worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>", description: "Spawn <role> worker for <task-id>",
team_name: "brainstorm", team_name: "brainstorm",

View File

@@ -231,7 +231,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task(s) and spawn worker(s): Find first unblocked task(s) and spawn worker(s):
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn ideator worker", description: "Spawn ideator worker",
team_name: "brainstorm", team_name: "brainstorm",
@@ -255,7 +255,7 @@ For **Full pipeline** with parallel ideators, spawn N team-worker agents:
``` ```
// For each parallel IDEA task (IDEA-001, IDEA-002, IDEA-003) // For each parallel IDEA task (IDEA-001, IDEA-002, IDEA-003)
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn ideator worker for IDEA-<N>", description: "Spawn ideator worker for IDEA-<N>",
team_name: "brainstorm", team_name: "brainstorm",
@@ -316,6 +316,6 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("brainstorm") -> output final summary with artifact paths | | Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete() -> output final summary with artifact paths |
| Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-brainstorm', args='resume')" | | Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-brainstorm', args='resume')" |
| Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow | | Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow |

View File

@@ -1,7 +1,7 @@
--- ---
name: team-coordinate name: team-coordinate
description: Universal team coordination skill with dynamic role generation. Uses team-worker agent architecture with role-spec files. Only coordinator is built-in -- all worker roles are generated at runtime as role-specs and spawned via team-worker agent. Beat/cadence model for orchestration. Triggers on "Team Coordinate ". description: Universal team coordination skill with dynamic role generation. Uses team-worker agent architecture with role-spec files. Only coordinator is built-in -- all worker roles are generated at runtime as role-specs and spawned via team-worker agent. Beat/cadence model for orchestration. Triggers on "Team Coordinate ".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team Coordinate # Team Coordinate
@@ -93,7 +93,7 @@ User provides task description
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: <team-name>, team_name: <team-name>,

View File

@@ -25,7 +25,6 @@ Create task chains from dynamic dependency graphs. Builds pipelines from the tas
``` ```
TaskCreate({ TaskCreate({
subject: "<PREFIX>-<NNN>", subject: "<PREFIX>-<NNN>",
owner: "<role-name>",
description: "PURPOSE: <goal> | Success: <success_criteria> description: "PURPOSE: <goal> | Success: <success_criteria>
TASK: TASK:
- <step 1> - <step 1>
@@ -40,10 +39,9 @@ EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits> CONSTRAINTS: <scope limits>
--- ---
InnerLoop: <true|false> InnerLoop: <true|false>
RoleSpec: <session-folder>/role-specs/<role-name>.md", RoleSpec: <session-folder>/role-specs/<role-name>.md"
blockedBy: [<dependency-list from graph>],
status: "pending"
}) })
TaskUpdate({ taskId: "<PREFIX>-<NNN>", addBlockedBy: [<dependency-list from graph>], owner: "<role-name>" })
``` ```
5. **Update team-session.json** with pipeline and tasks_total 5. **Update team-session.json** with pipeline and tasks_total

View File

@@ -141,7 +141,7 @@ Ready tasks found?
**Spawn worker tool call** (one per ready task): **Spawn worker tool call** (one per ready task):
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <subject>", description: "Spawn <role> worker for <subject>",
team_name: <team-name>, team_name: <team-name>,
@@ -190,7 +190,7 @@ All tasks completed (no pending, no in_progress)
| }) | })
| +- "Archive & Clean": | +- "Archive & Clean":
| | Update session status="completed" | | Update session status="completed"
| | TeamDelete(<team-name>) | | TeamDelete()
| | Output final summary with artifact paths | | Output final summary with artifact paths
| +- "Keep Active": | +- "Keep Active":
| | Update session status="paused" | | Update session status="paused"

View File

@@ -11,7 +11,7 @@ Unlike team-lifecycle-v4's fixed perspective definitions (product, technical, qu
Called by roles after artifact creation: Called by roles after artifact creation:
``` ```
Task({ Agent({
subagent_type: "cli-discuss-agent", subagent_type: "cli-discuss-agent",
run_in_background: false, run_in_background: false,
description: "Discuss <round-id>", description: "Discuss <round-id>",

View File

@@ -5,7 +5,7 @@ Shared codebase exploration utility with centralized caching. Callable by any ro
## Invocation ## Invocation
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore <angle>", description: "Explore <angle>",

View File

@@ -1,7 +1,7 @@
--- ---
name: team-executor name: team-executor
description: Lightweight session execution skill. Resumes existing team-coordinate sessions for pure execution via team-worker agents. No analysis, no role generation -- only loads and executes. Session path required. Triggers on "Team Executor". description: Lightweight session execution skill. Resumes existing team-coordinate sessions for pure execution via team-worker agents. No analysis, no role generation -- only loads and executes. Session path required. Triggers on "Team Executor".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team Executor # Team Executor
@@ -107,7 +107,7 @@ Validate session
When executor spawns workers, use `team-worker` agent with role-spec path: When executor spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: <team-name>, team_name: <team-name>,

View File

@@ -135,7 +135,7 @@ Ready tasks found?
**Spawn worker tool call**: **Spawn worker tool call**:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <subject>", description: "Spawn <role> worker for <subject>",
team_name: <team-name>, team_name: <team-name>,

View File

@@ -121,7 +121,7 @@ team-executor validates the following before execution:
| `session_id` | string | Unique session identifier | | `session_id` | string | Unique session identifier |
| `task_description` | string | Original task description from user | | `task_description` | string | Original task description from user |
| `status` | string | One of: "active", "paused", "completed" | | `status` | string | One of: "active", "paused", "completed" |
| `team_name` | string | Team name for Task tool | | `team_name` | string | Team name for Agent tool |
| `roles` | array | List of role definitions | | `roles` | array | List of role definitions |
| `roles[].name` | string | Role name (must match .md filename) | | `roles[].name` | string | Role name (must match .md filename) |
| `roles[].prefix` | string | Task prefix for this role | | `roles[].prefix` | string | Task prefix for this role |

View File

@@ -1,7 +1,7 @@
--- ---
name: team-frontend name: team-frontend
description: Unified team skill for frontend development. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Built-in ui-ux-pro-max design intelligence. Triggers on "team frontend". description: Unified team skill for frontend development. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Built-in ui-ux-pro-max design intelligence. Triggers on "team frontend".
allowed-tools: Task, TaskCreate, TaskList, TaskGet, TaskUpdate, TeamCreate, TeamDelete, SendMessage, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, mcp__ace-tool__search_context allowed-tools: Agent, TaskCreate, TaskList, TaskGet, TaskUpdate, TeamCreate, TeamDelete, SendMessage, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, mcp__ace-tool__search_context
--- ---
# Team Frontend Development # Team Frontend Development
@@ -108,7 +108,7 @@ Phase 3 needs task dispatch
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: "frontend", team_name: "frontend",
@@ -233,7 +233,7 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | Verify completed -> update status -> TeamDelete("frontend") -> final summary | | Archive & Clean | Verify completed -> update status -> TeamDelete() -> final summary |
| Keep Active | Status="paused" -> "Resume with: Skill(skill='team-frontend', args='resume')" | | Keep Active | Status="paused" -> "Resume with: Skill(skill='team-frontend', args='resume')" |
| Export Results | Ask target dir -> copy artifacts -> Archive flow | | Export Results | Ask target dir -> copy artifacts -> Archive flow |

View File

@@ -25,7 +25,6 @@ Every task description uses structured format:
``` ```
TaskCreate({ TaskCreate({
subject: "<TASK-ID>", subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria> description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
TASK: TASK:
- <step 1: specific action> - <step 1: specific action>
@@ -38,10 +37,9 @@ CONTEXT:
- Upstream artifacts: <artifact-1>, <artifact-2> - Upstream artifacts: <artifact-1>, <artifact-2>
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: <deliverable path> + <quality criteria> EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits, focus areas>", CONSTRAINTS: <scope limits, focus areas>"
blockedBy: [<dependency-list>],
status: "pending"
}) })
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
``` ```
### Mode Router ### Mode Router
@@ -72,9 +70,9 @@ CONTEXT:
- Scope: <scope> - Scope: <scope>
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: <session>/analysis/design-intelligence.json + requirements.md | Structured design data EXPECTED: <session>/analysis/design-intelligence.json + requirements.md | Structured design data
CONSTRAINTS: Read-only analysis | No code modifications", CONSTRAINTS: Read-only analysis | No code modifications"
status: "pending"
}) })
TaskUpdate({ taskId: "ANALYZE-001", owner: "analyst" })
``` ```
**ARCH-001** (architect): **ARCH-001** (architect):
@@ -94,10 +92,9 @@ CONTEXT:
- Upstream artifacts: design-intelligence.json, requirements.md - Upstream artifacts: design-intelligence.json, requirements.md
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: <session>/architecture/design-tokens.json + component-specs/ + project-structure.md EXPECTED: <session>/architecture/design-tokens.json + component-specs/ + project-structure.md
CONSTRAINTS: Use ui-ux-pro-max recommendations for token values | Support light/dark mode", CONSTRAINTS: Use ui-ux-pro-max recommendations for token values | Support light/dark mode"
blockedBy: ["ANALYZE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "ARCH-001", addBlockedBy: ["ANALYZE-001"], owner: "architect" })
``` ```
**DEV-001** (developer): **DEV-001** (developer):
@@ -117,10 +114,9 @@ CONTEXT:
- Upstream artifacts: design-tokens.json, component-specs/, project-structure.md - Upstream artifacts: design-tokens.json, component-specs/, project-structure.md
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: src/styles/tokens.css + component files | Design-token compliant code EXPECTED: src/styles/tokens.css + component files | Design-token compliant code
CONSTRAINTS: Use CSS variables from tokens | Mobile-first responsive | WCAG AA", CONSTRAINTS: Use CSS variables from tokens | Mobile-first responsive | WCAG AA"
blockedBy: ["ARCH-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "DEV-001", addBlockedBy: ["ARCH-001"], owner: "developer" })
``` ```
**QA-001** (qa): **QA-001** (qa):
@@ -140,10 +136,9 @@ CONTEXT:
- Upstream artifacts: design-intelligence.json, design-tokens.json, src/** - Upstream artifacts: design-intelligence.json, design-tokens.json, src/**
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: <session>/qa/audit-001.md | Weighted score + verdict + categorized issues EXPECTED: <session>/qa/audit-001.md | Weighted score + verdict + categorized issues
CONSTRAINTS: Read-only review | No code modifications", CONSTRAINTS: Read-only review | No code modifications"
blockedBy: ["DEV-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "QA-001", addBlockedBy: ["DEV-001"], owner: "qa" })
``` ```
--- ---

View File

@@ -69,10 +69,9 @@ CONTEXT:
- Upstream artifacts: <session>/qa/audit-<NNN>.md - Upstream artifacts: <session>/qa/audit-<NNN>.md
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: Fixed source files | QA issues resolved EXPECTED: Fixed source files | QA issues resolved
CONSTRAINTS: Targeted fixes only | Do not introduce regressions", CONSTRAINTS: Targeted fixes only | Do not introduce regressions"
blockedBy: [],
status: "pending"
}) })
TaskUpdate({ taskId: "DEV-fix-<round>", owner: "developer" })
TaskCreate({ TaskCreate({
subject: "QA-recheck-<round>", subject: "QA-recheck-<round>",
@@ -86,10 +85,9 @@ CONTEXT:
- Review type: code-review - Review type: code-review
- Shared memory: <session>/.msg/meta.json - Shared memory: <session>/.msg/meta.json
EXPECTED: <session>/qa/audit-<NNN>.md | Improved score EXPECTED: <session>/qa/audit-<NNN>.md | Improved score
CONSTRAINTS: Read-only review", CONSTRAINTS: Read-only review"
blockedBy: ["DEV-fix-<round>"],
status: "pending"
}) })
TaskUpdate({ taskId: "QA-recheck-<round>", addBlockedBy: ["DEV-fix-<round>"], owner: "qa" })
``` ```
6. Proceed to handleSpawnNext 6. Proceed to handleSpawnNext
@@ -105,7 +103,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker: 2. For each ready task, spawn team-worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>", description: "Spawn <role> worker for <task-id>",
team_name: "frontend", team_name: "frontend",

View File

@@ -204,7 +204,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task and spawn its worker: Find first unblocked task and spawn its worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn analyst worker", description: "Spawn analyst worker",
team_name: "frontend", team_name: "frontend",
@@ -273,6 +273,6 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("frontend") -> output final summary | | Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-frontend', args='resume')" | | Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-frontend', args='resume')" |
| Export Results | AskUserQuestion for target directory -> copy artifacts -> Archive & Clean flow | | Export Results | AskUserQuestion for target directory -> copy artifacts -> Archive & Clean flow |

View File

@@ -1,7 +1,7 @@
--- ---
name: team-issue name: team-issue
description: Unified team skill for issue resolution. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team issue". description: Unified team skill for issue resolution. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team issue".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team Issue Resolution # Team Issue Resolution
@@ -301,7 +301,7 @@ Beat 1 2 3 4 5
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: "issue", team_name: "issue",
@@ -344,7 +344,7 @@ Execute built-in Phase 1 (task discovery) -> role-spec Phase 2-4 -> built-in Pha
**Parallel spawn template**: **Parallel spawn template**:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role>-<N> worker", description: "Spawn <role>-<N> worker",
team_name: "issue", team_name: "issue",
@@ -390,7 +390,7 @@ AskUserQuestion({
| Choice | Action | | Choice | Action |
|--------|--------| |--------|--------|
| Archive & Clean | Update session status="completed" -> TeamDelete(issue) -> output final summary | | Archive & Clean | Update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-issue", args="resume")` | | Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-issue", args="resume")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean | | Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

@@ -53,7 +53,7 @@ Bash("ccw issue status <issueId> --json")
| Complexity | Execution | | Complexity | Execution |
|------------|-----------| |------------|-----------|
| Low | Direct ACE search: `mcp__ace-tool__search_context(project_root_path, query)` | | Low | Direct ACE search: `mcp__ace-tool__search_context(project_root_path, query)` |
| Medium/High | Spawn cli-explore-agent: `Task({ subagent_type: "cli-explore-agent", run_in_background: false })` | | Medium/High | Spawn cli-explore-agent: `Agent({ subagent_type: "cli-explore-agent", run_in_background: false })` |
**cli-explore-agent prompt template**: **cli-explore-agent prompt template**:

View File

@@ -15,7 +15,7 @@ Load solution plan, route to execution backend (Agent/Codex/Gemini), run tests,
| Backend | Condition | Method | | Backend | Condition | Method |
|---------|-----------|--------| |---------|-----------|--------|
| agent | task_count <= 3 or explicit | `Task({ subagent_type: "code-developer", run_in_background: false })` | | agent | task_count <= 3 or explicit | `Agent({ subagent_type: "code-developer", run_in_background: false })` |
| codex | task_count > 3 or explicit | `ccw cli --tool codex --mode write --id issue-<issueId>` | | codex | task_count > 3 or explicit | `ccw cli --tool codex --mode write --id issue-<issueId>` |
| gemini | explicit | `ccw cli --tool gemini --mode write --id issue-<issueId>` | | gemini | explicit | `ccw cli --tool gemini --mode write --id issue-<issueId>` |
@@ -69,7 +69,7 @@ Dependencies: <explorerContext.dependencies>
``` ```
Route by executor: Route by executor:
- **agent**: `Task({ subagent_type: "code-developer", run_in_background: false, prompt: <prompt> })` - **agent**: `Agent({ subagent_type: "code-developer", run_in_background: false, prompt: <prompt> })`
- **codex**: `Bash("ccw cli -p \"<prompt>\" --tool codex --mode write --id issue-<issueId>")` - **codex**: `Bash("ccw cli -p \"<prompt>\" --tool codex --mode write --id issue-<issueId>")`
- **gemini**: `Bash("ccw cli -p \"<prompt>\" --tool gemini --mode write --id issue-<issueId>")` - **gemini**: `Bash("ccw cli -p \"<prompt>\" --tool gemini --mode write --id issue-<issueId>")`

View File

@@ -39,7 +39,7 @@ Bash("ccw issue solutions <issueId> --json")
**Agent invocation**: **Agent invocation**:
``` ```
Task({ Agent({
subagent_type: "issue-queue-agent", subagent_type: "issue-queue-agent",
run_in_background: false, run_in_background: false,
description: "Form queue for <count> issues", description: "Form queue for <count> issues",

View File

@@ -40,7 +40,7 @@ Read("<session>/explorations/context-<issueId>.json")
**Agent invocation**: **Agent invocation**:
``` ```
Task({ Agent({
subagent_type: "issue-plan-agent", subagent_type: "issue-plan-agent",
run_in_background: false, run_in_background: false,
description: "Plan solution for <issueId>", description: "Plan solution for <issueId>",

View File

@@ -25,7 +25,6 @@ Every task description uses structured format:
``` ```
TaskCreate({ TaskCreate({
subject: "<TASK-ID>", subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <completion criteria> description: "PURPOSE: <what this task achieves> | Success: <completion criteria>
TASK: TASK:
- <step 1> - <step 1>
@@ -40,10 +39,9 @@ CONSTRAINTS: <scope limits>
--- ---
InnerLoop: false InnerLoop: false
execution_method: <method> execution_method: <method>
code_review: <setting>", code_review: <setting>"
blockedBy: [<dependency-list>],
status: "pending"
}) })
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
``` ```
### Pipeline Router ### Pipeline Router
@@ -62,7 +60,6 @@ code_review: <setting>",
``` ```
TaskCreate({ TaskCreate({
subject: "EXPLORE-001", subject: "EXPLORE-001",
owner: "explorer",
description: "PURPOSE: Analyze issue context and map codebase impact | Success: Context report with relevant files and dependencies description: "PURPOSE: Analyze issue context and map codebase impact | Success: Context report with relevant files and dependencies
TASK: TASK:
- Load issue details via ccw issue status - Load issue details via ccw issue status
@@ -74,17 +71,15 @@ CONTEXT:
EXPECTED: <session>/explorations/context-<issueId>.json with relevant files, dependencies, and impact assessment EXPECTED: <session>/explorations/context-<issueId>.json with relevant files, dependencies, and impact assessment
CONSTRAINTS: Exploration and analysis only, no solution design CONSTRAINTS: Exploration and analysis only, no solution design
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: [],
status: "pending"
}) })
TaskUpdate({ taskId: "EXPLORE-001", owner: "explorer" })
``` ```
**SOLVE-001** (planner): **SOLVE-001** (planner):
``` ```
TaskCreate({ TaskCreate({
subject: "SOLVE-001", subject: "SOLVE-001",
owner: "planner",
description: "PURPOSE: Design solution and decompose into implementation tasks | Success: Bound solution with task decomposition description: "PURPOSE: Design solution and decompose into implementation tasks | Success: Bound solution with task decomposition
TASK: TASK:
- Load explorer context report - Load explorer context report
@@ -97,17 +92,15 @@ CONTEXT:
EXPECTED: <session>/solutions/solution-<issueId>.json with solution plan and task list EXPECTED: <session>/solutions/solution-<issueId>.json with solution plan and task list
CONSTRAINTS: Solution design only, no code implementation CONSTRAINTS: Solution design only, no code implementation
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["EXPLORE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "SOLVE-001", addBlockedBy: ["EXPLORE-001"], owner: "planner" })
``` ```
**MARSHAL-001** (integrator): **MARSHAL-001** (integrator):
``` ```
TaskCreate({ TaskCreate({
subject: "MARSHAL-001", subject: "MARSHAL-001",
owner: "integrator",
description: "PURPOSE: Form execution queue with conflict detection and ordering | Success: Execution queue file with resolved conflicts description: "PURPOSE: Form execution queue with conflict detection and ordering | Success: Execution queue file with resolved conflicts
TASK: TASK:
- Verify all issues have bound solutions - Verify all issues have bound solutions
@@ -120,17 +113,15 @@ CONTEXT:
EXPECTED: .workflow/issues/queue/execution-queue.json with queue, conflicts, parallel groups EXPECTED: .workflow/issues/queue/execution-queue.json with queue, conflicts, parallel groups
CONSTRAINTS: Queue formation only, no implementation CONSTRAINTS: Queue formation only, no implementation
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["SOLVE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "MARSHAL-001", addBlockedBy: ["SOLVE-001"], owner: "integrator" })
``` ```
**BUILD-001** (implementer): **BUILD-001** (implementer):
``` ```
TaskCreate({ TaskCreate({
subject: "BUILD-001", subject: "BUILD-001",
owner: "implementer",
description: "PURPOSE: Implement solution plan and verify with tests | Success: Code changes committed, tests pass description: "PURPOSE: Implement solution plan and verify with tests | Success: Code changes committed, tests pass
TASK: TASK:
- Load bound solution and explorer context - Load bound solution and explorer context
@@ -146,10 +137,9 @@ CONSTRAINTS: Follow solution plan, no scope creep
--- ---
InnerLoop: false InnerLoop: false
execution_method: <execution_method> execution_method: <execution_method>
code_review: <code_review>", code_review: <code_review>"
blockedBy: ["MARSHAL-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "BUILD-001", addBlockedBy: ["MARSHAL-001"], owner: "implementer" })
``` ```
### Full Pipeline ### Full Pipeline
@@ -162,7 +152,6 @@ Creates 5 tasks. First 2 same as Quick, then AUDIT gate before MARSHAL and BUILD
``` ```
TaskCreate({ TaskCreate({
subject: "AUDIT-001", subject: "AUDIT-001",
owner: "reviewer",
description: "PURPOSE: Review solution for technical feasibility, risk, and completeness | Success: Clear verdict (approved/rejected/concerns) with scores description: "PURPOSE: Review solution for technical feasibility, risk, and completeness | Success: Clear verdict (approved/rejected/concerns) with scores
TASK: TASK:
- Load explorer context and bound solution - Load explorer context and bound solution
@@ -175,10 +164,9 @@ CONTEXT:
EXPECTED: <session>/audits/audit-report.json with per-issue scores and overall verdict EXPECTED: <session>/audits/audit-report.json with per-issue scores and overall verdict
CONSTRAINTS: Review only, do not modify solutions CONSTRAINTS: Review only, do not modify solutions
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["SOLVE-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "AUDIT-001", addBlockedBy: ["SOLVE-001"], owner: "reviewer" })
``` ```
**MARSHAL-001** (integrator): Same as Quick, but `blockedBy: ["AUDIT-001"]`. **MARSHAL-001** (integrator): Same as Quick, but `blockedBy: ["AUDIT-001"]`.
@@ -201,7 +189,6 @@ For each issue in issue_ids, create an EXPLORE task. When N > 1, assign distinct
``` ```
TaskCreate({ TaskCreate({
subject: "EXPLORE-<NNN>", subject: "EXPLORE-<NNN>",
owner: "explorer-<N>",
description: "PURPOSE: Analyze issue <issueId> context and map codebase impact | Success: Context report for <issueId> description: "PURPOSE: Analyze issue <issueId> context and map codebase impact | Success: Context report for <issueId>
TASK: TASK:
- Load issue details for <issueId> - Load issue details for <issueId>
@@ -213,20 +200,18 @@ CONTEXT:
EXPECTED: <session>/explorations/context-<issueId>.json EXPECTED: <session>/explorations/context-<issueId>.json
CONSTRAINTS: Single issue scope, exploration only CONSTRAINTS: Single issue scope, exploration only
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: [],
status: "pending"
}) })
TaskUpdate({ taskId: "EXPLORE-<NNN>", owner: "explorer-<N>" })
``` ```
**SOLVE-001..N** (planner, sequential after all EXPLORE): **SOLVE-001..N** (planner, sequential after all EXPLORE):
For each issue, create a SOLVE task blocked by all EXPLORE tasks: For each issue, create a SOLVE task blocked by all EXPLORE tasks
``` ```
TaskCreate({ TaskCreate({
subject: "SOLVE-<NNN>", subject: "SOLVE-<NNN>",
owner: "planner",
description: "PURPOSE: Design solution for <issueId> | Success: Bound solution with tasks description: "PURPOSE: Design solution for <issueId> | Success: Bound solution with tasks
TASK: TASK:
- Load explorer context for <issueId> - Load explorer context for <issueId>
@@ -239,17 +224,15 @@ CONTEXT:
EXPECTED: <session>/solutions/solution-<issueId>.json EXPECTED: <session>/solutions/solution-<issueId>.json
CONSTRAINTS: Solution design only CONSTRAINTS: Solution design only
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["EXPLORE-001", ..., "EXPLORE-<N>"],
status: "pending"
}) })
TaskUpdate({ taskId: "SOLVE-<NNN>", addBlockedBy: ["EXPLORE-001", ..., "EXPLORE-<N>"], owner: "planner" })
``` ```
**AUDIT-001** (reviewer, batch review): **AUDIT-001** (reviewer, batch review):
``` ```
TaskCreate({ TaskCreate({
subject: "AUDIT-001", subject: "AUDIT-001",
owner: "reviewer",
description: "PURPOSE: Batch review all solutions | Success: Verdict for each solution description: "PURPOSE: Batch review all solutions | Success: Verdict for each solution
TASK: TASK:
- Load all explorer contexts and bound solutions - Load all explorer contexts and bound solutions
@@ -262,10 +245,9 @@ CONTEXT:
EXPECTED: <session>/audits/audit-report.json with batch results EXPECTED: <session>/audits/audit-report.json with batch results
CONSTRAINTS: Review only CONSTRAINTS: Review only
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["SOLVE-001", ..., "SOLVE-<N>"],
status: "pending"
}) })
TaskUpdate({ taskId: "AUDIT-001", addBlockedBy: ["SOLVE-001", ..., "SOLVE-<N>"], owner: "reviewer" })
``` ```
**MARSHAL-001** (integrator): `blockedBy: ["AUDIT-001"]`. **MARSHAL-001** (integrator): `blockedBy: ["AUDIT-001"]`.
@@ -282,7 +264,6 @@ After MARSHAL produces execution queue, create M BUILD tasks based on parallel g
``` ```
TaskCreate({ TaskCreate({
subject: "BUILD-<NNN>", subject: "BUILD-<NNN>",
owner: "implementer-<M>",
description: "PURPOSE: Implement solution for <issueId> | Success: Code committed, tests pass description: "PURPOSE: Implement solution for <issueId> | Success: Code committed, tests pass
TASK: TASK:
- Load bound solution and explorer context - Load bound solution and explorer context
@@ -297,10 +278,9 @@ CONSTRAINTS: Follow solution plan
--- ---
InnerLoop: false InnerLoop: false
execution_method: <execution_method> execution_method: <execution_method>
code_review: <code_review>", code_review: <code_review>"
blockedBy: ["MARSHAL-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "BUILD-<NNN>", addBlockedBy: ["MARSHAL-001"], owner: "implementer-<M>" })
``` ```
> **Note**: In Batch mode, BUILD task count M may not be known at dispatch time (depends on MARSHAL queue output). Create BUILD tasks with placeholder count, or defer BUILD task creation to handleCallback when MARSHAL completes. Coordinator should check for deferred BUILD task creation in monitor.md handleCallback for integrator. > **Note**: In Batch mode, BUILD task count M may not be known at dispatch time (depends on MARSHAL queue output). Create BUILD tasks with placeholder count, or defer BUILD task creation to handleCallback when MARSHAL completes. Coordinator should check for deferred BUILD task creation in monitor.md handleCallback for integrator.
@@ -313,7 +293,6 @@ When AUDIT rejects a solution, coordinator creates fix tasks dynamically (NOT at
``` ```
TaskCreate({ TaskCreate({
subject: "SOLVE-fix-001", subject: "SOLVE-fix-001",
owner: "planner",
description: "PURPOSE: Revise solution addressing reviewer feedback (fix cycle <round>) | Success: Revised solution addressing rejection reasons description: "PURPOSE: Revise solution addressing reviewer feedback (fix cycle <round>) | Success: Revised solution addressing rejection reasons
TASK: TASK:
- Read reviewer feedback from audit report - Read reviewer feedback from audit report
@@ -327,17 +306,15 @@ CONTEXT:
EXPECTED: <session>/solutions/solution-<issueId>.json (revised) EXPECTED: <session>/solutions/solution-<issueId>.json (revised)
CONSTRAINTS: Address reviewer concerns specifically CONSTRAINTS: Address reviewer concerns specifically
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["AUDIT-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "SOLVE-fix-001", addBlockedBy: ["AUDIT-001"], owner: "planner" })
``` ```
**AUDIT-002** (reviewer, re-review): **AUDIT-002** (reviewer, re-review):
``` ```
TaskCreate({ TaskCreate({
subject: "AUDIT-002", subject: "AUDIT-002",
owner: "reviewer",
description: "PURPOSE: Re-review revised solution (fix cycle <round>) | Success: Verdict on revised solution description: "PURPOSE: Re-review revised solution (fix cycle <round>) | Success: Verdict on revised solution
TASK: TASK:
- Load revised solution - Load revised solution
@@ -350,10 +327,9 @@ CONTEXT:
EXPECTED: <session>/audits/audit-report.json (updated) EXPECTED: <session>/audits/audit-report.json (updated)
CONSTRAINTS: Focus on previously rejected dimensions CONSTRAINTS: Focus on previously rejected dimensions
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["SOLVE-fix-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "AUDIT-002", addBlockedBy: ["SOLVE-fix-001"], owner: "reviewer" })
``` ```
These fix tasks are created dynamically by handleCallback in monitor.md when reviewer reports rejection, NOT during initial dispatch. These fix tasks are created dynamically by handleCallback in monitor.md when reviewer reports rejection, NOT during initial dispatch.

View File

@@ -83,7 +83,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker: 2. For each ready task, spawn team-worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>", description: "Spawn <role> worker for <task-id>",
team_name: "issue", team_name: "issue",
@@ -116,7 +116,7 @@ Execute built-in Phase 1 -> role-spec Phase 2-4 -> built-in Phase 5.`
4. **Parallel spawn** (Batch mode with multiple ready tasks for same role): 4. **Parallel spawn** (Batch mode with multiple ready tasks for same role):
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role>-<N> worker for <task-id>", description: "Spawn <role>-<N> worker for <task-id>",
team_name: "issue", team_name: "issue",

View File

@@ -205,7 +205,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task and spawn its worker: Find first unblocked task and spawn its worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn explorer worker", description: "Spawn explorer worker",
team_name: "issue", team_name: "issue",
@@ -273,6 +273,6 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("issue") -> output final summary | | Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-issue', args='resume')" | | Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-issue', args='resume')" |
| New Batch | Return to Phase 1 | | New Batch | Return to Phase 1 |

View File

@@ -1,7 +1,7 @@
--- ---
name: team-iterdev name: team-iterdev
description: Unified team skill for iterative development team. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team iterdev". description: Unified team skill for iterative development team. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team iterdev".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team IterDev # Team IterDev
@@ -412,7 +412,7 @@ Real-time tracking of all sprint task progress. Coordinator updates at each task
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: "iterdev", team_name: "iterdev",
@@ -459,7 +459,7 @@ AskUserQuestion({
| Choice | Action | | Choice | Action |
|--------|--------| |--------|--------|
| Archive & Clean | Update session status="completed" -> TeamDelete(iterdev) -> output final summary | | Archive & Clean | Update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-iterdev", args="resume")` | | Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-iterdev", args="resume")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean | | Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

@@ -24,7 +24,6 @@ Every task description uses structured format for clarity:
``` ```
TaskCreate({ TaskCreate({
subject: "<TASK-ID>", subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria> description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
TASK: TASK:
- <step 1: specific action> - <step 1: specific action>
@@ -38,10 +37,9 @@ CONTEXT:
EXPECTED: <deliverable path> + <quality criteria> EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits, focus areas> CONSTRAINTS: <scope limits, focus areas>
--- ---
InnerLoop: <true|false>", InnerLoop: <true|false>"
blockedBy: [<dependency-list>],
status: "pending"
}) })
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
``` ```
### Mode Router ### Mode Router
@@ -60,7 +58,6 @@ InnerLoop: <true|false>",
``` ```
TaskCreate({ TaskCreate({
subject: "DEV-001", subject: "DEV-001",
owner: "developer",
description: "PURPOSE: Implement fix | Success: Fix applied, syntax clean description: "PURPOSE: Implement fix | Success: Fix applied, syntax clean
TASK: TASK:
- Load target files and understand context - Load target files and understand context
@@ -73,16 +70,15 @@ CONTEXT:
EXPECTED: Modified source files + <session>/code/dev-log.md | Syntax clean EXPECTED: Modified source files + <session>/code/dev-log.md | Syntax clean
CONSTRAINTS: Minimal changes | Preserve existing behavior CONSTRAINTS: Minimal changes | Preserve existing behavior
--- ---
InnerLoop: true", InnerLoop: true"
status: "pending"
}) })
TaskUpdate({ taskId: "DEV-001", owner: "developer" })
``` ```
**VERIFY-001** (tester): **VERIFY-001** (tester):
``` ```
TaskCreate({ TaskCreate({
subject: "VERIFY-001", subject: "VERIFY-001",
owner: "tester",
description: "PURPOSE: Verify fix correctness | Success: Tests pass, no regressions description: "PURPOSE: Verify fix correctness | Success: Tests pass, no regressions
TASK: TASK:
- Detect test framework - Detect test framework
@@ -96,10 +92,9 @@ CONTEXT:
EXPECTED: <session>/verify/verify-001.json | Pass rate >= 95% EXPECTED: <session>/verify/verify-001.json | Pass rate >= 95%
CONSTRAINTS: Focus on changed files | Report any regressions CONSTRAINTS: Focus on changed files | Report any regressions
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["DEV-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "VERIFY-001", addBlockedBy: ["DEV-001"], owner: "tester" })
``` ```
--- ---
@@ -110,7 +105,6 @@ InnerLoop: false",
``` ```
TaskCreate({ TaskCreate({
subject: "DESIGN-001", subject: "DESIGN-001",
owner: "architect",
description: "PURPOSE: Technical design and task breakdown | Success: Design document + task breakdown ready description: "PURPOSE: Technical design and task breakdown | Success: Design document + task breakdown ready
TASK: TASK:
- Explore codebase for patterns and dependencies - Explore codebase for patterns and dependencies
@@ -123,16 +117,15 @@ CONTEXT:
EXPECTED: <session>/design/design-001.md + <session>/design/task-breakdown.json | Components defined, tasks actionable EXPECTED: <session>/design/design-001.md + <session>/design/task-breakdown.json | Components defined, tasks actionable
CONSTRAINTS: Focus on <task-scope> | Risk assessment required CONSTRAINTS: Focus on <task-scope> | Risk assessment required
--- ---
InnerLoop: false", InnerLoop: false"
status: "pending"
}) })
TaskUpdate({ taskId: "DESIGN-001", owner: "architect" })
``` ```
**DEV-001** (developer): **DEV-001** (developer):
``` ```
TaskCreate({ TaskCreate({
subject: "DEV-001", subject: "DEV-001",
owner: "developer",
description: "PURPOSE: Implement design | Success: All design tasks implemented, syntax clean description: "PURPOSE: Implement design | Success: All design tasks implemented, syntax clean
TASK: TASK:
- Load design and task breakdown - Load design and task breakdown
@@ -146,17 +139,15 @@ CONTEXT:
EXPECTED: Modified source files + <session>/code/dev-log.md | Syntax clean, all tasks done EXPECTED: Modified source files + <session>/code/dev-log.md | Syntax clean, all tasks done
CONSTRAINTS: Follow design | Preserve existing behavior | Follow code conventions CONSTRAINTS: Follow design | Preserve existing behavior | Follow code conventions
--- ---
InnerLoop: true", InnerLoop: true"
blockedBy: ["DESIGN-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "DEV-001", addBlockedBy: ["DESIGN-001"], owner: "developer" })
``` ```
**VERIFY-001** (tester, parallel with REVIEW-001): **VERIFY-001** (tester, parallel with REVIEW-001):
``` ```
TaskCreate({ TaskCreate({
subject: "VERIFY-001", subject: "VERIFY-001",
owner: "tester",
description: "PURPOSE: Verify implementation | Success: Tests pass, no regressions description: "PURPOSE: Verify implementation | Success: Tests pass, no regressions
TASK: TASK:
- Detect test framework - Detect test framework
@@ -170,17 +161,15 @@ CONTEXT:
EXPECTED: <session>/verify/verify-001.json | Pass rate >= 95% EXPECTED: <session>/verify/verify-001.json | Pass rate >= 95%
CONSTRAINTS: Focus on changed files | Report regressions CONSTRAINTS: Focus on changed files | Report regressions
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["DEV-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "VERIFY-001", addBlockedBy: ["DEV-001"], owner: "tester" })
``` ```
**REVIEW-001** (reviewer, parallel with VERIFY-001): **REVIEW-001** (reviewer, parallel with VERIFY-001):
``` ```
TaskCreate({ TaskCreate({
subject: "REVIEW-001", subject: "REVIEW-001",
owner: "reviewer",
description: "PURPOSE: Code review for correctness and quality | Success: All dimensions reviewed, verdict issued description: "PURPOSE: Code review for correctness and quality | Success: All dimensions reviewed, verdict issued
TASK: TASK:
- Load changed files and design document - Load changed files and design document
@@ -194,10 +183,9 @@ CONTEXT:
EXPECTED: <session>/review/review-001.md | Per-dimension findings with severity EXPECTED: <session>/review/review-001.md | Per-dimension findings with severity
CONSTRAINTS: Focus on implementation changes | Provide file:line references CONSTRAINTS: Focus on implementation changes | Provide file:line references
--- ---
InnerLoop: false", InnerLoop: false"
blockedBy: ["DEV-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "REVIEW-001", addBlockedBy: ["DEV-001"], owner: "reviewer" })
``` ```
--- ---
@@ -212,7 +200,6 @@ Create Sprint 1 tasks using sprint templates above, plus:
``` ```
TaskCreate({ TaskCreate({
subject: "DEV-002", subject: "DEV-002",
owner: "developer",
description: "PURPOSE: Incremental implementation | Success: Remaining tasks implemented description: "PURPOSE: Incremental implementation | Success: Remaining tasks implemented
TASK: TASK:
- Load remaining tasks from breakdown - Load remaining tasks from breakdown
@@ -226,10 +213,9 @@ CONTEXT:
EXPECTED: Modified source files + updated dev-log.md EXPECTED: Modified source files + updated dev-log.md
CONSTRAINTS: Incremental delivery | Follow existing patterns CONSTRAINTS: Incremental delivery | Follow existing patterns
--- ---
InnerLoop: true", InnerLoop: true"
blockedBy: ["DEV-001"],
status: "pending"
}) })
TaskUpdate({ taskId: "DEV-002", addBlockedBy: ["DEV-001"], owner: "developer" })
``` ```
Subsequent sprints created dynamically after Sprint N completes. Subsequent sprints created dynamically after Sprint N completes.

View File

@@ -83,7 +83,7 @@ Find and spawn the next ready tasks.
3. Spawn team-worker: 3. Spawn team-worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>", description: "Spawn <role> worker for <task-id>",
team_name: "iterdev", team_name: "iterdev",

View File

@@ -199,7 +199,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task and spawn its worker: Find first unblocked task and spawn its worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: "iterdev", team_name: "iterdev",
@@ -266,6 +266,6 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("iterdev") -> output final summary | | Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-iterdev', args='resume')" | | Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-iterdev', args='resume')" |
| Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow | | Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow |

View File

@@ -1,7 +1,7 @@
--- ---
name: team-lifecycle name: team-lifecycle
description: Unified team skill for full lifecycle - spec/impl/test. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents loaded with role-specific Phase 2-4 specs. Triggers on "team lifecycle". description: Unified team skill for full lifecycle - spec/impl/test. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents loaded with role-specific Phase 2-4 specs. Triggers on "team lifecycle".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team Lifecycle # Team Lifecycle
@@ -110,7 +110,7 @@ User provides task description
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: <team-name>, team_name: <team-name>,

View File

@@ -47,7 +47,7 @@ EXPECTED: JSON with: problem_statement, target_users[], domain, constraints[], e
**When project detected**: Call explore subagent with `angle: general`, `keywords: <from seed analysis>`. **When project detected**: Call explore subagent with `angle: general`, `keywords: <from seed analysis>`.
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore general context", description: "Explore general context",

View File

@@ -42,7 +42,7 @@ message_types:
| Backend | Invocation | Use Case | | Backend | Invocation | Use Case |
|---------|-----------|----------| |---------|-----------|----------|
| agent | `Task({ subagent_type: "code-developer", run_in_background: false })` | Simple, direct edits | | agent | `Agent({ subagent_type: "code-developer", run_in_background: false })` | Simple, direct edits |
| codex | `ccw cli --tool codex --mode write` (background) | Complex, architecture | | codex | `ccw cli --tool codex --mode write` (background) | Complex, architecture |
| gemini | `ccw cli --tool gemini --mode write` (background) | Analysis-heavy | | gemini | `ccw cli --tool gemini --mode write` (background) | Analysis-heavy |

View File

@@ -42,7 +42,7 @@ message_types:
| Task Size | Strategy | | Task Size | Strategy |
|-----------|----------| |-----------|----------|
| Simple (<= 3 files, single component) | `Task({ subagent_type: "code-developer", run_in_background: false })` | | Simple (<= 3 files, single component) | `Agent({ subagent_type: "code-developer", run_in_background: false })` |
| Complex (system, multi-component) | `ccw cli --tool gemini --mode write` (background) | | Complex (system, multi-component) | `ccw cli --tool gemini --mode write` (background) |
**Coding standards** (include in agent/CLI prompt): **Coding standards** (include in agent/CLI prompt):

View File

@@ -33,7 +33,7 @@ If `<session-folder>/spec/` exists → load requirements/_index.md, architecture
For each angle, call explore subagent (cache-aware — check cache-index.json before each call): For each angle, call explore subagent (cache-aware — check cache-index.json before each call):
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore <angle>", description: "Explore <angle>",
@@ -53,7 +53,7 @@ Task({
**Agent call** (Medium/High): **Agent call** (Medium/High):
``` ```
Task({ Agent({
subagent_type: "cli-lite-planning-agent", subagent_type: "cli-lite-planning-agent",
run_in_background: false, run_in_background: false,
description: "Generate implementation plan", description: "Generate implementation plan",

View File

@@ -61,7 +61,7 @@ message_types:
Do NOT execute CLI calls in main agent. Delegate to subagent: Do NOT execute CLI calls in main agent. Delegate to subagent:
``` ```
Task({ Agent({
subagent_type: "universal-executor", subagent_type: "universal-executor",
run_in_background: false, run_in_background: false,
description: "Generate <doc-type> document", description: "Generate <doc-type> document",

View File

@@ -85,7 +85,7 @@ Every task description uses structured format for clarity:
``` ```
TaskCreate({ TaskCreate({
subject: "<TASK-ID>", subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria> description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
TASK: TASK:
- <step 1: specific action> - <step 1: specific action>
@@ -102,8 +102,8 @@ CONSTRAINTS: <scope limits, focus areas>
--- ---
InlineDiscuss: <DISCUSS-NNN or none> InlineDiscuss: <DISCUSS-NNN or none>
InnerLoop: <true|false>", InnerLoop: <true|false>",
blockedBy: [<dependency-list>], addBlockedBy: [<dependency-list>]
status: "pending"
}) })
``` ```
@@ -186,7 +186,7 @@ EXPECTED: Improved artifacts + quality improvement summary
CONSTRAINTS: Focus on <dimension> only CONSTRAINTS: Focus on <dimension> only
--- ---
InnerLoop: true", InnerLoop: true",
status: "pending"
}) })
``` ```

View File

@@ -128,7 +128,7 @@ Collect task states from TaskList()
+- TaskUpdate -> in_progress +- TaskUpdate -> in_progress
+- team_msg log -> task_unblocked +- team_msg log -> task_unblocked
+- Spawn team-worker: +- Spawn team-worker:
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <subject>", description: "Spawn <role> worker for <subject>",
team_name: <team-name>, team_name: <team-name>,

View File

@@ -13,7 +13,7 @@ In v4, discuss is a **subagent call** from within the producing role, reducing e
Called by produce roles after artifact creation: Called by produce roles after artifact creation:
``` ```
Task({ Agent({
subagent_type: "cli-discuss-agent", subagent_type: "cli-discuss-agent",
run_in_background: false, run_in_background: false,
description: "Discuss <round-id>", description: "Discuss <round-id>",

View File

@@ -12,7 +12,7 @@ writer 只拿到压缩摘要,可在多任务间保持上下文连续。
## Invocation ## Invocation
``` ```
Task({ Agent({
subagent_type: "universal-executor", subagent_type: "universal-executor",
run_in_background: false, run_in_background: false,
description: "Generate <doc-type>", description: "Generate <doc-type>",

View File

@@ -14,7 +14,7 @@ Results were scattered across different directories and never shared. In v4, all
## Invocation ## Invocation
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore <angle>", description: "Explore <angle>",
@@ -135,9 +135,10 @@ For complex queries, call cli-explore-agent per angle. The calling role determin
``` ```
# After seed analysis, explore codebase context # After seed analysis, explore codebase context
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
description: "Explore general context", description: "Explore general context",
run_in_background: false,
prompt: "Explore codebase for: <topic>\nFocus angle: general\n..." prompt: "Explore codebase for: <topic>\nFocus angle: general\n..."
}) })
# Result feeds into discovery-context.json # Result feeds into discovery-context.json
@@ -148,9 +149,10 @@ Task({
``` ```
# Multi-angle exploration before plan generation # Multi-angle exploration before plan generation
for angle in selected_angles: for angle in selected_angles:
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
description: "Explore <angle>", description: "Explore <angle>",
run_in_background: false,
prompt: "Explore codebase for: <task>\nFocus angle: <angle>\n..." prompt: "Explore codebase for: <task>\nFocus angle: <angle>\n..."
}) })
# Explorations manifest built from cache-index.json # Explorations manifest built from cache-index.json

View File

@@ -1,7 +1,7 @@
--- ---
name: team-perf-opt name: team-perf-opt
description: Unified team skill for performance optimization. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Triggers on "team perf-opt". description: Unified team skill for performance optimization. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Triggers on "team perf-opt".
allowed-tools: Task, TaskCreate, TaskList, TaskGet, TaskUpdate, TeamCreate, TeamDelete, SendMessage, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, mcp__ace-tool__search_context allowed-tools: Agent, TaskCreate, TaskList, TaskGet, TaskUpdate, TeamCreate, TeamDelete, SendMessage, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, mcp__ace-tool__search_context
--- ---
# Team Performance Optimization # Team Performance Optimization
@@ -137,7 +137,7 @@ Phase 3 needs task dispatch
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: <team-name>, team_name: <team-name>,
@@ -361,7 +361,7 @@ AskUserQuestion({
| Choice | Action | | Choice | Action |
|--------|--------| |--------|--------|
| Archive & Clean | Update session status="completed" -> TeamDelete(perf-opt) -> output final summary | | Archive & Clean | Update session status="completed" -> TeamDelete() -> output final summary |
| Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-perf-opt", args="resume")` | | Keep Active | Update session status="paused" -> output resume instructions: `Skill(skill="team-perf-opt", args="resume")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean | | Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

@@ -65,7 +65,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker: 2. For each ready task, spawn team-worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>", description: "Spawn <role> worker for <task-id>",
team_name: "perf-opt", team_name: "perf-opt",

View File

@@ -229,7 +229,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task and spawn its worker: Find first unblocked task and spawn its worker:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn profiler worker", description: "Spawn profiler worker",
team_name: "perf-opt", team_name: "perf-opt",
@@ -298,6 +298,6 @@ AskUserQuestion({
| Choice | Steps | | Choice | Steps |
|--------|-------| |--------|-------|
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("perf-opt") -> output final summary with artifact paths | | Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete() -> output final summary with artifact paths |
| Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-perf-opt', args='resume')" | | Keep Active | Update session status="paused" -> output: "Session paused. Resume with: Skill(skill='team-perf-opt', args='resume')" |
| Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow | | Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow |

View File

@@ -11,7 +11,7 @@ Complex optimization decisions (e.g., choosing between algorithmic change vs cac
Called by strategist, reviewer after their primary analysis when complexity warrants multi-perspective evaluation: Called by strategist, reviewer after their primary analysis when complexity warrants multi-perspective evaluation:
``` ```
Task({ Agent({
subagent_type: "cli-discuss-agent", subagent_type: "cli-discuss-agent",
run_in_background: false, run_in_background: false,
description: "Discuss <round-id>: <topic> for performance optimization", description: "Discuss <round-id>: <topic> for performance optimization",

View File

@@ -11,7 +11,7 @@ Codebase exploration is a read-only operation shared between profiler (mapping b
Called by profiler, optimizer after needing codebase context for performance analysis or implementation: Called by profiler, optimizer after needing codebase context for performance analysis or implementation:
``` ```
Task({ Agent({
subagent_type: "cli-explore-agent", subagent_type: "cli-explore-agent",
run_in_background: false, run_in_background: false,
description: "Explore codebase for performance-critical paths in <target-scope>", description: "Explore codebase for performance-critical paths in <target-scope>",

View File

@@ -1,7 +1,7 @@
--- ---
name: team-planex name: team-planex
description: Unified team skill for plan-and-execute pipeline. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Triggers on "team planex". description: Unified team skill for plan-and-execute pipeline. Uses team-worker agent architecture with role-spec files for domain logic. Coordinator orchestrates pipeline, workers are team-worker agents. Triggers on "team planex".
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*) allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*)
--- ---
# Team PlanEx # Team PlanEx
@@ -128,7 +128,7 @@ When coordinator needs to execute a command (dispatch, monitor):
When coordinator spawns workers, use `team-worker` agent with role-spec path: When coordinator spawns workers, use `team-worker` agent with role-spec path:
``` ```
Task({ Agent({
subagent_type: "team-worker", subagent_type: "team-worker",
description: "Spawn <role> worker", description: "Spawn <role> worker",
team_name: <team-name>, team_name: <team-name>,

Some files were not shown because too many files have changed in this diff Show More