claude-code-workflow 7.2.29 → 7.2.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json +2 -2
- package/.ccw/workflows/cli-templates/schemas/task-schema.json +14 -7
- package/.claude/agents/action-planning-agent.md +7 -4
- package/.claude/agents/cli-explore-agent.md +77 -63
- package/.claude/agents/cli-lite-planning-agent.md +11 -10
- package/.claude/agents/issue-plan-agent.md +421 -426
- package/.claude/commands/workflow/spec/setup.md +1 -1
- package/.claude/skills/ccw-chain/SKILL.md +119 -0
- package/.claude/skills/ccw-chain/chains/ccw-cycle.json +21 -0
- package/.claude/skills/ccw-chain/chains/ccw-exploration.json +47 -0
- package/.claude/skills/ccw-chain/chains/ccw-issue.json +33 -0
- package/.claude/skills/ccw-chain/chains/ccw-lightweight.json +57 -0
- package/.claude/skills/ccw-chain/chains/ccw-main.json +52 -0
- package/.claude/skills/ccw-chain/chains/ccw-standard.json +39 -0
- package/.claude/skills/ccw-chain/chains/ccw-team.json +10 -0
- package/.claude/skills/ccw-chain/chains/ccw-with-file.json +31 -0
- package/.claude/skills/ccw-chain/phases/analyze-with-file.md +788 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/SKILL.md +408 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/01-mode-routing.md +207 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/02-artifacts.md +567 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/03-role-analysis.md +748 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/04-synthesis.md +827 -0
- package/.claude/skills/ccw-chain/phases/brainstorm-with-file.md +482 -0
- package/.claude/skills/ccw-chain/phases/collaborative-plan-with-file.md +639 -0
- package/.claude/skills/ccw-chain/phases/debug-with-file.md +656 -0
- package/.claude/skills/ccw-chain/phases/integration-test-cycle.md +936 -0
- package/.claude/skills/ccw-chain/phases/issue-convert-to-plan.md +720 -0
- package/.claude/skills/ccw-chain/phases/issue-discover.md +483 -0
- package/.claude/skills/ccw-chain/phases/issue-execute.md +629 -0
- package/.claude/skills/ccw-chain/phases/issue-from-brainstorm.md +382 -0
- package/.claude/skills/ccw-chain/phases/issue-plan.md +343 -0
- package/.claude/skills/ccw-chain/phases/issue-queue.md +464 -0
- package/.claude/skills/ccw-chain/phases/refactor-cycle.md +852 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/SKILL.md +132 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-fix.md +760 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-module.md +764 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-session.md +775 -0
- package/.claude/skills/ccw-chain/phases/roadmap-with-file.md +544 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/SKILL.md +338 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-5-requirement-clarification.md +404 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-discovery.md +257 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/02-product-brief.md +274 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/03-requirements.md +184 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/04-architecture.md +248 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/05-epics-stories.md +178 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-5-auto-fix.md +144 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-readiness-check.md +480 -0
- package/.claude/skills/ccw-chain/phases/team-planex.md +123 -0
- package/.claude/skills/ccw-chain/phases/ui-design-explore-auto.md +678 -0
- package/.claude/skills/ccw-chain/phases/unified-execute-with-file.md +870 -0
- package/.claude/skills/ccw-chain/phases/workflow-execute/SKILL.md +625 -0
- package/.claude/skills/ccw-chain/phases/workflow-execute/phases/06-review.md +215 -0
- package/.claude/skills/ccw-chain/phases/workflow-lite-plan.md +616 -0
- package/.claude/skills/ccw-chain/phases/workflow-multi-cli-plan.md +424 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/SKILL.md +466 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/01-session-discovery.md +99 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/02-context-gathering.md +338 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/03-conflict-resolution.md +422 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/04-task-generation.md +440 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/05-plan-verify.md +395 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/06-replan.md +594 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/SKILL.md +527 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/01-session-discovery.md +57 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/02-context-gathering.md +407 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/03-test-coverage-analysis.md +172 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/05-tdd-task-generation.md +473 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/06-tdd-structure-validation.md +189 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/07-tdd-verify.md +635 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/SKILL.md +482 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/01-session-start.md +60 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/02-test-context-gather.md +493 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/03-test-concept-enhanced.md +150 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/04-test-task-generate.md +346 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/05-test-cycle-execute.md +538 -0
- package/.claude/skills/ccw-chain/specs/auto-mode.md +47 -0
- package/.claude/skills/ccw-chain/specs/intent-patterns.md +60 -0
- package/.claude/skills/chain-loader/SKILL.md +78 -0
- package/.claude/skills/chain-loader/phases/01-analyze-skill.md +53 -0
- package/.claude/skills/chain-loader/phases/02-design-graph.md +73 -0
- package/.claude/skills/chain-loader/phases/03-generate-validate.md +75 -0
- package/.claude/skills/chain-loader/specs/chain-schema.md +99 -0
- package/.claude/skills/chain-loader/specs/design-patterns.md +99 -0
- package/.claude/skills/chain-loader/templates/chain-json.md +63 -0
- package/.claude/skills/review-cycle/phases/review-module.md +764 -764
- package/.claude/skills/review-cycle/phases/review-session.md +775 -775
- package/.claude/skills/workflow-multi-cli-plan/SKILL.md +2 -2
- package/.claude/skills/workflow-plan/phases/03-conflict-resolution.md +422 -422
- package/.claude/skills/workflow-plan/phases/05-plan-verify.md +395 -395
- package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +407 -407
- package/.claude/skills/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -426
- package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +493 -493
- package/README.md +14 -0
- package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/litellm-api-routes.js +0 -23
- package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -1
- package/ccw/dist/tools/chain-loader.d.ts +10 -0
- package/ccw/dist/tools/chain-loader.d.ts.map +1 -0
- package/ccw/dist/tools/chain-loader.js +642 -0
- package/ccw/dist/tools/chain-loader.js.map +1 -0
- package/ccw/dist/tools/index.d.ts.map +1 -1
- package/ccw/dist/tools/index.js +2 -0
- package/ccw/dist/tools/index.js.map +1 -1
- package/ccw/dist/tools/json-builder.js +20 -0
- package/ccw/dist/tools/json-builder.js.map +1 -1
- package/ccw/dist/types/chain-types.d.ts +72 -0
- package/ccw/dist/types/chain-types.d.ts.map +1 -0
- package/ccw/dist/types/chain-types.js +5 -0
- package/ccw/dist/types/chain-types.js.map +1 -0
- package/ccw/scripts/prepublish-clean.mjs +0 -1
- package/package.json +1 -3
- package/ccw-litellm/README.md +0 -180
- package/ccw-litellm/pyproject.toml +0 -35
- package/ccw-litellm/src/ccw_litellm/__init__.py +0 -47
- package/ccw-litellm/src/ccw_litellm/cli.py +0 -108
- package/ccw-litellm/src/ccw_litellm/clients/__init__.py +0 -12
- package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +0 -270
- package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +0 -198
- package/ccw-litellm/src/ccw_litellm/config/__init__.py +0 -22
- package/ccw-litellm/src/ccw_litellm/config/loader.py +0 -343
- package/ccw-litellm/src/ccw_litellm/config/models.py +0 -162
- package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +0 -14
- package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +0 -52
- package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +0 -45
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-multi-cli-plan
|
|
3
|
+
description: Multi-CLI collaborative planning with codebase context gathering, iterative cross-verification, and execution handoff.
|
|
4
|
+
allowed-tools: Skill, Agent, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Multi-CLI Collaborative Planning
|
|
8
|
+
|
|
9
|
+
## Auto Mode
|
|
10
|
+
|
|
11
|
+
When `workflowPreferences.autoYes` is true: Auto-approve plan, use recommended solution and execution method (Agent, Skip review).
|
|
12
|
+
|
|
13
|
+
**Context Source**: ACE semantic search + Multi-CLI analysis
|
|
14
|
+
**Output Directory**: `.workflow/.multi-cli-plan/{session-id}/`
|
|
15
|
+
**Default Max Rounds**: 3 (convergence may complete earlier)
|
|
16
|
+
**CLI Tools**: @cli-discuss-agent (analysis), @cli-lite-planning-agent (plan generation)
|
|
17
|
+
**Execution**: Auto-hands off to workflow-lite-execute after plan approval
|
|
18
|
+
|
|
19
|
+
### Orchestrator Boundary (CRITICAL)
|
|
20
|
+
|
|
21
|
+
- **ONLY command** for multi-CLI collaborative planning
|
|
22
|
+
- Manages: Session state, user decisions, agent delegation, phase transitions
|
|
23
|
+
- Delegates: CLI execution to @cli-discuss-agent, plan generation to @cli-lite-planning-agent
|
|
24
|
+
|
|
25
|
+
### Execution Flow
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Phase 1: Context Gathering
|
|
29
|
+
└─ ACE semantic search, extract keywords, build context package
|
|
30
|
+
|
|
31
|
+
Phase 2: Multi-CLI Discussion (Iterative, via @cli-discuss-agent)
|
|
32
|
+
├─ Round N: Agent executes Gemini + Codex + Claude
|
|
33
|
+
├─ Cross-verify findings, synthesize solutions
|
|
34
|
+
├─ Write synthesis.json to rounds/{N}/
|
|
35
|
+
└─ Loop until convergence or max rounds
|
|
36
|
+
|
|
37
|
+
Phase 3: Present Options
|
|
38
|
+
└─ Display solutions with trade-offs from agent output
|
|
39
|
+
|
|
40
|
+
Phase 4: User Decision
|
|
41
|
+
├─ Select solution approach
|
|
42
|
+
├─ Select execution method (Agent/Codex/Auto)
|
|
43
|
+
├─ Select code review tool (Skip/Gemini/Codex/Agent)
|
|
44
|
+
└─ Route:
|
|
45
|
+
├─ Approve → Phase 5
|
|
46
|
+
├─ Need More Analysis → Return to Phase 2
|
|
47
|
+
└─ Cancel → Save session
|
|
48
|
+
|
|
49
|
+
Phase 5: Plan Generation & Execution Handoff
|
|
50
|
+
├─ Generate plan.json + .task/*.json (via @cli-lite-planning-agent, two-layer output)
|
|
51
|
+
├─ Build executionContext with user selections and taskFiles
|
|
52
|
+
└─ Execute via workflow-lite-execute
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Agent Roles
|
|
56
|
+
|
|
57
|
+
| Agent | Responsibility |
|
|
58
|
+
|-------|---------------|
|
|
59
|
+
| **Orchestrator** | Session management, ACE context, user decisions, phase transitions, executionContext assembly |
|
|
60
|
+
| **@cli-discuss-agent** | Multi-CLI execution (Gemini/Codex/Claude), cross-verification, solution synthesis, synthesis.json output |
|
|
61
|
+
| **@cli-lite-planning-agent** | Task decomposition, two-layer output: plan.json (overview with task_ids[]) + .task/*.json (task files) |
|
|
62
|
+
|
|
63
|
+
## Core Responsibilities
|
|
64
|
+
|
|
65
|
+
### Phase 1: Context Gathering
|
|
66
|
+
|
|
67
|
+
**Session Initialization**:
|
|
68
|
+
```javascript
|
|
69
|
+
const sessionId = `MCP-${taskSlug}-${date}`
|
|
70
|
+
const sessionFolder = `.workflow/.multi-cli-plan/${sessionId}`
|
|
71
|
+
Bash(`mkdir -p ${sessionFolder}/rounds`)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**ACE Context Queries**:
|
|
75
|
+
```javascript
|
|
76
|
+
const aceQueries = [
|
|
77
|
+
`Project architecture related to ${keywords}`,
|
|
78
|
+
`Existing implementations of ${keywords[0]}`,
|
|
79
|
+
`Code patterns for ${keywords} features`,
|
|
80
|
+
`Integration points for ${keywords[0]}`
|
|
81
|
+
]
|
|
82
|
+
// Execute via mcp__ace-tool__search_context
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Context Package** (passed to agent):
|
|
86
|
+
- `relevant_files[]` - Files identified by ACE
|
|
87
|
+
- `detected_patterns[]` - Code patterns found
|
|
88
|
+
- `architecture_insights` - Structure understanding
|
|
89
|
+
|
|
90
|
+
### Phase 2: Agent Delegation
|
|
91
|
+
|
|
92
|
+
**Core Principle**: Orchestrator only delegates and reads output — NO direct CLI execution. CLI calls MUST use `Bash` with `run_in_background: true`, wait for hook callback, do NOT use `TaskOutput` polling.
|
|
93
|
+
|
|
94
|
+
**Agent Invocation**:
|
|
95
|
+
```javascript
|
|
96
|
+
Agent({
|
|
97
|
+
subagent_type: "cli-discuss-agent",
|
|
98
|
+
run_in_background: false,
|
|
99
|
+
description: `Discussion round ${currentRound}`,
|
|
100
|
+
prompt: `
|
|
101
|
+
## Input Context
|
|
102
|
+
- task_description: ${taskDescription}
|
|
103
|
+
- round_number: ${currentRound}
|
|
104
|
+
- session: { id: "${sessionId}", folder: "${sessionFolder}" }
|
|
105
|
+
- ace_context: ${JSON.stringify(contextPackage)}
|
|
106
|
+
- previous_rounds: ${JSON.stringify(analysisResults)}
|
|
107
|
+
- user_feedback: ${userFeedback || 'None'}
|
|
108
|
+
- cli_config: { tools: ["gemini", "codex"], mode: "parallel", fallback_chain: ["gemini", "codex", "claude"] }
|
|
109
|
+
|
|
110
|
+
## Execution Process
|
|
111
|
+
1. Parse input context (handle JSON strings)
|
|
112
|
+
2. Check if ACE supplementary search needed
|
|
113
|
+
3. Build CLI prompts with context
|
|
114
|
+
4. Execute CLIs (parallel or serial per cli_config.mode)
|
|
115
|
+
5. Parse CLI outputs, handle failures with fallback
|
|
116
|
+
6. Perform cross-verification between CLI results
|
|
117
|
+
7. Synthesize solutions, calculate scores
|
|
118
|
+
8. Calculate convergence, generate clarification questions
|
|
119
|
+
9. Write synthesis.json
|
|
120
|
+
|
|
121
|
+
## Output
|
|
122
|
+
Write: ${sessionFolder}/rounds/${currentRound}/synthesis.json
|
|
123
|
+
|
|
124
|
+
## Completion Checklist
|
|
125
|
+
- [ ] All configured CLI tools executed (or fallback triggered)
|
|
126
|
+
- [ ] Cross-verification completed with agreements/disagreements
|
|
127
|
+
- [ ] 2-3 solutions generated with file:line references
|
|
128
|
+
- [ ] Convergence score calculated (0.0-1.0)
|
|
129
|
+
- [ ] synthesis.json written with all Primary Fields
|
|
130
|
+
`
|
|
131
|
+
})
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Read Agent Output**:
|
|
135
|
+
```javascript
|
|
136
|
+
const synthesis = JSON.parse(Read(`${sessionFolder}/rounds/${round}/synthesis.json`))
|
|
137
|
+
// Access top-level fields: solutions, convergence, cross_verification, clarification_questions
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Convergence Decision**:
|
|
141
|
+
```javascript
|
|
142
|
+
if (synthesis.convergence.recommendation === 'converged') {
|
|
143
|
+
// Proceed to Phase 3
|
|
144
|
+
} else if (synthesis.convergence.recommendation === 'user_input_needed') {
|
|
145
|
+
// Collect user feedback, return to Phase 2
|
|
146
|
+
} else {
|
|
147
|
+
// Continue to next round if new_insights && round < maxRounds
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Phase 3: Present Options
|
|
152
|
+
|
|
153
|
+
Display solutions from `synthesis.solutions[]` showing: name, source CLIs, effort/risk, pros/cons, affected files (`file:line`). Also show cross-verification agreements/disagreements count.
|
|
154
|
+
|
|
155
|
+
### Phase 4: User Decision
|
|
156
|
+
|
|
157
|
+
```javascript
|
|
158
|
+
AskUserQuestion({
|
|
159
|
+
questions: [
|
|
160
|
+
{
|
|
161
|
+
question: "Which solution approach?",
|
|
162
|
+
header: "Solution",
|
|
163
|
+
multiSelect: false,
|
|
164
|
+
options: solutions.map((s, i) => ({
|
|
165
|
+
label: `Option ${i+1}: ${s.name}`,
|
|
166
|
+
description: `${s.effort} effort, ${s.risk} risk`
|
|
167
|
+
})).concat([
|
|
168
|
+
{ label: "Need More Analysis", description: "Return to Phase 2" }
|
|
169
|
+
])
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
question: "Execution method:",
|
|
173
|
+
header: "Execution",
|
|
174
|
+
multiSelect: false,
|
|
175
|
+
options: [
|
|
176
|
+
{ label: "Agent", description: "@code-developer agent" },
|
|
177
|
+
{ label: "Codex", description: "codex CLI tool" },
|
|
178
|
+
{ label: "Auto", description: "Auto-select based on complexity" }
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
question: "Code review after execution?",
|
|
183
|
+
header: "Review",
|
|
184
|
+
multiSelect: false,
|
|
185
|
+
options: [
|
|
186
|
+
{ label: "Skip", description: "No review" },
|
|
187
|
+
{ label: "Gemini Review", description: "Gemini CLI tool" },
|
|
188
|
+
{ label: "Codex Review", description: "codex review --uncommitted" },
|
|
189
|
+
{ label: "Agent Review", description: "Current agent review" }
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
})
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Routing**:
|
|
197
|
+
- Approve + execution method → Phase 5
|
|
198
|
+
- Need More Analysis → Phase 2 with feedback
|
|
199
|
+
- Cancel → Save session for resumption
|
|
200
|
+
|
|
201
|
+
**TodoWrite Update (Phase 4 Decision)**:
|
|
202
|
+
```javascript
|
|
203
|
+
const executionLabel = userSelection.execution_method // "Agent" / "Codex" / "Auto"
|
|
204
|
+
|
|
205
|
+
TodoWrite({ todos: [
|
|
206
|
+
{ content: "Phase 1: Context Gathering", status: "completed", activeForm: "Gathering context" },
|
|
207
|
+
{ content: "Phase 2: Multi-CLI Discussion", status: "completed", activeForm: "Running discussion" },
|
|
208
|
+
{ content: "Phase 3: Present Options", status: "completed", activeForm: "Presenting options" },
|
|
209
|
+
{ content: `Phase 4: User Decision [${executionLabel}]`, status: "completed", activeForm: "Decision recorded" },
|
|
210
|
+
{ content: `Phase 5: Plan Generation [${executionLabel}]`, status: "in_progress", activeForm: `Generating plan [${executionLabel}]` }
|
|
211
|
+
]})
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Phase 5: Plan Generation & Execution Handoff
|
|
215
|
+
|
|
216
|
+
**Step 1: Build Context-Package** (Orchestrator responsibility):
|
|
217
|
+
```javascript
|
|
218
|
+
const contextPackage = {
|
|
219
|
+
solution: {
|
|
220
|
+
name: selectedSolution.name,
|
|
221
|
+
source_cli: selectedSolution.source_cli,
|
|
222
|
+
feasibility: selectedSolution.feasibility,
|
|
223
|
+
effort: selectedSolution.effort,
|
|
224
|
+
risk: selectedSolution.risk,
|
|
225
|
+
summary: selectedSolution.summary
|
|
226
|
+
},
|
|
227
|
+
implementation_plan: selectedSolution.implementation_plan,
|
|
228
|
+
dependencies: selectedSolution.dependencies || { internal: [], external: [] },
|
|
229
|
+
technical_concerns: selectedSolution.technical_concerns || [],
|
|
230
|
+
consensus: {
|
|
231
|
+
agreements: synthesis.cross_verification.agreements,
|
|
232
|
+
resolved_conflicts: synthesis.cross_verification.resolution
|
|
233
|
+
},
|
|
234
|
+
constraints: userConstraints || [],
|
|
235
|
+
task_description: taskDescription,
|
|
236
|
+
session_id: sessionId
|
|
237
|
+
}
|
|
238
|
+
Write(`${sessionFolder}/context-package.json`, JSON.stringify(contextPackage, null, 2))
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Step 2: Invoke Planning Agent**:
|
|
242
|
+
```javascript
|
|
243
|
+
Agent({
|
|
244
|
+
subagent_type: "cli-lite-planning-agent",
|
|
245
|
+
run_in_background: false,
|
|
246
|
+
description: "Generate implementation plan",
|
|
247
|
+
prompt: `
|
|
248
|
+
## Schema Reference
|
|
249
|
+
Execute: ccw tool exec json_builder '{"cmd":"info","schema":"plan"}'
|
|
250
|
+
Execute: ccw tool exec json_builder '{"cmd":"info","schema":"task"}'
|
|
251
|
+
|
|
252
|
+
## Output Format: Two-Layer Structure
|
|
253
|
+
- plan.json: Overview with task_ids[] referencing .task/ files (NO tasks[] array)
|
|
254
|
+
- .task/TASK-*.json: Independent task files following task-schema.json
|
|
255
|
+
|
|
256
|
+
plan.json required: summary, approach, task_ids, task_count, _metadata (with plan_type)
|
|
257
|
+
Task files required: id, title, description, depends_on, convergence (with criteria[])
|
|
258
|
+
Task fields: files[].change (not modification_points), convergence.criteria (not acceptance), test (not verification)
|
|
259
|
+
|
|
260
|
+
## Context-Package (from orchestrator)
|
|
261
|
+
${JSON.stringify(contextPackage, null, 2)}
|
|
262
|
+
|
|
263
|
+
## Execution Process
|
|
264
|
+
1. Read plan-overview-base-schema.json + task-schema.json for output structure
|
|
265
|
+
2. Read project-tech.json and specs/*.md
|
|
266
|
+
3. Parse context-package fields:
|
|
267
|
+
- solution: name, feasibility, summary
|
|
268
|
+
- implementation_plan: tasks[], execution_flow, milestones
|
|
269
|
+
- dependencies: internal[], external[]
|
|
270
|
+
- technical_concerns: risks/blockers
|
|
271
|
+
- consensus: agreements, resolved_conflicts
|
|
272
|
+
- constraints: user requirements
|
|
273
|
+
4. Use implementation_plan.tasks[] as task foundation
|
|
274
|
+
5. Preserve task dependencies (depends_on) and execution_flow
|
|
275
|
+
6. Expand tasks with convergence.criteria (testable completion conditions)
|
|
276
|
+
7. Create .task/ directory and write individual TASK-*.json files
|
|
277
|
+
8. Generate plan.json with task_ids[] referencing .task/ files
|
|
278
|
+
|
|
279
|
+
## Output
|
|
280
|
+
- ${sessionFolder}/plan.json (overview with task_ids[])
|
|
281
|
+
- ${sessionFolder}/.task/TASK-*.json (independent task files)
|
|
282
|
+
|
|
283
|
+
## Completion Checklist
|
|
284
|
+
- [ ] plan.json has task_ids[] and task_count (NO embedded tasks[])
|
|
285
|
+
- [ ] .task/*.json files preserve task dependencies from implementation_plan
|
|
286
|
+
- [ ] Task execution order follows execution_flow
|
|
287
|
+
- [ ] Key_points reflected in task descriptions
|
|
288
|
+
- [ ] User constraints applied to implementation
|
|
289
|
+
- [ ] convergence.criteria are testable
|
|
290
|
+
- [ ] plan.json follows plan-overview-base-schema.json
|
|
291
|
+
- [ ] Task files follow task-schema.json
|
|
292
|
+
`
|
|
293
|
+
})
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Step 3: Build executionContext**:
|
|
297
|
+
```javascript
|
|
298
|
+
const plan = JSON.parse(Read(`${sessionFolder}/plan.json`))
|
|
299
|
+
const taskFiles = plan.task_ids.map(id => `${sessionFolder}/.task/${id}.json`)
|
|
300
|
+
|
|
301
|
+
// Build executionContext (same structure as lite-plan)
|
|
302
|
+
executionContext = {
|
|
303
|
+
planObject: plan,
|
|
304
|
+
taskFiles: taskFiles, // Paths to .task/*.json files (two-layer format)
|
|
305
|
+
explorationsContext: null, // Multi-CLI doesn't use exploration files
|
|
306
|
+
explorationAngles: [],
|
|
307
|
+
explorationManifest: null,
|
|
308
|
+
clarificationContext: null, // Store user feedback from Phase 2 if exists
|
|
309
|
+
executionMethod: userSelection.execution_method, // From Phase 4
|
|
310
|
+
codeReviewTool: userSelection.code_review_tool, // From Phase 4
|
|
311
|
+
originalUserInput: taskDescription,
|
|
312
|
+
executorAssignments: null,
|
|
313
|
+
session: {
|
|
314
|
+
id: sessionId,
|
|
315
|
+
folder: sessionFolder,
|
|
316
|
+
artifacts: {
|
|
317
|
+
explorations: [], // No explorations in multi-CLI workflow
|
|
318
|
+
explorations_manifest: null,
|
|
319
|
+
plan: `${sessionFolder}/plan.json`,
|
|
320
|
+
task_dir: plan.task_ids ? `${sessionFolder}/.task/` : null,
|
|
321
|
+
synthesis_rounds: Array.from({length: currentRound}, (_, i) =>
|
|
322
|
+
`${sessionFolder}/rounds/${i+1}/synthesis.json`
|
|
323
|
+
),
|
|
324
|
+
context_package: `${sessionFolder}/context-package.json`
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Step 4: Hand off to Execution**:
|
|
331
|
+
```javascript
|
|
332
|
+
Skill({
|
|
333
|
+
skill: "workflow-lite-execute",
|
|
334
|
+
args: "--in-memory"
|
|
335
|
+
})
|
|
336
|
+
// executionContext is passed via global variable to workflow-lite-execute (Mode 1: In-Memory Plan)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## synthesis.json Schema
|
|
340
|
+
|
|
341
|
+
```json
|
|
342
|
+
{
|
|
343
|
+
"round": 1,
|
|
344
|
+
"solutions": [{
|
|
345
|
+
"name": "Solution Name",
|
|
346
|
+
"source_cli": ["gemini", "codex"],
|
|
347
|
+
"feasibility": 0.85,
|
|
348
|
+
"effort": "low|medium|high",
|
|
349
|
+
"risk": "low|medium|high",
|
|
350
|
+
"summary": "Brief analysis summary",
|
|
351
|
+
"implementation_plan": {
|
|
352
|
+
"approach": "High-level technical approach",
|
|
353
|
+
"tasks": [
|
|
354
|
+
{"id": "T1", "name": "Task", "depends_on": [], "files": [], "key_point": "..."}
|
|
355
|
+
],
|
|
356
|
+
"execution_flow": "T1 → T2 → T3",
|
|
357
|
+
"milestones": ["Checkpoint 1", "Checkpoint 2"]
|
|
358
|
+
},
|
|
359
|
+
"dependencies": {"internal": [], "external": []},
|
|
360
|
+
"technical_concerns": ["Risk 1", "Blocker 2"]
|
|
361
|
+
}],
|
|
362
|
+
"convergence": {
|
|
363
|
+
"score": 0.85,
|
|
364
|
+
"new_insights": false,
|
|
365
|
+
"recommendation": "converged|continue|user_input_needed"
|
|
366
|
+
},
|
|
367
|
+
"cross_verification": {
|
|
368
|
+
"agreements": [],
|
|
369
|
+
"disagreements": [],
|
|
370
|
+
"resolution": "..."
|
|
371
|
+
},
|
|
372
|
+
"clarification_questions": []
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## TodoWrite Pattern
|
|
377
|
+
|
|
378
|
+
**Initialization** (Phase 1 start):
|
|
379
|
+
```javascript
|
|
380
|
+
TodoWrite({ todos: [
|
|
381
|
+
{ content: "Phase 1: Context Gathering", status: "in_progress", activeForm: "Gathering context" },
|
|
382
|
+
{ content: "Phase 2: Multi-CLI Discussion", status: "pending", activeForm: "Running discussion" },
|
|
383
|
+
{ content: "Phase 3: Present Options", status: "pending", activeForm: "Presenting options" },
|
|
384
|
+
{ content: "Phase 4: User Decision", status: "pending", activeForm: "Awaiting decision" },
|
|
385
|
+
{ content: "Phase 5: Plan Generation", status: "pending", activeForm: "Generating plan" }
|
|
386
|
+
]})
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## Output File Structure
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
.workflow/.multi-cli-plan/{MCP-task-slug-YYYY-MM-DD}/
|
|
393
|
+
├── session-state.json # Session tracking (orchestrator)
|
|
394
|
+
├── rounds/
|
|
395
|
+
│ ├── 1/synthesis.json # Round 1 analysis (cli-discuss-agent)
|
|
396
|
+
│ ├── 2/synthesis.json # Round 2 analysis (cli-discuss-agent)
|
|
397
|
+
│ └── .../
|
|
398
|
+
├── context-package.json # Extracted context for planning (orchestrator)
|
|
399
|
+
├── plan.json # Plan overview with task_ids[] (NO embedded tasks[])
|
|
400
|
+
└── .task/ # Independent task files
|
|
401
|
+
├── TASK-001.json # Task file following task-schema.json
|
|
402
|
+
├── TASK-002.json
|
|
403
|
+
└── ...
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Error Handling
|
|
407
|
+
|
|
408
|
+
| Error | Resolution |
|
|
409
|
+
|-------|------------|
|
|
410
|
+
| ACE search fails | Fall back to Glob/Grep for file discovery |
|
|
411
|
+
| Agent fails | Retry once, then present partial results |
|
|
412
|
+
| CLI timeout (in agent) | Agent uses fallback: gemini → codex → claude |
|
|
413
|
+
| No convergence | Present best options, flag uncertainty |
|
|
414
|
+
| synthesis.json parse error | Request agent retry |
|
|
415
|
+
| User cancels | Save session for later resumption |
|
|
416
|
+
|
|
417
|
+
## Configuration
|
|
418
|
+
|
|
419
|
+
| Flag | Default | Description |
|
|
420
|
+
|------|---------|-------------|
|
|
421
|
+
| `--max-rounds` | 3 | Maximum discussion rounds |
|
|
422
|
+
| `--tools` | gemini,codex | CLI tools for analysis |
|
|
423
|
+
| `--mode` | parallel | Execution mode: parallel or serial |
|
|
424
|
+
| `--auto-execute` | false | Auto-execute after approval |
|