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
### 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
### 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
})
```
- **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
### 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)
4. **Has matching tasks** → pick first by ID order
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
@@ -130,7 +130,7 @@ When role_spec instructs to call a subagent, use these templates:
**Discuss subagent** (for inline discuss rounds):
```
Task({
Agent({
subagent_type: "cli-discuss-agent",
run_in_background: false,
description: "Discuss <round-id>",
@@ -169,7 +169,7 @@ JSON with: verdict (consensus_reached|consensus_blocked), severity (HIGH|MEDIUM|
**Explore subagent** (for codebase exploration):
```
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
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):
```
Task({
Agent({
subagent_type: "universal-executor",
run_in_background: false,
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`
2. **Message Bus**: Log state_update (same call as Phase 5-L step 2)
3. **Compile final report** and **SendMessage** to coordinator:
```
SendMessage(team_name=<team_name>, recipient="coordinator", message="[<role>] <final-report>")
```javascript
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.
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 |
|-----------|--------|
| 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) |
| No ready tasks + others running | SendMessage to coordinator (status update) |
| 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:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <successor-role> worker",
team_name: <team_name>,

View File

@@ -2,7 +2,7 @@
name: ccw-coordinator
description: Command orchestration tool - analyze requirements, recommend chain, execute sequentially with state persistence
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

View File

@@ -2,7 +2,7 @@
name: run-coordinate
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>]"
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)
@@ -216,7 +216,7 @@ const chain = firstTask.skill_chain || SKILL_CHAIN_MAP[resolvedType] || SKILL_CH
firstTask.status = 'in_progress';
firstTask.task_type = resolvedType;
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
session.current_task = firstTask.id;
@@ -239,7 +239,7 @@ CONSTRAINTS: Keep concise`;
// Assemble prompt for first skill
const skillName = chain[0];
const prompt = assembleCliPrompt(skillName, firstTask, null, autoYes);
const prompt = assembleCliPrompt(skillName, firstAgent, null, autoYes);
session.prompts_used.push({
task_id: firstTask.id,
@@ -403,7 +403,7 @@ CONSTRAINTS: Actionable diagnosis`;
nextTask.status = 'in_progress';
nextTask.task_type = nextType;
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_skill_index = 0;
@@ -417,7 +417,7 @@ CONSTRAINTS: Actionable diagnosis`;
}
const nextSkillName = nextChain[0];
const nextPrompt = assembleCliPrompt(nextSkillName, nextTask, null, true);
const nextPrompt = assembleCliPrompt(nextSkillName, nextAgent, null, true);
session.prompts_used.push({
task_id: nextTaskId,

View File

@@ -2,7 +2,7 @@
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).
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
@@ -404,7 +404,7 @@ while (shouldContinue && iteration < maxIterations) {
// Step 3: Launch dimension agents with ACE context
const agentPromises = iterationPlan.dimensions.map(dimension =>
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Explore ${dimension.name} (iteration ${iteration})`,

View File

@@ -2,7 +2,7 @@
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.
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
@@ -185,7 +185,7 @@ Launch N agents in parallel (one per selected perspective):
```javascript
// Launch agents in parallel - agents write JSON and return summary
const agentPromises = selectedPerspectives.map(perspective =>
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Discover ${perspective} issues`,
@@ -322,7 +322,7 @@ if (response === "Export to Issues") {
**Perspective Analysis Agent**:
```javascript
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Discover ${perspective} issues`,
@@ -368,7 +368,7 @@ Task({
**Exa Research Agent** (for security and best-practices):
```javascript
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `External research for ${perspective} via Exa`,

View File

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

View File

@@ -2,7 +2,7 @@
name: plan
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]"
allowed-tools: TodoWrite(*), Task(*), Skill(*), AskUserQuestion(*), Bash(*), Read(*), Write(*)
allowed-tools: TodoWrite(*), Agent(*), Skill(*), AskUserQuestion(*), Bash(*), Read(*), Write(*)
---
## Auto Mode
@@ -222,7 +222,7 @@ for (let i = 0; i < agentTasks.length; i += MAX_PARALLEL) {
// Collect results from this chunk
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...```)
const jsonText = extractJsonFromMarkdown(result);

View File

@@ -2,7 +2,7 @@
name: queue
description: Form execution queue from bound solutions using issue-queue-agent (solution-level)
argument-hint: "[-y|--yes] [--queues <n>] [--issue <id>]"
allowed-tools: TodoWrite(*), Task(*), Bash(*), Read(*), Write(*)
allowed-tools: TodoWrite(*), Agent(*), Bash(*), Read(*), Write(*)
---
## Auto Mode
@@ -247,7 +247,7 @@ if (numQueues === 1) {
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
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\""
allowed-tools: Task(*), Bash(*)
allowed-tools: Agent(*), Bash(*)
examples:
- /memory:prepare "在当前前端基础上开发用户认证功能"
- /memory:prepare --tool qwen "重构支付模块API"

View File

@@ -2,7 +2,7 @@
name: analyze-with-file
description: Interactive collaborative analysis with documented discussions, CLI-assisted exploration, and evolving understanding
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
@@ -226,7 +226,7 @@ Interactive collaborative analysis workflow with **documented discussion process
**Single Exploration Example**:
```javascript
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Explore codebase: ${topicSlug}`,
@@ -256,7 +256,7 @@ Schema: {relevant_files, patterns, key_findings, questions_for_user, _metadata}
```javascript
// Launch parallel explorations for each selected perspective
selectedPerspectives.forEach(perspective => {
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false, // Sequential execution, wait for each
description: `Explore ${perspective.name}: ${topicSlug}`,
@@ -399,7 +399,7 @@ CONSTRAINTS: ${perspective.constraints}
- explorations.json contains initial findings
- 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**:
@@ -739,7 +739,7 @@ In round 1 we discussed X, then in round 2 user said Y...
## Best Practices
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
4. **Embrace Corrections**: Track wrong-to-right transformations as learnings
5. **Document Evolution**: discussion.md captures full thinking process

View File

@@ -2,7 +2,7 @@
name: brainstorm-with-file
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\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
---
## Auto Mode
@@ -245,7 +245,7 @@ Output as structured exploration vectors for multi-perspective analysis.
**Agent Call Example**:
```javascript
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Explore codebase for brainstorm: ${topicSlug}`,
@@ -410,7 +410,7 @@ CONSTRAINTS: Consider existing system architecture
- perspectives.json contains initial ideas
- 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**:
@@ -725,7 +725,7 @@ Dimensions matched against topic keywords to identify focus areas:
## Best Practices
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
4. **Embrace Conflicts**: Perspective conflicts often reveal important tradeoffs
5. **Document Evolution**: brainstorm.md captures full thinking process for team review

View File

@@ -2,7 +2,7 @@
name: clean
description: Intelligent code cleanup with mainline detection, stale artifact discovery, and safe execution
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)

View File

@@ -2,7 +2,7 @@
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.
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

View File

@@ -2,7 +2,7 @@
name: debug-with-file
description: Interactive hypothesis-driven debugging with documented exploration, understanding evolution, and Gemini-assisted correction
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

View File

@@ -2,7 +2,7 @@
name: integration-test-cycle
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\""
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
@@ -209,7 +209,7 @@ Unified integration test workflow: **Explore → Design → Develop → Test →
1. **Codebase Exploration via cli-explore-agent**
```javascript
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Explore integration points: ${topicSlug}`,
@@ -391,7 +391,7 @@ Also set `state.json.phase` to `"designed"`.
1. **Generate Integration Tests via @code-developer**
```javascript
Task({
Agent({
subagent_type: "code-developer",
run_in_background: false,
description: `Generate integration tests: ${topicSlug}`,
@@ -435,7 +435,7 @@ Also set state.json "phase" to "developed".
2. **Code Validation Gate via @test-fix-agent**
```javascript
Task({
Agent({
subagent_type: "test-fix-agent",
run_in_background: false,
description: `Validate generated tests: ${topicSlug}`,
@@ -605,7 +605,7 @@ After each iteration, update the `## Cumulative Learnings` section in reflection
**@test-fix-agent** (test execution):
```javascript
Task({
Agent({
subagent_type: "test-fix-agent",
run_in_background: false,
description: `Execute integration tests: iteration ${N}`,
@@ -637,7 +637,7 @@ For each failure, assign:
**@cli-planning-agent** (failure analysis with reflection):
```javascript
Task({
Agent({
subagent_type: "cli-planning-agent",
run_in_background: false,
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):
```javascript
Task({
Agent({
subagent_type: "test-fix-agent",
run_in_background: false,
description: `Apply fixes: iteration ${N} - ${strategy}`,

View File

@@ -2,7 +2,7 @@
name: refactor-cycle
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\""
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
allowed-tools: TodoWrite(*), Agent(*), AskUserQuestion(*), Read(*), Grep(*), Glob(*), Bash(*), Edit(*), Write(*)
---
## Auto Mode
@@ -200,7 +200,7 @@ Closed-loop tech debt lifecycle: **Discover → Assess → Plan → Refactor →
1. **Codebase Exploration via cli-explore-agent**
```javascript
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: `Explore codebase for debt: ${topicSlug}`,
@@ -465,7 +465,7 @@ Set `state.json.current_item` to item ID.
#### Step 4.2: Execute Refactoring
```javascript
Task({
Agent({
subagent_type: "code-developer",
run_in_background: false,
description: `Refactor ${item.id}: ${item.title}`,
@@ -499,7 +499,7 @@ ${JSON.stringify(item.refactor_plan, null, 2)}
```javascript
// 1. Run tests
Task({
Agent({
subagent_type: "test-fix-agent",
run_in_background: false,
description: `Validate refactoring: ${item.id}`,

View File

@@ -2,7 +2,7 @@
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.
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
@@ -355,12 +355,12 @@ Bash(`mkdir -p ${sessionFolder}`)
**Agent Prompt Template**:
```javascript
Task({
Agent({
subagent_type: "cli-roadmap-plan-agent",
run_in_background: false,
description: `Roadmap decomposition: ${slug}`,
prompt: `
## Roadmap Decomposition Task
## Roadmap Decomposition Agent
### Input Context
- **Requirement**: ${requirement}

View File

@@ -2,7 +2,7 @@
name: animation-extract
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]"
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
@@ -207,14 +207,14 @@ IF has_images:
### 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
```javascript
IF NOT refine_mode:
// EXPLORATION MODE (default)
Task(ui-design-agent): `
Agent(ui-design-agent): `
[ANIMATION_SPECIFICATION_GENERATION_TASK]
Generate context-aware animation specification questions
@@ -308,7 +308,7 @@ IF NOT refine_mode:
ELSE:
// REFINEMENT MODE
Task(ui-design-agent): `
Agent(ui-design-agent): `
[ANIMATION_REFINEMENT_OPTIONS_TASK]
Generate refinement options for existing animation system
@@ -656,7 +656,7 @@ ELSE:
## 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
@@ -706,14 +706,14 @@ IF has_images:
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
```javascript
IF NOT refine_mode:
// EXPLORATION MODE
Task(ui-design-agent): `
Agent(ui-design-agent): `
[ANIMATION_SYSTEM_GENERATION_TASK]
Generate production-ready animation system based on user preferences and CSS extraction
@@ -871,7 +871,7 @@ IF NOT refine_mode:
ELSE:
// REFINEMENT MODE
Task(ui-design-agent): `
Agent(ui-design-agent): `
[ANIMATION_SYSTEM_REFINEMENT_TASK]
Apply selected refinements to existing animation system

View File

@@ -2,7 +2,7 @@
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
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

View File

@@ -2,7 +2,7 @@
name: generate
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>]
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)
@@ -129,7 +129,7 @@ ELSE:
## 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)
@@ -204,7 +204,7 @@ TodoWrite({todos: [
For each batch (up to 6 parallel agents per batch):
For each agent group `{target, style_id, layout_ids[]}` in current batch:
```javascript
Task(ui-design-agent): `
Agent(ui-design-agent): `
[LAYOUT_STYLE_ASSEMBLY]
🎯 {target} × Style-{style_id} × Layouts-{layout_ids}
⚠️ 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
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>]"
allowed-tools: Read,Write,Bash,Glob,Grep,Task,TodoWrite
allowed-tools: Read,Write,Bash,Glob,Grep,Agent,TodoWrite
auto-continue: true
---

View File

@@ -2,7 +2,7 @@
name: layout-extract
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]"
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
@@ -162,7 +162,7 @@ IF refine_mode:
```
### 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
**Refinement Mode** (`--refine`): Generate refinement options for existing layouts
@@ -171,7 +171,7 @@ IF refine_mode:
// Conditional agent task based on refine_mode
IF NOT refine_mode:
// EXPLORATION MODE
Task(ui-design-agent): `
Agent(ui-design-agent): `
[LAYOUT_CONCEPT_GENERATION_TASK]
Generate {variants_count} structurally distinct layout concepts for each target
@@ -217,7 +217,7 @@ IF NOT refine_mode:
`
ELSE:
// REFINEMENT MODE
Task(ui-design-agent): `
Agent(ui-design-agent): `
[LAYOUT_REFINEMENT_OPTIONS_TASK]
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)
**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
```bash
@@ -512,7 +512,7 @@ REPORT: "Generating {total_tasks} layout templates across {targets.length} targe
Generate layout templates for ALL selected concepts in parallel:
```javascript
FOR each task in task_list:
Task(ui-design-agent): `
Agent(ui-design-agent): `
[LAYOUT_TEMPLATE_GENERATION_TASK #{task.variant_id} for {task.target}]
Generate detailed layout template based on user-selected concept.
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
description: Generate multi-component reference pages and documentation from design run extraction
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
---
@@ -198,7 +198,7 @@ echo "[Phase 1] Component data preparation complete"
**Agent Task**:
```javascript
Task(ui-design-agent): `
Agent(ui-design-agent): `
[PREVIEW_SHOWCASE_GENERATION]
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)
3. ${package_dir}/animation-tokens.json (optional, if exists)
## Generation Task
## Generation Agent
Create interactive showcase with these sections:

View File

@@ -2,7 +2,7 @@
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
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
@@ -34,7 +34,7 @@ When `--yes` or `-y`: Auto-confirm execution decisions, follow plan's DAG depend
```
**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-Gemini**: `ccw cli --tool gemini` (analysis-heavy tasks)
- **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) │
│ ├─ Extract relevant notes from previous tasks │
│ ├─ 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 │
│ ├─ Auto-commit if enabled (conventional commit format) │
│ └─ Append event to unified log │
@@ -507,10 +507,10 @@ ${recommendations.map(r => \`- ${r}\`).join('\\n')}
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
Task({
Agent({
subagent_type: "code-developer", // or other agent types
run_in_background: false,
description: task.title,

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
---
name: 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

View File

@@ -1,7 +1,7 @@
---
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".
allowed-tools: Bash, Read, Write, AskUserQuestion, Task, Glob
allowed-tools: Bash, Read, Write, AskUserQuestion, Agent, Glob
---
# Issue Management Skill
@@ -219,9 +219,8 @@ const action = AskUserQuestion({
header: 'Action',
options: [
{ 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: 'View History', description: 'Completed issues' },
{ label: 'Bulk Operations', description: 'Batch actions' }
]
}]

View File

@@ -1,7 +1,7 @@
---
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", "更新记忆", "生成文档".
allowed-tools: Task(*), Bash(*), AskUserQuestion(*), Read(*)
allowed-tools: Agent(*), Bash(*), AskUserQuestion(*), Read(*)
---
# Memory Management Skill

View File

@@ -1,7 +1,7 @@
---
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", "审查代码", "代码审查".
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

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
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

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
allowed-tools: Task, AskUserQuestion, Read, Bash, Glob, Grep, Write
allowed-tools: Agent, AskUserQuestion, Read, Bash, Glob, Grep, Write
---
# Skill Generator

View File

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

View File

@@ -12,7 +12,7 @@ Suitable for scenarios that need immediate results.
```javascript
// Agent call - synchronous
const result = Task({
const result = Agent({
subagent_type: 'universal-executor',
prompt: 'Execute task...',
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.
```javascript
Task({
Agent({
subagent_type: 'universal-executor',
prompt: `
Execute task:
@@ -99,7 +99,7 @@ Execute task:
Code exploration agent for quick codebase understanding.
```javascript
Task({
Agent({
subagent_type: 'Explore',
prompt: `
Explore src/ directory:
@@ -123,7 +123,7 @@ Thoroughness: medium
Deep code analysis agent.
```javascript
Task({
Agent({
subagent_type: 'cli-explore-agent',
prompt: `
Deep analysis of src/auth/ module:

View File

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

View File

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

View File

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

View File

@@ -223,7 +223,7 @@ function filterDocsByPhase(specs, phase, phaseIndex) {
---
name: api-docs-generator
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
@@ -265,7 +265,7 @@ Phase 3: Generation → api-docs.md
---
name: task-manager
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

View File

@@ -1,7 +1,7 @@
---
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".
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

View File

@@ -193,7 +193,7 @@ async function execute(state, workDir) {
type: 'agent_failure',
severity: 'medium',
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`],
root_cause: 'Tool declaration mismatch',
impact: 'May cause runtime permission issues',

View File

@@ -216,7 +216,7 @@ async function execute(state, workDir) {
file: 'phases/*.md',
action: 'modify',
diff: `+ try {
const result = await Task({...});
const result = await Agent({...});
+ if (!result) throw new Error('Empty result');
+ } catch (e) {
+ 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 }
};
const result = await Task({
const result = await Agent({
subagent_type: 'universal-executor',
description: `Execute skill-tuning action: ${actionId}`,
run_in_background: false,
prompt: `
[CONTEXT]

View File

@@ -114,18 +114,21 @@ Write(`${workDir}/final-output.json`, finalResult); // 只存最终结果
// 上下文流转模式
async function executePhase(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: `
[CONTEXT]
Previous: ${JSON.stringify(previousResult)}
Constraints: ${constraints.join(', ')}
[TASK]
Process and return result directly.
`
});
return {
...context,
currentResult: result,

View File

@@ -140,8 +140,10 @@ function updateHistory(state, newItem) {
```javascript
// Add summarization before passing to next phase
const summary = await Task({
const summary = await Agent({
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[] }`
});
nextPhasePrompt = `Previous summary: ${summary.summary}`;
@@ -268,12 +270,17 @@ function validateAgentResult(result, requiredFields) {
### flatten_nesting
```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
// Agent A: return { needs_agent_b: true, context: {...} }
// Orchestrator:
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
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

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -137,7 +137,7 @@ Phase 3 needs task dispatch
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: <team-name>,
@@ -361,7 +361,7 @@ AskUserQuestion({
| 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")` |
| 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({
subject: "<TASK-ID>",
owner: "<role>",
description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
TASK:
- <step 1: specific action>
@@ -43,10 +42,9 @@ EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits, focus areas>
---
InnerLoop: <true|false>
BranchId: <B01|A|none>",
blockedBy: [<dependency-list>],
status: "pending"
BranchId: <B01|A|none>"
})
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
```
### Mode Router
@@ -81,9 +79,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/architecture-baseline.json + <session>/artifacts/architecture-report.md | Quantified metrics with evidence
CONSTRAINTS: Focus on <refactoring-scope> | Analyze before any changes
---
InnerLoop: false",
status: "pending"
InnerLoop: false"
})
TaskUpdate({ taskId: "ANALYZE-001", owner: "analyzer" })
```
**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
CONSTRAINTS: Focus on highest-impact refactorings | Risk assessment required | Non-overlapping file targets per REFACTOR-ID
---
InnerLoop: false",
blockedBy: ["ANALYZE-001"],
status: "pending"
InnerLoop: false"
})
TaskUpdate({ taskId: "DESIGN-001", addBlockedBy: ["ANALYZE-001"], owner: "designer" })
```
**REFACTOR-001** (refactorer, Stage 3):
@@ -130,10 +127,9 @@ CONTEXT:
EXPECTED: Modified source files + validation passing | Refactorings applied without regressions
CONSTRAINTS: Preserve existing behavior | Update all references | Follow code conventions
---
InnerLoop: true",
blockedBy: ["DESIGN-001"],
status: "pending"
InnerLoop: true"
})
TaskUpdate({ taskId: "REFACTOR-001", addBlockedBy: ["DESIGN-001"], owner: "refactorer" })
```
**VALIDATE-001** (validator, Stage 4 - parallel):
@@ -156,10 +152,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/validation-results.json | Per-dimension validation with verdicts
CONSTRAINTS: Must compare against baseline | Flag any regressions or broken imports
---
InnerLoop: false",
blockedBy: ["REFACTOR-001"],
status: "pending"
InnerLoop: false"
})
TaskUpdate({ taskId: "VALIDATE-001", addBlockedBy: ["REFACTOR-001"], owner: "validator" })
```
**REVIEW-001** (reviewer, Stage 4 - parallel):
@@ -180,10 +175,9 @@ CONTEXT:
EXPECTED: <session>/artifacts/review-report.md | Per-dimension findings with severity
CONSTRAINTS: Focus on refactoring changes only | Provide specific file:line references
---
InnerLoop: false",
blockedBy: ["REFACTOR-001"],
status: "pending"
InnerLoop: false"
})
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
Bash("mkdir -p <session>/artifacts/pipelines/<P>")
TaskCreate({ subject: "ANALYZE-<P>01", ... }) // blockedBy: []
TaskCreate({ subject: "DESIGN-<P>01", ... }) // blockedBy: ["ANALYZE-<P>01"]
TaskCreate({ subject: "REFACTOR-<P>01", ... }) // blockedBy: ["DESIGN-<P>01"]
TaskCreate({ subject: "VALIDATE-<P>01", ... }) // blockedBy: ["REFACTOR-<P>01"]
TaskCreate({ subject: "REVIEW-<P>01", ... }) // blockedBy: ["REFACTOR-<P>01"]
TaskCreate({ subject: "ANALYZE-<P>01", ... })
TaskCreate({ subject: "DESIGN-<P>01", ... })
TaskUpdate({ taskId: "DESIGN-<P>01", addBlockedBy: ["ANALYZE-<P>01"] })
TaskCreate({ subject: "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:
@@ -241,9 +239,9 @@ EXPECTED: <session>/artifacts/pipelines/A/architecture-baseline.json + architect
CONSTRAINTS: Focus on auth module scope
---
InnerLoop: false
PipelineId: A",
status: "pending"
PipelineId: A"
})
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
---
InnerLoop: false
BranchId: B{NN}",
blockedBy: ["DESIGN-001"],
status: "pending"
BranchId: B{NN}"
})
TaskUpdate({ taskId: "REFACTOR-B{NN}", addBlockedBy: ["DESIGN-001"], owner: "refactorer" })
TaskCreate({
subject: "VALIDATE-B{NN}",
@@ -319,10 +316,9 @@ EXPECTED: <session>/artifacts/branches/B{NN}/validation-results.json
CONSTRAINTS: Only validate this branch's changes
---
InnerLoop: false
BranchId: B{NN}",
blockedBy: ["REFACTOR-B{NN}"],
status: "pending"
BranchId: B{NN}"
})
TaskUpdate({ taskId: "VALIDATE-B{NN}", addBlockedBy: ["REFACTOR-B{NN}"], owner: "validator" })
TaskCreate({
subject: "REVIEW-B{NN}",
@@ -340,10 +336,9 @@ EXPECTED: <session>/artifacts/branches/B{NN}/review-report.md
CONSTRAINTS: Only review this branch's changes
---
InnerLoop: false
BranchId: B{NN}",
blockedBy: ["REFACTOR-B{NN}"],
status: "pending"
BranchId: B{NN}"
})
TaskUpdate({ taskId: "REVIEW-B{NN}", addBlockedBy: ["REFACTOR-B{NN}"], owner: "reviewer" })
```
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:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>",
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
---
InnerLoop: false
BranchId: B{NN}",
blockedBy: [],
status: "pending"
BranchId: B{NN}"
})
TaskUpdate({ taskId: "FIX-B{NN}-{cycle}", owner: "refactorer" })
```
Create new VALIDATE and REVIEW with retry suffix:
@@ -186,9 +185,8 @@ Create new VALIDATE and REVIEW with retry suffix:
TaskCreate({
subject: "FIX-{P}01-{cycle}",
...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}`.

View File

@@ -229,7 +229,7 @@ Execute `commands/dispatch.md` inline (Command Execution Protocol):
Find first unblocked task and spawn its worker:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn analyzer worker",
team_name: "arch-opt",
@@ -298,6 +298,6 @@ AskUserQuestion({
| 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')" |
| 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:
```
Task({
Agent({
subagent_type: "cli-discuss-agent",
run_in_background: false,
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:
```
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: "Explore codebase for architecture-critical structures in <target-scope>",

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -306,7 +306,7 @@ Beat 1 2 3-4 5 6
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
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 |
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn ideator-<N> worker",
team_name: "brainstorm",
@@ -384,7 +384,7 @@ AskUserQuestion({
| 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")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

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

View File

@@ -74,7 +74,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>",
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):
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn ideator worker",
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)
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn ideator worker for IDEA-<N>",
team_name: "brainstorm",
@@ -316,6 +316,6 @@ AskUserQuestion({
| 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')" |
| Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow |

View File

@@ -1,7 +1,7 @@
---
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 ".
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
@@ -93,7 +93,7 @@ User provides task description
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: <team-name>,

View File

@@ -25,7 +25,6 @@ Create task chains from dynamic dependency graphs. Builds pipelines from the tas
```
TaskCreate({
subject: "<PREFIX>-<NNN>",
owner: "<role-name>",
description: "PURPOSE: <goal> | Success: <success_criteria>
TASK:
- <step 1>
@@ -40,10 +39,9 @@ EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits>
---
InnerLoop: <true|false>
RoleSpec: <session-folder>/role-specs/<role-name>.md",
blockedBy: [<dependency-list from graph>],
status: "pending"
RoleSpec: <session-folder>/role-specs/<role-name>.md"
})
TaskUpdate({ taskId: "<PREFIX>-<NNN>", addBlockedBy: [<dependency-list from graph>], owner: "<role-name>" })
```
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):
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <subject>",
team_name: <team-name>,
@@ -190,7 +190,7 @@ All tasks completed (no pending, no in_progress)
| })
| +- "Archive & Clean":
| | Update session status="completed"
| | TeamDelete(<team-name>)
| | TeamDelete()
| | Output final summary with artifact paths
| +- "Keep Active":
| | 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:
```
Task({
Agent({
subagent_type: "cli-discuss-agent",
run_in_background: false,
description: "Discuss <round-id>",

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -107,7 +107,7 @@ Validate session
When executor spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: <team-name>,

View File

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

View File

@@ -121,7 +121,7 @@ team-executor validates the following before execution:
| `session_id` | string | Unique session identifier |
| `task_description` | string | Original task description from user |
| `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[].name` | string | Role name (must match .md filename) |
| `roles[].prefix` | string | Task prefix for this role |

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -108,7 +108,7 @@ Phase 3 needs task dispatch
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: "frontend",
@@ -233,7 +233,7 @@ AskUserQuestion({
| 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')" |
| Export Results | Ask target dir -> copy artifacts -> Archive flow |

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -301,7 +301,7 @@ Beat 1 2 3 4 5
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
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**:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role>-<N> worker",
team_name: "issue",
@@ -390,7 +390,7 @@ AskUserQuestion({
| 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")` |
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |

View File

@@ -53,7 +53,7 @@ Bash("ccw issue status <issueId> --json")
| Complexity | Execution |
|------------|-----------|
| 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**:

View File

@@ -15,7 +15,7 @@ Load solution plan, route to execution backend (Agent/Codex/Gemini), run tests,
| 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>` |
| gemini | explicit | `ccw cli --tool gemini --mode write --id issue-<issueId>` |
@@ -69,7 +69,7 @@ Dependencies: <explorerContext.dependencies>
```
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>")`
- **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**:
```
Task({
Agent({
subagent_type: "issue-queue-agent",
run_in_background: false,
description: "Form queue for <count> issues",

View File

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

View File

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

View File

@@ -83,7 +83,7 @@ Find and spawn the next ready tasks.
2. For each ready task, spawn team-worker:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>",
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):
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role>-<N> worker for <task-id>",
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:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn explorer worker",
team_name: "issue",
@@ -273,6 +273,6 @@ AskUserQuestion({
| 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')" |
| New Batch | Return to Phase 1 |

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -110,7 +110,7 @@ User provides task description
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
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>`.
```
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: "Explore general context",

View File

@@ -42,7 +42,7 @@ message_types:
| 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 |
| gemini | `ccw cli --tool gemini --mode write` (background) | Analysis-heavy |

View File

@@ -42,7 +42,7 @@ message_types:
| 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) |
**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):
```
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: "Explore <angle>",
@@ -53,7 +53,7 @@ Task({
**Agent call** (Medium/High):
```
Task({
Agent({
subagent_type: "cli-lite-planning-agent",
run_in_background: false,
description: "Generate implementation plan",

View File

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

View File

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

View File

@@ -128,7 +128,7 @@ Collect task states from TaskList()
+- TaskUpdate -> in_progress
+- team_msg log -> task_unblocked
+- Spawn team-worker:
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <subject>",
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:
```
Task({
Agent({
subagent_type: "cli-discuss-agent",
run_in_background: false,
description: "Discuss <round-id>",

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -137,7 +137,7 @@ Phase 3 needs task dispatch
When coordinator spawns workers, use `team-worker` agent with role-spec path:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: <team-name>,
@@ -361,7 +361,7 @@ AskUserQuestion({
| 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")` |
| 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:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>",
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:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn profiler worker",
team_name: "perf-opt",
@@ -298,6 +298,6 @@ AskUserQuestion({
| 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')" |
| 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:
```
Task({
Agent({
subagent_type: "cli-discuss-agent",
run_in_background: false,
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:
```
Task({
Agent({
subagent_type: "cli-explore-agent",
run_in_background: false,
description: "Explore codebase for performance-critical paths in <target-scope>",

View File

@@ -1,7 +1,7 @@
---
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".
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
@@ -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:
```
Task({
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: <team-name>,

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