mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-12 17:21:19 +08:00
- Implement tests for AssociationHighlight, DashboardToolbar, QueuePanel, SessionGroupTree, and TerminalDashboardPage to ensure proper functionality and state management. - Create tests for cliSessionStore, issueQueueIntegrationStore, queueExecutionStore, queueSchedulerStore, sessionManagerStore, and terminalGridStore to validate state resets and workspace scoping. - Mock necessary dependencies and state management hooks to isolate tests and ensure accurate behavior.
302 lines
8.1 KiB
Markdown
302 lines
8.1 KiB
Markdown
# Team PlanEx — Agent Instruction
|
|
|
|
This instruction is loaded by team-worker agents when spawned with `role: planner` or `role: executor`.
|
|
|
|
---
|
|
|
|
## Role-Based Execution
|
|
|
|
### Planner Role
|
|
|
|
**Responsibility**: Explore codebase, generate implementation solution for issue.
|
|
|
|
**Input**:
|
|
- `issue_ids`: Array of issue IDs to plan (from spawn message or send_input)
|
|
- `session`: Session directory path
|
|
- `session_id`: Session identifier
|
|
|
|
**Execution Protocol**:
|
|
|
|
1. **Read issue details**:
|
|
```bash
|
|
ccw issue status {issue_id} --json
|
|
```
|
|
|
|
2. **Explore codebase** (use CLI analysis tools):
|
|
```bash
|
|
ccw cli -p "PURPOSE: Explore codebase for {issue_title}
|
|
TASK: • Identify relevant files • Find existing patterns • Locate integration points
|
|
CONTEXT: @**/* | Memory: Issue {issue_id}
|
|
EXPECTED: Exploration findings with file paths and patterns
|
|
CONSTRAINTS: Read-only analysis" --tool gemini --mode analysis --rule analysis-trace-code-execution
|
|
```
|
|
|
|
3. **Generate solution**:
|
|
- Break down into 2-7 implementation tasks
|
|
- Define task dependencies (topological order)
|
|
- Specify files to modify per task
|
|
- Define convergence criteria per task
|
|
- Assess complexity: Low (1-2 files), Medium (3-5 files), High (6+ files)
|
|
|
|
4. **Write solution file**:
|
|
```javascript
|
|
Write(`{session}/artifacts/solutions/{issue_id}.json`, JSON.stringify({
|
|
issue_id: "{issue_id}",
|
|
title: "{issue_title}",
|
|
approach: "Strategy pattern with...",
|
|
complexity: "Medium",
|
|
tasks: [
|
|
{
|
|
task_id: "EXEC-001",
|
|
title: "Create interface",
|
|
description: "Define provider interface...",
|
|
files: ["src/auth/providers/oauth-provider.ts"],
|
|
depends_on: [],
|
|
convergence_criteria: ["Interface compiles", "Types exported"]
|
|
}
|
|
],
|
|
exploration_findings: {
|
|
existing_patterns: ["Strategy pattern in payment module"],
|
|
tech_stack: ["TypeScript", "Express"],
|
|
integration_points: ["User service"]
|
|
}
|
|
}, null, 2))
|
|
```
|
|
|
|
5. **Write ready marker**:
|
|
```javascript
|
|
Write(`{session}/artifacts/solutions/{issue_id}.ready`, JSON.stringify({
|
|
issue_id: "{issue_id}",
|
|
task_count: tasks.length,
|
|
file_count: uniqueFiles.length
|
|
}))
|
|
```
|
|
|
|
6. **Report to coordinator** (via team_msg):
|
|
```javascript
|
|
mcp__ccw-tools__team_msg({
|
|
operation: "log",
|
|
session_id: "{session_id}",
|
|
from: "planner",
|
|
to: "coordinator",
|
|
type: "plan_ready",
|
|
summary: "Planning complete for {issue_id}",
|
|
data: {
|
|
issue_id: "{issue_id}",
|
|
solution_path: "artifacts/solutions/{issue_id}.json",
|
|
task_count: tasks.length
|
|
}
|
|
})
|
|
```
|
|
|
|
7. **Wait for next issue** (multi-issue mode):
|
|
- After completing one issue, output results and wait
|
|
- Coordinator will send next issue via send_input
|
|
- Repeat steps 1-6 for each issue
|
|
|
|
**Success Criteria**:
|
|
- Solution file written with valid JSON
|
|
- Ready marker created
|
|
- Message sent to coordinator
|
|
- All tasks have valid dependencies (no cycles)
|
|
|
|
---
|
|
|
|
### Executor Role
|
|
|
|
**Responsibility**: Execute implementation tasks from planner solution.
|
|
|
|
**Input**:
|
|
- `issue_id`: Issue to implement
|
|
- `session`: Session directory path
|
|
- `session_id`: Session identifier
|
|
- `execution_method`: `codex` or `gemini` (from coordinator)
|
|
- `inner_loop`: `true` (executor uses inner loop for self-repair)
|
|
|
|
**Execution Protocol**:
|
|
|
|
1. **Read solution file**:
|
|
```javascript
|
|
const solution = JSON.parse(Read(`{session}/artifacts/solutions/{issue_id}.json`))
|
|
```
|
|
|
|
2. **For each task in solution.tasks** (ordered by depends_on):
|
|
|
|
a. **Report start**:
|
|
```javascript
|
|
mcp__ccw-tools__team_msg({
|
|
operation: "log",
|
|
session_id: "{session_id}",
|
|
from: "executor",
|
|
to: "coordinator",
|
|
type: "impl_start",
|
|
summary: "Starting {task_id}",
|
|
data: { task_id: "{task_id}", issue_id: "{issue_id}" }
|
|
})
|
|
```
|
|
|
|
b. **Read context files**:
|
|
```javascript
|
|
for (const file of task.files) {
|
|
Read(file) // Load existing code
|
|
}
|
|
```
|
|
|
|
c. **Identify patterns**:
|
|
- Note imports, naming conventions, existing structure
|
|
- Follow project patterns from exploration_findings
|
|
|
|
d. **Apply changes**:
|
|
- Use Edit for existing files (prefer)
|
|
- Use Write for new files
|
|
- Follow convergence criteria from task
|
|
|
|
e. **Build check** (if build command exists):
|
|
```bash
|
|
npm run build 2>&1 || echo BUILD_FAILED
|
|
```
|
|
- If build fails: analyze error → fix → rebuild (max 3 retries)
|
|
|
|
f. **Verify convergence**:
|
|
- Check each criterion in task.convergence_criteria
|
|
- If not met: self-repair loop (max 3 iterations)
|
|
|
|
g. **Report progress**:
|
|
```javascript
|
|
mcp__ccw-tools__team_msg({
|
|
operation: "log",
|
|
session_id: "{session_id}",
|
|
from: "executor",
|
|
to: "coordinator",
|
|
type: "impl_progress",
|
|
summary: "Completed {task_id}",
|
|
data: { task_id: "{task_id}", progress_pct: (taskIndex / totalTasks) * 100 }
|
|
})
|
|
```
|
|
|
|
3. **Run tests** (after all tasks complete):
|
|
```bash
|
|
npm test 2>&1
|
|
```
|
|
- If tests fail: self-repair loop (max 3 retries)
|
|
- Target: 95% pass rate
|
|
|
|
4. **Git commit**:
|
|
```bash
|
|
git add -A
|
|
git commit -m "feat({issue_id}): {solution.title}"
|
|
```
|
|
|
|
5. **Report completion**:
|
|
```javascript
|
|
mcp__ccw-tools__team_msg({
|
|
operation: "log",
|
|
session_id: "{session_id}",
|
|
from: "executor",
|
|
to: "coordinator",
|
|
type: "impl_complete",
|
|
summary: "Completed {issue_id}",
|
|
data: {
|
|
task_id: "{task_id}",
|
|
issue_id: "{issue_id}",
|
|
files_modified: modifiedFiles,
|
|
commit_hash: commitHash
|
|
}
|
|
})
|
|
```
|
|
|
|
6. **Update issue status**:
|
|
```bash
|
|
ccw issue update {issue_id} --status completed
|
|
```
|
|
|
|
**Success Criteria**:
|
|
- All tasks completed in dependency order
|
|
- Build passes (if build command exists)
|
|
- Tests pass (95% target)
|
|
- Git commit created
|
|
- Issue status updated to completed
|
|
|
|
---
|
|
|
|
## Inner Loop Protocol
|
|
|
|
Both roles support inner loop for self-repair:
|
|
|
|
| Scenario | Max Iterations | Action |
|
|
|----------|---------------|--------|
|
|
| Build failure | 3 | Analyze error → fix source → rebuild |
|
|
| Test failure | 3 | Analyze failure → fix source → re-run tests |
|
|
| Convergence not met | 3 | Check criteria → adjust implementation → re-verify |
|
|
|
|
After 3 failed iterations: report error to coordinator, mark task as failed.
|
|
|
|
---
|
|
|
|
## CLI Tool Usage
|
|
|
|
### Analysis (Planner)
|
|
|
|
```bash
|
|
ccw cli -p "PURPOSE: {goal}
|
|
TASK: • {step1} • {step2}
|
|
CONTEXT: @**/* | Memory: {context}
|
|
EXPECTED: {deliverable}
|
|
CONSTRAINTS: Read-only" --tool gemini --mode analysis --rule {template}
|
|
```
|
|
|
|
### Implementation (Executor, optional)
|
|
|
|
```bash
|
|
ccw cli -p "PURPOSE: {goal}
|
|
TASK: • {step1} • {step2}
|
|
CONTEXT: @{files} | Memory: {context}
|
|
EXPECTED: {deliverable}
|
|
CONSTRAINTS: {constraints}" --tool {execution_method} --mode write --rule development-implement-feature
|
|
```
|
|
|
|
Use CLI tools when:
|
|
- Planner: Always use for codebase exploration
|
|
- Executor: Use for complex tasks (High complexity), direct implementation for Low/Medium
|
|
|
|
---
|
|
|
|
## Error Handling
|
|
|
|
| Error | Resolution |
|
|
|-------|------------|
|
|
| Solution file not found | Report error to coordinator, skip issue |
|
|
| Solution JSON corrupt | Report error, skip issue |
|
|
| Build fails after 3 retries | Mark task failed, report to coordinator |
|
|
| Tests fail after 3 retries | Mark task failed, report to coordinator |
|
|
| Git commit fails | Warn, mark completed anyway |
|
|
| CLI tool timeout | Fallback to direct implementation |
|
|
| Dependency task failed | Skip dependent tasks, report to coordinator |
|
|
|
|
---
|
|
|
|
## Wisdom Directory
|
|
|
|
Record learnings in `{session}/wisdom/`:
|
|
|
|
| File | Content |
|
|
|------|---------|
|
|
| `learnings.md` | Patterns discovered, gotchas, best practices |
|
|
| `decisions.md` | Architecture decisions, trade-offs |
|
|
| `conventions.md` | Code style, naming conventions |
|
|
| `issues.md` | Issue-specific notes, blockers resolved |
|
|
|
|
Append to these files during execution to share knowledge across issues.
|
|
|
|
---
|
|
|
|
## Output Format
|
|
|
|
No structured output required. Workers communicate via:
|
|
- Solution files (planner)
|
|
- Message bus (both roles)
|
|
- Git commits (executor)
|
|
- Wisdom files (both roles)
|
|
|
|
Coordinator monitors message bus and meta.json for state tracking.
|