claude-code-workflow 6.3.4 → 6.3.6

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.
Files changed (111) hide show
  1. package/.claude/agents/issue-plan-agent.md +859 -0
  2. package/.claude/agents/issue-queue-agent.md +702 -0
  3. package/.claude/commands/issue/execute.md +453 -0
  4. package/.claude/commands/issue/manage.md +865 -0
  5. package/.claude/commands/issue/new.md +484 -0
  6. package/.claude/commands/issue/plan.md +421 -0
  7. package/.claude/commands/issue/queue.md +354 -0
  8. package/.claude/commands/{clean.md → workflow/clean.md} +5 -5
  9. package/.claude/commands/workflow/docs/analyze.md +1467 -0
  10. package/.claude/commands/workflow/docs/copyright.md +1265 -0
  11. package/.claude/commands/workflow/execute.md +0 -1
  12. package/.claude/commands/workflow/tools/conflict-resolution.md +76 -240
  13. package/.claude/commands/workflow/tools/context-gather.md +0 -2
  14. package/.claude/commands/workflow/tools/task-generate-agent.md +81 -8
  15. package/.claude/commands/workflow/tools/task-generate-tdd.md +0 -9
  16. package/.claude/commands/workflow/tools/test-context-gather.md +2 -3
  17. package/.claude/commands/workflow/tools/test-task-generate.md +0 -2
  18. package/.claude/skills/_shared/mermaid-utils.md +584 -0
  19. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +0 -2
  20. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +1 -1
  21. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +1 -2
  22. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +1 -8
  23. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +1 -4
  24. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +0 -2
  25. package/.claude/skills/copyright-docs/SKILL.md +132 -0
  26. package/.claude/skills/copyright-docs/phases/01-metadata-collection.md +78 -0
  27. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -0
  28. package/.claude/skills/copyright-docs/phases/02-deep-analysis.md +664 -0
  29. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -0
  30. package/.claude/skills/copyright-docs/phases/04-document-assembly.md +261 -0
  31. package/.claude/skills/copyright-docs/phases/05-compliance-refinement.md +192 -0
  32. package/.claude/skills/copyright-docs/specs/cpcc-requirements.md +121 -0
  33. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -0
  34. package/.claude/skills/project-analyze/SKILL.md +162 -0
  35. package/.claude/skills/project-analyze/phases/01-requirements-discovery.md +79 -0
  36. package/.claude/skills/project-analyze/phases/02-project-exploration.md +176 -0
  37. package/.claude/skills/project-analyze/phases/03-deep-analysis.md +854 -0
  38. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -0
  39. package/.claude/skills/project-analyze/phases/04-report-generation.md +217 -0
  40. package/.claude/skills/project-analyze/phases/05-iterative-refinement.md +124 -0
  41. package/.claude/skills/project-analyze/specs/quality-standards.md +115 -0
  42. package/.claude/skills/project-analyze/specs/writing-style.md +152 -0
  43. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +79 -65
  44. package/.claude/workflows/cli-templates/schemas/issue-task-jsonl-schema.json +136 -0
  45. package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +74 -0
  46. package/.claude/workflows/cli-templates/schemas/queue-schema.json +136 -0
  47. package/.claude/workflows/cli-templates/schemas/registry-schema.json +94 -0
  48. package/.claude/workflows/cli-templates/schemas/solution-schema.json +120 -0
  49. package/.claude/workflows/cli-templates/schemas/solutions-jsonl-schema.json +125 -0
  50. package/.codex/prompts/issue-execute.md +266 -0
  51. package/README.md +11 -1
  52. package/ccw/dist/cli.d.ts.map +1 -1
  53. package/ccw/dist/cli.js +25 -0
  54. package/ccw/dist/cli.js.map +1 -1
  55. package/ccw/dist/commands/cli.d.ts.map +1 -1
  56. package/ccw/dist/commands/cli.js +46 -8
  57. package/ccw/dist/commands/cli.js.map +1 -1
  58. package/ccw/dist/commands/issue.d.ts +21 -0
  59. package/ccw/dist/commands/issue.d.ts.map +1 -0
  60. package/ccw/dist/commands/issue.js +895 -0
  61. package/ccw/dist/commands/issue.js.map +1 -0
  62. package/ccw/dist/core/dashboard-generator-patch.js +1 -0
  63. package/ccw/dist/core/dashboard-generator-patch.js.map +1 -1
  64. package/ccw/dist/core/routes/cli-routes.js +2 -2
  65. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  66. package/ccw/dist/core/routes/issue-routes.d.ts +34 -0
  67. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -0
  68. package/ccw/dist/core/routes/issue-routes.js +487 -0
  69. package/ccw/dist/core/routes/issue-routes.js.map +1 -0
  70. package/ccw/dist/core/server.d.ts.map +1 -1
  71. package/ccw/dist/core/server.js +17 -2
  72. package/ccw/dist/core/server.js.map +1 -1
  73. package/ccw/dist/tools/claude-cli-tools.d.ts +7 -3
  74. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  75. package/ccw/dist/tools/claude-cli-tools.js +31 -17
  76. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  77. package/ccw/dist/tools/smart-search.d.ts +25 -0
  78. package/ccw/dist/tools/smart-search.d.ts.map +1 -1
  79. package/ccw/dist/tools/smart-search.js +121 -17
  80. package/ccw/dist/tools/smart-search.js.map +1 -1
  81. package/ccw/src/cli.ts +26 -0
  82. package/ccw/src/commands/cli.ts +49 -7
  83. package/ccw/src/commands/issue.ts +1184 -0
  84. package/ccw/src/core/dashboard-generator-patch.ts +1 -0
  85. package/ccw/src/core/routes/cli-routes.ts +3 -3
  86. package/ccw/src/core/routes/issue-routes.ts +559 -0
  87. package/ccw/src/core/server.ts +17 -2
  88. package/ccw/src/templates/dashboard-css/32-issue-manager.css +2544 -0
  89. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +467 -0
  90. package/ccw/src/templates/dashboard-js/components/cli-history.js +40 -13
  91. package/ccw/src/templates/dashboard-js/components/cli-status.js +26 -2
  92. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +461 -0
  93. package/ccw/src/templates/dashboard-js/components/navigation.js +8 -0
  94. package/ccw/src/templates/dashboard-js/components/notifications.js +16 -0
  95. package/ccw/src/templates/dashboard-js/i18n.js +290 -2
  96. package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -0
  97. package/ccw/src/templates/dashboard-js/views/history.js +19 -4
  98. package/ccw/src/templates/dashboard-js/views/hook-manager.js +11 -5
  99. package/ccw/src/templates/dashboard-js/views/issue-manager.js +1546 -0
  100. package/ccw/src/templates/dashboard.html +55 -0
  101. package/ccw/src/tools/claude-cli-tools.ts +37 -20
  102. package/ccw/src/tools/smart-search.ts +157 -16
  103. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  104. package/codex-lens/src/codexlens/config.py +5 -0
  105. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  106. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  107. package/codex-lens/src/codexlens/search/hybrid_search.py +144 -11
  108. package/codex-lens/src/codexlens/search/ranking.py +267 -1
  109. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  110. package/codex-lens/src/codexlens/semantic/chunker.py +55 -10
  111. package/package.json +2 -2
@@ -0,0 +1,421 @@
1
+ ---
2
+ name: plan
3
+ description: Batch plan issue resolution using issue-plan-agent (explore + plan closed-loop)
4
+ argument-hint: "<issue-id>[,<issue-id>,...] [--batch-size 3]"
5
+ allowed-tools: TodoWrite(*), Task(*), SlashCommand(*), AskUserQuestion(*), Bash(*), Read(*), Write(*)
6
+ ---
7
+
8
+ # Issue Plan Command (/issue:plan)
9
+
10
+ ## Overview
11
+
12
+ Unified planning command using **issue-plan-agent** that combines exploration and planning into a single closed-loop workflow. The agent handles ACE semantic search, solution generation, and task breakdown.
13
+
14
+ **Core capabilities:**
15
+ - **Closed-loop agent**: issue-plan-agent combines explore + plan
16
+ - Batch processing: 1 agent processes 1-3 issues
17
+ - ACE semantic search integrated into planning
18
+ - Solution with executable tasks and acceptance criteria
19
+ - Automatic solution registration and binding
20
+
21
+ ## Storage Structure (Flat JSONL)
22
+
23
+ ```
24
+ .workflow/issues/
25
+ ├── issues.jsonl # All issues (one per line)
26
+ ├── queue.json # Execution queue
27
+ └── solutions/
28
+ ├── {issue-id}.jsonl # Solutions for issue (one per line)
29
+ └── ...
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ ```bash
35
+ /issue:plan <issue-id>[,<issue-id>,...] [FLAGS]
36
+
37
+ # Examples
38
+ /issue:plan GH-123 # Single issue
39
+ /issue:plan GH-123,GH-124,GH-125 # Batch (up to 3)
40
+ /issue:plan --all-pending # All pending issues
41
+
42
+ # Flags
43
+ --batch-size <n> Max issues per agent batch (default: 3)
44
+ ```
45
+
46
+ ## Execution Process
47
+
48
+ ```
49
+ Phase 1: Issue Loading
50
+ ├─ Parse input (single, comma-separated, or --all-pending)
51
+ ├─ Load issues from .workflow/issues/issues.jsonl
52
+ ├─ Validate issues exist (create if needed)
53
+ └─ Group into batches (max 3 per batch)
54
+
55
+ Phase 2: Unified Explore + Plan (issue-plan-agent)
56
+ ├─ Launch issue-plan-agent per batch
57
+ ├─ Agent performs:
58
+ │ ├─ ACE semantic search for each issue
59
+ │ ├─ Codebase exploration (files, patterns, dependencies)
60
+ │ ├─ Solution generation with task breakdown
61
+ │ └─ Conflict detection across issues
62
+ └─ Output: solution JSON per issue
63
+
64
+ Phase 3: Solution Registration & Binding
65
+ ├─ Append solutions to solutions/{issue-id}.jsonl
66
+ ├─ Single solution per issue → auto-bind
67
+ ├─ Multiple candidates → AskUserQuestion to select
68
+ └─ Update issues.jsonl with bound_solution_id
69
+
70
+ Phase 4: Summary
71
+ ├─ Display bound solutions
72
+ ├─ Show task counts per issue
73
+ └─ Display next steps (/issue:queue)
74
+ ```
75
+
76
+ ## Implementation
77
+
78
+ ### Phase 1: Issue Loading
79
+
80
+ ```javascript
81
+ // Parse input
82
+ const issueIds = userInput.includes(',')
83
+ ? userInput.split(',').map(s => s.trim())
84
+ : [userInput.trim()];
85
+
86
+ // Read issues.jsonl
87
+ const issuesPath = '.workflow/issues/issues.jsonl';
88
+ const allIssues = Bash(`cat "${issuesPath}" 2>/dev/null || echo ''`)
89
+ .split('\n')
90
+ .filter(line => line.trim())
91
+ .map(line => JSON.parse(line));
92
+
93
+ // Load and validate issues
94
+ const issues = [];
95
+ for (const id of issueIds) {
96
+ let issue = allIssues.find(i => i.id === id);
97
+
98
+ if (!issue) {
99
+ console.log(`Issue ${id} not found. Creating...`);
100
+ issue = {
101
+ id,
102
+ title: `Issue ${id}`,
103
+ status: 'registered',
104
+ priority: 3,
105
+ context: '',
106
+ created_at: new Date().toISOString(),
107
+ updated_at: new Date().toISOString()
108
+ };
109
+ // Append to issues.jsonl
110
+ Bash(`echo '${JSON.stringify(issue)}' >> "${issuesPath}"`);
111
+ }
112
+
113
+ issues.push(issue);
114
+ }
115
+
116
+ // Group into batches
117
+ const batchSize = flags.batchSize || 3;
118
+ const batches = [];
119
+ for (let i = 0; i < issues.length; i += batchSize) {
120
+ batches.push(issues.slice(i, i + batchSize));
121
+ }
122
+
123
+ TodoWrite({
124
+ todos: batches.flatMap((batch, i) => [
125
+ { content: `Plan batch ${i+1}`, status: 'pending', activeForm: `Planning batch ${i+1}` }
126
+ ])
127
+ });
128
+ ```
129
+
130
+ ### Phase 2: Unified Explore + Plan (issue-plan-agent)
131
+
132
+ ```javascript
133
+ for (const [batchIndex, batch] of batches.entries()) {
134
+ updateTodo(`Plan batch ${batchIndex + 1}`, 'in_progress');
135
+
136
+ // Build issue prompt for agent with lifecycle requirements
137
+ const issuePrompt = `
138
+ ## Issues to Plan (Closed-Loop Tasks Required)
139
+
140
+ ${batch.map((issue, i) => `
141
+ ### Issue ${i + 1}: ${issue.id}
142
+ **Title**: ${issue.title}
143
+ **Context**: ${issue.context || 'No context provided'}
144
+ **Affected Components**: ${issue.affected_components?.join(', ') || 'Not specified'}
145
+
146
+ **Lifecycle Requirements**:
147
+ - Test Strategy: ${issue.lifecycle_requirements?.test_strategy || 'auto'}
148
+ - Regression Scope: ${issue.lifecycle_requirements?.regression_scope || 'affected'}
149
+ - Commit Strategy: ${issue.lifecycle_requirements?.commit_strategy || 'per-task'}
150
+ `).join('\n')}
151
+
152
+ ## Project Root
153
+ ${process.cwd()}
154
+
155
+ ## Requirements - CLOSED-LOOP TASKS
156
+
157
+ Each task MUST include ALL lifecycle phases:
158
+
159
+ ### 1. Implementation
160
+ - implementation: string[] (2-7 concrete steps)
161
+ - modification_points: { file, target, change }[]
162
+
163
+ ### 2. Test
164
+ - test.unit: string[] (unit test requirements)
165
+ - test.integration: string[] (integration test requirements if needed)
166
+ - test.commands: string[] (actual test commands to run)
167
+ - test.coverage_target: number (minimum coverage %)
168
+
169
+ ### 3. Regression
170
+ - regression: string[] (commands to run for regression check)
171
+ - Based on issue's regression_scope setting
172
+
173
+ ### 4. Acceptance
174
+ - acceptance.criteria: string[] (testable acceptance criteria)
175
+ - acceptance.verification: string[] (how to verify each criterion)
176
+ - acceptance.manual_checks: string[] (manual checks if needed)
177
+
178
+ ### 5. Commit
179
+ - commit.type: feat|fix|refactor|test|docs|chore
180
+ - commit.scope: string (module name)
181
+ - commit.message_template: string (full commit message)
182
+ - commit.breaking: boolean
183
+
184
+ ## Additional Requirements
185
+ 1. Use ACE semantic search (mcp__ace-tool__search_context) for exploration
186
+ 2. Detect file conflicts if multiple issues
187
+ 3. Generate executable test commands based on project's test framework
188
+ 4. Infer commit scope from affected files
189
+ `;
190
+
191
+ // Launch issue-plan-agent (combines explore + plan)
192
+ const result = Task(
193
+ subagent_type="issue-plan-agent",
194
+ run_in_background=false,
195
+ description=`Explore & plan ${batch.length} issues`,
196
+ prompt=issuePrompt
197
+ );
198
+
199
+ // Parse agent output
200
+ const agentOutput = JSON.parse(result);
201
+
202
+ // Register solutions for each issue (append to solutions/{issue-id}.jsonl)
203
+ for (const item of agentOutput.solutions) {
204
+ const solutionPath = `.workflow/issues/solutions/${item.issue_id}.jsonl`;
205
+
206
+ // Ensure solutions directory exists
207
+ Bash(`mkdir -p .workflow/issues/solutions`);
208
+
209
+ // Append solution as new line
210
+ Bash(`echo '${JSON.stringify(item.solution)}' >> "${solutionPath}"`);
211
+ }
212
+
213
+ // Handle conflicts if any
214
+ if (agentOutput.conflicts?.length > 0) {
215
+ console.log(`\n⚠ File conflicts detected:`);
216
+ agentOutput.conflicts.forEach(c => {
217
+ console.log(` ${c.file}: ${c.issues.join(', ')} → suggested: ${c.suggested_order.join(' → ')}`);
218
+ });
219
+ }
220
+
221
+ updateTodo(`Plan batch ${batchIndex + 1}`, 'completed');
222
+ }
223
+ ```
224
+
225
+ ### Phase 3: Solution Binding
226
+
227
+ ```javascript
228
+ // Re-read issues.jsonl
229
+ let allIssuesUpdated = Bash(`cat "${issuesPath}"`)
230
+ .split('\n')
231
+ .filter(line => line.trim())
232
+ .map(line => JSON.parse(line));
233
+
234
+ for (const issue of issues) {
235
+ const solPath = `.workflow/issues/solutions/${issue.id}.jsonl`;
236
+ const solutions = Bash(`cat "${solPath}" 2>/dev/null || echo ''`)
237
+ .split('\n')
238
+ .filter(line => line.trim())
239
+ .map(line => JSON.parse(line));
240
+
241
+ if (solutions.length === 0) {
242
+ console.log(`⚠ No solutions for ${issue.id}`);
243
+ continue;
244
+ }
245
+
246
+ let selectedSolId;
247
+
248
+ if (solutions.length === 1) {
249
+ // Auto-bind single solution
250
+ selectedSolId = solutions[0].id;
251
+ console.log(`✓ Auto-bound ${selectedSolId} to ${issue.id} (${solutions[0].tasks?.length || 0} tasks)`);
252
+ } else {
253
+ // Multiple solutions - ask user
254
+ const answer = AskUserQuestion({
255
+ questions: [{
256
+ question: `Select solution for ${issue.id}:`,
257
+ header: issue.id,
258
+ multiSelect: false,
259
+ options: solutions.map(s => ({
260
+ label: `${s.id}: ${s.description || 'Solution'}`,
261
+ description: `${s.tasks?.length || 0} tasks`
262
+ }))
263
+ }]
264
+ });
265
+
266
+ selectedSolId = extractSelectedSolutionId(answer);
267
+ console.log(`✓ Bound ${selectedSolId} to ${issue.id}`);
268
+ }
269
+
270
+ // Update issue in allIssuesUpdated
271
+ const issueIndex = allIssuesUpdated.findIndex(i => i.id === issue.id);
272
+ if (issueIndex !== -1) {
273
+ allIssuesUpdated[issueIndex].bound_solution_id = selectedSolId;
274
+ allIssuesUpdated[issueIndex].status = 'planned';
275
+ allIssuesUpdated[issueIndex].planned_at = new Date().toISOString();
276
+ allIssuesUpdated[issueIndex].updated_at = new Date().toISOString();
277
+ }
278
+
279
+ // Mark solution as bound in solutions file
280
+ const updatedSolutions = solutions.map(s => ({
281
+ ...s,
282
+ is_bound: s.id === selectedSolId,
283
+ bound_at: s.id === selectedSolId ? new Date().toISOString() : s.bound_at
284
+ }));
285
+ Write(solPath, updatedSolutions.map(s => JSON.stringify(s)).join('\n'));
286
+ }
287
+
288
+ // Write updated issues.jsonl
289
+ Write(issuesPath, allIssuesUpdated.map(i => JSON.stringify(i)).join('\n'));
290
+ ```
291
+
292
+ ### Phase 4: Summary
293
+
294
+ ```javascript
295
+ console.log(`
296
+ ## Planning Complete
297
+
298
+ **Issues Planned**: ${issues.length}
299
+
300
+ ### Bound Solutions
301
+ ${issues.map(i => {
302
+ const issue = allIssuesUpdated.find(a => a.id === i.id);
303
+ return issue?.bound_solution_id
304
+ ? `✓ ${i.id}: ${issue.bound_solution_id}`
305
+ : `○ ${i.id}: No solution bound`;
306
+ }).join('\n')}
307
+
308
+ ### Next Steps
309
+ 1. Review: \`ccw issue status <issue-id>\`
310
+ 2. Form queue: \`/issue:queue\`
311
+ 3. Execute: \`/issue:execute\`
312
+ `);
313
+ ```
314
+
315
+ ## Solution Format (Closed-Loop Tasks)
316
+
317
+ Each solution line in `solutions/{issue-id}.jsonl`:
318
+
319
+ ```json
320
+ {
321
+ "id": "SOL-20251226-001",
322
+ "description": "Direct Implementation",
323
+ "tasks": [
324
+ {
325
+ "id": "T1",
326
+ "title": "Create auth middleware",
327
+ "scope": "src/middleware/",
328
+ "action": "Create",
329
+ "description": "Create JWT validation middleware",
330
+ "modification_points": [
331
+ { "file": "src/middleware/auth.ts", "target": "new file", "change": "Create middleware" }
332
+ ],
333
+
334
+ "implementation": [
335
+ "Create auth.ts file in src/middleware/",
336
+ "Implement JWT token validation using jsonwebtoken",
337
+ "Add error handling for invalid/expired tokens",
338
+ "Export middleware function"
339
+ ],
340
+
341
+ "test": {
342
+ "unit": [
343
+ "Test valid token passes through",
344
+ "Test invalid token returns 401",
345
+ "Test expired token returns 401",
346
+ "Test missing token returns 401"
347
+ ],
348
+ "commands": [
349
+ "npm test -- --grep 'auth middleware'",
350
+ "npm run test:coverage -- src/middleware/auth.ts"
351
+ ],
352
+ "coverage_target": 80
353
+ },
354
+
355
+ "regression": [
356
+ "npm test -- --grep 'protected routes'",
357
+ "npm run test:integration -- auth"
358
+ ],
359
+
360
+ "acceptance": {
361
+ "criteria": [
362
+ "Middleware validates JWT tokens successfully",
363
+ "Returns 401 for invalid or missing tokens",
364
+ "Passes decoded token to request context"
365
+ ],
366
+ "verification": [
367
+ "curl -H 'Authorization: Bearer valid_token' /api/protected → 200",
368
+ "curl /api/protected → 401",
369
+ "curl -H 'Authorization: Bearer invalid' /api/protected → 401"
370
+ ]
371
+ },
372
+
373
+ "commit": {
374
+ "type": "feat",
375
+ "scope": "auth",
376
+ "message_template": "feat(auth): add JWT validation middleware\n\n- Implement token validation\n- Add error handling for invalid tokens\n- Export for route protection",
377
+ "breaking": false
378
+ },
379
+
380
+ "depends_on": [],
381
+ "estimated_minutes": 30,
382
+ "executor": "codex"
383
+ }
384
+ ],
385
+ "exploration_context": {
386
+ "relevant_files": ["src/config/auth.ts"],
387
+ "patterns": "Follow existing middleware pattern"
388
+ },
389
+ "is_bound": true,
390
+ "created_at": "2025-12-26T10:00:00Z",
391
+ "bound_at": "2025-12-26T10:05:00Z"
392
+ }
393
+ ```
394
+
395
+ ## Error Handling
396
+
397
+ | Error | Resolution |
398
+ |-------|------------|
399
+ | Issue not found | Auto-create in issues.jsonl |
400
+ | ACE search fails | Agent falls back to ripgrep |
401
+ | No solutions generated | Display error, suggest manual planning |
402
+ | User cancels selection | Skip issue, continue with others |
403
+ | File conflicts | Agent detects and suggests resolution order |
404
+
405
+ ## Agent Integration
406
+
407
+ The command uses `issue-plan-agent` which:
408
+ 1. Performs ACE semantic search per issue
409
+ 2. Identifies modification points and patterns
410
+ 3. Generates task breakdown with dependencies
411
+ 4. Detects cross-issue file conflicts
412
+ 5. Outputs solution JSON for registration
413
+
414
+ See `.claude/agents/issue-plan-agent.md` for agent specification.
415
+
416
+ ## Related Commands
417
+
418
+ - `/issue:queue` - Form execution queue from bound solutions
419
+ - `/issue:execute` - Execute queue with codex
420
+ - `ccw issue list` - List all issues
421
+ - `ccw issue status` - View issue and solution details