claude-code-workflow 6.3.40 → 6.3.42
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/commands/issue/plan.md +49 -56
- package/.claude/commands/issue/queue.md +16 -16
- package/.claude/commands/workflow/develop-with-file.md +1040 -0
- package/.codex/skills/ccw-loop/SKILL.md +2 -1
- package/.codex/skills/ccw-loop-b/SKILL.md +1 -0
- package/.codex/skills/parallel-dev-cycle/SKILL.md +1 -0
- package/ccw/dist/commands/issue.d.ts.map +1 -1
- package/ccw/dist/commands/issue.js +63 -0
- package/ccw/dist/commands/issue.js.map +1 -1
- package/ccw/src/commands/issue.ts +78 -0
- package/package.json +1 -1
|
@@ -1220,6 +1220,81 @@ async function solutionAction(issueId: string | undefined, options: IssueOptions
|
|
|
1220
1220
|
}
|
|
1221
1221
|
}
|
|
1222
1222
|
|
|
1223
|
+
/**
|
|
1224
|
+
* solutions - Batch query solutions for multiple issues
|
|
1225
|
+
* Usage: ccw issue solutions --status planned --brief
|
|
1226
|
+
*/
|
|
1227
|
+
async function solutionsAction(options: IssueOptions): Promise<void> {
|
|
1228
|
+
// Get issues filtered by status
|
|
1229
|
+
const issues = readIssues();
|
|
1230
|
+
let targetIssues = issues;
|
|
1231
|
+
|
|
1232
|
+
if (options.status) {
|
|
1233
|
+
const statuses = options.status.split(',').map((s: string) => s.trim());
|
|
1234
|
+
targetIssues = issues.filter((i: Issue) => statuses.includes(i.status));
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
// Filter to only issues with bound_solution_id
|
|
1238
|
+
const boundIssues = targetIssues.filter((i: Issue) => i.bound_solution_id);
|
|
1239
|
+
|
|
1240
|
+
if (boundIssues.length === 0) {
|
|
1241
|
+
if (options.json || options.brief) {
|
|
1242
|
+
console.log('[]');
|
|
1243
|
+
} else {
|
|
1244
|
+
console.log(chalk.yellow('No bound solutions found'));
|
|
1245
|
+
}
|
|
1246
|
+
return;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
// Collect solutions for all bound issues
|
|
1250
|
+
const allSolutions: Array<{
|
|
1251
|
+
issue_id: string;
|
|
1252
|
+
solution_id: string;
|
|
1253
|
+
is_bound: boolean;
|
|
1254
|
+
task_count: number;
|
|
1255
|
+
files_touched: string[];
|
|
1256
|
+
priority?: number;
|
|
1257
|
+
}> = [];
|
|
1258
|
+
|
|
1259
|
+
for (const issue of boundIssues) {
|
|
1260
|
+
const solutions = readSolutions(issue.id);
|
|
1261
|
+
const boundSolution = solutions.find(s => s.id === issue.bound_solution_id);
|
|
1262
|
+
|
|
1263
|
+
if (boundSolution) {
|
|
1264
|
+
const filesTouched = new Set<string>();
|
|
1265
|
+
for (const task of boundSolution.tasks) {
|
|
1266
|
+
if (task.modification_points) {
|
|
1267
|
+
for (const mp of task.modification_points) {
|
|
1268
|
+
if (mp.file) filesTouched.add(mp.file);
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
allSolutions.push({
|
|
1274
|
+
issue_id: issue.id,
|
|
1275
|
+
solution_id: boundSolution.id,
|
|
1276
|
+
is_bound: true,
|
|
1277
|
+
task_count: boundSolution.tasks.length,
|
|
1278
|
+
files_touched: Array.from(filesTouched),
|
|
1279
|
+
priority: issue.priority
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
// Brief mode: already minimal
|
|
1285
|
+
if (options.brief || options.json) {
|
|
1286
|
+
console.log(JSON.stringify(allSolutions, null, 2));
|
|
1287
|
+
return;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
// Human-readable output
|
|
1291
|
+
console.log(chalk.bold.cyan(`\nBound Solutions (${allSolutions.length}):\n`));
|
|
1292
|
+
for (const sol of allSolutions) {
|
|
1293
|
+
console.log(`${chalk.green('◉')} ${sol.issue_id} → ${sol.solution_id}`);
|
|
1294
|
+
console.log(chalk.gray(` Tasks: ${sol.task_count}, Files: ${sol.files_touched.length}`));
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1223
1298
|
/**
|
|
1224
1299
|
* init - Initialize a new issue (manual ID)
|
|
1225
1300
|
*/
|
|
@@ -2832,6 +2907,9 @@ export async function issueCommand(
|
|
|
2832
2907
|
case 'solution':
|
|
2833
2908
|
await solutionAction(argsArray[0], options);
|
|
2834
2909
|
break;
|
|
2910
|
+
case 'solutions':
|
|
2911
|
+
await solutionsAction(options);
|
|
2912
|
+
break;
|
|
2835
2913
|
case 'init':
|
|
2836
2914
|
await initAction(argsArray[0], options);
|
|
2837
2915
|
break;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-workflow",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.42",
|
|
4
4
|
"description": "JSON-driven multi-agent development framework with intelligent CLI orchestration (Gemini/Qwen/Codex), context-first architecture, and automated workflow execution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "ccw/src/index.js",
|