claude-code-workflow 6.0.5 → 6.1.0
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/.claude/agents/action-planning-agent.md +1 -1
- package/.claude/agents/cli-execution-agent.md +269 -269
- package/.claude/agents/cli-explore-agent.md +182 -182
- package/.claude/agents/context-search-agent.md +582 -582
- package/.claude/agents/memory-bridge.md +93 -93
- package/.claude/commands/cli/cli-init.md +1 -1
- package/.claude/commands/memory/docs-full-cli.md +471 -471
- package/.claude/commands/memory/docs-related-cli.md +386 -386
- package/.claude/commands/memory/docs.md +615 -615
- package/.claude/commands/memory/load.md +1 -1
- package/.claude/commands/memory/update-full.md +332 -332
- package/.claude/commands/memory/update-related.md +5 -5
- package/.claude/commands/workflow/init.md +1 -1
- package/.claude/commands/workflow/lite-fix.md +621 -621
- package/.claude/commands/workflow/lite-plan.md +592 -592
- package/.claude/commands/workflow/tools/context-gather.md +434 -434
- package/.claude/commands/workflow/ui-design/generate.md +504 -504
- package/.claude/commands/workflow/ui-design/import-from-code.md +537 -537
- package/.claude/scripts/classify-folders.sh +4 -0
- package/.claude/scripts/convert_tokens_to_css.sh +4 -0
- package/.claude/scripts/detect_changed_modules.sh +5 -1
- package/.claude/scripts/discover-design-files.sh +87 -83
- package/.claude/scripts/generate_module_docs.sh +717 -713
- package/.claude/scripts/get_modules_by_depth.sh +5 -1
- package/.claude/scripts/ui-generate-preview.sh +4 -0
- package/.claude/scripts/ui-instantiate-prototypes.sh +4 -0
- package/.claude/scripts/update_module_claude.sh +4 -0
- package/.claude/skills/command-guide/index/all-commands.json +1 -12
- package/.claude/skills/command-guide/index/by-category.json +1 -12
- package/.claude/skills/command-guide/index/by-use-case.json +1 -12
- package/.claude/skills/command-guide/index/essential-commands.json +1 -12
- package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +127 -71
- package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +269 -269
- package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +182 -182
- package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +18 -38
- package/.claude/skills/command-guide/reference/agents/context-search-agent.md +582 -577
- package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
- package/.claude/skills/command-guide/reference/commands/cli/cli-init.md +1 -1
- package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
- package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
- package/.claude/skills/command-guide/reference/commands/memory/docs.md +615 -610
- package/.claude/skills/command-guide/reference/commands/memory/load.md +1 -1
- package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
- package/.claude/skills/command-guide/reference/commands/memory/update-related.md +5 -5
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/artifacts.md +299 -451
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +14 -37
- package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/synthesis.md +252 -350
- package/.claude/skills/command-guide/reference/commands/workflow/init.md +2 -2
- package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +52 -0
- package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +621 -602
- package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +46 -36
- package/.claude/skills/command-guide/reference/commands/workflow/review-fix.md +18 -58
- package/.claude/skills/command-guide/reference/commands/workflow/review-module-cycle.md +22 -52
- package/.claude/skills/command-guide/reference/commands/workflow/review-session-cycle.md +19 -48
- package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +25 -5
- package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +7 -7
- package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +151 -11
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +4 -4
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/generate.md +504 -504
- package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +537 -537
- package/.claude/workflows/context-search-strategy.md +77 -77
- package/.claude/workflows/tool-strategy.md +90 -71
- package/.claude/workflows/workflow-architecture.md +1 -1
- package/ccw/src/cli.js +7 -0
- package/ccw/src/commands/tool.js +181 -0
- package/ccw/src/core/dashboard-generator.js +18 -3
- package/ccw/src/core/lite-scanner.js +35 -11
- package/ccw/src/core/server.js +531 -46
- package/ccw/src/templates/dashboard-css/01-base.css +161 -0
- package/ccw/src/templates/dashboard-css/02-session.css +726 -0
- package/ccw/src/templates/dashboard-css/03-tasks.css +512 -0
- package/ccw/src/templates/dashboard-css/04-lite-tasks.css +843 -0
- package/ccw/src/templates/dashboard-css/05-context.css +2206 -0
- package/ccw/src/templates/dashboard-css/06-cards.css +1570 -0
- package/ccw/src/templates/dashboard-css/07-managers.css +936 -0
- package/ccw/src/templates/dashboard-css/08-review.css +1266 -0
- package/ccw/src/templates/dashboard-css/09-explorer.css +1397 -0
- package/ccw/src/templates/dashboard-js/components/global-notifications.js +219 -0
- package/ccw/src/templates/dashboard-js/components/hook-manager.js +10 -0
- package/ccw/src/templates/dashboard-js/components/mcp-manager.js +11 -1
- package/ccw/src/templates/dashboard-js/components/navigation.js +11 -5
- package/ccw/src/templates/dashboard-js/components/tabs-context.js +20 -20
- package/ccw/src/templates/dashboard-js/components/tabs-other.js +11 -11
- package/ccw/src/templates/dashboard-js/components/theme.js +29 -1
- package/ccw/src/templates/dashboard-js/main.js +4 -0
- package/ccw/src/templates/dashboard-js/state.js +5 -0
- package/ccw/src/templates/dashboard-js/views/explorer.js +852 -0
- package/ccw/src/templates/dashboard-js/views/home.js +13 -9
- package/ccw/src/templates/dashboard-js/views/hook-manager.js +8 -5
- package/ccw/src/templates/dashboard-js/views/lite-tasks.js +21 -16
- package/ccw/src/templates/dashboard-js/views/mcp-manager.js +90 -19
- package/ccw/src/templates/dashboard-js/views/project-overview.js +15 -11
- package/ccw/src/templates/dashboard-js/views/review-session.js +3 -3
- package/ccw/src/templates/dashboard-js/views/session-detail.js +38 -28
- package/ccw/src/templates/dashboard.html +129 -28
- package/ccw/src/tools/classify-folders.js +204 -0
- package/ccw/src/tools/convert-tokens-to-css.js +250 -0
- package/ccw/src/tools/detect-changed-modules.js +288 -0
- package/ccw/src/tools/discover-design-files.js +134 -0
- package/ccw/src/tools/edit-file.js +266 -0
- package/ccw/src/tools/generate-module-docs.js +416 -0
- package/ccw/src/tools/get-modules-by-depth.js +308 -0
- package/ccw/src/tools/index.js +176 -0
- package/ccw/src/tools/ui-generate-preview.js +327 -0
- package/ccw/src/tools/ui-instantiate-prototypes.js +301 -0
- package/ccw/src/tools/update-module-claude.js +380 -0
- package/package.json +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/status.md +0 -352
- package/ccw/src/core/server.js.bak +0 -385
- package/ccw/src/core/server_original.bak +0 -385
- package/ccw/src/templates/dashboard.css +0 -8187
- package/ccw/src/templates/dashboard_tailwind.html +0 -42
- package/ccw/src/templates/dashboard_test.html +0 -37
- package/ccw/src/templates/tailwind-base.css +0 -212
|
@@ -1,434 +1,434 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gather
|
|
3
|
-
description: Intelligently collect project context using context-search-agent based on task description, packages into standardized JSON
|
|
4
|
-
argument-hint: "--session WFS-session-id \"task description\""
|
|
5
|
-
examples:
|
|
6
|
-
- /workflow:tools:context-gather --session WFS-user-auth "Implement user authentication system"
|
|
7
|
-
- /workflow:tools:context-gather --session WFS-payment "Refactor payment module API"
|
|
8
|
-
- /workflow:tools:context-gather --session WFS-bugfix "Fix login validation error"
|
|
9
|
-
allowed-tools: Task(*), Read(*), Glob(*)
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Context Gather Command (/workflow:tools:context-gather)
|
|
13
|
-
|
|
14
|
-
## Overview
|
|
15
|
-
|
|
16
|
-
Orchestrator command that invokes `context-search-agent` to gather comprehensive project context for implementation planning. Generates standardized `context-package.json` with codebase analysis, dependencies, and conflict detection.
|
|
17
|
-
|
|
18
|
-
**Agent**: `context-search-agent` (`.claude/agents/context-search-agent.md`)
|
|
19
|
-
|
|
20
|
-
## Core Philosophy
|
|
21
|
-
|
|
22
|
-
- **Agent Delegation**: Delegate all discovery to `context-search-agent` for autonomous execution
|
|
23
|
-
- **Detection-First**: Check for existing context-package before executing
|
|
24
|
-
- **Plan Mode**: Full comprehensive analysis (vs lightweight brainstorm mode)
|
|
25
|
-
- **Standardized Output**: Generate `.workflow/active/{session}/.process/context-package.json`
|
|
26
|
-
|
|
27
|
-
## Execution Process
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
Input Parsing:
|
|
31
|
-
├─ Parse flags: --session
|
|
32
|
-
└─ Parse: task_description (required)
|
|
33
|
-
|
|
34
|
-
Step 1: Context-Package Detection
|
|
35
|
-
└─ Decision (existing package):
|
|
36
|
-
├─ Valid package exists → Return existing (skip execution)
|
|
37
|
-
└─ No valid package → Continue to Step 2
|
|
38
|
-
|
|
39
|
-
Step 2: Complexity Assessment & Parallel Explore (NEW)
|
|
40
|
-
├─ Analyze task_description → classify Low/Medium/High
|
|
41
|
-
├─ Select exploration angles (1-4 based on complexity)
|
|
42
|
-
├─ Launch N cli-explore-agents in parallel
|
|
43
|
-
│ └─ Each outputs: exploration-{angle}.json
|
|
44
|
-
└─ Generate explorations-manifest.json
|
|
45
|
-
|
|
46
|
-
Step 3: Invoke Context-Search Agent (with exploration input)
|
|
47
|
-
├─ Phase 1: Initialization & Pre-Analysis
|
|
48
|
-
├─ Phase 2: Multi-Source Discovery
|
|
49
|
-
│ ├─ Track 0: Exploration Synthesis (prioritize & deduplicate)
|
|
50
|
-
│ ├─ Track 1-4: Existing tracks
|
|
51
|
-
└─ Phase 3: Synthesis & Packaging
|
|
52
|
-
└─ Generate context-package.json with exploration_results
|
|
53
|
-
|
|
54
|
-
Step 4: Output Verification
|
|
55
|
-
└─ Verify context-package.json contains exploration_results
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Execution Flow
|
|
59
|
-
|
|
60
|
-
### Step 1: Context-Package Detection
|
|
61
|
-
|
|
62
|
-
**Execute First** - Check if valid package already exists:
|
|
63
|
-
|
|
64
|
-
```javascript
|
|
65
|
-
const contextPackagePath = `.workflow/${session_id}/.process/context-package.json`;
|
|
66
|
-
|
|
67
|
-
if (file_exists(contextPackagePath)) {
|
|
68
|
-
const existing = Read(contextPackagePath);
|
|
69
|
-
|
|
70
|
-
// Validate package belongs to current session
|
|
71
|
-
if (existing?.metadata?.session_id === session_id) {
|
|
72
|
-
console.log("✅ Valid context-package found for session:", session_id);
|
|
73
|
-
console.log("📊 Stats:", existing.statistics);
|
|
74
|
-
console.log("⚠️ Conflict Risk:", existing.conflict_detection.risk_level);
|
|
75
|
-
return existing; // Skip execution, return existing
|
|
76
|
-
} else {
|
|
77
|
-
console.warn("⚠️ Invalid session_id in existing package, re-generating...");
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Step 2: Complexity Assessment & Parallel Explore
|
|
83
|
-
|
|
84
|
-
**Only execute if Step 1 finds no valid package**
|
|
85
|
-
|
|
86
|
-
```javascript
|
|
87
|
-
// 2.1 Complexity Assessment
|
|
88
|
-
function analyzeTaskComplexity(taskDescription) {
|
|
89
|
-
const text = taskDescription.toLowerCase();
|
|
90
|
-
if (/architect|refactor|restructure|modular|cross-module/.test(text)) return 'High';
|
|
91
|
-
if (/multiple|several|integrate|migrate|extend/.test(text)) return 'Medium';
|
|
92
|
-
return 'Low';
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const ANGLE_PRESETS = {
|
|
96
|
-
architecture: ['architecture', 'dependencies', 'modularity', 'integration-points'],
|
|
97
|
-
security: ['security', 'auth-patterns', 'dataflow', 'validation'],
|
|
98
|
-
performance: ['performance', 'bottlenecks', 'caching', 'data-access'],
|
|
99
|
-
bugfix: ['error-handling', 'dataflow', 'state-management', 'edge-cases'],
|
|
100
|
-
feature: ['patterns', 'integration-points', 'testing', 'dependencies'],
|
|
101
|
-
refactor: ['architecture', 'patterns', 'dependencies', 'testing']
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
function selectAngles(taskDescription, complexity) {
|
|
105
|
-
const text = taskDescription.toLowerCase();
|
|
106
|
-
let preset = 'feature';
|
|
107
|
-
if (/refactor|architect|restructure/.test(text)) preset = 'architecture';
|
|
108
|
-
else if (/security|auth|permission/.test(text)) preset = 'security';
|
|
109
|
-
else if (/performance|slow|optimi/.test(text)) preset = 'performance';
|
|
110
|
-
else if (/fix|bug|error|issue/.test(text)) preset = 'bugfix';
|
|
111
|
-
|
|
112
|
-
const count = complexity === 'High' ? 4 : (complexity === 'Medium' ? 3 : 1);
|
|
113
|
-
return ANGLE_PRESETS[preset].slice(0, count);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const complexity = analyzeTaskComplexity(task_description);
|
|
117
|
-
const selectedAngles = selectAngles(task_description, complexity);
|
|
118
|
-
const sessionFolder = `.workflow/active/${session_id}/.process`;
|
|
119
|
-
|
|
120
|
-
// 2.2 Launch Parallel Explore Agents
|
|
121
|
-
const explorationTasks = selectedAngles.map((angle, index) =>
|
|
122
|
-
Task(
|
|
123
|
-
subagent_type="cli-explore-agent",
|
|
124
|
-
description=`Explore: ${angle}`,
|
|
125
|
-
prompt=`
|
|
126
|
-
## Task Objective
|
|
127
|
-
Execute **${angle}** exploration for task planning context. Analyze codebase from this specific angle to discover relevant structure, patterns, and constraints.
|
|
128
|
-
|
|
129
|
-
## Assigned Context
|
|
130
|
-
- **Exploration Angle**: ${angle}
|
|
131
|
-
- **Task Description**: ${task_description}
|
|
132
|
-
- **Session ID**: ${session_id}
|
|
133
|
-
- **Exploration Index**: ${index + 1} of ${selectedAngles.length}
|
|
134
|
-
- **Output File**: ${sessionFolder}/exploration-${angle}.json
|
|
135
|
-
|
|
136
|
-
## MANDATORY FIRST STEPS (Execute by Agent)
|
|
137
|
-
**You (cli-explore-agent) MUST execute these steps in order:**
|
|
138
|
-
1. Run:
|
|
139
|
-
2. Run: rg -l "{keyword_from_task}" --type ts (locate relevant files)
|
|
140
|
-
3. Execute: cat ~/.claude/workflows/cli-templates/schemas/explore-json-schema.json (get output schema reference)
|
|
141
|
-
|
|
142
|
-
## Exploration Strategy (${angle} focus)
|
|
143
|
-
|
|
144
|
-
**Step 1: Structural Scan** (Bash)
|
|
145
|
-
- get_modules_by_depth.sh → identify modules related to ${angle}
|
|
146
|
-
- find/rg → locate files relevant to ${angle} aspect
|
|
147
|
-
- Analyze imports/dependencies from ${angle} perspective
|
|
148
|
-
|
|
149
|
-
**Step 2: Semantic Analysis** (Gemini CLI)
|
|
150
|
-
- How does existing code handle ${angle} concerns?
|
|
151
|
-
- What patterns are used for ${angle}?
|
|
152
|
-
- Where would new code integrate from ${angle} viewpoint?
|
|
153
|
-
|
|
154
|
-
**Step 3: Write Output**
|
|
155
|
-
- Consolidate ${angle} findings into JSON
|
|
156
|
-
- Identify ${angle}-specific clarification needs
|
|
157
|
-
|
|
158
|
-
## Expected Output
|
|
159
|
-
|
|
160
|
-
**File**: ${sessionFolder}/exploration-${angle}.json
|
|
161
|
-
|
|
162
|
-
**Schema Reference**: Schema obtained in MANDATORY FIRST STEPS step 3, follow schema exactly
|
|
163
|
-
|
|
164
|
-
**Required Fields** (all ${angle} focused):
|
|
165
|
-
- project_structure: Modules/architecture relevant to ${angle}
|
|
166
|
-
- relevant_files: Files affected from ${angle} perspective
|
|
167
|
-
**IMPORTANT**: Use object format with relevance scores for synthesis:
|
|
168
|
-
\`[{path: "src/file.ts", relevance: 0.85, rationale: "Core ${angle} logic"}]\`
|
|
169
|
-
Scores: 0.7+ high priority, 0.5-0.7 medium, <0.5 low
|
|
170
|
-
- patterns: ${angle}-related patterns to follow
|
|
171
|
-
- dependencies: Dependencies relevant to ${angle}
|
|
172
|
-
- integration_points: Where to integrate from ${angle} viewpoint (include file:line locations)
|
|
173
|
-
- constraints: ${angle}-specific limitations/conventions
|
|
174
|
-
- clarification_needs: ${angle}-related ambiguities (options array + recommended index)
|
|
175
|
-
- _metadata.exploration_angle: "${angle}"
|
|
176
|
-
|
|
177
|
-
## Success Criteria
|
|
178
|
-
- [ ] Schema obtained via cat explore-json-schema.json
|
|
179
|
-
- [ ] get_modules_by_depth.sh executed
|
|
180
|
-
- [ ] At least 3 relevant files identified with ${angle} rationale
|
|
181
|
-
- [ ] Patterns are actionable (code examples, not generic advice)
|
|
182
|
-
- [ ] Integration points include file:line locations
|
|
183
|
-
- [ ] Constraints are project-specific to ${angle}
|
|
184
|
-
- [ ] JSON output follows schema exactly
|
|
185
|
-
- [ ] clarification_needs includes options + recommended
|
|
186
|
-
|
|
187
|
-
## Output
|
|
188
|
-
Write: ${sessionFolder}/exploration-${angle}.json
|
|
189
|
-
Return: 2-3 sentence summary of ${angle} findings
|
|
190
|
-
`
|
|
191
|
-
)
|
|
192
|
-
);
|
|
193
|
-
|
|
194
|
-
// 2.3 Generate Manifest after all complete
|
|
195
|
-
const explorationFiles = bash(`find ${sessionFolder} -name "exploration-*.json" -type f`).split('\n').filter(f => f.trim());
|
|
196
|
-
const explorationManifest = {
|
|
197
|
-
session_id,
|
|
198
|
-
task_description,
|
|
199
|
-
timestamp: new Date().toISOString(),
|
|
200
|
-
complexity,
|
|
201
|
-
exploration_count: selectedAngles.length,
|
|
202
|
-
angles_explored: selectedAngles,
|
|
203
|
-
explorations: explorationFiles.map(file => {
|
|
204
|
-
const data = JSON.parse(Read(file));
|
|
205
|
-
return { angle: data._metadata.exploration_angle, file: file.split('/').pop(), path: file, index: data._metadata.exploration_index };
|
|
206
|
-
})
|
|
207
|
-
};
|
|
208
|
-
Write(`${sessionFolder}/explorations-manifest.json`, JSON.stringify(explorationManifest, null, 2));
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Step 3: Invoke Context-Search Agent
|
|
212
|
-
|
|
213
|
-
**Only execute after Step 2 completes**
|
|
214
|
-
|
|
215
|
-
```javascript
|
|
216
|
-
Task(
|
|
217
|
-
subagent_type="context-search-agent",
|
|
218
|
-
description="Gather comprehensive context for plan",
|
|
219
|
-
prompt=`
|
|
220
|
-
## Execution Mode
|
|
221
|
-
**PLAN MODE** (Comprehensive) - Full Phase 1-3 execution
|
|
222
|
-
|
|
223
|
-
## Session Information
|
|
224
|
-
- **Session ID**: ${session_id}
|
|
225
|
-
- **Task Description**: ${task_description}
|
|
226
|
-
- **Output Path**: .workflow/${session_id}/.process/context-package.json
|
|
227
|
-
|
|
228
|
-
## Exploration Input (from Step 2)
|
|
229
|
-
- **Manifest**: ${sessionFolder}/explorations-manifest.json
|
|
230
|
-
- **Exploration Count**: ${explorationManifest.exploration_count}
|
|
231
|
-
- **Angles**: ${explorationManifest.angles_explored.join(', ')}
|
|
232
|
-
- **Complexity**: ${complexity}
|
|
233
|
-
|
|
234
|
-
## Mission
|
|
235
|
-
Execute complete context-search-agent workflow for implementation planning:
|
|
236
|
-
|
|
237
|
-
### Phase 1: Initialization & Pre-Analysis
|
|
238
|
-
1. **Project State Loading**: Read and parse `.workflow/project.json`. Use its `overview` section as the foundational `project_context`. This is your primary source for architecture, tech stack, and key components. If file doesn't exist, proceed with fresh analysis.
|
|
239
|
-
2. **Detection**: Check for existing context-package (early exit if valid)
|
|
240
|
-
3. **Foundation**: Initialize code-index, get project structure, load docs
|
|
241
|
-
4. **Analysis**: Extract keywords, determine scope, classify complexity based on task description and project state
|
|
242
|
-
|
|
243
|
-
### Phase 2: Multi-Source Context Discovery
|
|
244
|
-
Execute all discovery tracks:
|
|
245
|
-
- **Track 0**: Exploration Synthesis (load ${sessionFolder}/explorations-manifest.json, prioritize critical_files, deduplicate patterns/integration_points)
|
|
246
|
-
- **Track 1**: Historical archive analysis (query manifest.json for lessons learned)
|
|
247
|
-
- **Track 2**: Reference documentation (CLAUDE.md, architecture docs)
|
|
248
|
-
- **Track 3**: Web examples (use Exa MCP for unfamiliar tech/APIs)
|
|
249
|
-
- **Track 4**: Codebase analysis (5-layer discovery: files, content, patterns, deps, config/tests)
|
|
250
|
-
|
|
251
|
-
### Phase 3: Synthesis, Assessment & Packaging
|
|
252
|
-
1. Apply relevance scoring and build dependency graph
|
|
253
|
-
2. **Synthesize 4-source data**: Merge findings from all sources (archive > docs > code > web). **Prioritize the context from `project.json`** for architecture and tech stack unless code analysis reveals it's outdated.
|
|
254
|
-
3. **Populate `project_context`**: Directly use the `overview` from `project.json` to fill the `project_context` section of the output `context-package.json`. Include description, technology_stack, architecture, and key_components.
|
|
255
|
-
4. Integrate brainstorm artifacts (if .brainstorming/ exists, read content)
|
|
256
|
-
5. Perform conflict detection with risk assessment
|
|
257
|
-
6. **Inject historical conflicts** from archive analysis into conflict_detection
|
|
258
|
-
7. Generate and validate context-package.json
|
|
259
|
-
|
|
260
|
-
## Output Requirements
|
|
261
|
-
Complete context-package.json with:
|
|
262
|
-
- **metadata**: task_description, keywords, complexity, tech_stack, session_id
|
|
263
|
-
- **project_context**: description, technology_stack, architecture, key_components (sourced from `project.json` overview)
|
|
264
|
-
- **assets**: {documentation[], source_code[], config[], tests[]} with relevance scores
|
|
265
|
-
- **dependencies**: {internal[], external[]} with dependency graph
|
|
266
|
-
- **brainstorm_artifacts**: {guidance_specification, role_analyses[], synthesis_output} with content
|
|
267
|
-
- **conflict_detection**: {risk_level, risk_factors, affected_modules[], mitigation_strategy, historical_conflicts[]}
|
|
268
|
-
- **exploration_results**: {manifest_path, exploration_count, angles, explorations[], aggregated_insights} (from Track 0)
|
|
269
|
-
|
|
270
|
-
## Quality Validation
|
|
271
|
-
Before completion verify:
|
|
272
|
-
- [ ] Valid JSON format with all required fields
|
|
273
|
-
- [ ] File relevance accuracy >80%
|
|
274
|
-
- [ ] Dependency graph complete (max 2 transitive levels)
|
|
275
|
-
- [ ] Conflict risk level calculated correctly
|
|
276
|
-
- [ ] No sensitive data exposed
|
|
277
|
-
- [ ] Total files ≤50 (prioritize high-relevance)
|
|
278
|
-
|
|
279
|
-
Execute autonomously following agent documentation.
|
|
280
|
-
Report completion with statistics.
|
|
281
|
-
`
|
|
282
|
-
)
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
### Step 4: Output Verification
|
|
286
|
-
|
|
287
|
-
After agent completes, verify output:
|
|
288
|
-
|
|
289
|
-
```javascript
|
|
290
|
-
// Verify file was created
|
|
291
|
-
const outputPath = `.workflow/${session_id}/.process/context-package.json`;
|
|
292
|
-
if (!file_exists(outputPath)) {
|
|
293
|
-
throw new Error("❌ Agent failed to generate context-package.json");
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Verify exploration_results included
|
|
297
|
-
const pkg = JSON.parse(Read(outputPath));
|
|
298
|
-
if (pkg.exploration_results?.exploration_count > 0) {
|
|
299
|
-
console.log(`✅ Exploration results aggregated: ${pkg.exploration_results.exploration_count} angles`);
|
|
300
|
-
}
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
## Parameter Reference
|
|
304
|
-
|
|
305
|
-
| Parameter | Type | Required | Description |
|
|
306
|
-
|-----------|------|----------|-------------|
|
|
307
|
-
| `--session` | string | ✅ | Workflow session ID (e.g., WFS-user-auth) |
|
|
308
|
-
| `task_description` | string | ✅ | Detailed task description for context extraction |
|
|
309
|
-
|
|
310
|
-
## Output Schema
|
|
311
|
-
|
|
312
|
-
Refer to `context-search-agent.md` Phase 3.7 for complete `context-package.json` schema.
|
|
313
|
-
|
|
314
|
-
**Key Sections**:
|
|
315
|
-
- **metadata**: Session info, keywords, complexity, tech stack
|
|
316
|
-
- **project_context**: Architecture patterns, conventions, tech stack (populated from `project.json` overview)
|
|
317
|
-
- **assets**: Categorized files with relevance scores (documentation, source_code, config, tests)
|
|
318
|
-
- **dependencies**: Internal and external dependency graphs
|
|
319
|
-
- **brainstorm_artifacts**: Brainstorm documents with full content (if exists)
|
|
320
|
-
- **conflict_detection**: Risk assessment with mitigation strategies and historical conflicts
|
|
321
|
-
- **exploration_results**: Aggregated exploration insights (from parallel explore phase)
|
|
322
|
-
|
|
323
|
-
## Historical Archive Analysis
|
|
324
|
-
|
|
325
|
-
### Track 1: Query Archive Manifest
|
|
326
|
-
|
|
327
|
-
The context-search-agent MUST perform historical archive analysis as Track 1 in Phase 2:
|
|
328
|
-
|
|
329
|
-
**Step 1: Check for Archive Manifest**
|
|
330
|
-
```bash
|
|
331
|
-
# Check if archive manifest exists
|
|
332
|
-
if [[ -f .workflow/archives/manifest.json ]]; then
|
|
333
|
-
# Manifest available for querying
|
|
334
|
-
fi
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**Step 2: Extract Task Keywords**
|
|
338
|
-
```javascript
|
|
339
|
-
// From current task description, extract key entities and operations
|
|
340
|
-
const keywords = extractKeywords(task_description);
|
|
341
|
-
// Examples: ["User", "model", "authentication", "JWT", "reporting"]
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
**Step 3: Search Archive for Relevant Sessions**
|
|
345
|
-
```javascript
|
|
346
|
-
// Query manifest for sessions with matching tags or descriptions
|
|
347
|
-
const relevantArchives = archives.filter(archive => {
|
|
348
|
-
return archive.tags.some(tag => keywords.includes(tag)) ||
|
|
349
|
-
keywords.some(kw => archive.description.toLowerCase().includes(kw.toLowerCase()));
|
|
350
|
-
});
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
**Step 4: Extract Watch Patterns**
|
|
354
|
-
```javascript
|
|
355
|
-
// For each relevant archive, check watch_patterns for applicability
|
|
356
|
-
const historicalConflicts = [];
|
|
357
|
-
|
|
358
|
-
relevantArchives.forEach(archive => {
|
|
359
|
-
archive.lessons.watch_patterns?.forEach(pattern => {
|
|
360
|
-
// Check if pattern trigger matches current task
|
|
361
|
-
if (isPatternRelevant(pattern.pattern, task_description)) {
|
|
362
|
-
historicalConflicts.push({
|
|
363
|
-
source_session: archive.session_id,
|
|
364
|
-
pattern: pattern.pattern,
|
|
365
|
-
action: pattern.action,
|
|
366
|
-
files_to_check: pattern.related_files,
|
|
367
|
-
archived_at: archive.archived_at
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
});
|
|
371
|
-
});
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
**Step 5: Inject into Context Package**
|
|
375
|
-
```json
|
|
376
|
-
{
|
|
377
|
-
"conflict_detection": {
|
|
378
|
-
"risk_level": "medium",
|
|
379
|
-
"risk_factors": ["..."],
|
|
380
|
-
"affected_modules": ["..."],
|
|
381
|
-
"mitigation_strategy": "...",
|
|
382
|
-
"historical_conflicts": [
|
|
383
|
-
{
|
|
384
|
-
"source_session": "WFS-auth-feature",
|
|
385
|
-
"pattern": "When modifying User model",
|
|
386
|
-
"action": "Check reporting-service and auditing-service dependencies",
|
|
387
|
-
"files_to_check": ["src/models/User.ts", "src/services/reporting.ts"],
|
|
388
|
-
"archived_at": "2025-09-16T09:00:00Z"
|
|
389
|
-
}
|
|
390
|
-
]
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
### Risk Level Escalation
|
|
396
|
-
|
|
397
|
-
If `historical_conflicts` array is not empty, minimum risk level should be "medium":
|
|
398
|
-
|
|
399
|
-
```javascript
|
|
400
|
-
if (historicalConflicts.length > 0 && currentRisk === "low") {
|
|
401
|
-
conflict_detection.risk_level = "medium";
|
|
402
|
-
conflict_detection.risk_factors.push(
|
|
403
|
-
`${historicalConflicts.length} historical conflict pattern(s) detected from past sessions`
|
|
404
|
-
);
|
|
405
|
-
}
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
### Archive Query Algorithm
|
|
409
|
-
|
|
410
|
-
```markdown
|
|
411
|
-
1. IF .workflow/archives/manifest.json does NOT exist → Skip Track 1, continue to Track 2
|
|
412
|
-
2. IF manifest exists:
|
|
413
|
-
a. Load manifest.json
|
|
414
|
-
b. Extract keywords from task_description (nouns, verbs, technical terms)
|
|
415
|
-
c. Filter archives where:
|
|
416
|
-
- ANY tag matches keywords (case-insensitive) OR
|
|
417
|
-
- description contains keywords (case-insensitive substring match)
|
|
418
|
-
d. For each relevant archive:
|
|
419
|
-
- Read lessons.watch_patterns array
|
|
420
|
-
- Check if pattern.pattern keywords overlap with task_description
|
|
421
|
-
- If relevant: Add to historical_conflicts array
|
|
422
|
-
e. IF historical_conflicts.length > 0:
|
|
423
|
-
- Set risk_level = max(current_risk, "medium")
|
|
424
|
-
- Add to risk_factors
|
|
425
|
-
3. Continue to Track 2 (reference documentation)
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
## Notes
|
|
429
|
-
|
|
430
|
-
- **Detection-first**: Always check for existing package before invoking agent
|
|
431
|
-
- **Project.json integration**: Agent reads `.workflow/project.json` as primary source for project context, avoiding redundant analysis
|
|
432
|
-
- **Agent autonomy**: Agent handles all discovery logic per `.claude/agents/context-search-agent.md`
|
|
433
|
-
- **No redundancy**: This command is a thin orchestrator, all logic in agent
|
|
434
|
-
- **Plan-specific**: Use this for implementation planning; brainstorm mode uses direct agent call
|
|
1
|
+
---
|
|
2
|
+
name: gather
|
|
3
|
+
description: Intelligently collect project context using context-search-agent based on task description, packages into standardized JSON
|
|
4
|
+
argument-hint: "--session WFS-session-id \"task description\""
|
|
5
|
+
examples:
|
|
6
|
+
- /workflow:tools:context-gather --session WFS-user-auth "Implement user authentication system"
|
|
7
|
+
- /workflow:tools:context-gather --session WFS-payment "Refactor payment module API"
|
|
8
|
+
- /workflow:tools:context-gather --session WFS-bugfix "Fix login validation error"
|
|
9
|
+
allowed-tools: Task(*), Read(*), Glob(*)
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Context Gather Command (/workflow:tools:context-gather)
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Orchestrator command that invokes `context-search-agent` to gather comprehensive project context for implementation planning. Generates standardized `context-package.json` with codebase analysis, dependencies, and conflict detection.
|
|
17
|
+
|
|
18
|
+
**Agent**: `context-search-agent` (`.claude/agents/context-search-agent.md`)
|
|
19
|
+
|
|
20
|
+
## Core Philosophy
|
|
21
|
+
|
|
22
|
+
- **Agent Delegation**: Delegate all discovery to `context-search-agent` for autonomous execution
|
|
23
|
+
- **Detection-First**: Check for existing context-package before executing
|
|
24
|
+
- **Plan Mode**: Full comprehensive analysis (vs lightweight brainstorm mode)
|
|
25
|
+
- **Standardized Output**: Generate `.workflow/active/{session}/.process/context-package.json`
|
|
26
|
+
|
|
27
|
+
## Execution Process
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Input Parsing:
|
|
31
|
+
├─ Parse flags: --session
|
|
32
|
+
└─ Parse: task_description (required)
|
|
33
|
+
|
|
34
|
+
Step 1: Context-Package Detection
|
|
35
|
+
└─ Decision (existing package):
|
|
36
|
+
├─ Valid package exists → Return existing (skip execution)
|
|
37
|
+
└─ No valid package → Continue to Step 2
|
|
38
|
+
|
|
39
|
+
Step 2: Complexity Assessment & Parallel Explore (NEW)
|
|
40
|
+
├─ Analyze task_description → classify Low/Medium/High
|
|
41
|
+
├─ Select exploration angles (1-4 based on complexity)
|
|
42
|
+
├─ Launch N cli-explore-agents in parallel
|
|
43
|
+
│ └─ Each outputs: exploration-{angle}.json
|
|
44
|
+
└─ Generate explorations-manifest.json
|
|
45
|
+
|
|
46
|
+
Step 3: Invoke Context-Search Agent (with exploration input)
|
|
47
|
+
├─ Phase 1: Initialization & Pre-Analysis
|
|
48
|
+
├─ Phase 2: Multi-Source Discovery
|
|
49
|
+
│ ├─ Track 0: Exploration Synthesis (prioritize & deduplicate)
|
|
50
|
+
│ ├─ Track 1-4: Existing tracks
|
|
51
|
+
└─ Phase 3: Synthesis & Packaging
|
|
52
|
+
└─ Generate context-package.json with exploration_results
|
|
53
|
+
|
|
54
|
+
Step 4: Output Verification
|
|
55
|
+
└─ Verify context-package.json contains exploration_results
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Execution Flow
|
|
59
|
+
|
|
60
|
+
### Step 1: Context-Package Detection
|
|
61
|
+
|
|
62
|
+
**Execute First** - Check if valid package already exists:
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
const contextPackagePath = `.workflow/${session_id}/.process/context-package.json`;
|
|
66
|
+
|
|
67
|
+
if (file_exists(contextPackagePath)) {
|
|
68
|
+
const existing = Read(contextPackagePath);
|
|
69
|
+
|
|
70
|
+
// Validate package belongs to current session
|
|
71
|
+
if (existing?.metadata?.session_id === session_id) {
|
|
72
|
+
console.log("✅ Valid context-package found for session:", session_id);
|
|
73
|
+
console.log("📊 Stats:", existing.statistics);
|
|
74
|
+
console.log("⚠️ Conflict Risk:", existing.conflict_detection.risk_level);
|
|
75
|
+
return existing; // Skip execution, return existing
|
|
76
|
+
} else {
|
|
77
|
+
console.warn("⚠️ Invalid session_id in existing package, re-generating...");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 2: Complexity Assessment & Parallel Explore
|
|
83
|
+
|
|
84
|
+
**Only execute if Step 1 finds no valid package**
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
// 2.1 Complexity Assessment
|
|
88
|
+
function analyzeTaskComplexity(taskDescription) {
|
|
89
|
+
const text = taskDescription.toLowerCase();
|
|
90
|
+
if (/architect|refactor|restructure|modular|cross-module/.test(text)) return 'High';
|
|
91
|
+
if (/multiple|several|integrate|migrate|extend/.test(text)) return 'Medium';
|
|
92
|
+
return 'Low';
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const ANGLE_PRESETS = {
|
|
96
|
+
architecture: ['architecture', 'dependencies', 'modularity', 'integration-points'],
|
|
97
|
+
security: ['security', 'auth-patterns', 'dataflow', 'validation'],
|
|
98
|
+
performance: ['performance', 'bottlenecks', 'caching', 'data-access'],
|
|
99
|
+
bugfix: ['error-handling', 'dataflow', 'state-management', 'edge-cases'],
|
|
100
|
+
feature: ['patterns', 'integration-points', 'testing', 'dependencies'],
|
|
101
|
+
refactor: ['architecture', 'patterns', 'dependencies', 'testing']
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
function selectAngles(taskDescription, complexity) {
|
|
105
|
+
const text = taskDescription.toLowerCase();
|
|
106
|
+
let preset = 'feature';
|
|
107
|
+
if (/refactor|architect|restructure/.test(text)) preset = 'architecture';
|
|
108
|
+
else if (/security|auth|permission/.test(text)) preset = 'security';
|
|
109
|
+
else if (/performance|slow|optimi/.test(text)) preset = 'performance';
|
|
110
|
+
else if (/fix|bug|error|issue/.test(text)) preset = 'bugfix';
|
|
111
|
+
|
|
112
|
+
const count = complexity === 'High' ? 4 : (complexity === 'Medium' ? 3 : 1);
|
|
113
|
+
return ANGLE_PRESETS[preset].slice(0, count);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const complexity = analyzeTaskComplexity(task_description);
|
|
117
|
+
const selectedAngles = selectAngles(task_description, complexity);
|
|
118
|
+
const sessionFolder = `.workflow/active/${session_id}/.process`;
|
|
119
|
+
|
|
120
|
+
// 2.2 Launch Parallel Explore Agents
|
|
121
|
+
const explorationTasks = selectedAngles.map((angle, index) =>
|
|
122
|
+
Task(
|
|
123
|
+
subagent_type="cli-explore-agent",
|
|
124
|
+
description=`Explore: ${angle}`,
|
|
125
|
+
prompt=`
|
|
126
|
+
## Task Objective
|
|
127
|
+
Execute **${angle}** exploration for task planning context. Analyze codebase from this specific angle to discover relevant structure, patterns, and constraints.
|
|
128
|
+
|
|
129
|
+
## Assigned Context
|
|
130
|
+
- **Exploration Angle**: ${angle}
|
|
131
|
+
- **Task Description**: ${task_description}
|
|
132
|
+
- **Session ID**: ${session_id}
|
|
133
|
+
- **Exploration Index**: ${index + 1} of ${selectedAngles.length}
|
|
134
|
+
- **Output File**: ${sessionFolder}/exploration-${angle}.json
|
|
135
|
+
|
|
136
|
+
## MANDATORY FIRST STEPS (Execute by Agent)
|
|
137
|
+
**You (cli-explore-agent) MUST execute these steps in order:**
|
|
138
|
+
1. Run: ccw tool exec get_modules_by_depth '{}' (project structure)
|
|
139
|
+
2. Run: rg -l "{keyword_from_task}" --type ts (locate relevant files)
|
|
140
|
+
3. Execute: cat ~/.claude/workflows/cli-templates/schemas/explore-json-schema.json (get output schema reference)
|
|
141
|
+
|
|
142
|
+
## Exploration Strategy (${angle} focus)
|
|
143
|
+
|
|
144
|
+
**Step 1: Structural Scan** (Bash)
|
|
145
|
+
- get_modules_by_depth.sh → identify modules related to ${angle}
|
|
146
|
+
- find/rg → locate files relevant to ${angle} aspect
|
|
147
|
+
- Analyze imports/dependencies from ${angle} perspective
|
|
148
|
+
|
|
149
|
+
**Step 2: Semantic Analysis** (Gemini CLI)
|
|
150
|
+
- How does existing code handle ${angle} concerns?
|
|
151
|
+
- What patterns are used for ${angle}?
|
|
152
|
+
- Where would new code integrate from ${angle} viewpoint?
|
|
153
|
+
|
|
154
|
+
**Step 3: Write Output**
|
|
155
|
+
- Consolidate ${angle} findings into JSON
|
|
156
|
+
- Identify ${angle}-specific clarification needs
|
|
157
|
+
|
|
158
|
+
## Expected Output
|
|
159
|
+
|
|
160
|
+
**File**: ${sessionFolder}/exploration-${angle}.json
|
|
161
|
+
|
|
162
|
+
**Schema Reference**: Schema obtained in MANDATORY FIRST STEPS step 3, follow schema exactly
|
|
163
|
+
|
|
164
|
+
**Required Fields** (all ${angle} focused):
|
|
165
|
+
- project_structure: Modules/architecture relevant to ${angle}
|
|
166
|
+
- relevant_files: Files affected from ${angle} perspective
|
|
167
|
+
**IMPORTANT**: Use object format with relevance scores for synthesis:
|
|
168
|
+
\`[{path: "src/file.ts", relevance: 0.85, rationale: "Core ${angle} logic"}]\`
|
|
169
|
+
Scores: 0.7+ high priority, 0.5-0.7 medium, <0.5 low
|
|
170
|
+
- patterns: ${angle}-related patterns to follow
|
|
171
|
+
- dependencies: Dependencies relevant to ${angle}
|
|
172
|
+
- integration_points: Where to integrate from ${angle} viewpoint (include file:line locations)
|
|
173
|
+
- constraints: ${angle}-specific limitations/conventions
|
|
174
|
+
- clarification_needs: ${angle}-related ambiguities (options array + recommended index)
|
|
175
|
+
- _metadata.exploration_angle: "${angle}"
|
|
176
|
+
|
|
177
|
+
## Success Criteria
|
|
178
|
+
- [ ] Schema obtained via cat explore-json-schema.json
|
|
179
|
+
- [ ] get_modules_by_depth.sh executed
|
|
180
|
+
- [ ] At least 3 relevant files identified with ${angle} rationale
|
|
181
|
+
- [ ] Patterns are actionable (code examples, not generic advice)
|
|
182
|
+
- [ ] Integration points include file:line locations
|
|
183
|
+
- [ ] Constraints are project-specific to ${angle}
|
|
184
|
+
- [ ] JSON output follows schema exactly
|
|
185
|
+
- [ ] clarification_needs includes options + recommended
|
|
186
|
+
|
|
187
|
+
## Output
|
|
188
|
+
Write: ${sessionFolder}/exploration-${angle}.json
|
|
189
|
+
Return: 2-3 sentence summary of ${angle} findings
|
|
190
|
+
`
|
|
191
|
+
)
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
// 2.3 Generate Manifest after all complete
|
|
195
|
+
const explorationFiles = bash(`find ${sessionFolder} -name "exploration-*.json" -type f`).split('\n').filter(f => f.trim());
|
|
196
|
+
const explorationManifest = {
|
|
197
|
+
session_id,
|
|
198
|
+
task_description,
|
|
199
|
+
timestamp: new Date().toISOString(),
|
|
200
|
+
complexity,
|
|
201
|
+
exploration_count: selectedAngles.length,
|
|
202
|
+
angles_explored: selectedAngles,
|
|
203
|
+
explorations: explorationFiles.map(file => {
|
|
204
|
+
const data = JSON.parse(Read(file));
|
|
205
|
+
return { angle: data._metadata.exploration_angle, file: file.split('/').pop(), path: file, index: data._metadata.exploration_index };
|
|
206
|
+
})
|
|
207
|
+
};
|
|
208
|
+
Write(`${sessionFolder}/explorations-manifest.json`, JSON.stringify(explorationManifest, null, 2));
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Step 3: Invoke Context-Search Agent
|
|
212
|
+
|
|
213
|
+
**Only execute after Step 2 completes**
|
|
214
|
+
|
|
215
|
+
```javascript
|
|
216
|
+
Task(
|
|
217
|
+
subagent_type="context-search-agent",
|
|
218
|
+
description="Gather comprehensive context for plan",
|
|
219
|
+
prompt=`
|
|
220
|
+
## Execution Mode
|
|
221
|
+
**PLAN MODE** (Comprehensive) - Full Phase 1-3 execution
|
|
222
|
+
|
|
223
|
+
## Session Information
|
|
224
|
+
- **Session ID**: ${session_id}
|
|
225
|
+
- **Task Description**: ${task_description}
|
|
226
|
+
- **Output Path**: .workflow/${session_id}/.process/context-package.json
|
|
227
|
+
|
|
228
|
+
## Exploration Input (from Step 2)
|
|
229
|
+
- **Manifest**: ${sessionFolder}/explorations-manifest.json
|
|
230
|
+
- **Exploration Count**: ${explorationManifest.exploration_count}
|
|
231
|
+
- **Angles**: ${explorationManifest.angles_explored.join(', ')}
|
|
232
|
+
- **Complexity**: ${complexity}
|
|
233
|
+
|
|
234
|
+
## Mission
|
|
235
|
+
Execute complete context-search-agent workflow for implementation planning:
|
|
236
|
+
|
|
237
|
+
### Phase 1: Initialization & Pre-Analysis
|
|
238
|
+
1. **Project State Loading**: Read and parse `.workflow/project.json`. Use its `overview` section as the foundational `project_context`. This is your primary source for architecture, tech stack, and key components. If file doesn't exist, proceed with fresh analysis.
|
|
239
|
+
2. **Detection**: Check for existing context-package (early exit if valid)
|
|
240
|
+
3. **Foundation**: Initialize code-index, get project structure, load docs
|
|
241
|
+
4. **Analysis**: Extract keywords, determine scope, classify complexity based on task description and project state
|
|
242
|
+
|
|
243
|
+
### Phase 2: Multi-Source Context Discovery
|
|
244
|
+
Execute all discovery tracks:
|
|
245
|
+
- **Track 0**: Exploration Synthesis (load ${sessionFolder}/explorations-manifest.json, prioritize critical_files, deduplicate patterns/integration_points)
|
|
246
|
+
- **Track 1**: Historical archive analysis (query manifest.json for lessons learned)
|
|
247
|
+
- **Track 2**: Reference documentation (CLAUDE.md, architecture docs)
|
|
248
|
+
- **Track 3**: Web examples (use Exa MCP for unfamiliar tech/APIs)
|
|
249
|
+
- **Track 4**: Codebase analysis (5-layer discovery: files, content, patterns, deps, config/tests)
|
|
250
|
+
|
|
251
|
+
### Phase 3: Synthesis, Assessment & Packaging
|
|
252
|
+
1. Apply relevance scoring and build dependency graph
|
|
253
|
+
2. **Synthesize 4-source data**: Merge findings from all sources (archive > docs > code > web). **Prioritize the context from `project.json`** for architecture and tech stack unless code analysis reveals it's outdated.
|
|
254
|
+
3. **Populate `project_context`**: Directly use the `overview` from `project.json` to fill the `project_context` section of the output `context-package.json`. Include description, technology_stack, architecture, and key_components.
|
|
255
|
+
4. Integrate brainstorm artifacts (if .brainstorming/ exists, read content)
|
|
256
|
+
5. Perform conflict detection with risk assessment
|
|
257
|
+
6. **Inject historical conflicts** from archive analysis into conflict_detection
|
|
258
|
+
7. Generate and validate context-package.json
|
|
259
|
+
|
|
260
|
+
## Output Requirements
|
|
261
|
+
Complete context-package.json with:
|
|
262
|
+
- **metadata**: task_description, keywords, complexity, tech_stack, session_id
|
|
263
|
+
- **project_context**: description, technology_stack, architecture, key_components (sourced from `project.json` overview)
|
|
264
|
+
- **assets**: {documentation[], source_code[], config[], tests[]} with relevance scores
|
|
265
|
+
- **dependencies**: {internal[], external[]} with dependency graph
|
|
266
|
+
- **brainstorm_artifacts**: {guidance_specification, role_analyses[], synthesis_output} with content
|
|
267
|
+
- **conflict_detection**: {risk_level, risk_factors, affected_modules[], mitigation_strategy, historical_conflicts[]}
|
|
268
|
+
- **exploration_results**: {manifest_path, exploration_count, angles, explorations[], aggregated_insights} (from Track 0)
|
|
269
|
+
|
|
270
|
+
## Quality Validation
|
|
271
|
+
Before completion verify:
|
|
272
|
+
- [ ] Valid JSON format with all required fields
|
|
273
|
+
- [ ] File relevance accuracy >80%
|
|
274
|
+
- [ ] Dependency graph complete (max 2 transitive levels)
|
|
275
|
+
- [ ] Conflict risk level calculated correctly
|
|
276
|
+
- [ ] No sensitive data exposed
|
|
277
|
+
- [ ] Total files ≤50 (prioritize high-relevance)
|
|
278
|
+
|
|
279
|
+
Execute autonomously following agent documentation.
|
|
280
|
+
Report completion with statistics.
|
|
281
|
+
`
|
|
282
|
+
)
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Step 4: Output Verification
|
|
286
|
+
|
|
287
|
+
After agent completes, verify output:
|
|
288
|
+
|
|
289
|
+
```javascript
|
|
290
|
+
// Verify file was created
|
|
291
|
+
const outputPath = `.workflow/${session_id}/.process/context-package.json`;
|
|
292
|
+
if (!file_exists(outputPath)) {
|
|
293
|
+
throw new Error("❌ Agent failed to generate context-package.json");
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Verify exploration_results included
|
|
297
|
+
const pkg = JSON.parse(Read(outputPath));
|
|
298
|
+
if (pkg.exploration_results?.exploration_count > 0) {
|
|
299
|
+
console.log(`✅ Exploration results aggregated: ${pkg.exploration_results.exploration_count} angles`);
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Parameter Reference
|
|
304
|
+
|
|
305
|
+
| Parameter | Type | Required | Description |
|
|
306
|
+
|-----------|------|----------|-------------|
|
|
307
|
+
| `--session` | string | ✅ | Workflow session ID (e.g., WFS-user-auth) |
|
|
308
|
+
| `task_description` | string | ✅ | Detailed task description for context extraction |
|
|
309
|
+
|
|
310
|
+
## Output Schema
|
|
311
|
+
|
|
312
|
+
Refer to `context-search-agent.md` Phase 3.7 for complete `context-package.json` schema.
|
|
313
|
+
|
|
314
|
+
**Key Sections**:
|
|
315
|
+
- **metadata**: Session info, keywords, complexity, tech stack
|
|
316
|
+
- **project_context**: Architecture patterns, conventions, tech stack (populated from `project.json` overview)
|
|
317
|
+
- **assets**: Categorized files with relevance scores (documentation, source_code, config, tests)
|
|
318
|
+
- **dependencies**: Internal and external dependency graphs
|
|
319
|
+
- **brainstorm_artifacts**: Brainstorm documents with full content (if exists)
|
|
320
|
+
- **conflict_detection**: Risk assessment with mitigation strategies and historical conflicts
|
|
321
|
+
- **exploration_results**: Aggregated exploration insights (from parallel explore phase)
|
|
322
|
+
|
|
323
|
+
## Historical Archive Analysis
|
|
324
|
+
|
|
325
|
+
### Track 1: Query Archive Manifest
|
|
326
|
+
|
|
327
|
+
The context-search-agent MUST perform historical archive analysis as Track 1 in Phase 2:
|
|
328
|
+
|
|
329
|
+
**Step 1: Check for Archive Manifest**
|
|
330
|
+
```bash
|
|
331
|
+
# Check if archive manifest exists
|
|
332
|
+
if [[ -f .workflow/archives/manifest.json ]]; then
|
|
333
|
+
# Manifest available for querying
|
|
334
|
+
fi
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Step 2: Extract Task Keywords**
|
|
338
|
+
```javascript
|
|
339
|
+
// From current task description, extract key entities and operations
|
|
340
|
+
const keywords = extractKeywords(task_description);
|
|
341
|
+
// Examples: ["User", "model", "authentication", "JWT", "reporting"]
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
**Step 3: Search Archive for Relevant Sessions**
|
|
345
|
+
```javascript
|
|
346
|
+
// Query manifest for sessions with matching tags or descriptions
|
|
347
|
+
const relevantArchives = archives.filter(archive => {
|
|
348
|
+
return archive.tags.some(tag => keywords.includes(tag)) ||
|
|
349
|
+
keywords.some(kw => archive.description.toLowerCase().includes(kw.toLowerCase()));
|
|
350
|
+
});
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**Step 4: Extract Watch Patterns**
|
|
354
|
+
```javascript
|
|
355
|
+
// For each relevant archive, check watch_patterns for applicability
|
|
356
|
+
const historicalConflicts = [];
|
|
357
|
+
|
|
358
|
+
relevantArchives.forEach(archive => {
|
|
359
|
+
archive.lessons.watch_patterns?.forEach(pattern => {
|
|
360
|
+
// Check if pattern trigger matches current task
|
|
361
|
+
if (isPatternRelevant(pattern.pattern, task_description)) {
|
|
362
|
+
historicalConflicts.push({
|
|
363
|
+
source_session: archive.session_id,
|
|
364
|
+
pattern: pattern.pattern,
|
|
365
|
+
action: pattern.action,
|
|
366
|
+
files_to_check: pattern.related_files,
|
|
367
|
+
archived_at: archive.archived_at
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
**Step 5: Inject into Context Package**
|
|
375
|
+
```json
|
|
376
|
+
{
|
|
377
|
+
"conflict_detection": {
|
|
378
|
+
"risk_level": "medium",
|
|
379
|
+
"risk_factors": ["..."],
|
|
380
|
+
"affected_modules": ["..."],
|
|
381
|
+
"mitigation_strategy": "...",
|
|
382
|
+
"historical_conflicts": [
|
|
383
|
+
{
|
|
384
|
+
"source_session": "WFS-auth-feature",
|
|
385
|
+
"pattern": "When modifying User model",
|
|
386
|
+
"action": "Check reporting-service and auditing-service dependencies",
|
|
387
|
+
"files_to_check": ["src/models/User.ts", "src/services/reporting.ts"],
|
|
388
|
+
"archived_at": "2025-09-16T09:00:00Z"
|
|
389
|
+
}
|
|
390
|
+
]
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Risk Level Escalation
|
|
396
|
+
|
|
397
|
+
If `historical_conflicts` array is not empty, minimum risk level should be "medium":
|
|
398
|
+
|
|
399
|
+
```javascript
|
|
400
|
+
if (historicalConflicts.length > 0 && currentRisk === "low") {
|
|
401
|
+
conflict_detection.risk_level = "medium";
|
|
402
|
+
conflict_detection.risk_factors.push(
|
|
403
|
+
`${historicalConflicts.length} historical conflict pattern(s) detected from past sessions`
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Archive Query Algorithm
|
|
409
|
+
|
|
410
|
+
```markdown
|
|
411
|
+
1. IF .workflow/archives/manifest.json does NOT exist → Skip Track 1, continue to Track 2
|
|
412
|
+
2. IF manifest exists:
|
|
413
|
+
a. Load manifest.json
|
|
414
|
+
b. Extract keywords from task_description (nouns, verbs, technical terms)
|
|
415
|
+
c. Filter archives where:
|
|
416
|
+
- ANY tag matches keywords (case-insensitive) OR
|
|
417
|
+
- description contains keywords (case-insensitive substring match)
|
|
418
|
+
d. For each relevant archive:
|
|
419
|
+
- Read lessons.watch_patterns array
|
|
420
|
+
- Check if pattern.pattern keywords overlap with task_description
|
|
421
|
+
- If relevant: Add to historical_conflicts array
|
|
422
|
+
e. IF historical_conflicts.length > 0:
|
|
423
|
+
- Set risk_level = max(current_risk, "medium")
|
|
424
|
+
- Add to risk_factors
|
|
425
|
+
3. Continue to Track 2 (reference documentation)
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
## Notes
|
|
429
|
+
|
|
430
|
+
- **Detection-first**: Always check for existing package before invoking agent
|
|
431
|
+
- **Project.json integration**: Agent reads `.workflow/project.json` as primary source for project context, avoiding redundant analysis
|
|
432
|
+
- **Agent autonomy**: Agent handles all discovery logic per `.claude/agents/context-search-agent.md`
|
|
433
|
+
- **No redundancy**: This command is a thin orchestrator, all logic in agent
|
|
434
|
+
- **Plan-specific**: Use this for implementation planning; brainstorm mode uses direct agent call
|