mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-05 16:13:08 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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` | 脚本执行 | 需要自动化 |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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' }
|
||||
]
|
||||
}]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: `
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: \`
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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: \`
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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}`
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}`,
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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}`.
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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**:
|
||||
|
||||
|
||||
@@ -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>")`
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
})
|
||||
```
|
||||
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -12,7 +12,7 @@ writer 只拿到压缩摘要,可在多任务间保持上下文连续。
|
||||
## Invocation
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "universal-executor",
|
||||
run_in_background: false,
|
||||
description: "Generate <doc-type>",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -39,7 +39,7 @@ Single-issue implementation agent. Loads solution from artifact file, routes to
|
||||
### Agent Backend
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "code-developer",
|
||||
description: "Implement <issue-title>",
|
||||
prompt: `Issue: <issueId>
|
||||
|
||||
@@ -39,7 +39,7 @@ For each issue, execute in sequence:
|
||||
Delegate to `issue-plan-agent` subagent:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "issue-plan-agent",
|
||||
description: "Plan issue <issueId>",
|
||||
prompt: `issue_ids: ["<issueId>"]
|
||||
|
||||
@@ -117,7 +117,7 @@ Collect task states from TaskList()
|
||||
| +- PLAN-* -> planner
|
||||
| +- EXEC-* -> executor
|
||||
+- Spawn team-worker:
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker for <subject>",
|
||||
team_name: <team-name>,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-quality-assurance
|
||||
description: Unified team skill for quality assurance team. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team quality-assurance", "team qa".
|
||||
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 Quality Assurance
|
||||
@@ -359,7 +359,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: "quality-assurance",
|
||||
@@ -397,7 +397,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: "quality-assurance",
|
||||
@@ -443,7 +443,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(quality-assurance) -> 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-quality-assurance", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ const STAGE_WORKER_MAP = {
|
||||
5. Spawn team-worker (one at a time for sequential pipeline):
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker for <task-id>",
|
||||
team_name: "quality-assurance",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-review
|
||||
description: "Unified team skill for code review. Uses team-worker agent architecture with role-spec files. 3-role pipeline: scanner, reviewer, fixer. Triggers on team-review."
|
||||
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*)
|
||||
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*)
|
||||
---
|
||||
|
||||
# Team Review
|
||||
@@ -224,7 +224,7 @@ Coordinator additional restrictions: Do not write/modify code directly, do not c
|
||||
When coordinator spawns workers, use `team-worker` agent with role-spec path:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker",
|
||||
team_name: "review",
|
||||
@@ -293,7 +293,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(review) -> 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-review", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ Ready tasks found?
|
||||
**Spawn worker tool call**:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker for <subject>",
|
||||
team_name: "review",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-roadmap-dev
|
||||
description: Unified team skill for roadmap-driven development workflow. Coordinator discusses roadmap with user, then dispatches phased execution pipeline (plan -> execute -> verify). All roles invoke this skill with --role arg. Triggers on "team roadmap-dev".
|
||||
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 Roadmap Dev
|
||||
@@ -313,7 +313,7 @@ Phase N: PLAN-N01 → EXEC-N01 → VERIFY-N01 → Complete
|
||||
When coordinator spawns workers, use `team-worker` agent with role-spec path:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker",
|
||||
team_name: "roadmap-dev",
|
||||
@@ -358,7 +358,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(roadmap-dev) -> 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-roadmap-dev", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -239,7 +239,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: "roadmap-dev",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-tech-debt
|
||||
description: Unified team skill for tech debt identification and cleanup. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team tech-debt", "tech debt cleanup", "技术债务".
|
||||
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 Tech Debt
|
||||
@@ -276,7 +276,7 @@ TDFIX -> TDVAL -> (if regression or quality drop) -> TDFIX-fix -> TDVAL-2
|
||||
When coordinator spawns workers, use `team-worker` agent with role-spec path:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker",
|
||||
prompt: `## Role Assignment
|
||||
@@ -331,7 +331,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(tech-debt) -> 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-tech-debt", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ const STAGE_WORKER_MAP = {
|
||||
5. Spawn team-worker (one at a time for sequential pipeline):
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker for <task-id>",
|
||||
team_name: "tech-debt",
|
||||
|
||||
@@ -312,7 +312,7 @@ Delegate to `commands/dispatch.md` which creates the full task chain.
|
||||
**Worker Spawn Template**:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker",
|
||||
prompt: `## Role Assignment
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-testing
|
||||
description: Unified team skill for testing team. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team testing".
|
||||
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 Testing
|
||||
@@ -305,7 +305,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: "testing",
|
||||
@@ -352,7 +352,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(testing) -> 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-testing", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ Bash("<test-command> 2>&1 || true")
|
||||
**Auto-fix delegation** (on failure):
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "code-developer",
|
||||
run_in_background: false,
|
||||
description: "Fix test failures (iteration <N>)",
|
||||
|
||||
@@ -61,7 +61,7 @@ For revision mode:
|
||||
**Agent delegation** (medium/high complexity):
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "code-developer",
|
||||
run_in_background: false,
|
||||
description: "Generate <layer> tests",
|
||||
|
||||
@@ -24,7 +24,6 @@ Every task description uses structured format:
|
||||
```
|
||||
TaskCreate({
|
||||
subject: "<TASK-ID>",
|
||||
owner: "<role>",
|
||||
description: "PURPOSE: <what this task achieves> | Success: <measurable 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
|
||||
@@ -71,10 +69,9 @@ CONTEXT:
|
||||
EXPECTED: <session>/strategy/test-strategy.md
|
||||
CONSTRAINTS: Read-only analysis
|
||||
---
|
||||
InnerLoop: false",
|
||||
blockedBy: [],
|
||||
status: "pending"
|
||||
InnerLoop: false"
|
||||
})
|
||||
TaskUpdate({ taskId: "STRATEGY-001", owner: "strategist" })
|
||||
```
|
||||
|
||||
**TESTGEN-001** (generator, L1):
|
||||
@@ -93,10 +90,9 @@ CONTEXT:
|
||||
EXPECTED: <session>/tests/L1-unit/
|
||||
CONSTRAINTS: Only generate test code, do not modify source
|
||||
---
|
||||
InnerLoop: true",
|
||||
blockedBy: ["STRATEGY-001"],
|
||||
status: "pending"
|
||||
InnerLoop: true"
|
||||
})
|
||||
TaskUpdate({ taskId: "TESTGEN-001", addBlockedBy: ["STRATEGY-001"], owner: "generator" })
|
||||
```
|
||||
|
||||
**TESTRUN-001** (executor, L1):
|
||||
@@ -115,10 +111,9 @@ CONTEXT:
|
||||
EXPECTED: <session>/results/run-001.json
|
||||
CONSTRAINTS: Only fix test files, not source code
|
||||
---
|
||||
InnerLoop: true",
|
||||
blockedBy: ["TESTGEN-001"],
|
||||
status: "pending"
|
||||
InnerLoop: true"
|
||||
})
|
||||
TaskUpdate({ taskId: "TESTRUN-001", addBlockedBy: ["TESTGEN-001"], owner: "executor" })
|
||||
```
|
||||
|
||||
### Standard Pipeline
|
||||
|
||||
@@ -68,7 +68,6 @@ When executor reports test results:
|
||||
```
|
||||
TaskCreate({
|
||||
subject: "TESTGEN-<layer>-fix-<round>",
|
||||
owner: "generator",
|
||||
description: "PURPOSE: Revise tests to fix failures and improve coverage
|
||||
TASK:
|
||||
- Read previous test results and failure details
|
||||
@@ -80,10 +79,9 @@ CONTEXT:
|
||||
- Previous results: <session>/results/run-<N>.json
|
||||
EXPECTED: Revised test files in <session>/tests/<layer>/
|
||||
---
|
||||
InnerLoop: true",
|
||||
blockedBy: [],
|
||||
status: "pending"
|
||||
InnerLoop: true"
|
||||
})
|
||||
TaskUpdate({ taskId: "TESTGEN-<layer>-fix-<round>", owner: "generator" })
|
||||
```
|
||||
|
||||
Create TESTRUN-fix blocked on TESTGEN-fix.
|
||||
@@ -108,7 +106,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: "testing",
|
||||
|
||||
@@ -202,7 +202,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 strategist worker",
|
||||
team_name: "testing",
|
||||
@@ -269,7 +269,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Steps |
|
||||
|--------|-------|
|
||||
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("testing") -> 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-testing', args='resume')" |
|
||||
| Deepen Coverage | Create additional TESTGEN+TESTRUN tasks for next layer -> Phase 4 |
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-uidesign
|
||||
description: Unified team skill for UI design team. All roles invoke this skill with --role arg for role-specific execution. CP-9 Dual-Track design+implementation.
|
||||
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Task(*), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), WebFetch(*), WebSearch(*)
|
||||
allowed-tools: TeamCreate(*), TeamDelete(*), SendMessage(*), TaskCreate(*), TaskUpdate(*), TaskList(*), TaskGet(*), Agent(*), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), WebFetch(*), WebSearch(*)
|
||||
---
|
||||
|
||||
# Team UI Design
|
||||
@@ -352,7 +352,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: "uidesign",
|
||||
@@ -397,7 +397,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(uidesign) -> 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-uidesign", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -24,7 +24,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>
|
||||
@@ -37,10 +36,9 @@ CONTEXT:
|
||||
- Upstream artifacts: <artifact-1>, <artifact-2>
|
||||
- Shared memory: <session>/wisdom/.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
|
||||
@@ -71,9 +69,9 @@ CONTEXT:
|
||||
- Industry: <industry>
|
||||
- Shared memory: <session>/wisdom/.msg/meta.json
|
||||
EXPECTED: <session>/research/*.json | All 4 research files with valid JSON
|
||||
CONSTRAINTS: Read-only analysis | Focus on <design-scope>",
|
||||
status: "pending"
|
||||
CONSTRAINTS: Read-only analysis | Focus on <design-scope>"
|
||||
})
|
||||
TaskUpdate({ taskId: "RESEARCH-001", owner: "researcher" })
|
||||
```
|
||||
|
||||
**DESIGN-001** (designer):
|
||||
@@ -93,10 +91,9 @@ CONTEXT:
|
||||
- Upstream artifacts: research/*.json
|
||||
- Shared memory: <session>/wisdom/.msg/meta.json
|
||||
EXPECTED: <session>/design/design-tokens.json + component-specs/*.md | Complete token system + spec
|
||||
CONSTRAINTS: Follow W3C Design Tokens Format | All color tokens need light/dark",
|
||||
blockedBy: ["RESEARCH-001"],
|
||||
status: "pending"
|
||||
CONSTRAINTS: Follow W3C Design Tokens Format | All color tokens need light/dark"
|
||||
})
|
||||
TaskUpdate({ taskId: "DESIGN-001", addBlockedBy: ["RESEARCH-001"], owner: "designer" })
|
||||
```
|
||||
|
||||
**AUDIT-001** (reviewer):
|
||||
@@ -116,10 +113,9 @@ CONTEXT:
|
||||
- Upstream artifacts: design/design-tokens.json, design/component-specs/*.md
|
||||
- Shared memory: <session>/wisdom/.msg/meta.json
|
||||
EXPECTED: <session>/audit/audit-001.md | 5-dimension scored report
|
||||
CONSTRAINTS: Read-only analysis | GC convergence: score >= 8 and 0 critical",
|
||||
blockedBy: ["DESIGN-001"],
|
||||
status: "pending"
|
||||
CONSTRAINTS: Read-only analysis | GC convergence: score >= 8 and 0 critical"
|
||||
})
|
||||
TaskUpdate({ taskId: "AUDIT-001", addBlockedBy: ["DESIGN-001"], owner: "reviewer" })
|
||||
```
|
||||
|
||||
**BUILD-001** (implementer):
|
||||
@@ -139,10 +135,9 @@ CONTEXT:
|
||||
- Upstream artifacts: design/design-tokens.json, design/component-specs/*.md, audit/audit-001.md
|
||||
- Shared memory: <session>/wisdom/.msg/meta.json
|
||||
EXPECTED: <session>/build/**/* | Component + tokens CSS/TS + tests
|
||||
CONSTRAINTS: Use var(--token-name) only | Follow project patterns",
|
||||
blockedBy: ["AUDIT-001"],
|
||||
status: "pending"
|
||||
CONSTRAINTS: Use var(--token-name) only | Follow project patterns"
|
||||
})
|
||||
TaskUpdate({ taskId: "BUILD-001", addBlockedBy: ["AUDIT-001"], owner: "implementer" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -68,7 +68,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: "uidesign",
|
||||
@@ -126,10 +126,9 @@ CONTEXT:
|
||||
- Upstream artifacts: audit/audit-<NNN>.md
|
||||
- Shared memory: <session>/wisdom/.msg/meta.json
|
||||
EXPECTED: Updated design artifacts | All flagged issues addressed
|
||||
CONSTRAINTS: Targeted fixes only",
|
||||
blockedBy: [],
|
||||
status: "pending"
|
||||
CONSTRAINTS: Targeted fixes only"
|
||||
})
|
||||
TaskUpdate({ taskId: "DESIGN-fix-<round>", owner: "designer" })
|
||||
```
|
||||
|
||||
After fix completes, create new AUDIT task blocked by the fix task. Increment gc_state.round.
|
||||
|
||||
@@ -213,7 +213,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 researcher worker",
|
||||
team_name: "uidesign",
|
||||
@@ -285,6 +285,6 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Steps |
|
||||
|--------|-------|
|
||||
| Archive & Clean | TaskList -> verify all completed -> update session status="completed" -> TeamDelete("uidesign") -> 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-uidesign', args='resume')" |
|
||||
| Export Results | AskUserQuestion for target directory -> copy all artifacts -> Archive & Clean flow |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: team-ultra-analyze
|
||||
description: Unified team skill for deep collaborative analysis. All roles invoke this skill with --role arg for role-specific execution. Triggers on "team ultra-analyze", "team analyze".
|
||||
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 Ultra Analyze
|
||||
@@ -359,7 +359,7 @@ When coordinator spawns workers, use `team-worker` agent with role-spec path. Th
|
||||
**Single spawn template** (worker template used for all roles):
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "team-worker",
|
||||
description: "Spawn <role> worker",
|
||||
team_name: "ultra-analyze",
|
||||
@@ -434,7 +434,7 @@ AskUserQuestion({
|
||||
|
||||
| Choice | Action |
|
||||
|--------|--------|
|
||||
| Archive & Clean | Update session status="completed" -> TeamDelete(ultra-analyze) -> 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-ultra-analyze", args="resume")` |
|
||||
| Export Results | AskUserQuestion for target path -> copy deliverables -> Archive & Clean |
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ Select strategy by discussion type:
|
||||
|
||||
**deepen**: Spawn cli-explore-agent focused on open questions and uncertain insights:
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "cli-explore-agent",
|
||||
run_in_background: false,
|
||||
prompt: "Focus on open questions: <questions>. Find evidence for uncertain insights. Write to: <session>/discussions/deepen-<num>.json"
|
||||
@@ -62,7 +62,12 @@ ccw cli -p "Re-analyze '<topic>' with adjusted focus on '<userFeedback>'" --tool
|
||||
|
||||
**specific-questions**: Spawn cli-explore-agent targeting user's questions:
|
||||
```
|
||||
Task({ subagent_type: "cli-explore-agent", prompt: "Answer: <userFeedback>. Write to: <session>/discussions/questions-<num>.json" })
|
||||
Agent({
|
||||
subagent_type: "cli-explore-agent",
|
||||
description: "Answer specific user questions",
|
||||
run_in_background: false,
|
||||
prompt: "Answer: <userFeedback>. Write to: <session>/discussions/questions-<num>.json"
|
||||
})
|
||||
```
|
||||
|
||||
## Phase 4: Update Discussion Timeline
|
||||
|
||||
@@ -43,7 +43,7 @@ Explore codebase structure through cli-explore-agent, collecting structured cont
|
||||
Spawn `cli-explore-agent` subagent for actual exploration:
|
||||
|
||||
```
|
||||
Task({
|
||||
Agent({
|
||||
subagent_type: "cli-explore-agent",
|
||||
run_in_background: false,
|
||||
description: "Explore codebase: <topic> (<perspective>)",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user