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.
- package/.claude/agents/issue-plan-agent.md +859 -0
- package/.claude/agents/issue-queue-agent.md +702 -0
- package/.claude/commands/issue/execute.md +453 -0
- package/.claude/commands/issue/manage.md +865 -0
- package/.claude/commands/issue/new.md +484 -0
- package/.claude/commands/issue/plan.md +421 -0
- package/.claude/commands/issue/queue.md +354 -0
- package/.claude/commands/{clean.md → workflow/clean.md} +5 -5
- package/.claude/commands/workflow/docs/analyze.md +1467 -0
- package/.claude/commands/workflow/docs/copyright.md +1265 -0
- package/.claude/commands/workflow/execute.md +0 -1
- package/.claude/commands/workflow/tools/conflict-resolution.md +76 -240
- package/.claude/commands/workflow/tools/context-gather.md +0 -2
- package/.claude/commands/workflow/tools/task-generate-agent.md +81 -8
- package/.claude/commands/workflow/tools/task-generate-tdd.md +0 -9
- package/.claude/commands/workflow/tools/test-context-gather.md +2 -3
- package/.claude/commands/workflow/tools/test-task-generate.md +0 -2
- package/.claude/skills/_shared/mermaid-utils.md +584 -0
- package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +0 -2
- package/.claude/skills/command-guide/reference/commands/workflow/execute.md +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +1 -2
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +1 -8
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +1 -4
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +0 -2
- package/.claude/skills/copyright-docs/SKILL.md +132 -0
- package/.claude/skills/copyright-docs/phases/01-metadata-collection.md +78 -0
- package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -0
- package/.claude/skills/copyright-docs/phases/02-deep-analysis.md +664 -0
- package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -0
- package/.claude/skills/copyright-docs/phases/04-document-assembly.md +261 -0
- package/.claude/skills/copyright-docs/phases/05-compliance-refinement.md +192 -0
- package/.claude/skills/copyright-docs/specs/cpcc-requirements.md +121 -0
- package/.claude/skills/copyright-docs/templates/agent-base.md +200 -0
- package/.claude/skills/project-analyze/SKILL.md +162 -0
- package/.claude/skills/project-analyze/phases/01-requirements-discovery.md +79 -0
- package/.claude/skills/project-analyze/phases/02-project-exploration.md +176 -0
- package/.claude/skills/project-analyze/phases/03-deep-analysis.md +854 -0
- package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -0
- package/.claude/skills/project-analyze/phases/04-report-generation.md +217 -0
- package/.claude/skills/project-analyze/phases/05-iterative-refinement.md +124 -0
- package/.claude/skills/project-analyze/specs/quality-standards.md +115 -0
- package/.claude/skills/project-analyze/specs/writing-style.md +152 -0
- package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +79 -65
- package/.claude/workflows/cli-templates/schemas/issue-task-jsonl-schema.json +136 -0
- package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +74 -0
- package/.claude/workflows/cli-templates/schemas/queue-schema.json +136 -0
- package/.claude/workflows/cli-templates/schemas/registry-schema.json +94 -0
- package/.claude/workflows/cli-templates/schemas/solution-schema.json +120 -0
- package/.claude/workflows/cli-templates/schemas/solutions-jsonl-schema.json +125 -0
- package/.codex/prompts/issue-execute.md +266 -0
- package/README.md +11 -1
- package/ccw/dist/cli.d.ts.map +1 -1
- package/ccw/dist/cli.js +25 -0
- package/ccw/dist/cli.js.map +1 -1
- package/ccw/dist/commands/cli.d.ts.map +1 -1
- package/ccw/dist/commands/cli.js +46 -8
- package/ccw/dist/commands/cli.js.map +1 -1
- package/ccw/dist/commands/issue.d.ts +21 -0
- package/ccw/dist/commands/issue.d.ts.map +1 -0
- package/ccw/dist/commands/issue.js +895 -0
- package/ccw/dist/commands/issue.js.map +1 -0
- package/ccw/dist/core/dashboard-generator-patch.js +1 -0
- package/ccw/dist/core/dashboard-generator-patch.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +2 -2
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/issue-routes.d.ts +34 -0
- package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/issue-routes.js +487 -0
- package/ccw/dist/core/routes/issue-routes.js.map +1 -0
- package/ccw/dist/core/server.d.ts.map +1 -1
- package/ccw/dist/core/server.js +17 -2
- package/ccw/dist/core/server.js.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.d.ts +7 -3
- package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.js +31 -17
- package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
- package/ccw/dist/tools/smart-search.d.ts +25 -0
- package/ccw/dist/tools/smart-search.d.ts.map +1 -1
- package/ccw/dist/tools/smart-search.js +121 -17
- package/ccw/dist/tools/smart-search.js.map +1 -1
- package/ccw/src/cli.ts +26 -0
- package/ccw/src/commands/cli.ts +49 -7
- package/ccw/src/commands/issue.ts +1184 -0
- package/ccw/src/core/dashboard-generator-patch.ts +1 -0
- package/ccw/src/core/routes/cli-routes.ts +3 -3
- package/ccw/src/core/routes/issue-routes.ts +559 -0
- package/ccw/src/core/server.ts +17 -2
- package/ccw/src/templates/dashboard-css/32-issue-manager.css +2544 -0
- package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +467 -0
- package/ccw/src/templates/dashboard-js/components/cli-history.js +40 -13
- package/ccw/src/templates/dashboard-js/components/cli-status.js +26 -2
- package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +461 -0
- package/ccw/src/templates/dashboard-js/components/navigation.js +8 -0
- package/ccw/src/templates/dashboard-js/components/notifications.js +16 -0
- package/ccw/src/templates/dashboard-js/i18n.js +290 -2
- package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -0
- package/ccw/src/templates/dashboard-js/views/history.js +19 -4
- package/ccw/src/templates/dashboard-js/views/hook-manager.js +11 -5
- package/ccw/src/templates/dashboard-js/views/issue-manager.js +1546 -0
- package/ccw/src/templates/dashboard.html +55 -0
- package/ccw/src/tools/claude-cli-tools.ts +37 -20
- package/ccw/src/tools/smart-search.ts +157 -16
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/config.py +5 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/hybrid_search.py +144 -11
- package/codex-lens/src/codexlens/search/ranking.py +267 -1
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +55 -10
- package/package.json +2 -2
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: queue
|
|
3
|
+
description: Form execution queue from bound solutions using issue-queue-agent
|
|
4
|
+
argument-hint: "[--rebuild] [--issue <id>]"
|
|
5
|
+
allowed-tools: TodoWrite(*), Task(*), Bash(*), Read(*), Write(*)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Issue Queue Command (/issue:queue)
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Queue formation command using **issue-queue-agent** that analyzes all bound solutions, resolves conflicts, determines dependencies, and creates an ordered execution queue. The queue is global across all issues.
|
|
13
|
+
|
|
14
|
+
**Core capabilities:**
|
|
15
|
+
- **Agent-driven**: issue-queue-agent handles all ordering logic
|
|
16
|
+
- ACE semantic search for relationship discovery
|
|
17
|
+
- Dependency DAG construction and cycle detection
|
|
18
|
+
- File conflict detection and resolution
|
|
19
|
+
- Semantic priority calculation (0.0-1.0)
|
|
20
|
+
- Parallel/Sequential group assignment
|
|
21
|
+
- Output global queue.json
|
|
22
|
+
|
|
23
|
+
## Storage Structure (Queue History)
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
.workflow/issues/
|
|
27
|
+
├── issues.jsonl # All issues (one per line)
|
|
28
|
+
├── queues/ # Queue history directory
|
|
29
|
+
│ ├── index.json # Queue index (active + history)
|
|
30
|
+
│ ├── {queue-id}.json # Individual queue files
|
|
31
|
+
│ └── ...
|
|
32
|
+
└── solutions/
|
|
33
|
+
├── {issue-id}.jsonl # Solutions for issue
|
|
34
|
+
└── ...
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Queue Index Schema
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"active_queue_id": "QUE-20251227-143000",
|
|
42
|
+
"queues": [
|
|
43
|
+
{
|
|
44
|
+
"id": "QUE-20251227-143000",
|
|
45
|
+
"status": "active",
|
|
46
|
+
"issue_ids": ["GH-123", "GH-124"],
|
|
47
|
+
"total_tasks": 8,
|
|
48
|
+
"completed_tasks": 3,
|
|
49
|
+
"created_at": "2025-12-27T14:30:00Z"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "QUE-20251226-100000",
|
|
53
|
+
"status": "completed",
|
|
54
|
+
"issue_ids": ["GH-120"],
|
|
55
|
+
"total_tasks": 5,
|
|
56
|
+
"completed_tasks": 5,
|
|
57
|
+
"created_at": "2025-12-26T10:00:00Z",
|
|
58
|
+
"completed_at": "2025-12-26T12:30:00Z"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Usage
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
/issue:queue [FLAGS]
|
|
68
|
+
|
|
69
|
+
# Examples
|
|
70
|
+
/issue:queue # Form NEW queue from all bound solutions
|
|
71
|
+
/issue:queue --issue GH-123 # Form queue for specific issue only
|
|
72
|
+
/issue:queue --append GH-124 # Append to active queue
|
|
73
|
+
/issue:queue --list # List all queues (history)
|
|
74
|
+
/issue:queue --switch QUE-xxx # Switch active queue
|
|
75
|
+
/issue:queue --archive # Archive completed active queue
|
|
76
|
+
|
|
77
|
+
# Flags
|
|
78
|
+
--issue <id> Form queue for specific issue only
|
|
79
|
+
--append <id> Append issue to active queue (don't create new)
|
|
80
|
+
--list List all queues with status
|
|
81
|
+
--switch <queue-id> Switch active queue
|
|
82
|
+
--archive Archive current queue (mark completed)
|
|
83
|
+
--clear <queue-id> Delete a queue from history
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Execution Process
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Phase 1: Solution Loading
|
|
90
|
+
├─ Load issues.jsonl
|
|
91
|
+
├─ Filter issues with bound_solution_id
|
|
92
|
+
├─ Read solutions/{issue-id}.jsonl for each issue
|
|
93
|
+
├─ Find bound solution by ID
|
|
94
|
+
└─ Extract tasks from bound solutions
|
|
95
|
+
|
|
96
|
+
Phase 2-4: Agent-Driven Queue Formation (issue-queue-agent)
|
|
97
|
+
├─ Launch issue-queue-agent with all tasks
|
|
98
|
+
├─ Agent performs:
|
|
99
|
+
│ ├─ Build dependency DAG from depends_on
|
|
100
|
+
│ ├─ Detect circular dependencies
|
|
101
|
+
│ ├─ Identify file modification conflicts
|
|
102
|
+
│ ├─ Resolve conflicts using ordering rules
|
|
103
|
+
│ ├─ Calculate semantic priority (0.0-1.0)
|
|
104
|
+
│ └─ Assign execution groups (parallel/sequential)
|
|
105
|
+
└─ Output: queue JSON with ordered tasks
|
|
106
|
+
|
|
107
|
+
Phase 5: Queue Output
|
|
108
|
+
├─ Write queue.json
|
|
109
|
+
├─ Update issue statuses in issues.jsonl
|
|
110
|
+
└─ Display queue summary
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Implementation
|
|
114
|
+
|
|
115
|
+
### Phase 1: Solution Loading
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
// Load issues.jsonl
|
|
119
|
+
const issuesPath = '.workflow/issues/issues.jsonl';
|
|
120
|
+
const allIssues = Bash(`cat "${issuesPath}" 2>/dev/null || echo ''`)
|
|
121
|
+
.split('\n')
|
|
122
|
+
.filter(line => line.trim())
|
|
123
|
+
.map(line => JSON.parse(line));
|
|
124
|
+
|
|
125
|
+
// Filter issues with bound solutions
|
|
126
|
+
const plannedIssues = allIssues.filter(i =>
|
|
127
|
+
i.status === 'planned' && i.bound_solution_id
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
if (plannedIssues.length === 0) {
|
|
131
|
+
console.log('No issues with bound solutions found.');
|
|
132
|
+
console.log('Run /issue:plan first to create and bind solutions.');
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Load all tasks from bound solutions
|
|
137
|
+
const allTasks = [];
|
|
138
|
+
for (const issue of plannedIssues) {
|
|
139
|
+
const solPath = `.workflow/issues/solutions/${issue.id}.jsonl`;
|
|
140
|
+
const solutions = Bash(`cat "${solPath}" 2>/dev/null || echo ''`)
|
|
141
|
+
.split('\n')
|
|
142
|
+
.filter(line => line.trim())
|
|
143
|
+
.map(line => JSON.parse(line));
|
|
144
|
+
|
|
145
|
+
// Find bound solution
|
|
146
|
+
const boundSol = solutions.find(s => s.id === issue.bound_solution_id);
|
|
147
|
+
|
|
148
|
+
if (!boundSol) {
|
|
149
|
+
console.log(`⚠ Bound solution ${issue.bound_solution_id} not found for ${issue.id}`);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
for (const task of boundSol.tasks || []) {
|
|
154
|
+
allTasks.push({
|
|
155
|
+
issue_id: issue.id,
|
|
156
|
+
solution_id: issue.bound_solution_id,
|
|
157
|
+
task,
|
|
158
|
+
exploration_context: boundSol.exploration_context
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
console.log(`Loaded ${allTasks.length} tasks from ${plannedIssues.length} issues`);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Phase 2-4: Agent-Driven Queue Formation
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// Launch issue-queue-agent to handle all ordering logic
|
|
170
|
+
const agentPrompt = `
|
|
171
|
+
## Tasks to Order
|
|
172
|
+
|
|
173
|
+
${JSON.stringify(allTasks, null, 2)}
|
|
174
|
+
|
|
175
|
+
## Project Root
|
|
176
|
+
${process.cwd()}
|
|
177
|
+
|
|
178
|
+
## Requirements
|
|
179
|
+
1. Build dependency DAG from depends_on fields
|
|
180
|
+
2. Detect circular dependencies (abort if found)
|
|
181
|
+
3. Identify file modification conflicts
|
|
182
|
+
4. Resolve conflicts using ordering rules:
|
|
183
|
+
- Create before Update/Implement
|
|
184
|
+
- Foundation scopes (config/types) before implementation
|
|
185
|
+
- Core logic before tests
|
|
186
|
+
5. Calculate semantic priority (0.0-1.0) for each task
|
|
187
|
+
6. Assign execution groups (parallel P* / sequential S*)
|
|
188
|
+
7. Output queue JSON
|
|
189
|
+
`;
|
|
190
|
+
|
|
191
|
+
const result = Task(
|
|
192
|
+
subagent_type="issue-queue-agent",
|
|
193
|
+
run_in_background=false,
|
|
194
|
+
description=`Order ${allTasks.length} tasks from ${plannedIssues.length} issues`,
|
|
195
|
+
prompt=agentPrompt
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
// Parse agent output
|
|
199
|
+
const agentOutput = JSON.parse(result);
|
|
200
|
+
|
|
201
|
+
if (!agentOutput.success) {
|
|
202
|
+
console.error(`Queue formation failed: ${agentOutput.error}`);
|
|
203
|
+
if (agentOutput.cycles) {
|
|
204
|
+
console.error('Circular dependencies:', agentOutput.cycles.join(', '));
|
|
205
|
+
}
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Phase 5: Queue Output & Summary
|
|
211
|
+
|
|
212
|
+
```javascript
|
|
213
|
+
const queueOutput = agentOutput.output;
|
|
214
|
+
|
|
215
|
+
// Write queue.json
|
|
216
|
+
Write('.workflow/issues/queue.json', JSON.stringify(queueOutput, null, 2));
|
|
217
|
+
|
|
218
|
+
// Update issue statuses in issues.jsonl
|
|
219
|
+
const updatedIssues = allIssues.map(issue => {
|
|
220
|
+
if (plannedIssues.find(p => p.id === issue.id)) {
|
|
221
|
+
return {
|
|
222
|
+
...issue,
|
|
223
|
+
status: 'queued',
|
|
224
|
+
queued_at: new Date().toISOString(),
|
|
225
|
+
updated_at: new Date().toISOString()
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return issue;
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
Write(issuesPath, updatedIssues.map(i => JSON.stringify(i)).join('\n'));
|
|
232
|
+
|
|
233
|
+
// Display summary
|
|
234
|
+
console.log(`
|
|
235
|
+
## Queue Formed
|
|
236
|
+
|
|
237
|
+
**Total Tasks**: ${queueOutput.queue.length}
|
|
238
|
+
**Issues**: ${plannedIssues.length}
|
|
239
|
+
**Conflicts**: ${queueOutput.conflicts?.length || 0} (${queueOutput._metadata?.resolved_conflicts || 0} resolved)
|
|
240
|
+
|
|
241
|
+
### Execution Groups
|
|
242
|
+
${(queueOutput.execution_groups || []).map(g => {
|
|
243
|
+
const type = g.type === 'parallel' ? 'Parallel' : 'Sequential';
|
|
244
|
+
return `- ${g.id} (${type}): ${g.task_count} tasks`;
|
|
245
|
+
}).join('\n')}
|
|
246
|
+
|
|
247
|
+
### Next Steps
|
|
248
|
+
1. Review queue: \`ccw issue queue list\`
|
|
249
|
+
2. Execute: \`/issue:execute\`
|
|
250
|
+
`);
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Queue Schema
|
|
254
|
+
|
|
255
|
+
Output `queues/{queue-id}.json`:
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"id": "QUE-20251227-143000",
|
|
260
|
+
"name": "Auth Feature Queue",
|
|
261
|
+
"status": "active",
|
|
262
|
+
"issue_ids": ["GH-123", "GH-124"],
|
|
263
|
+
|
|
264
|
+
"queue": [
|
|
265
|
+
{
|
|
266
|
+
"queue_id": "Q-001",
|
|
267
|
+
"issue_id": "GH-123",
|
|
268
|
+
"solution_id": "SOL-001",
|
|
269
|
+
"task_id": "T1",
|
|
270
|
+
"status": "pending",
|
|
271
|
+
"execution_order": 1,
|
|
272
|
+
"execution_group": "P1",
|
|
273
|
+
"depends_on": [],
|
|
274
|
+
"semantic_priority": 0.7,
|
|
275
|
+
"queued_at": "2025-12-26T10:00:00Z"
|
|
276
|
+
}
|
|
277
|
+
],
|
|
278
|
+
|
|
279
|
+
"conflicts": [
|
|
280
|
+
{
|
|
281
|
+
"type": "file_conflict",
|
|
282
|
+
"file": "src/auth.ts",
|
|
283
|
+
"tasks": ["GH-123:T1", "GH-124:T2"],
|
|
284
|
+
"resolution": "sequential",
|
|
285
|
+
"resolution_order": ["GH-123:T1", "GH-124:T2"],
|
|
286
|
+
"rationale": "T1 creates file before T2 updates",
|
|
287
|
+
"resolved": true
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
|
|
291
|
+
"execution_groups": [
|
|
292
|
+
{ "id": "P1", "type": "parallel", "task_count": 3, "tasks": ["GH-123:T1", "GH-124:T1", "GH-125:T1"] },
|
|
293
|
+
{ "id": "S2", "type": "sequential", "task_count": 2, "tasks": ["GH-123:T2", "GH-124:T2"] }
|
|
294
|
+
],
|
|
295
|
+
|
|
296
|
+
"_metadata": {
|
|
297
|
+
"version": "2.0",
|
|
298
|
+
"total_tasks": 5,
|
|
299
|
+
"pending_count": 3,
|
|
300
|
+
"completed_count": 2,
|
|
301
|
+
"failed_count": 0,
|
|
302
|
+
"created_at": "2025-12-26T10:00:00Z",
|
|
303
|
+
"updated_at": "2025-12-26T11:00:00Z",
|
|
304
|
+
"source": "issue-queue-agent"
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Queue ID Format
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
QUE-YYYYMMDD-HHMMSS
|
|
313
|
+
例如: QUE-20251227-143052
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## Semantic Priority Rules
|
|
317
|
+
|
|
318
|
+
| Factor | Priority Boost |
|
|
319
|
+
|--------|---------------|
|
|
320
|
+
| Create action | +0.2 |
|
|
321
|
+
| Configure action | +0.15 |
|
|
322
|
+
| Implement action | +0.1 |
|
|
323
|
+
| Config/Types scope | +0.1 |
|
|
324
|
+
| Refactor action | -0.05 |
|
|
325
|
+
| Test action | -0.1 |
|
|
326
|
+
| Delete action | -0.15 |
|
|
327
|
+
|
|
328
|
+
## Error Handling
|
|
329
|
+
|
|
330
|
+
| Error | Resolution |
|
|
331
|
+
|-------|------------|
|
|
332
|
+
| No bound solutions | Display message, suggest /issue:plan |
|
|
333
|
+
| Circular dependency | List cycles, abort queue formation |
|
|
334
|
+
| Unresolved conflicts | Agent resolves using ordering rules |
|
|
335
|
+
| Invalid task reference | Skip and warn |
|
|
336
|
+
|
|
337
|
+
## Agent Integration
|
|
338
|
+
|
|
339
|
+
The command uses `issue-queue-agent` which:
|
|
340
|
+
1. Builds dependency DAG from task depends_on fields
|
|
341
|
+
2. Detects circular dependencies (aborts if found)
|
|
342
|
+
3. Identifies file modification conflicts across issues
|
|
343
|
+
4. Resolves conflicts using semantic ordering rules
|
|
344
|
+
5. Calculates priority (0.0-1.0) for each task
|
|
345
|
+
6. Assigns parallel/sequential execution groups
|
|
346
|
+
7. Outputs structured queue JSON
|
|
347
|
+
|
|
348
|
+
See `.claude/agents/issue-queue-agent.md` for agent specification.
|
|
349
|
+
|
|
350
|
+
## Related Commands
|
|
351
|
+
|
|
352
|
+
- `/issue:plan` - Plan issues and bind solutions
|
|
353
|
+
- `/issue:execute` - Execute queue with codex
|
|
354
|
+
- `ccw issue queue list` - View current queue
|
|
@@ -5,7 +5,7 @@ argument-hint: "[--dry-run] [\"focus area\"]"
|
|
|
5
5
|
allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Glob(*), Bash(*), Write(*)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# Clean Command (/clean)
|
|
8
|
+
# Clean Command (/workflow:clean)
|
|
9
9
|
|
|
10
10
|
## Overview
|
|
11
11
|
|
|
@@ -20,9 +20,9 @@ Intelligent cleanup command that explores the codebase to identify the developme
|
|
|
20
20
|
## Usage
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
/clean # Full intelligent cleanup (explore → analyze → confirm → execute)
|
|
24
|
-
/clean --dry-run # Explore and analyze only, no execution
|
|
25
|
-
/clean "auth module" # Focus cleanup on specific area
|
|
23
|
+
/workflow:clean # Full intelligent cleanup (explore → analyze → confirm → execute)
|
|
24
|
+
/workflow:clean --dry-run # Explore and analyze only, no execution
|
|
25
|
+
/workflow:clean "auth module" # Focus cleanup on specific area
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
## Execution Process
|
|
@@ -321,7 +321,7 @@ if (flags.includes('--dry-run')) {
|
|
|
321
321
|
**Dry-run mode**: No changes made.
|
|
322
322
|
Manifest saved to: ${sessionFolder}/cleanup-manifest.json
|
|
323
323
|
|
|
324
|
-
To execute cleanup: /clean
|
|
324
|
+
To execute cleanup: /workflow:clean
|
|
325
325
|
`)
|
|
326
326
|
return
|
|
327
327
|
}
|