mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-28 09:23:08 +08:00
chore: batch update - cleanup ghost commands, ccw-help index refresh, CLI session/orchestrator enhancements, skill minor fixes
- Add cleanup-ghost-commands.mjs script - Refresh ccw-help index files (remove stale entries) - CLI session manager: add instruction assembler and launch registry - Frontend: orchestrator plan builder, property panel, dashboard toolbar updates - Flow executor and type updates - Minor fixes across multiple skills and commands
This commit is contained in:
@@ -1076,7 +1076,7 @@ failed ←───────────────────────
|
||||
|
||||
**execution_results[] fields**:
|
||||
- `index`: Command position in chain (0-indexed)
|
||||
- `command`: Full command string (e.g., `/workflow:plan`)
|
||||
- `command`: Full command string (e.g., `workflow-plan` skill)
|
||||
- `status`: `in-progress` | `completed` | `skipped` | `failed`
|
||||
- `task_id`: Background task identifier (from Bash tool)
|
||||
- `session_id`: Workflow session ID (e.g., `WFS-*`) or null if failed
|
||||
|
||||
@@ -378,7 +378,7 @@ docker-compose.override.yml
|
||||
## Integration Points
|
||||
|
||||
### Workflow Commands
|
||||
- **After `/cli:plan`**: Suggest running cli-init for better analysis
|
||||
- **After `workflow-lite-plan` skill**: Suggest running cli-init for better analysis
|
||||
- **Before analysis**: Recommend updating ignore patterns for cleaner results
|
||||
|
||||
### CLI Tool Integration
|
||||
|
||||
@@ -373,7 +373,7 @@ brainstorm-with-file
|
||||
## Related Commands
|
||||
|
||||
- `/workflow:brainstorm-with-file` - Generate brainstorm sessions
|
||||
- `/workflow:brainstorm:synthesis` - Add clarifications to brainstorm
|
||||
- `brainstorm` skill - Add clarifications to brainstorm
|
||||
- `/issue:new` - Create issues from GitHub or text
|
||||
- `/issue:plan` - Generate solutions via exploration
|
||||
- `/issue:queue` - Form execution queue
|
||||
|
||||
@@ -544,5 +544,5 @@ Cleanup manifest archived to: ${sessionFolder}/cleanup-manifest.json
|
||||
## Related Commands
|
||||
|
||||
- `/workflow:session:complete` - Properly archive active sessions
|
||||
- `/memory:compact` - Save session memory before cleanup
|
||||
- `/workflow:status` - View current workflow state
|
||||
- `memory-capture` skill - Save session memory before cleanup
|
||||
- `workflow-execute` skill - View current workflow state
|
||||
|
||||
@@ -641,6 +641,6 @@ Why is config value None during update?
|
||||
| Empty debug.log | Verify reproduction triggered the code path |
|
||||
| All hypotheses rejected | Use Gemini to generate new hypotheses based on disproven assumptions |
|
||||
| Fix doesn't work | Document failed fix attempt, iterate with refined understanding |
|
||||
| >5 iterations | Review consolidated understanding, escalate to `/workflow:lite-fix` with full context |
|
||||
| >5 iterations | Review consolidated understanding, escalate to `workflow-lite-plan` skill with full context |
|
||||
| Gemini unavailable | Fallback to manual hypothesis generation, document without Gemini insights |
|
||||
| Understanding too long | Consolidate aggressively, archive old iterations to separate file |
|
||||
|
||||
@@ -284,5 +284,5 @@ Next steps:
|
||||
|
||||
- `/workflow:init-guidelines` - Interactive wizard to configure project guidelines (called after init)
|
||||
- `/workflow:session:solidify` - Add individual rules/constraints one at a time
|
||||
- `/workflow:plan` - Start planning with initialized project context
|
||||
- `workflow-plan` skill - Start planning with initialized project context
|
||||
- `/workflow:status --project` - View project state and guidelines
|
||||
|
||||
@@ -38,7 +38,7 @@ When `--yes` or `-y`: Auto-confirm exploration decisions, use recommended test s
|
||||
Unified integration test workflow: **Explore → Design → Develop → Test → Reflect → Adjust → Re-test** — a closed-loop that autonomously improves test quality through text-based reflection.
|
||||
|
||||
**vs Existing Commands**:
|
||||
- **test-fix-gen**: Only generates test tasks, requires manual `/test-cycle-execute`
|
||||
- **test-fix-gen**: Only generates test tasks, requires manual `workflow-test-fix` skill
|
||||
- **test-cycle-execute**: Only executes pre-existing tasks, no exploration or test design
|
||||
- **This command**: Full lifecycle — from zero knowledge to passing integration tests, with self-reflection
|
||||
|
||||
@@ -919,11 +919,11 @@ Single evolving state file — each phase writes its section:
|
||||
- Need comprehensive exploration before test development
|
||||
- Want self-healing test cycles with documented reasoning
|
||||
|
||||
**Use `/workflow:test-fix-gen` + `/workflow:test-cycle-execute` when:**
|
||||
**Use `workflow-test-fix` skill + `workflow-test-fix` skill when:**
|
||||
- Already have a completed implementation session (WFS-*)
|
||||
- Only need unit/component level tests
|
||||
|
||||
**Use `/workflow:tdd-plan` when:**
|
||||
**Use `workflow-tdd` skill when:**
|
||||
- Building new features with test-first approach
|
||||
- Red-Green-Refactor cycle
|
||||
|
||||
|
||||
@@ -827,11 +827,11 @@ AskUserQuestion({
|
||||
- Need regression-safe iterative refactoring with rollback
|
||||
- Want documented reasoning for each refactoring decision
|
||||
|
||||
**Use `/workflow:lite-fix` when:**
|
||||
**Use `workflow-lite-plan` skill when:**
|
||||
- Single specific bug or issue to fix
|
||||
- No systematic debt analysis needed
|
||||
|
||||
**Use `/workflow:plan` + `/workflow:execute` when:**
|
||||
**Use `workflow-plan` skill + `workflow-execute` skill when:**
|
||||
- New feature implementation (not refactoring)
|
||||
- Already know exactly what to change
|
||||
|
||||
|
||||
@@ -284,8 +284,8 @@ Result:
|
||||
|
||||
The `project-guidelines.json` is consumed by:
|
||||
|
||||
1. **`/workflow:tools:context-gather`**: Loads guidelines into context-package.json
|
||||
2. **`/workflow:plan`**: Passes guidelines to task generation agent
|
||||
1. **`workflow-plan` skill (context-gather phase)**: Loads guidelines into context-package.json
|
||||
2. **`workflow-plan` skill**: Passes guidelines to task generation agent
|
||||
3. **`task-generate-agent`**: Includes guidelines as "CRITICAL CONSTRAINTS" in system prompt
|
||||
|
||||
This ensures all future planning respects solidified rules without users needing to re-state them.
|
||||
|
||||
@@ -25,11 +25,11 @@ The `--type` parameter classifies sessions for CCW dashboard organization:
|
||||
|
||||
| Type | Description | Default For |
|
||||
|------|-------------|-------------|
|
||||
| `workflow` | Standard implementation (default) | `/workflow:plan` |
|
||||
| `review` | Code review sessions | `/workflow:review-module-cycle` |
|
||||
| `tdd` | TDD-based development | `/workflow:tdd-plan` |
|
||||
| `test` | Test generation/fix sessions | `/workflow:test-fix-gen` |
|
||||
| `docs` | Documentation sessions | `/memory:docs` |
|
||||
| `workflow` | Standard implementation (default) | `workflow-plan` skill |
|
||||
| `review` | Code review sessions | `review-cycle` skill |
|
||||
| `tdd` | TDD-based development | `workflow-tdd` skill |
|
||||
| `test` | Test generation/fix sessions | `workflow-test-fix` skill |
|
||||
| `docs` | Documentation sessions | `memory-manage` skill |
|
||||
|
||||
**Validation**: If `--type` is provided with invalid value, return error:
|
||||
```
|
||||
|
||||
@@ -9,7 +9,7 @@ allowed-tools: Read(*), Write(*), Edit(*), TodoWrite(*), Glob(*), Bash(*)
|
||||
|
||||
## Overview
|
||||
|
||||
Synchronize finalized design system references to brainstorming artifacts, preparing them for `/workflow:plan` consumption. This command updates **references only** (via @ notation), not content duplication.
|
||||
Synchronize finalized design system references to brainstorming artifacts, preparing them for `workflow-plan` skill consumption. This command updates **references only** (via @ notation), not content duplication.
|
||||
|
||||
## Core Philosophy
|
||||
|
||||
@@ -396,12 +396,12 @@ Next: /workflow:plan [--agent] "<task description>"
|
||||
|
||||
## Integration with /workflow:plan
|
||||
|
||||
After this update, `/workflow:plan` will discover design assets through:
|
||||
After this update, `workflow-plan` skill will discover design assets through:
|
||||
|
||||
**Phase 3: Intelligent Analysis** (`/workflow:tools:concept-enhanced`)
|
||||
**Phase 3: Intelligent Analysis** (`workflow-test-fix` skill (concept-enhanced phase))
|
||||
- Reads role analysis documents → Discovers @ references → Includes design system context in ANALYSIS_RESULTS.md
|
||||
|
||||
**Phase 4: Task Generation** (`/workflow:tools:task-generate`)
|
||||
**Phase 4: Task Generation** (`workflow-plan` skill (task-generate phase))
|
||||
- Reads ANALYSIS_RESULTS.md → Discovers design assets → Includes design system paths in task JSON files
|
||||
|
||||
**Example Task JSON** (generated by task-generate):
|
||||
@@ -441,7 +441,7 @@ After update, verify:
|
||||
|
||||
1. **Reference-Only Updates**: Uses @ notation for file references, no content duplication, lightweight and maintainable
|
||||
2. **Main Claude Direct Execution**: No Agent handoff (preserves context), simple reference generation, reliable path resolution
|
||||
3. **Plan-Ready Output**: `/workflow:plan` Phase 3 can discover design system, task generation includes design asset paths, clear integration points
|
||||
3. **Plan-Ready Output**: `workflow-plan` skill Phase 3 can discover design system, task generation includes design asset paths, clear integration points
|
||||
4. **Minimal Reading**: Only reads target files to update, verifies design file existence (no content reading), optional prototype notes for descriptions
|
||||
5. **Flexible Prototype Selection**: Auto-select all prototypes (default), manual selection via --selected-prototypes parameter, validates existence
|
||||
|
||||
@@ -449,6 +449,6 @@ After update, verify:
|
||||
|
||||
- **Input**: Design system artifacts from `/workflow:ui-design:style-extract` and `/workflow:ui-design:generate`
|
||||
- **Output**: Updated role analysis documents, role analysis.md files, ui-designer/design-system-reference.md with @ references
|
||||
- **Next Phase**: `/workflow:plan` discovers and utilizes design system through @ references
|
||||
- **Auto Integration**: Automatically triggered by `/workflow:ui-design:auto` workflow
|
||||
- **Next Phase**: `workflow-plan` skill discovers and utilizes design system through @ references
|
||||
- **Auto Integration**: Automatically triggered by `/workflow:ui-design:explore-auto` workflow
|
||||
|
||||
|
||||
@@ -500,5 +500,5 @@ ERROR: Script permission denied
|
||||
- `/workflow:ui-design:layout-extract` → `layout-{target}-{variant}.json` files
|
||||
|
||||
**Input**: `layout-*.json` files + `design-tokens.json`
|
||||
**Output**: S×L×T prototypes for `/workflow:ui-design:update`
|
||||
**Output**: S×L×T prototypes for `/workflow:ui-design:generate`
|
||||
**Called by**: `/workflow:ui-design:explore-auto`, `/workflow:ui-design:imitate-auto`
|
||||
|
||||
@@ -708,7 +708,7 @@ TodoWrite({todos: [
|
||||
3. `/workflow:ui-design:animation-extract` (Phase 2.3 - animation tokens)
|
||||
4. `/workflow:ui-design:layout-extract` (Phase 2.5 - structure templates)
|
||||
5. `/workflow:ui-design:generate` (Phase 3 - pure assembly)
|
||||
6. `/workflow:ui-design:update` (Phase 4, if --session)
|
||||
6. `/workflow:ui-design:generate` (Phase 4, if --session)
|
||||
|
||||
## Completion Output
|
||||
|
||||
|
||||
402
.claude/scripts/cleanup-ghost-commands.mjs
Normal file
402
.claude/scripts/cleanup-ghost-commands.mjs
Normal file
@@ -0,0 +1,402 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Cleanup script: Remove ghost command entries from ccw-help JSON indexes
|
||||
* and fix broken slash command references in skill/command .md files.
|
||||
*
|
||||
* Usage: node cleanup-ghost-commands.mjs [--dry-run]
|
||||
*/
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { glob } from 'fs/promises';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const ROOT = path.resolve(__dirname, '..');
|
||||
const COMMANDS_DIR = path.join(ROOT, 'commands');
|
||||
const SKILLS_DIR = path.join(ROOT, 'skills');
|
||||
const INDEX_DIR = path.join(SKILLS_DIR, 'ccw-help', 'index');
|
||||
|
||||
const DRY_RUN = process.argv.includes('--dry-run');
|
||||
const log = (msg) => console.log(DRY_RUN ? `[DRY-RUN] ${msg}` : msg);
|
||||
|
||||
// ─── Step 1: Build set of existing command source files ───
|
||||
function getExistingCommandSources() {
|
||||
const sources = new Set();
|
||||
function walk(dir, prefix = '') {
|
||||
if (!fs.existsSync(dir)) return;
|
||||
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||
const rel = prefix ? `${prefix}/${entry.name}` : entry.name;
|
||||
if (entry.isDirectory()) {
|
||||
walk(path.join(dir, entry.name), rel);
|
||||
} else if (entry.name.endsWith('.md')) {
|
||||
// Store as relative path from index dir: ../../../commands/...
|
||||
sources.add(`../../../commands/${rel}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
walk(COMMANDS_DIR);
|
||||
return sources;
|
||||
}
|
||||
|
||||
// ─── Step 2: Build mapping of old commands → new skill names ───
|
||||
// These commands were migrated to skills but references were never updated
|
||||
const COMMAND_TO_SKILL_MAP = {
|
||||
// workflow commands → skills
|
||||
'/workflow:plan': 'workflow-plan',
|
||||
'/workflow:execute': 'workflow-execute',
|
||||
'/workflow:lite-plan': 'workflow-lite-plan',
|
||||
'/workflow:lite-execute': 'workflow-lite-plan', // lite-execute is part of lite-plan skill
|
||||
'/workflow:lite-fix': 'workflow-lite-plan', // lite-fix is part of lite-plan skill
|
||||
'/workflow:multi-cli-plan': 'workflow-multi-cli-plan',
|
||||
'/workflow:plan-verify': 'workflow-plan', // plan-verify is a phase of workflow-plan
|
||||
'/workflow:replan': 'workflow-plan', // replan is a phase of workflow-plan
|
||||
'/workflow:tdd-plan': 'workflow-tdd',
|
||||
'/workflow:tdd-verify': 'workflow-tdd', // tdd-verify is a phase of workflow-tdd
|
||||
'/workflow:test-fix-gen': 'workflow-test-fix',
|
||||
'/workflow:test-gen': 'workflow-test-fix',
|
||||
'/workflow:test-cycle-execute': 'workflow-test-fix',
|
||||
'/workflow:review': 'review-cycle',
|
||||
'/workflow:review-session-cycle': 'review-cycle',
|
||||
'/workflow:review-module-cycle': 'review-cycle',
|
||||
'/workflow:review-cycle-fix': 'review-cycle',
|
||||
'/workflow:status': 'workflow-execute', // status is part of workflow-execute
|
||||
// brainstorm commands → skills
|
||||
'/workflow:brainstorm:artifacts': 'brainstorm',
|
||||
'/workflow:brainstorm:auto-parallel': 'brainstorm',
|
||||
'/workflow:brainstorm:role-analysis': 'brainstorm',
|
||||
'/workflow:brainstorm:synthesis': 'brainstorm',
|
||||
// tools commands → skill phases
|
||||
'/workflow:tools:context-gather': 'workflow-plan',
|
||||
'/workflow:tools:conflict-resolution': 'workflow-plan',
|
||||
'/workflow:tools:task-generate-agent': 'workflow-plan',
|
||||
'/workflow:tools:task-generate-tdd': 'workflow-tdd',
|
||||
'/workflow:tools:tdd-coverage-analysis': 'workflow-tdd',
|
||||
'/workflow:tools:test-concept-enhanced': 'workflow-test-fix',
|
||||
'/workflow:tools:test-context-gather': 'workflow-test-fix',
|
||||
'/workflow:tools:test-task-generate': 'workflow-test-fix',
|
||||
// memory commands → skills
|
||||
'/memory:compact': 'memory-capture',
|
||||
'/memory:tips': 'memory-capture',
|
||||
'/memory:load': 'memory-manage',
|
||||
'/memory:docs': 'memory-manage',
|
||||
'/memory:docs-full-cli': 'memory-manage',
|
||||
'/memory:docs-related-cli': 'memory-manage',
|
||||
'/memory:update-full': 'memory-manage',
|
||||
'/memory:update-related': 'memory-manage',
|
||||
// general commands
|
||||
'/ccw-debug': null, // deleted, no replacement
|
||||
'/ccw view': null, // deleted, no replacement
|
||||
'/workflow:lite-lite-lite': 'workflow-lite-plan',
|
||||
// ui-design (these still exist as commands)
|
||||
'/workflow:ui-design:auto': '/workflow:ui-design:explore-auto',
|
||||
'/workflow:ui-design:update': '/workflow:ui-design:generate',
|
||||
};
|
||||
|
||||
// ─── Step 3: Clean JSON index files ───
|
||||
function cleanAllCommandsJson(existingSources) {
|
||||
const filePath = path.join(INDEX_DIR, 'all-commands.json');
|
||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
const before = data.length;
|
||||
|
||||
const cleaned = data.filter(entry => {
|
||||
const exists = existingSources.has(entry.source);
|
||||
if (!exists) {
|
||||
log(` REMOVE from all-commands.json: ${entry.command} (source: ${entry.source})`);
|
||||
}
|
||||
return exists;
|
||||
});
|
||||
|
||||
const removed = before - cleaned.length;
|
||||
if (removed > 0) {
|
||||
if (!DRY_RUN) fs.writeFileSync(filePath, JSON.stringify(cleaned, null, 2) + '\n');
|
||||
log(` all-commands.json: removed ${removed} ghost entries (${before} → ${cleaned.length})`);
|
||||
} else {
|
||||
log(` all-commands.json: no ghost entries found`);
|
||||
}
|
||||
return removed;
|
||||
}
|
||||
|
||||
function cleanEssentialCommandsJson(existingSources) {
|
||||
const filePath = path.join(INDEX_DIR, 'essential-commands.json');
|
||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
const before = data.length;
|
||||
|
||||
const cleaned = data.filter(entry => {
|
||||
const exists = existingSources.has(entry.source);
|
||||
if (!exists) {
|
||||
log(` REMOVE from essential-commands.json: ${entry.command} (source: ${entry.source})`);
|
||||
}
|
||||
return exists;
|
||||
});
|
||||
|
||||
const removed = before - cleaned.length;
|
||||
if (removed > 0) {
|
||||
if (!DRY_RUN) fs.writeFileSync(filePath, JSON.stringify(cleaned, null, 2) + '\n');
|
||||
log(` essential-commands.json: removed ${removed} ghost entries`);
|
||||
}
|
||||
return removed;
|
||||
}
|
||||
|
||||
function cleanByCategoryJson(existingSources) {
|
||||
const filePath = path.join(INDEX_DIR, 'by-category.json');
|
||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
let totalRemoved = 0;
|
||||
|
||||
for (const [category, subcats] of Object.entries(data)) {
|
||||
for (const [subcat, entries] of Object.entries(subcats)) {
|
||||
if (!Array.isArray(entries)) continue;
|
||||
const before = entries.length;
|
||||
const cleaned = entries.filter(entry => {
|
||||
const exists = existingSources.has(entry.source);
|
||||
if (!exists) {
|
||||
log(` REMOVE from by-category.json[${category}][${subcat}]: ${entry.command}`);
|
||||
}
|
||||
return exists;
|
||||
});
|
||||
if (cleaned.length < before) {
|
||||
subcats[subcat] = cleaned;
|
||||
totalRemoved += before - cleaned.length;
|
||||
}
|
||||
// Remove empty subcategory arrays
|
||||
if (cleaned.length === 0) {
|
||||
delete subcats[subcat];
|
||||
}
|
||||
}
|
||||
// Remove empty categories
|
||||
if (Object.keys(subcats).length === 0) {
|
||||
delete data[category];
|
||||
}
|
||||
}
|
||||
|
||||
if (totalRemoved > 0) {
|
||||
if (!DRY_RUN) fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
|
||||
log(` by-category.json: removed ${totalRemoved} ghost entries`);
|
||||
}
|
||||
return totalRemoved;
|
||||
}
|
||||
|
||||
function cleanByUseCaseJson(existingSources) {
|
||||
const filePath = path.join(INDEX_DIR, 'by-use-case.json');
|
||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
let totalRemoved = 0;
|
||||
|
||||
for (const [useCase, entries] of Object.entries(data)) {
|
||||
if (!Array.isArray(entries)) continue;
|
||||
const before = entries.length;
|
||||
const cleaned = entries.filter(entry => {
|
||||
const exists = existingSources.has(entry.source);
|
||||
if (!exists) {
|
||||
log(` REMOVE from by-use-case.json[${useCase}]: ${entry.command}`);
|
||||
}
|
||||
return exists;
|
||||
});
|
||||
if (cleaned.length < before) {
|
||||
data[useCase] = cleaned;
|
||||
totalRemoved += before - cleaned.length;
|
||||
}
|
||||
if (cleaned.length === 0) {
|
||||
delete data[useCase];
|
||||
}
|
||||
}
|
||||
|
||||
if (totalRemoved > 0) {
|
||||
if (!DRY_RUN) fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
|
||||
log(` by-use-case.json: removed ${totalRemoved} ghost entries`);
|
||||
}
|
||||
return totalRemoved;
|
||||
}
|
||||
|
||||
function cleanCommandRelationshipsJson(existingSources) {
|
||||
const filePath = path.join(INDEX_DIR, 'command-relationships.json');
|
||||
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
||||
|
||||
// Build set of existing command names (without leading /)
|
||||
// From source paths like ../../../commands/workflow/session/start.md → workflow:session:start
|
||||
const existingCommands = new Set();
|
||||
for (const src of existingSources) {
|
||||
// ../../../commands/workflow/session/start.md → workflow/session/start
|
||||
const rel = src.replace('../../../commands/', '').replace('.md', '');
|
||||
// workflow/session/start → workflow:session:start
|
||||
const cmd = rel.replace(/\//g, ':');
|
||||
existingCommands.add(cmd);
|
||||
}
|
||||
// Also add skill names as valid targets
|
||||
if (fs.existsSync(SKILLS_DIR)) {
|
||||
for (const entry of fs.readdirSync(SKILLS_DIR, { withFileTypes: true })) {
|
||||
if (entry.isDirectory()) existingCommands.add(entry.name);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove top-level keys that reference non-existent commands
|
||||
const keysToRemove = [];
|
||||
for (const key of Object.keys(data)) {
|
||||
if (!existingCommands.has(key)) {
|
||||
keysToRemove.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
// Also clean internal references
|
||||
for (const [key, relations] of Object.entries(data)) {
|
||||
for (const [relType, refs] of Object.entries(relations)) {
|
||||
if (Array.isArray(refs)) {
|
||||
const cleaned = refs.filter(ref => existingCommands.has(ref));
|
||||
if (cleaned.length < refs.length) {
|
||||
log(` CLEAN command-relationships.json[${key}][${relType}]: removed ${refs.length - cleaned.length} dead refs`);
|
||||
relations[relType] = cleaned;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const key of keysToRemove) {
|
||||
log(` REMOVE command-relationships.json key: ${key}`);
|
||||
delete data[key];
|
||||
}
|
||||
|
||||
if (keysToRemove.length > 0) {
|
||||
if (!DRY_RUN) fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
|
||||
log(` command-relationships.json: removed ${keysToRemove.length} ghost keys`);
|
||||
}
|
||||
return keysToRemove.length;
|
||||
}
|
||||
|
||||
// ─── Step 4: Fix broken references in .md files ───
|
||||
function findMdFiles(dir) {
|
||||
const results = [];
|
||||
if (!fs.existsSync(dir)) return results;
|
||||
function walk(d) {
|
||||
for (const entry of fs.readdirSync(d, { withFileTypes: true })) {
|
||||
const full = path.join(d, entry.name);
|
||||
if (entry.isDirectory()) {
|
||||
// Skip _shared, index dirs
|
||||
if (entry.name === 'node_modules' || entry.name === 'index') continue;
|
||||
walk(full);
|
||||
} else if (entry.name.endsWith('.md')) {
|
||||
results.push(full);
|
||||
}
|
||||
}
|
||||
}
|
||||
walk(dir);
|
||||
return results;
|
||||
}
|
||||
|
||||
function fixBrokenReferences() {
|
||||
const mdFiles = [
|
||||
...findMdFiles(COMMANDS_DIR),
|
||||
...findMdFiles(SKILLS_DIR),
|
||||
];
|
||||
|
||||
let totalFixes = 0;
|
||||
const fixLog = [];
|
||||
|
||||
for (const filePath of mdFiles) {
|
||||
let content = fs.readFileSync(filePath, 'utf8');
|
||||
let modified = false;
|
||||
const relPath = path.relative(ROOT, filePath);
|
||||
|
||||
// Fix Skill() invocations with wrong skill names
|
||||
// e.g., Skill(skill="compact" → Skill(skill="memory-capture"
|
||||
const skillCallFixes = {
|
||||
'skill="compact"': 'skill="memory-capture"',
|
||||
"skill='compact'": "skill='memory-capture'",
|
||||
'skill="workflow:brainstorm:role-analysis"': 'skill="brainstorm"',
|
||||
"skill='workflow:brainstorm:role-analysis'": "skill='brainstorm'",
|
||||
'skill="workflow:lite-execute"': 'skill="workflow-lite-plan"',
|
||||
"skill='workflow:lite-execute'": "skill='workflow-lite-plan'",
|
||||
};
|
||||
|
||||
for (const [oldCall, newCall] of Object.entries(skillCallFixes)) {
|
||||
if (content.includes(oldCall)) {
|
||||
content = content.replaceAll(oldCall, newCall);
|
||||
modified = true;
|
||||
fixLog.push(` ${relPath}: ${oldCall} → ${newCall}`);
|
||||
totalFixes++;
|
||||
}
|
||||
}
|
||||
|
||||
// Fix backtick-quoted slash command references in prose
|
||||
// Pattern: `/ command:name` references that point to non-existent commands
|
||||
// These are documentation references - update to point to skill names
|
||||
const proseRefFixes = {
|
||||
'`/workflow:plan`': '`workflow-plan` skill',
|
||||
'`/workflow:execute`': '`workflow-execute` skill',
|
||||
'`/workflow:lite-execute`': '`workflow-lite-plan` skill',
|
||||
'`/workflow:lite-fix`': '`workflow-lite-plan` skill',
|
||||
'`/workflow:plan-verify`': '`workflow-plan` skill (plan-verify phase)',
|
||||
'`/workflow:replan`': '`workflow-plan` skill (replan phase)',
|
||||
'`/workflow:tdd-plan`': '`workflow-tdd` skill',
|
||||
'`/workflow:tdd-verify`': '`workflow-tdd` skill (tdd-verify phase)',
|
||||
'`/workflow:test-fix-gen`': '`workflow-test-fix` skill',
|
||||
'`/workflow:test-gen`': '`workflow-test-fix` skill',
|
||||
'`/workflow:test-cycle-execute`': '`workflow-test-fix` skill',
|
||||
'`/workflow:review`': '`review-cycle` skill',
|
||||
'`/workflow:review-session-cycle`': '`review-cycle` skill',
|
||||
'`/workflow:review-module-cycle`': '`review-cycle` skill',
|
||||
'`/workflow:review-cycle-fix`': '`review-cycle` skill (fix phase)',
|
||||
'`/workflow:status`': '`workflow-execute` skill',
|
||||
'`/workflow:brainstorm:artifacts`': '`brainstorm` skill',
|
||||
'`/workflow:brainstorm:synthesis`': '`brainstorm` skill',
|
||||
'`/workflow:brainstorm:role-analysis`': '`brainstorm` skill',
|
||||
'`/memory:compact`': '`memory-capture` skill',
|
||||
'`/memory:docs`': '`memory-manage` skill',
|
||||
'`/compact`': '`memory-capture` skill',
|
||||
'`/workflow:tools:context-gather`': '`workflow-plan` skill (context-gather phase)',
|
||||
'`/workflow:tools:concept-enhanced`': '`workflow-test-fix` skill (concept-enhanced phase)',
|
||||
'`/workflow:tools:task-generate`': '`workflow-plan` skill (task-generate phase)',
|
||||
'`/workflow:ui-design:auto`': '`/workflow:ui-design:explore-auto`',
|
||||
'`/workflow:ui-design:update`': '`/workflow:ui-design:generate`',
|
||||
'`/workflow:multi-cli-plan`': '`workflow-multi-cli-plan` skill',
|
||||
'`/workflow:lite-plan`': '`workflow-lite-plan` skill',
|
||||
'`/cli:plan`': '`workflow-lite-plan` skill',
|
||||
'`/test-cycle-execute`': '`workflow-test-fix` skill',
|
||||
};
|
||||
|
||||
for (const [oldRef, newRef] of Object.entries(proseRefFixes)) {
|
||||
if (content.includes(oldRef)) {
|
||||
content = content.replaceAll(oldRef, newRef);
|
||||
modified = true;
|
||||
fixLog.push(` ${relPath}: ${oldRef} → ${newRef}`);
|
||||
totalFixes++;
|
||||
}
|
||||
}
|
||||
|
||||
if (modified && !DRY_RUN) {
|
||||
fs.writeFileSync(filePath, content);
|
||||
}
|
||||
}
|
||||
|
||||
for (const entry of fixLog) {
|
||||
log(entry);
|
||||
}
|
||||
return totalFixes;
|
||||
}
|
||||
|
||||
// ─── Main ───
|
||||
console.log('=== CCW Ghost Command Cleanup ===');
|
||||
console.log(`Root: ${ROOT}`);
|
||||
console.log(`Mode: ${DRY_RUN ? 'DRY-RUN (no files modified)' : 'LIVE'}\n`);
|
||||
|
||||
// Step 1
|
||||
console.log('Step 1: Scanning existing command files...');
|
||||
const existingSources = getExistingCommandSources();
|
||||
console.log(` Found ${existingSources.size} existing command files\n`);
|
||||
|
||||
// Step 2
|
||||
console.log('Step 2: Cleaning JSON index files...');
|
||||
let totalJsonRemoved = 0;
|
||||
totalJsonRemoved += cleanAllCommandsJson(existingSources);
|
||||
totalJsonRemoved += cleanEssentialCommandsJson(existingSources);
|
||||
totalJsonRemoved += cleanByCategoryJson(existingSources);
|
||||
totalJsonRemoved += cleanByUseCaseJson(existingSources);
|
||||
totalJsonRemoved += cleanCommandRelationshipsJson(existingSources);
|
||||
console.log(`\n Total JSON ghost entries removed: ${totalJsonRemoved}\n`);
|
||||
|
||||
// Step 3
|
||||
console.log('Step 3: Fixing broken references in .md files...');
|
||||
const totalMdFixes = fixBrokenReferences();
|
||||
console.log(`\n Total .md reference fixes: ${totalMdFixes}\n`);
|
||||
|
||||
console.log('=== Done ===');
|
||||
console.log(`Summary: ${totalJsonRemoved} JSON ghost entries, ${totalMdFixes} .md reference fixes`);
|
||||
if (DRY_RUN) console.log('(No files were modified - run without --dry-run to apply changes)');
|
||||
@@ -122,7 +122,7 @@
|
||||
| **Frontmatter** | 移除,在 SKILL.md 中统一定义 | `argument-hint`、`examples` → 移除 |
|
||||
| **命令调用语法** | 转换为 Phase 文件的相对路径 | `/workflow:session:start` → `phases/01-session-discovery.md` |
|
||||
| **命令路径引用** | 转换为 Skill 目录内路径 | `commands/workflow/tools/` → `phases/` |
|
||||
| **跨命令引用** | 转换为 Phase 间文件引用 | `/workflow:tools:context-gather` → `phases/02-context-gathering.md` |
|
||||
| **跨命令引用** | 转换为 Phase 间文件引用 | `workflow-plan` skill (context-gather phase) → `phases/02-context-gathering.md` |
|
||||
| **命令参数说明** | 移除或转为 Phase Prerequisites | `usage: /workflow:plan [session-id]` → Phase Prerequisites 中说明 |
|
||||
|
||||
**转换示例**:
|
||||
@@ -131,7 +131,7 @@
|
||||
```markdown
|
||||
## Related Commands
|
||||
- `/workflow:session:start` - Start new session
|
||||
- `/workflow:tools:context-gather` - Gather context
|
||||
- `workflow-plan` skill (context-gather phase) - Gather context
|
||||
```
|
||||
|
||||
转换后 Phase 文件中(使用文件路径引用):
|
||||
|
||||
@@ -34,10 +34,10 @@ When called from auto mode, launch N role-analysis calls simultaneously:
|
||||
```javascript
|
||||
// Single message with multiple Skill invokes for parallelism
|
||||
// For each selected role:
|
||||
Skill(skill="workflow:brainstorm:role-analysis", args="{role-name} --session {session-id} --skip-questions")
|
||||
Skill(skill="brainstorm", args="{role-name} --session {session-id} --skip-questions")
|
||||
|
||||
// For ui-designer with style-skill:
|
||||
Skill(skill="workflow:brainstorm:role-analysis", args="ui-designer --session {session-id} --skip-questions --style-skill {style_skill_package}")
|
||||
Skill(skill="brainstorm", args="ui-designer --session {session-id} --skip-questions --style-skill {style_skill_package}")
|
||||
```
|
||||
|
||||
**Parallel Safety**: Each role operates independently on its own directory. No cross-agent dependencies.
|
||||
|
||||
@@ -10,17 +10,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw-coordinator.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw-debug",
|
||||
"command": "/ccw-debug",
|
||||
"description": "Aggregated debug command - combines debugging diagnostics and test verification in a synergistic workflow supporting cli-quick / debug-first / test-first / bidirectional-verification modes",
|
||||
"arguments": "[--mode cli|debug|test|bidirectional] [--yes|-y] [--hotfix] \\\"bug description or error message\\",
|
||||
"category": "general",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw-debug.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw",
|
||||
"command": "/ccw",
|
||||
@@ -142,50 +131,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/issue/queue.md"
|
||||
},
|
||||
{
|
||||
"name": "compact",
|
||||
"command": "/memory:compact",
|
||||
"description": "Compact current session memory into structured text for session recovery, extracting objective/plan/files/decisions/constraints/state, and save via MCP core_memory tool",
|
||||
"arguments": "[optional: session description]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/compact.md"
|
||||
},
|
||||
{
|
||||
"name": "docs-full-cli",
|
||||
"command": "/memory:docs-full-cli",
|
||||
"description": "Generate full project documentation using CLI execution (Layer 3→1) with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <20 modules uses direct parallel",
|
||||
"arguments": "[path] [--tool <gemini|qwen|codex>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/docs-full-cli.md"
|
||||
},
|
||||
{
|
||||
"name": "docs-related-cli",
|
||||
"command": "/memory:docs-related-cli",
|
||||
"description": "Generate/update documentation for git-changed modules using CLI execution with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <15 modules uses direct parallel",
|
||||
"arguments": "[--tool <gemini|qwen|codex>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/docs-related-cli.md"
|
||||
},
|
||||
{
|
||||
"name": "load",
|
||||
"command": "/memory:load",
|
||||
"description": "Delegate to universal-executor agent to analyze project via Gemini/Qwen CLI and return JSON core content package for task context",
|
||||
"arguments": "[--tool gemini|qwen] \\\"task context description\\",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/load.md"
|
||||
},
|
||||
{
|
||||
"name": "style-skill-memory",
|
||||
"command": "/memory:style-skill-memory",
|
||||
@@ -197,50 +142,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/style-skill-memory.md"
|
||||
},
|
||||
{
|
||||
"name": "tips",
|
||||
"command": "/memory:tips",
|
||||
"description": "Quick note-taking command to capture ideas, snippets, reminders, and insights for later reference",
|
||||
"arguments": "<note content> [--tag <tag1,tag2>] [--context <context>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/tips.md"
|
||||
},
|
||||
{
|
||||
"name": "update-full",
|
||||
"command": "/memory:update-full",
|
||||
"description": "Update all CLAUDE.md files using layer-based execution (Layer 3→1) with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <20 modules uses direct parallel",
|
||||
"arguments": "[--tool gemini|qwen|codex] [--path <directory>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/update-full.md"
|
||||
},
|
||||
{
|
||||
"name": "update-related",
|
||||
"command": "/memory:update-related",
|
||||
"description": "Update CLAUDE.md for git-changed modules using batched agent execution (4 modules/agent) with gemini→qwen→codex fallback, <15 modules uses direct execution",
|
||||
"arguments": "[--tool gemini|qwen|codex]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/update-related.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw view",
|
||||
"command": "/ccw view",
|
||||
"description": "Dashboard - Open CCW workflow dashboard for managing tasks and sessions",
|
||||
"arguments": "",
|
||||
"category": "general",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/view.md"
|
||||
},
|
||||
{
|
||||
"name": "analyze-with-file",
|
||||
"command": "/workflow:analyze-with-file",
|
||||
@@ -252,50 +153,6 @@
|
||||
"difficulty": "Beginner",
|
||||
"source": "../../../commands/workflow/analyze-with-file.md"
|
||||
},
|
||||
{
|
||||
"name": "artifacts",
|
||||
"command": "/workflow:brainstorm:artifacts",
|
||||
"description": "Interactive clarification generating confirmed guidance specification through role-based analysis and synthesis",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/artifacts.md"
|
||||
},
|
||||
{
|
||||
"name": "auto-parallel",
|
||||
"command": "/workflow:brainstorm:auto-parallel",
|
||||
"description": "Parallel brainstorming automation with dynamic role selection and concurrent execution across multiple perspectives",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/brainstorm/auto-parallel.md"
|
||||
},
|
||||
{
|
||||
"name": "role-analysis",
|
||||
"command": "/workflow:brainstorm:role-analysis",
|
||||
"description": "Unified role-specific analysis generation with interactive context gathering and incremental updates",
|
||||
"arguments": "[role-name] [--session session-id] [--update] [--include-questions] [--skip-questions]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/role-analysis.md"
|
||||
},
|
||||
{
|
||||
"name": "synthesis",
|
||||
"command": "/workflow:brainstorm:synthesis",
|
||||
"description": "Clarify and refine role analyses through intelligent Q&A and targeted updates with synthesis agent",
|
||||
"arguments": "[-y|--yes] [optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/brainstorm/synthesis.md"
|
||||
},
|
||||
{
|
||||
"name": "brainstorm-with-file",
|
||||
"command": "/workflow:brainstorm-with-file",
|
||||
@@ -329,17 +186,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/debug-with-file.md"
|
||||
},
|
||||
{
|
||||
"name": "execute",
|
||||
"command": "/workflow:execute",
|
||||
"description": "Coordinate agent execution for workflow tasks with automatic session discovery, parallel task processing, and status tracking",
|
||||
"arguments": "[-y|--yes] [--resume-session=\\\"session-id\\\"]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/execute.md"
|
||||
},
|
||||
{
|
||||
"name": "init",
|
||||
"command": "/workflow:init",
|
||||
@@ -351,138 +197,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/init.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-execute",
|
||||
"command": "/workflow:lite-execute",
|
||||
"description": "Execute tasks based on in-memory plan, prompt description, or file content",
|
||||
"arguments": "[-y|--yes] [--in-memory] [\\\"task description\\\"|file-path]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-execute.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-fix",
|
||||
"command": "/workflow:lite-fix",
|
||||
"description": "Lightweight bug diagnosis and fix workflow with intelligent severity assessment and optional hotfix mode for production incidents",
|
||||
"arguments": "[-y|--yes] [--hotfix] \\\"bug description or issue reference\\",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:lite-lite-lite",
|
||||
"command": "/workflow:lite-lite-lite",
|
||||
"description": "Ultra-lightweight multi-tool analysis and direct execution. No artifacts for simple tasks; auto-creates planning docs in .workflow/.scratchpad/ for complex tasks. Auto tool selection based on task analysis, user-driven iteration via AskUser.",
|
||||
"arguments": "[-y|--yes] <task description>",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-lite-lite.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-plan",
|
||||
"command": "/workflow:lite-plan",
|
||||
"description": "Lightweight interactive planning workflow with in-memory planning, code exploration, and execution execute to lite-execute after user confirmation",
|
||||
"arguments": "[-y|--yes] [-e|--explore] \\\"task description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:multi-cli-plan",
|
||||
"command": "/workflow:multi-cli-plan",
|
||||
"description": "Multi-CLI collaborative planning workflow with ACE context gathering and iterative cross-verification. Uses cli-discuss-agent for Gemini+Codex+Claude analysis to converge on optimal execution plan.",
|
||||
"arguments": "[-y|--yes] <task description> [--max-rounds=3] [--tools=gemini,codex] [--mode=parallel|serial]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/multi-cli-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "plan-verify",
|
||||
"command": "/workflow:plan-verify",
|
||||
"description": "Perform READ-ONLY verification analysis between IMPL_PLAN.md, task JSONs, and brainstorming artifacts. Generates structured report with quality gate recommendation. Does NOT modify any files.",
|
||||
"arguments": "[optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan-verify.md"
|
||||
},
|
||||
{
|
||||
"name": "plan",
|
||||
"command": "/workflow:plan",
|
||||
"description": "5-phase planning workflow with action-planning-agent task generation, outputs IMPL_PLAN.md and task JSONs",
|
||||
"arguments": "[-y|--yes] \\\"text description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan.md"
|
||||
},
|
||||
{
|
||||
"name": "replan",
|
||||
"command": "/workflow:replan",
|
||||
"description": "Interactive workflow replanning with session-level artifact updates and boundary clarification through guided questioning",
|
||||
"arguments": "[-y|--yes] [--session session-id] [task-id] \\\"requirements\\\"|file.md [--interactive]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/replan.md"
|
||||
},
|
||||
{
|
||||
"name": "review-cycle-fix",
|
||||
"command": "/workflow:review-cycle-fix",
|
||||
"description": "Automated fixing of code review findings with AI-powered planning and coordinated execution. Uses intelligent grouping, multi-stage timeline coordination, and test-driven verification.",
|
||||
"arguments": "<export-file|review-dir> [--resume] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-cycle-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "review-module-cycle",
|
||||
"command": "/workflow:review-module-cycle",
|
||||
"description": "Independent multi-dimensional code review for specified modules/files. Analyzes specific code paths across 7 dimensions with hybrid parallel-iterative execution, independent of workflow sessions.",
|
||||
"arguments": "<path-pattern> [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-module-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "review-session-cycle",
|
||||
"command": "/workflow:review-session-cycle",
|
||||
"description": "Session-based comprehensive multi-dimensional code review. Analyzes git changes from workflow session across 7 dimensions with hybrid parallel-iterative execution, aggregates findings, and performs focused deep-dives on critical issues until quality gates met.",
|
||||
"arguments": "[session-id] [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "session-management",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-session-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "review",
|
||||
"command": "/workflow:review",
|
||||
"description": "Post-implementation review with specialized types (security/architecture/action-items/quality) using analysis agents and Gemini",
|
||||
"arguments": "[--type=security|architecture|action-items|quality] [--archived] [optional: session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review.md"
|
||||
},
|
||||
{
|
||||
"name": "complete",
|
||||
"command": "/workflow:session:complete",
|
||||
@@ -538,149 +252,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/session/start.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-plan",
|
||||
"command": "/workflow:tdd-plan",
|
||||
"description": "TDD workflow planning with Red-Green-Refactor task chain generation, test-first development structure, and cycle tracking",
|
||||
"arguments": "\\\"feature description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tdd-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-verify",
|
||||
"command": "/workflow:tdd-verify",
|
||||
"description": "Verify TDD workflow compliance against Red-Green-Refactor cycles. Generates quality report with coverage analysis and quality gate recommendation. Orchestrates sub-commands for comprehensive validation.",
|
||||
"arguments": "[optional: --session WFS-session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tdd-verify.md"
|
||||
},
|
||||
{
|
||||
"name": "test-cycle-execute",
|
||||
"command": "/workflow:test-cycle-execute",
|
||||
"description": "Execute test-fix workflow with dynamic task generation and iterative fix cycles until test pass rate >= 95% or max iterations reached. Uses @cli-planning-agent for failure analysis and task generation.",
|
||||
"arguments": "[--resume-session=\\\"session-id\\\"] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-cycle-execute.md"
|
||||
},
|
||||
{
|
||||
"name": "test-fix-gen",
|
||||
"command": "/workflow:test-fix-gen",
|
||||
"description": "Create test-fix workflow session from session ID, description, or file path with test strategy generation and task planning",
|
||||
"arguments": "(source-session-id | \\\"feature description\\\" | /path/to/file.md)",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-fix-gen.md"
|
||||
},
|
||||
{
|
||||
"name": "test-gen",
|
||||
"command": "/workflow:test-gen",
|
||||
"description": "Create independent test-fix workflow session from completed implementation session, analyzes code to generate test tasks",
|
||||
"arguments": "source-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-gen.md"
|
||||
},
|
||||
{
|
||||
"name": "conflict-resolution",
|
||||
"command": "/workflow:tools:conflict-resolution",
|
||||
"description": "Detect and resolve conflicts between plan and existing codebase using CLI-powered analysis with Gemini/Qwen",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id --context path/to/context-package.json",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/conflict-resolution.md"
|
||||
},
|
||||
{
|
||||
"name": "gather",
|
||||
"command": "/workflow:tools:gather",
|
||||
"description": "Intelligently collect project context using context-search-agent based on task description, packages into standardized JSON",
|
||||
"arguments": "--session WFS-session-id \\\"task description\\",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/context-gather.md"
|
||||
},
|
||||
{
|
||||
"name": "task-generate-agent",
|
||||
"command": "/workflow:tools:task-generate-agent",
|
||||
"description": "Generate implementation plan documents (IMPL_PLAN.md, task JSONs, TODO_LIST.md) using action-planning-agent - produces planning artifacts, does NOT execute code implementation",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/task-generate-agent.md"
|
||||
},
|
||||
{
|
||||
"name": "task-generate-tdd",
|
||||
"command": "/workflow:tools:task-generate-tdd",
|
||||
"description": "Autonomous TDD task generation using action-planning-agent with Red-Green-Refactor cycles, test-first structure, and cycle validation",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/task-generate-tdd.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-coverage-analysis",
|
||||
"command": "/workflow:tools:tdd-coverage-analysis",
|
||||
"description": "Analyze test coverage and TDD cycle execution with Red-Green-Refactor compliance verification",
|
||||
"arguments": "--session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/tdd-coverage-analysis.md"
|
||||
},
|
||||
{
|
||||
"name": "test-concept-enhanced",
|
||||
"command": "/workflow:tools:test-concept-enhanced",
|
||||
"description": "Coordinate test analysis workflow using cli-execution-agent to generate test strategy via Gemini",
|
||||
"arguments": "--session WFS-test-session-id --context path/to/test-context-package.json",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-concept-enhanced.md"
|
||||
},
|
||||
{
|
||||
"name": "test-context-gather",
|
||||
"command": "/workflow:tools:test-context-gather",
|
||||
"description": "Collect test coverage context using test-context-search-agent and package into standardized test-context JSON",
|
||||
"arguments": "--session WFS-test-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-context-gather.md"
|
||||
},
|
||||
{
|
||||
"name": "test-task-generate",
|
||||
"command": "/workflow:tools:test-task-generate",
|
||||
"description": "Generate test planning documents (IMPL_PLAN.md, test task JSONs, TODO_LIST.md) using action-planning-agent - produces test planning artifacts, does NOT execute tests",
|
||||
"arguments": "--session WFS-test-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-task-generate.md"
|
||||
},
|
||||
{
|
||||
"name": "animation-extract",
|
||||
"command": "/workflow:ui-design:animation-extract",
|
||||
|
||||
@@ -12,17 +12,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw-coordinator.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw-debug",
|
||||
"command": "/ccw-debug",
|
||||
"description": "Aggregated debug command - combines debugging diagnostics and test verification in a synergistic workflow supporting cli-quick / debug-first / test-first / bidirectional-verification modes",
|
||||
"arguments": "[--mode cli|debug|test|bidirectional] [--yes|-y] [--hotfix] \\\"bug description or error message\\",
|
||||
"category": "general",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw-debug.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw",
|
||||
"command": "/ccw",
|
||||
@@ -33,17 +22,6 @@
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw view",
|
||||
"command": "/ccw view",
|
||||
"description": "Dashboard - Open CCW workflow dashboard for managing tasks and sessions",
|
||||
"arguments": "",
|
||||
"category": "general",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/view.md"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -167,50 +145,6 @@
|
||||
},
|
||||
"memory": {
|
||||
"_root": [
|
||||
{
|
||||
"name": "compact",
|
||||
"command": "/memory:compact",
|
||||
"description": "Compact current session memory into structured text for session recovery, extracting objective/plan/files/decisions/constraints/state, and save via MCP core_memory tool",
|
||||
"arguments": "[optional: session description]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/compact.md"
|
||||
},
|
||||
{
|
||||
"name": "docs-full-cli",
|
||||
"command": "/memory:docs-full-cli",
|
||||
"description": "Generate full project documentation using CLI execution (Layer 3→1) with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <20 modules uses direct parallel",
|
||||
"arguments": "[path] [--tool <gemini|qwen|codex>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/docs-full-cli.md"
|
||||
},
|
||||
{
|
||||
"name": "docs-related-cli",
|
||||
"command": "/memory:docs-related-cli",
|
||||
"description": "Generate/update documentation for git-changed modules using CLI execution with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <15 modules uses direct parallel",
|
||||
"arguments": "[--tool <gemini|qwen|codex>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/docs-related-cli.md"
|
||||
},
|
||||
{
|
||||
"name": "load",
|
||||
"command": "/memory:load",
|
||||
"description": "Delegate to universal-executor agent to analyze project via Gemini/Qwen CLI and return JSON core content package for task context",
|
||||
"arguments": "[--tool gemini|qwen] \\\"task context description\\",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/load.md"
|
||||
},
|
||||
{
|
||||
"name": "style-skill-memory",
|
||||
"command": "/memory:style-skill-memory",
|
||||
@@ -221,39 +155,6 @@
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/style-skill-memory.md"
|
||||
},
|
||||
{
|
||||
"name": "tips",
|
||||
"command": "/memory:tips",
|
||||
"description": "Quick note-taking command to capture ideas, snippets, reminders, and insights for later reference",
|
||||
"arguments": "<note content> [--tag <tag1,tag2>] [--context <context>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/tips.md"
|
||||
},
|
||||
{
|
||||
"name": "update-full",
|
||||
"command": "/memory:update-full",
|
||||
"description": "Update all CLAUDE.md files using layer-based execution (Layer 3→1) with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <20 modules uses direct parallel",
|
||||
"arguments": "[--tool gemini|qwen|codex] [--path <directory>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/update-full.md"
|
||||
},
|
||||
{
|
||||
"name": "update-related",
|
||||
"command": "/memory:update-related",
|
||||
"description": "Update CLAUDE.md for git-changed modules using batched agent execution (4 modules/agent) with gemini→qwen→codex fallback, <15 modules uses direct execution",
|
||||
"arguments": "[--tool gemini|qwen|codex]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/update-related.md"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -303,17 +204,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/debug-with-file.md"
|
||||
},
|
||||
{
|
||||
"name": "execute",
|
||||
"command": "/workflow:execute",
|
||||
"description": "Coordinate agent execution for workflow tasks with automatic session discovery, parallel task processing, and status tracking",
|
||||
"arguments": "[-y|--yes] [--resume-session=\\\"session-id\\\"]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/execute.md"
|
||||
},
|
||||
{
|
||||
"name": "init",
|
||||
"command": "/workflow:init",
|
||||
@@ -325,193 +215,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/init.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-execute",
|
||||
"command": "/workflow:lite-execute",
|
||||
"description": "Execute tasks based on in-memory plan, prompt description, or file content",
|
||||
"arguments": "[-y|--yes] [--in-memory] [\\\"task description\\\"|file-path]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-execute.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-fix",
|
||||
"command": "/workflow:lite-fix",
|
||||
"description": "Lightweight bug diagnosis and fix workflow with intelligent severity assessment and optional hotfix mode for production incidents",
|
||||
"arguments": "[-y|--yes] [--hotfix] \\\"bug description or issue reference\\",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:lite-lite-lite",
|
||||
"command": "/workflow:lite-lite-lite",
|
||||
"description": "Ultra-lightweight multi-tool analysis and direct execution. No artifacts for simple tasks; auto-creates planning docs in .workflow/.scratchpad/ for complex tasks. Auto tool selection based on task analysis, user-driven iteration via AskUser.",
|
||||
"arguments": "[-y|--yes] <task description>",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-lite-lite.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-plan",
|
||||
"command": "/workflow:lite-plan",
|
||||
"description": "Lightweight interactive planning workflow with in-memory planning, code exploration, and execution execute to lite-execute after user confirmation",
|
||||
"arguments": "[-y|--yes] [-e|--explore] \\\"task description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:multi-cli-plan",
|
||||
"command": "/workflow:multi-cli-plan",
|
||||
"description": "Multi-CLI collaborative planning workflow with ACE context gathering and iterative cross-verification. Uses cli-discuss-agent for Gemini+Codex+Claude analysis to converge on optimal execution plan.",
|
||||
"arguments": "[-y|--yes] <task description> [--max-rounds=3] [--tools=gemini,codex] [--mode=parallel|serial]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/multi-cli-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "plan-verify",
|
||||
"command": "/workflow:plan-verify",
|
||||
"description": "Perform READ-ONLY verification analysis between IMPL_PLAN.md, task JSONs, and brainstorming artifacts. Generates structured report with quality gate recommendation. Does NOT modify any files.",
|
||||
"arguments": "[optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan-verify.md"
|
||||
},
|
||||
{
|
||||
"name": "plan",
|
||||
"command": "/workflow:plan",
|
||||
"description": "5-phase planning workflow with action-planning-agent task generation, outputs IMPL_PLAN.md and task JSONs",
|
||||
"arguments": "[-y|--yes] \\\"text description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan.md"
|
||||
},
|
||||
{
|
||||
"name": "replan",
|
||||
"command": "/workflow:replan",
|
||||
"description": "Interactive workflow replanning with session-level artifact updates and boundary clarification through guided questioning",
|
||||
"arguments": "[-y|--yes] [--session session-id] [task-id] \\\"requirements\\\"|file.md [--interactive]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/replan.md"
|
||||
},
|
||||
{
|
||||
"name": "review-cycle-fix",
|
||||
"command": "/workflow:review-cycle-fix",
|
||||
"description": "Automated fixing of code review findings with AI-powered planning and coordinated execution. Uses intelligent grouping, multi-stage timeline coordination, and test-driven verification.",
|
||||
"arguments": "<export-file|review-dir> [--resume] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-cycle-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "review-module-cycle",
|
||||
"command": "/workflow:review-module-cycle",
|
||||
"description": "Independent multi-dimensional code review for specified modules/files. Analyzes specific code paths across 7 dimensions with hybrid parallel-iterative execution, independent of workflow sessions.",
|
||||
"arguments": "<path-pattern> [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-module-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "review-session-cycle",
|
||||
"command": "/workflow:review-session-cycle",
|
||||
"description": "Session-based comprehensive multi-dimensional code review. Analyzes git changes from workflow session across 7 dimensions with hybrid parallel-iterative execution, aggregates findings, and performs focused deep-dives on critical issues until quality gates met.",
|
||||
"arguments": "[session-id] [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "session-management",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-session-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "review",
|
||||
"command": "/workflow:review",
|
||||
"description": "Post-implementation review with specialized types (security/architecture/action-items/quality) using analysis agents and Gemini",
|
||||
"arguments": "[--type=security|architecture|action-items|quality] [--archived] [optional: session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-plan",
|
||||
"command": "/workflow:tdd-plan",
|
||||
"description": "TDD workflow planning with Red-Green-Refactor task chain generation, test-first development structure, and cycle tracking",
|
||||
"arguments": "\\\"feature description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tdd-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-verify",
|
||||
"command": "/workflow:tdd-verify",
|
||||
"description": "Verify TDD workflow compliance against Red-Green-Refactor cycles. Generates quality report with coverage analysis and quality gate recommendation. Orchestrates sub-commands for comprehensive validation.",
|
||||
"arguments": "[optional: --session WFS-session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tdd-verify.md"
|
||||
},
|
||||
{
|
||||
"name": "test-cycle-execute",
|
||||
"command": "/workflow:test-cycle-execute",
|
||||
"description": "Execute test-fix workflow with dynamic task generation and iterative fix cycles until test pass rate >= 95% or max iterations reached. Uses @cli-planning-agent for failure analysis and task generation.",
|
||||
"arguments": "[--resume-session=\\\"session-id\\\"] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-cycle-execute.md"
|
||||
},
|
||||
{
|
||||
"name": "test-fix-gen",
|
||||
"command": "/workflow:test-fix-gen",
|
||||
"description": "Create test-fix workflow session from session ID, description, or file path with test strategy generation and task planning",
|
||||
"arguments": "(source-session-id | \\\"feature description\\\" | /path/to/file.md)",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-fix-gen.md"
|
||||
},
|
||||
{
|
||||
"name": "test-gen",
|
||||
"command": "/workflow:test-gen",
|
||||
"description": "Create independent test-fix workflow session from completed implementation session, analyzes code to generate test tasks",
|
||||
"arguments": "source-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-gen.md"
|
||||
},
|
||||
{
|
||||
"name": "unified-execute-with-file",
|
||||
"command": "/workflow:unified-execute-with-file",
|
||||
@@ -524,52 +227,6 @@
|
||||
"source": "../../../commands/workflow/unified-execute-with-file.md"
|
||||
}
|
||||
],
|
||||
"brainstorm": [
|
||||
{
|
||||
"name": "artifacts",
|
||||
"command": "/workflow:brainstorm:artifacts",
|
||||
"description": "Interactive clarification generating confirmed guidance specification through role-based analysis and synthesis",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/artifacts.md"
|
||||
},
|
||||
{
|
||||
"name": "auto-parallel",
|
||||
"command": "/workflow:brainstorm:auto-parallel",
|
||||
"description": "Parallel brainstorming automation with dynamic role selection and concurrent execution across multiple perspectives",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/brainstorm/auto-parallel.md"
|
||||
},
|
||||
{
|
||||
"name": "role-analysis",
|
||||
"command": "/workflow:brainstorm:role-analysis",
|
||||
"description": "Unified role-specific analysis generation with interactive context gathering and incremental updates",
|
||||
"arguments": "[role-name] [--session session-id] [--update] [--include-questions] [--skip-questions]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/role-analysis.md"
|
||||
},
|
||||
{
|
||||
"name": "synthesis",
|
||||
"command": "/workflow:brainstorm:synthesis",
|
||||
"description": "Clarify and refine role analyses through intelligent Q&A and targeted updates with synthesis agent",
|
||||
"arguments": "[-y|--yes] [optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/brainstorm/synthesis.md"
|
||||
}
|
||||
],
|
||||
"session": [
|
||||
{
|
||||
"name": "complete",
|
||||
@@ -627,96 +284,6 @@
|
||||
"source": "../../../commands/workflow/session/start.md"
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "conflict-resolution",
|
||||
"command": "/workflow:tools:conflict-resolution",
|
||||
"description": "Detect and resolve conflicts between plan and existing codebase using CLI-powered analysis with Gemini/Qwen",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id --context path/to/context-package.json",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/conflict-resolution.md"
|
||||
},
|
||||
{
|
||||
"name": "gather",
|
||||
"command": "/workflow:tools:gather",
|
||||
"description": "Intelligently collect project context using context-search-agent based on task description, packages into standardized JSON",
|
||||
"arguments": "--session WFS-session-id \\\"task description\\",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/context-gather.md"
|
||||
},
|
||||
{
|
||||
"name": "task-generate-agent",
|
||||
"command": "/workflow:tools:task-generate-agent",
|
||||
"description": "Generate implementation plan documents (IMPL_PLAN.md, task JSONs, TODO_LIST.md) using action-planning-agent - produces planning artifacts, does NOT execute code implementation",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/task-generate-agent.md"
|
||||
},
|
||||
{
|
||||
"name": "task-generate-tdd",
|
||||
"command": "/workflow:tools:task-generate-tdd",
|
||||
"description": "Autonomous TDD task generation using action-planning-agent with Red-Green-Refactor cycles, test-first structure, and cycle validation",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/task-generate-tdd.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-coverage-analysis",
|
||||
"command": "/workflow:tools:tdd-coverage-analysis",
|
||||
"description": "Analyze test coverage and TDD cycle execution with Red-Green-Refactor compliance verification",
|
||||
"arguments": "--session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/tdd-coverage-analysis.md"
|
||||
},
|
||||
{
|
||||
"name": "test-concept-enhanced",
|
||||
"command": "/workflow:tools:test-concept-enhanced",
|
||||
"description": "Coordinate test analysis workflow using cli-execution-agent to generate test strategy via Gemini",
|
||||
"arguments": "--session WFS-test-session-id --context path/to/test-context-package.json",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-concept-enhanced.md"
|
||||
},
|
||||
{
|
||||
"name": "test-context-gather",
|
||||
"command": "/workflow:tools:test-context-gather",
|
||||
"description": "Collect test coverage context using test-context-search-agent and package into standardized test-context JSON",
|
||||
"arguments": "--session WFS-test-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-context-gather.md"
|
||||
},
|
||||
{
|
||||
"name": "test-task-generate",
|
||||
"command": "/workflow:tools:test-task-generate",
|
||||
"description": "Generate test planning documents (IMPL_PLAN.md, test task JSONs, TODO_LIST.md) using action-planning-agent - produces test planning artifacts, does NOT execute tests",
|
||||
"arguments": "--session WFS-test-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-task-generate.md"
|
||||
}
|
||||
],
|
||||
"ui-design": [
|
||||
{
|
||||
"name": "animation-extract",
|
||||
|
||||
@@ -11,17 +11,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw-coordinator.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw-debug",
|
||||
"command": "/ccw-debug",
|
||||
"description": "Aggregated debug command - combines debugging diagnostics and test verification in a synergistic workflow supporting cli-quick / debug-first / test-first / bidirectional-verification modes",
|
||||
"arguments": "[--mode cli|debug|test|bidirectional] [--yes|-y] [--hotfix] \\\"bug description or error message\\",
|
||||
"category": "general",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/ccw-debug.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw",
|
||||
"command": "/ccw",
|
||||
@@ -88,116 +77,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/issue/queue.md"
|
||||
},
|
||||
{
|
||||
"name": "compact",
|
||||
"command": "/memory:compact",
|
||||
"description": "Compact current session memory into structured text for session recovery, extracting objective/plan/files/decisions/constraints/state, and save via MCP core_memory tool",
|
||||
"arguments": "[optional: session description]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/compact.md"
|
||||
},
|
||||
{
|
||||
"name": "load",
|
||||
"command": "/memory:load",
|
||||
"description": "Delegate to universal-executor agent to analyze project via Gemini/Qwen CLI and return JSON core content package for task context",
|
||||
"arguments": "[--tool gemini|qwen] \\\"task context description\\",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/load.md"
|
||||
},
|
||||
{
|
||||
"name": "tips",
|
||||
"command": "/memory:tips",
|
||||
"description": "Quick note-taking command to capture ideas, snippets, reminders, and insights for later reference",
|
||||
"arguments": "<note content> [--tag <tag1,tag2>] [--context <context>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/tips.md"
|
||||
},
|
||||
{
|
||||
"name": "update-full",
|
||||
"command": "/memory:update-full",
|
||||
"description": "Update all CLAUDE.md files using layer-based execution (Layer 3→1) with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <20 modules uses direct parallel",
|
||||
"arguments": "[--tool gemini|qwen|codex] [--path <directory>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/update-full.md"
|
||||
},
|
||||
{
|
||||
"name": "update-related",
|
||||
"command": "/memory:update-related",
|
||||
"description": "Update CLAUDE.md for git-changed modules using batched agent execution (4 modules/agent) with gemini→qwen→codex fallback, <15 modules uses direct execution",
|
||||
"arguments": "[--tool gemini|qwen|codex]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/update-related.md"
|
||||
},
|
||||
{
|
||||
"name": "ccw view",
|
||||
"command": "/ccw view",
|
||||
"description": "Dashboard - Open CCW workflow dashboard for managing tasks and sessions",
|
||||
"arguments": "",
|
||||
"category": "general",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/view.md"
|
||||
},
|
||||
{
|
||||
"name": "artifacts",
|
||||
"command": "/workflow:brainstorm:artifacts",
|
||||
"description": "Interactive clarification generating confirmed guidance specification through role-based analysis and synthesis",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/artifacts.md"
|
||||
},
|
||||
{
|
||||
"name": "auto-parallel",
|
||||
"command": "/workflow:brainstorm:auto-parallel",
|
||||
"description": "Parallel brainstorming automation with dynamic role selection and concurrent execution across multiple perspectives",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/brainstorm/auto-parallel.md"
|
||||
},
|
||||
{
|
||||
"name": "role-analysis",
|
||||
"command": "/workflow:brainstorm:role-analysis",
|
||||
"description": "Unified role-specific analysis generation with interactive context gathering and incremental updates",
|
||||
"arguments": "[role-name] [--session session-id] [--update] [--include-questions] [--skip-questions]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/role-analysis.md"
|
||||
},
|
||||
{
|
||||
"name": "synthesis",
|
||||
"command": "/workflow:brainstorm:synthesis",
|
||||
"description": "Clarify and refine role analyses through intelligent Q&A and targeted updates with synthesis agent",
|
||||
"arguments": "[-y|--yes] [optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/brainstorm/synthesis.md"
|
||||
},
|
||||
{
|
||||
"name": "clean",
|
||||
"command": "/workflow:clean",
|
||||
@@ -231,28 +110,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/init.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-fix",
|
||||
"command": "/workflow:lite-fix",
|
||||
"description": "Lightweight bug diagnosis and fix workflow with intelligent severity assessment and optional hotfix mode for production incidents",
|
||||
"arguments": "[-y|--yes] [--hotfix] \\\"bug description or issue reference\\",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:lite-lite-lite",
|
||||
"command": "/workflow:lite-lite-lite",
|
||||
"description": "Ultra-lightweight multi-tool analysis and direct execution. No artifacts for simple tasks; auto-creates planning docs in .workflow/.scratchpad/ for complex tasks. Auto tool selection based on task analysis, user-driven iteration via AskUser.",
|
||||
"arguments": "[-y|--yes] <task description>",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-lite-lite.md"
|
||||
},
|
||||
{
|
||||
"name": "list",
|
||||
"command": "/workflow:session:list",
|
||||
@@ -286,28 +143,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/session/start.md"
|
||||
},
|
||||
{
|
||||
"name": "conflict-resolution",
|
||||
"command": "/workflow:tools:conflict-resolution",
|
||||
"description": "Detect and resolve conflicts between plan and existing codebase using CLI-powered analysis with Gemini/Qwen",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id --context path/to/context-package.json",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/conflict-resolution.md"
|
||||
},
|
||||
{
|
||||
"name": "gather",
|
||||
"command": "/workflow:tools:gather",
|
||||
"description": "Intelligently collect project context using context-search-agent based on task description, packages into standardized JSON",
|
||||
"arguments": "--session WFS-session-id \\\"task description\\",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/context-gather.md"
|
||||
},
|
||||
{
|
||||
"name": "animation-extract",
|
||||
"command": "/workflow:ui-design:animation-extract",
|
||||
@@ -386,39 +221,6 @@
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Beginner",
|
||||
"source": "../../../commands/workflow/analyze-with-file.md"
|
||||
},
|
||||
{
|
||||
"name": "review-cycle-fix",
|
||||
"command": "/workflow:review-cycle-fix",
|
||||
"description": "Automated fixing of code review findings with AI-powered planning and coordinated execution. Uses intelligent grouping, multi-stage timeline coordination, and test-driven verification.",
|
||||
"arguments": "<export-file|review-dir> [--resume] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-cycle-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "review-module-cycle",
|
||||
"command": "/workflow:review-module-cycle",
|
||||
"description": "Independent multi-dimensional code review for specified modules/files. Analyzes specific code paths across 7 dimensions with hybrid parallel-iterative execution, independent of workflow sessions.",
|
||||
"arguments": "<path-pattern> [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-module-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "review",
|
||||
"command": "/workflow:review",
|
||||
"description": "Post-implementation review with specialized types (security/architecture/action-items/quality) using analysis agents and Gemini",
|
||||
"arguments": "[--type=security|architecture|action-items|quality] [--archived] [optional: session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "analysis",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review.md"
|
||||
}
|
||||
],
|
||||
"planning": [
|
||||
@@ -466,72 +268,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm-with-file.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-plan",
|
||||
"command": "/workflow:lite-plan",
|
||||
"description": "Lightweight interactive planning workflow with in-memory planning, code exploration, and execution execute to lite-execute after user confirmation",
|
||||
"arguments": "[-y|--yes] [-e|--explore] \\\"task description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:multi-cli-plan",
|
||||
"command": "/workflow:multi-cli-plan",
|
||||
"description": "Multi-CLI collaborative planning workflow with ACE context gathering and iterative cross-verification. Uses cli-discuss-agent for Gemini+Codex+Claude analysis to converge on optimal execution plan.",
|
||||
"arguments": "[-y|--yes] <task description> [--max-rounds=3] [--tools=gemini,codex] [--mode=parallel|serial]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/multi-cli-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "plan-verify",
|
||||
"command": "/workflow:plan-verify",
|
||||
"description": "Perform READ-ONLY verification analysis between IMPL_PLAN.md, task JSONs, and brainstorming artifacts. Generates structured report with quality gate recommendation. Does NOT modify any files.",
|
||||
"arguments": "[optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan-verify.md"
|
||||
},
|
||||
{
|
||||
"name": "plan",
|
||||
"command": "/workflow:plan",
|
||||
"description": "5-phase planning workflow with action-planning-agent task generation, outputs IMPL_PLAN.md and task JSONs",
|
||||
"arguments": "[-y|--yes] \\\"text description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan.md"
|
||||
},
|
||||
{
|
||||
"name": "replan",
|
||||
"command": "/workflow:replan",
|
||||
"description": "Interactive workflow replanning with session-level artifact updates and boundary clarification through guided questioning",
|
||||
"arguments": "[-y|--yes] [--session session-id] [task-id] \\\"requirements\\\"|file.md [--interactive]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/replan.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-plan",
|
||||
"command": "/workflow:tdd-plan",
|
||||
"description": "TDD workflow planning with Red-Green-Refactor task chain generation, test-first development structure, and cycle tracking",
|
||||
"arguments": "\\\"feature description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tdd-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "workflow:ui-design:codify-style",
|
||||
"command": "/workflow:ui-design:codify-style",
|
||||
@@ -589,72 +325,6 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/issue/execute.md"
|
||||
},
|
||||
{
|
||||
"name": "execute",
|
||||
"command": "/workflow:execute",
|
||||
"description": "Coordinate agent execution for workflow tasks with automatic session discovery, parallel task processing, and status tracking",
|
||||
"arguments": "[-y|--yes] [--resume-session=\\\"session-id\\\"]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/execute.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-execute",
|
||||
"command": "/workflow:lite-execute",
|
||||
"description": "Execute tasks based on in-memory plan, prompt description, or file content",
|
||||
"arguments": "[-y|--yes] [--in-memory] [\\\"task description\\\"|file-path]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-execute.md"
|
||||
},
|
||||
{
|
||||
"name": "test-cycle-execute",
|
||||
"command": "/workflow:test-cycle-execute",
|
||||
"description": "Execute test-fix workflow with dynamic task generation and iterative fix cycles until test pass rate >= 95% or max iterations reached. Uses @cli-planning-agent for failure analysis and task generation.",
|
||||
"arguments": "[--resume-session=\\\"session-id\\\"] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-cycle-execute.md"
|
||||
},
|
||||
{
|
||||
"name": "task-generate-agent",
|
||||
"command": "/workflow:tools:task-generate-agent",
|
||||
"description": "Generate implementation plan documents (IMPL_PLAN.md, task JSONs, TODO_LIST.md) using action-planning-agent - produces planning artifacts, does NOT execute code implementation",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/task-generate-agent.md"
|
||||
},
|
||||
{
|
||||
"name": "task-generate-tdd",
|
||||
"command": "/workflow:tools:task-generate-tdd",
|
||||
"description": "Autonomous TDD task generation using action-planning-agent with Red-Green-Refactor cycles, test-first structure, and cycle validation",
|
||||
"arguments": "[-y|--yes] --session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/task-generate-tdd.md"
|
||||
},
|
||||
{
|
||||
"name": "test-task-generate",
|
||||
"command": "/workflow:tools:test-task-generate",
|
||||
"description": "Generate test planning documents (IMPL_PLAN.md, test task JSONs, TODO_LIST.md) using action-planning-agent - produces test planning artifacts, does NOT execute tests",
|
||||
"arguments": "--session WFS-test-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-task-generate.md"
|
||||
},
|
||||
{
|
||||
"name": "generate",
|
||||
"command": "/workflow:ui-design:generate",
|
||||
@@ -679,28 +349,6 @@
|
||||
}
|
||||
],
|
||||
"documentation": [
|
||||
{
|
||||
"name": "docs-full-cli",
|
||||
"command": "/memory:docs-full-cli",
|
||||
"description": "Generate full project documentation using CLI execution (Layer 3→1) with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <20 modules uses direct parallel",
|
||||
"arguments": "[path] [--tool <gemini|qwen|codex>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/docs-full-cli.md"
|
||||
},
|
||||
{
|
||||
"name": "docs-related-cli",
|
||||
"command": "/memory:docs-related-cli",
|
||||
"description": "Generate/update documentation for git-changed modules using CLI execution with batched agents (4 modules/agent) and gemini→qwen→codex fallback, <15 modules uses direct parallel",
|
||||
"arguments": "[--tool <gemini|qwen|codex>]",
|
||||
"category": "memory",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "documentation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/memory/docs-related-cli.md"
|
||||
},
|
||||
{
|
||||
"name": "style-skill-memory",
|
||||
"command": "/memory:style-skill-memory",
|
||||
@@ -714,17 +362,6 @@
|
||||
}
|
||||
],
|
||||
"session-management": [
|
||||
{
|
||||
"name": "review-session-cycle",
|
||||
"command": "/workflow:review-session-cycle",
|
||||
"description": "Session-based comprehensive multi-dimensional code review. Analyzes git changes from workflow session across 7 dimensions with hybrid parallel-iterative execution, aggregates findings, and performs focused deep-dives on critical issues until quality gates met.",
|
||||
"arguments": "[session-id] [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "session-management",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-session-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "complete",
|
||||
"command": "/workflow:session:complete",
|
||||
@@ -747,73 +384,5 @@
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/session/resume.md"
|
||||
}
|
||||
],
|
||||
"testing": [
|
||||
{
|
||||
"name": "tdd-verify",
|
||||
"command": "/workflow:tdd-verify",
|
||||
"description": "Verify TDD workflow compliance against Red-Green-Refactor cycles. Generates quality report with coverage analysis and quality gate recommendation. Orchestrates sub-commands for comprehensive validation.",
|
||||
"arguments": "[optional: --session WFS-session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tdd-verify.md"
|
||||
},
|
||||
{
|
||||
"name": "test-fix-gen",
|
||||
"command": "/workflow:test-fix-gen",
|
||||
"description": "Create test-fix workflow session from session ID, description, or file path with test strategy generation and task planning",
|
||||
"arguments": "(source-session-id | \\\"feature description\\\" | /path/to/file.md)",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-fix-gen.md"
|
||||
},
|
||||
{
|
||||
"name": "test-gen",
|
||||
"command": "/workflow:test-gen",
|
||||
"description": "Create independent test-fix workflow session from completed implementation session, analyzes code to generate test tasks",
|
||||
"arguments": "source-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/test-gen.md"
|
||||
},
|
||||
{
|
||||
"name": "tdd-coverage-analysis",
|
||||
"command": "/workflow:tools:tdd-coverage-analysis",
|
||||
"description": "Analyze test coverage and TDD cycle execution with Red-Green-Refactor compliance verification",
|
||||
"arguments": "--session WFS-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Advanced",
|
||||
"source": "../../../commands/workflow/tools/tdd-coverage-analysis.md"
|
||||
},
|
||||
{
|
||||
"name": "test-concept-enhanced",
|
||||
"command": "/workflow:tools:test-concept-enhanced",
|
||||
"description": "Coordinate test analysis workflow using cli-execution-agent to generate test strategy via Gemini",
|
||||
"arguments": "--session WFS-test-session-id --context path/to/test-context-package.json",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-concept-enhanced.md"
|
||||
},
|
||||
{
|
||||
"name": "test-context-gather",
|
||||
"command": "/workflow:tools:test-context-gather",
|
||||
"description": "Collect test coverage context using test-context-search-agent and package into standardized test-context JSON",
|
||||
"arguments": "--session WFS-test-session-id",
|
||||
"category": "workflow",
|
||||
"subcategory": "tools",
|
||||
"usage_scenario": "testing",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/tools/test-context-gather.md"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,160 +1,15 @@
|
||||
{
|
||||
"workflow:plan": {
|
||||
"calls_internally": [
|
||||
"workflow:session:start",
|
||||
"workflow:tools:context-gather",
|
||||
"workflow:tools:conflict-resolution",
|
||||
"workflow:tools:task-generate-agent"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:plan-verify",
|
||||
"workflow:status",
|
||||
"workflow:execute"
|
||||
],
|
||||
"alternatives": [
|
||||
"workflow:tdd-plan"
|
||||
],
|
||||
"prerequisites": []
|
||||
},
|
||||
"workflow:tdd-plan": {
|
||||
"calls_internally": [
|
||||
"workflow:session:start",
|
||||
"workflow:tools:context-gather",
|
||||
"workflow:tools:task-generate-tdd"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:tdd-verify",
|
||||
"workflow:status",
|
||||
"workflow:execute"
|
||||
],
|
||||
"alternatives": [
|
||||
"workflow:plan"
|
||||
],
|
||||
"prerequisites": []
|
||||
},
|
||||
"workflow:execute": {
|
||||
"prerequisites": [
|
||||
"workflow:plan",
|
||||
"workflow:tdd-plan"
|
||||
],
|
||||
"related": [
|
||||
"workflow:status",
|
||||
"workflow:resume"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:review",
|
||||
"workflow:tdd-verify"
|
||||
]
|
||||
},
|
||||
"workflow:plan-verify": {
|
||||
"prerequisites": [
|
||||
"workflow:plan"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:execute"
|
||||
],
|
||||
"related": [
|
||||
"workflow:status"
|
||||
]
|
||||
},
|
||||
"workflow:tdd-verify": {
|
||||
"prerequisites": [
|
||||
"workflow:execute"
|
||||
],
|
||||
"related": [
|
||||
"workflow:tools:tdd-coverage-analysis"
|
||||
]
|
||||
},
|
||||
"workflow:session:start": {
|
||||
"next_steps": [
|
||||
"workflow:plan",
|
||||
"workflow:execute"
|
||||
],
|
||||
"next_steps": [],
|
||||
"related": [
|
||||
"workflow:session:list",
|
||||
"workflow:session:resume"
|
||||
]
|
||||
},
|
||||
"workflow:session:resume": {
|
||||
"alternatives": [
|
||||
"workflow:resume"
|
||||
],
|
||||
"alternatives": [],
|
||||
"related": [
|
||||
"workflow:session:list",
|
||||
"workflow:status"
|
||||
]
|
||||
},
|
||||
"workflow:lite-plan": {
|
||||
"calls_internally": [
|
||||
"workflow:lite-execute"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:lite-execute",
|
||||
"workflow:status"
|
||||
],
|
||||
"alternatives": [
|
||||
"workflow:plan"
|
||||
],
|
||||
"prerequisites": []
|
||||
},
|
||||
"workflow:lite-fix": {
|
||||
"next_steps": [
|
||||
"workflow:lite-execute",
|
||||
"workflow:status"
|
||||
],
|
||||
"alternatives": [
|
||||
"workflow:lite-plan"
|
||||
],
|
||||
"related": [
|
||||
"workflow:test-cycle-execute"
|
||||
]
|
||||
},
|
||||
"workflow:lite-execute": {
|
||||
"prerequisites": [
|
||||
"workflow:lite-plan",
|
||||
"workflow:lite-fix"
|
||||
],
|
||||
"related": [
|
||||
"workflow:execute",
|
||||
"workflow:status"
|
||||
]
|
||||
},
|
||||
"workflow:review-session-cycle": {
|
||||
"prerequisites": [
|
||||
"workflow:execute"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:review-fix"
|
||||
],
|
||||
"related": [
|
||||
"workflow:review-module-cycle"
|
||||
]
|
||||
},
|
||||
"workflow:review-fix": {
|
||||
"prerequisites": [
|
||||
"workflow:review-module-cycle",
|
||||
"workflow:review-session-cycle"
|
||||
],
|
||||
"related": [
|
||||
"workflow:test-cycle-execute"
|
||||
]
|
||||
},
|
||||
"memory:docs": {
|
||||
"calls_internally": [
|
||||
"workflow:session:start",
|
||||
"workflow:tools:context-gather"
|
||||
],
|
||||
"next_steps": [
|
||||
"workflow:execute"
|
||||
]
|
||||
},
|
||||
"memory:skill-memory": {
|
||||
"next_steps": [
|
||||
"workflow:plan",
|
||||
"cli:analyze"
|
||||
],
|
||||
"related": [
|
||||
"memory:load-skill-memory"
|
||||
"workflow:session:list"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,48 +1,4 @@
|
||||
[
|
||||
{
|
||||
"name": "lite-plan",
|
||||
"command": "/workflow:lite-plan",
|
||||
"description": "Lightweight interactive planning workflow with in-memory planning, code exploration, and execution execute to lite-execute after user confirmation",
|
||||
"arguments": "[-y|--yes] [-e|--explore] \\\"task description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-plan.md"
|
||||
},
|
||||
{
|
||||
"name": "lite-fix",
|
||||
"command": "/workflow:lite-fix",
|
||||
"description": "Lightweight bug diagnosis and fix workflow with intelligent severity assessment and optional hotfix mode for production incidents",
|
||||
"arguments": "[-y|--yes] [--hotfix] \\\"bug description or issue reference\\",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/lite-fix.md"
|
||||
},
|
||||
{
|
||||
"name": "plan",
|
||||
"command": "/workflow:plan",
|
||||
"description": "5-phase planning workflow with action-planning-agent task generation, outputs IMPL_PLAN.md and task JSONs",
|
||||
"arguments": "[-y|--yes] \\\"text description\\\"|file.md",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan.md"
|
||||
},
|
||||
{
|
||||
"name": "execute",
|
||||
"command": "/workflow:execute",
|
||||
"description": "Coordinate agent execution for workflow tasks with automatic session discovery, parallel task processing, and status tracking",
|
||||
"arguments": "[-y|--yes] [--resume-session=\\\"session-id\\\"]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "implementation",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/execute.md"
|
||||
},
|
||||
{
|
||||
"name": "start",
|
||||
"command": "/workflow:session:start",
|
||||
@@ -53,38 +9,5 @@
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/session/start.md"
|
||||
},
|
||||
{
|
||||
"name": "review-session-cycle",
|
||||
"command": "/workflow:review-session-cycle",
|
||||
"description": "Session-based comprehensive multi-dimensional code review. Analyzes git changes from workflow session across 7 dimensions with hybrid parallel-iterative execution, aggregates findings, and performs focused deep-dives on critical issues until quality gates met.",
|
||||
"arguments": "[session-id] [--dimensions=security,architecture,...] [--max-iterations=N]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "session-management",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/review-session-cycle.md"
|
||||
},
|
||||
{
|
||||
"name": "artifacts",
|
||||
"command": "/workflow:brainstorm:artifacts",
|
||||
"description": "Interactive clarification generating confirmed guidance specification through role-based analysis and synthesis",
|
||||
"arguments": "[-y|--yes] topic or challenge description [--count N]",
|
||||
"category": "workflow",
|
||||
"subcategory": "brainstorm",
|
||||
"usage_scenario": "general",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/brainstorm/artifacts.md"
|
||||
},
|
||||
{
|
||||
"name": "plan-verify",
|
||||
"command": "/workflow:plan-verify",
|
||||
"description": "Perform READ-ONLY verification analysis between IMPL_PLAN.md, task JSONs, and brainstorming artifacts. Generates structured report with quality gate recommendation. Does NOT modify any files.",
|
||||
"arguments": "[optional: --session session-id]",
|
||||
"category": "workflow",
|
||||
"subcategory": null,
|
||||
"usage_scenario": "planning",
|
||||
"difficulty": "Intermediate",
|
||||
"source": "../../../commands/workflow/plan-verify.md"
|
||||
}
|
||||
]
|
||||
@@ -760,5 +760,5 @@ After completing a module review, use the generated findings JSON for automated
|
||||
/workflow:review-cycle-fix .workflow/active/WFS-{session-id}/.review/
|
||||
```
|
||||
|
||||
See `/workflow:review-cycle-fix` for automated fixing with smart grouping, parallel execution, and test verification.
|
||||
See `review-cycle` skill (fix phase) for automated fixing with smart grouping, parallel execution, and test verification.
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ Session-based multi-dimensional code review orchestrator with **hybrid parallel-
|
||||
|
||||
**Review Scope**:
|
||||
- **Session-based**: Reviews only files changed during the workflow session (via `git log --since="${sessionCreatedAt}"`)
|
||||
- **For independent module review**: Use `/workflow:review-module-cycle` command instead
|
||||
- **For independent module review**: Use `review-cycle` skill command instead
|
||||
|
||||
**vs Standard Review**:
|
||||
- **Standard**: Sequential manual reviews → Inconsistent coverage → Missed cross-cutting concerns
|
||||
@@ -771,5 +771,5 @@ After completing a review, use the generated findings JSON for automated fixing:
|
||||
/workflow:review-cycle-fix .workflow/active/WFS-{session-id}/.review/
|
||||
```
|
||||
|
||||
See `/workflow:review-cycle-fix` for automated fixing with smart grouping, parallel execution, and test verification.
|
||||
See `review-cycle` skill (fix phase) for automated fixing with smart grouping, parallel execution, and test verification.
|
||||
|
||||
|
||||
@@ -613,11 +613,11 @@ meta.agent missing → Infer from meta.type:
|
||||
## Related Skills
|
||||
|
||||
**Prerequisite Skills**:
|
||||
- `/workflow:plan` - Generate implementation plan and task JSONs
|
||||
- `workflow-plan` skill - Generate implementation plan and task JSONs
|
||||
|
||||
**Called During Execution**:
|
||||
- `/workflow:session:complete` - Archive session after all tasks complete
|
||||
- `/workflow:review` - Post-implementation review
|
||||
- `review-cycle` skill - Post-implementation review
|
||||
|
||||
**Follow-up Skills**:
|
||||
- `/issue:new` - Create follow-up issues (test/enhance/refactor/doc)
|
||||
|
||||
@@ -411,18 +411,18 @@ CONSTRAINTS: [Limitations or boundaries]
|
||||
## Related Skills
|
||||
|
||||
**Prerequisite Skills**:
|
||||
- `/workflow:brainstorm:artifacts` - Optional: Generate role-based analyses before planning
|
||||
- `/workflow:brainstorm:synthesis` - Optional: Refine brainstorm analyses with clarifications
|
||||
- `brainstorm` skill - Optional: Generate role-based analyses before planning
|
||||
- `brainstorm` skill - Optional: Refine brainstorm analyses with clarifications
|
||||
|
||||
**Called by Plan Mode** (4 phases):
|
||||
- `/workflow:session:start` - Phase 1: Create or discover workflow session
|
||||
- `phases/02-context-gathering.md` - Phase 2: Gather project context and analyze codebase (inline)
|
||||
- `phases/03-conflict-resolution.md` - Phase 3: Detect and resolve conflicts (inline, conditional)
|
||||
- `/compact` - Phase 3: Memory optimization (if context approaching limits)
|
||||
- `memory-capture` skill - Phase 3: Memory optimization (if context approaching limits)
|
||||
- `phases/04-task-generation.md` - Phase 4: Generate task JSON files (inline)
|
||||
|
||||
**Follow-up Skills**:
|
||||
- `/workflow:plan-verify` - Verify plan quality (can also invoke via verify mode)
|
||||
- `workflow-plan` skill (plan-verify phase) - Verify plan quality (can also invoke via verify mode)
|
||||
- Display session status inline - Review task breakdown and current progress
|
||||
- `Skill(skill="workflow-execute")` - Begin implementation of generated tasks (skill: workflow-execute)
|
||||
- `/workflow:replan` - Modify plan (can also invoke via replan mode)
|
||||
- `workflow-plan` skill (replan phase) - Modify plan (can also invoke via replan mode)
|
||||
|
||||
@@ -406,7 +406,7 @@ Evaluate current context window usage and memory state:
|
||||
- If memory usage is high (>120K tokens or approaching context limits):
|
||||
|
||||
```javascript
|
||||
Skill(skill="compact")
|
||||
Skill(skill="memory-capture")
|
||||
```
|
||||
|
||||
- Memory compaction is particularly important after analysis phase which may generate extensive documentation
|
||||
|
||||
@@ -11,7 +11,7 @@ Perform READ-ONLY verification analysis between IMPL_PLAN.md, task JSONs, and br
|
||||
## Entry Points
|
||||
|
||||
- **From Plan Mode**: After Phase 4 completes, user selects "Verify Plan Quality"
|
||||
- **From Verify Mode**: Directly triggered via `/workflow:plan-verify`
|
||||
- **From Verify Mode**: Directly triggered via `workflow-plan` skill (plan-verify phase)
|
||||
|
||||
## User Input
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ Read("phases/02-lite-execute.md")
|
||||
// Execute with executionContext (Mode 1)
|
||||
|
||||
// WRONG: Skill routing (unnecessary round-trip)
|
||||
Skill(skill="workflow:lite-execute", args="--in-memory")
|
||||
Skill(skill="workflow-lite-plan", args="--in-memory")
|
||||
```
|
||||
|
||||
### Pattern 8: Phase File Hygiene
|
||||
|
||||
@@ -60,7 +60,7 @@ Read("phases/02-lite-execute.md")
|
||||
// Execute with executionContext (Mode 1)
|
||||
|
||||
// WRONG: Skill routing (unnecessary round-trip)
|
||||
Skill(skill="workflow:lite-execute", args="--in-memory")
|
||||
Skill(skill="workflow-lite-plan", args="--in-memory")
|
||||
```
|
||||
|
||||
### Content Restriction Enforcement
|
||||
|
||||
@@ -388,7 +388,7 @@ Phase 7: Session discovery → Chain validation → Coverage analysis → Report
|
||||
After heavy phases (Phase 2-3), evaluate context window usage:
|
||||
- If memory usage is high (>110K tokens or approaching context limits):
|
||||
```javascript
|
||||
Skill(skill="compact")
|
||||
Skill(skill="memory-capture")
|
||||
```
|
||||
- Memory compaction is particularly important after analysis phases
|
||||
|
||||
@@ -432,7 +432,7 @@ Similar to workflow-plan, a `planning-notes.md` can accumulate context across ph
|
||||
**All warnings are advisory** - they do not halt execution:
|
||||
1. Warnings logged to `.process/tdd-warnings.log`
|
||||
2. Summary displayed in Phase 6 output
|
||||
3. User decides whether to address before `/workflow:execute`
|
||||
3. User decides whether to address before `workflow-execute` skill
|
||||
|
||||
## Coordinator Checklist
|
||||
|
||||
@@ -476,14 +476,14 @@ Similar to workflow-plan, a `planning-notes.md` can accumulate context across ph
|
||||
- `phases/02-context-gathering.md` - Phase 2: Gather project context and analyze codebase (inline)
|
||||
- `phases/03-test-coverage-analysis.md` - Phase 3: Analyze existing test patterns and coverage (inline)
|
||||
- `phases/04-conflict-resolution.md` - Phase 4: Detect and resolve conflicts (inline, conditional)
|
||||
- `/compact` - Phase 4: Memory optimization (if context approaching limits)
|
||||
- `memory-capture` skill - Phase 4: Memory optimization (if context approaching limits)
|
||||
- `phases/05-tdd-task-generation.md` - Phase 5: Generate TDD tasks with Red-Green-Refactor cycles (inline)
|
||||
|
||||
**Called by Verify Mode**:
|
||||
- `phases/07-tdd-verify.md` - Phase 7: Test coverage and cycle analysis (inline)
|
||||
|
||||
**Follow-up Skills**:
|
||||
- `/workflow:tdd-verify` - Verify TDD compliance (can also invoke via verify mode)
|
||||
- `/workflow:plan-verify` - Verify plan quality and dependencies
|
||||
- `workflow-tdd` skill (tdd-verify phase) - Verify TDD compliance (can also invoke via verify mode)
|
||||
- `workflow-plan` skill (plan-verify phase) - Verify plan quality and dependencies
|
||||
- Display session status inline - Review TDD task breakdown
|
||||
- `Skill(skill="workflow-execute")` - Begin TDD implementation
|
||||
|
||||
@@ -410,7 +410,7 @@ Evaluate current context window usage and memory state:
|
||||
- If memory usage is high (>110K tokens or approaching context limits):
|
||||
|
||||
```javascript
|
||||
Skill(skill="compact")
|
||||
Skill(skill="memory-capture")
|
||||
```
|
||||
|
||||
- Memory compaction is particularly important after analysis phase which may generate extensive documentation
|
||||
|
||||
@@ -628,8 +628,8 @@ Next: Review full report for detailed findings
|
||||
|
||||
| Situation | Recommended Command | Purpose |
|
||||
|-----------|---------------------|---------|
|
||||
| APPROVED | `/workflow:execute` | Start TDD implementation |
|
||||
| PROCEED_WITH_CAVEATS | `/workflow:execute` | Start with noted caveats |
|
||||
| APPROVED | `workflow-execute` skill | Start TDD implementation |
|
||||
| PROCEED_WITH_CAVEATS | `workflow-execute` skill | Start with noted caveats |
|
||||
| REQUIRE_FIXES | Review report, refine tasks | Address issues before proceed |
|
||||
| BLOCK_MERGE | `/workflow:replan` | Significant restructuring needed |
|
||||
| After implementation | Re-run `/workflow:tdd-verify` | Verify post-execution compliance |
|
||||
| BLOCK_MERGE | `workflow-plan` skill (replan phase) | Significant restructuring needed |
|
||||
| After implementation | Re-run `workflow-tdd` skill (tdd-verify phase) | Verify post-execution compliance |
|
||||
|
||||
@@ -161,7 +161,7 @@ Phase 5: Test Cycle Execution (test-cycle-execute)
|
||||
6. **Task Attachment Model**: Sub-tasks **attached** during phase, **collapsed** after completion
|
||||
7. **DO NOT STOP**: Continuous workflow until quality gate met or max iterations reached
|
||||
8. **Progressive Loading**: Read phase doc ONLY when that phase is about to execute
|
||||
9. **Entry Point Routing**: `/workflow:test-fix-gen` → Phase 1-5; `/workflow:test-cycle-execute` → Phase 5 only
|
||||
9. **Entry Point Routing**: `workflow-test-fix` skill → Phase 1-5; `workflow-test-fix` skill → Phase 5 only
|
||||
|
||||
## Input Processing
|
||||
|
||||
@@ -434,10 +434,10 @@ After completion, ask user if they want to expand into issues (test/enhance/refa
|
||||
## Related Skills
|
||||
|
||||
**Prerequisite Skills**:
|
||||
- `/workflow:plan` or `/workflow:execute` - Complete implementation (Session Mode source)
|
||||
- `workflow-plan` skill or `workflow-execute` skill - Complete implementation (Session Mode source)
|
||||
- None for Prompt Mode
|
||||
|
||||
**Follow-up Skills**:
|
||||
- Display session status inline - Review workflow state
|
||||
- `/workflow:review-session-cycle` - Post-implementation review
|
||||
- `review-cycle` skill - Post-implementation review
|
||||
- `/issue:new` - Create follow-up issues
|
||||
|
||||
@@ -46,7 +46,6 @@ import {
|
||||
import { useIssues, useIssueQueue } from '@/hooks/useIssues';
|
||||
import { useTerminalGridStore, selectTerminalGridFocusedPaneId } from '@/stores/terminalGridStore';
|
||||
import { useWorkflowStore, selectProjectPath } from '@/stores/workflowStore';
|
||||
import { sendCliSessionText } from '@/lib/api';
|
||||
import { CliConfigModal, type CliSessionConfig } from './CliConfigModal';
|
||||
|
||||
// ========== Types ==========
|
||||
@@ -84,14 +83,6 @@ type LaunchMode = 'default' | 'yolo';
|
||||
const CLI_TOOLS = ['claude', 'gemini', 'qwen', 'codex', 'opencode'] as const;
|
||||
type CliTool = (typeof CLI_TOOLS)[number];
|
||||
|
||||
const LAUNCH_COMMANDS: Record<CliTool, Record<LaunchMode, string>> = {
|
||||
claude: { default: 'claude', yolo: 'claude --permission-mode bypassPermissions' },
|
||||
gemini: { default: 'gemini', yolo: 'gemini --approval-mode yolo' },
|
||||
qwen: { default: 'qwen', yolo: 'qwen --approval-mode yolo' },
|
||||
codex: { default: 'codex', yolo: 'codex --full-auto' },
|
||||
opencode: { default: 'opencode', yolo: 'opencode' },
|
||||
};
|
||||
|
||||
// ========== Component ==========
|
||||
|
||||
export function DashboardToolbar({ activePanel, onTogglePanel, isFileSidebarOpen, onToggleFileSidebar, isSessionSidebarOpen, onToggleSessionSidebar, isFullscreen, onToggleFullscreen }: DashboardToolbarProps) {
|
||||
@@ -151,22 +142,12 @@ export function DashboardToolbar({ activePanel, onTogglePanel, isFileSidebarOpen
|
||||
const targetPaneId = getOrCreateFocusedPane();
|
||||
if (!targetPaneId) return;
|
||||
|
||||
const created = await createSessionAndAssign(targetPaneId, {
|
||||
await createSessionAndAssign(targetPaneId, {
|
||||
workingDir: projectPath,
|
||||
preferredShell: 'bash',
|
||||
tool: selectedTool,
|
||||
launchMode,
|
||||
}, projectPath);
|
||||
|
||||
if (created?.session?.sessionKey) {
|
||||
const command = LAUNCH_COMMANDS[selectedTool]?.[launchMode] ?? selectedTool;
|
||||
setTimeout(() => {
|
||||
sendCliSessionText(
|
||||
created.session.sessionKey,
|
||||
{ text: command, appendNewline: true },
|
||||
projectPath
|
||||
).catch((err) => console.error('[DashboardToolbar] auto-launch failed:', err));
|
||||
}, 300);
|
||||
}
|
||||
} finally {
|
||||
setIsCreating(false);
|
||||
}
|
||||
@@ -190,22 +171,12 @@ export function DashboardToolbar({ activePanel, onTogglePanel, isFileSidebarOpen
|
||||
preferredShell: config.preferredShell,
|
||||
tool: config.tool,
|
||||
model: config.model,
|
||||
launchMode: config.launchMode,
|
||||
},
|
||||
projectPath
|
||||
);
|
||||
|
||||
if (!created?.session?.sessionKey) throw new Error('createSessionAndAssign failed');
|
||||
|
||||
const tool = config.tool as CliTool;
|
||||
const mode = config.launchMode as LaunchMode;
|
||||
const command = LAUNCH_COMMANDS[tool]?.[mode] ?? tool;
|
||||
setTimeout(() => {
|
||||
sendCliSessionText(
|
||||
created.session.sessionKey,
|
||||
{ text: command, appendNewline: true },
|
||||
projectPath
|
||||
).catch((err) => console.error('[DashboardToolbar] auto-launch failed:', err));
|
||||
}, 300);
|
||||
} finally {
|
||||
setIsCreating(false);
|
||||
}
|
||||
|
||||
@@ -6336,6 +6336,8 @@ export interface CliSession {
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
isPaused: boolean;
|
||||
/** When set, this session is a native CLI interactive process. */
|
||||
cliTool?: string;
|
||||
}
|
||||
|
||||
export interface CreateCliSessionInput {
|
||||
@@ -6346,6 +6348,8 @@ export interface CreateCliSessionInput {
|
||||
tool?: string;
|
||||
model?: string;
|
||||
resumeKey?: string;
|
||||
/** Launch mode for native CLI sessions (default or yolo). */
|
||||
launchMode?: 'default' | 'yolo';
|
||||
}
|
||||
|
||||
function withPath(url: string, projectPath?: string): string {
|
||||
@@ -6397,6 +6401,8 @@ export interface ExecuteInCliSessionInput {
|
||||
category?: 'user' | 'internal' | 'insight';
|
||||
resumeKey?: string;
|
||||
resumeStrategy?: 'nativeResume' | 'promptConcat';
|
||||
instructionType?: 'prompt' | 'skill' | 'command';
|
||||
skillName?: string;
|
||||
}
|
||||
|
||||
export async function executeInCliSession(
|
||||
|
||||
@@ -159,6 +159,8 @@ export async function dispatch(
|
||||
category: options.category,
|
||||
resumeKey: options.resumeKey ?? step.resumeKey,
|
||||
resumeStrategy: options.resumeStrategy,
|
||||
instructionType: step.instructionType,
|
||||
skillName: step.skillName,
|
||||
};
|
||||
|
||||
// Step 3: Execute in the resolved session
|
||||
|
||||
@@ -104,13 +104,25 @@ export class OrchestrationPlanBuilder {
|
||||
if (nodeData.slashCommand) {
|
||||
executionType = 'slash-command';
|
||||
} else if (nodeData.tool && nodeData.mode) {
|
||||
// More sophisticated logic might be needed here to differentiate backend-flow
|
||||
// For now, if tool/mode are present, assume frontend-cli or backend-flow
|
||||
// depending on whether it's a direct CLI call or a backend orchestrator call.
|
||||
// Assuming CLI tools are frontend-cli for now unless specified otherwise.
|
||||
executionType = 'frontend-cli';
|
||||
}
|
||||
|
||||
// Resolve instructionType and skillName
|
||||
// Priority: explicit instructionType > slashCommand backward compat > default prompt
|
||||
let instructionType = nodeData.instructionType;
|
||||
let skillName = nodeData.skillName;
|
||||
if (!instructionType) {
|
||||
if (skillName) {
|
||||
instructionType = 'skill';
|
||||
} else if (nodeData.slashCommand) {
|
||||
// Backward compat: map slashCommand to skill type
|
||||
instructionType = 'skill';
|
||||
skillName = nodeData.slashCommand;
|
||||
} else {
|
||||
instructionType = 'prompt';
|
||||
}
|
||||
}
|
||||
|
||||
steps.push({
|
||||
id: node.id,
|
||||
name: nodeData.label || `Step ${node.id}`,
|
||||
@@ -128,6 +140,8 @@ export class OrchestrationPlanBuilder {
|
||||
errorHandling: undefined,
|
||||
executionType: executionType,
|
||||
sourceNodeId: node.id,
|
||||
instructionType,
|
||||
skillName,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1126,6 +1126,49 @@ function PromptTemplateProperties({ data, onChange }: PromptTemplatePropertiesPr
|
||||
{/* CLI Session Routing (tmux-like) */}
|
||||
{!isSlashCommandMode && (
|
||||
<>
|
||||
{/* Instruction Type for native CLI sessions */}
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
Instruction Type
|
||||
</label>
|
||||
<select
|
||||
value={data.instructionType || 'prompt'}
|
||||
onChange={(e) => {
|
||||
const next = e.target.value as 'prompt' | 'skill' | 'command';
|
||||
const updates: Partial<PromptTemplateNodeData> = { instructionType: next };
|
||||
if (next !== 'skill') {
|
||||
updates.skillName = undefined;
|
||||
}
|
||||
onChange(updates);
|
||||
}}
|
||||
className="w-full h-10 px-3 rounded-md border border-border bg-background text-foreground text-sm"
|
||||
>
|
||||
<option value="prompt">Prompt (direct text)</option>
|
||||
<option value="skill">Skill (CLI-specific prefix)</option>
|
||||
<option value="command">Command (CLI native)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{/* Skill Name - shown when instructionType is 'skill' */}
|
||||
{(data.instructionType === 'skill') && (
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
Skill Name
|
||||
{data.tool && (
|
||||
<span className="ml-2 text-xs text-muted-foreground font-normal">
|
||||
{data.tool === 'claude' ? 'prefix: /' : data.tool === 'codex' ? 'prefix: $' : 'no prefix'}
|
||||
</span>
|
||||
)}
|
||||
</label>
|
||||
<Input
|
||||
value={data.skillName || ''}
|
||||
onChange={(e) => onChange({ skillName: e.target.value || undefined })}
|
||||
placeholder={data.tool === 'claude' ? 'e.g. review-code' : data.tool === 'codex' ? 'e.g. fix' : 'skill name'}
|
||||
className="font-mono text-sm"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-foreground mb-1">
|
||||
{formatMessage({ id: 'orchestrator.propertyPanel.delivery' })}
|
||||
|
||||
@@ -24,7 +24,7 @@ export type ExecutionStatus = 'pending' | 'running' | 'completed' | 'failed';
|
||||
/**
|
||||
* Available CLI tools for execution
|
||||
*/
|
||||
export type CliTool = 'gemini' | 'qwen' | 'codex' | 'claude';
|
||||
export type CliTool = 'gemini' | 'qwen' | 'codex' | 'claude' | 'opencode';
|
||||
|
||||
/**
|
||||
* Execution modes for prompt templates
|
||||
@@ -117,6 +117,20 @@ export interface PromptTemplateNodeData {
|
||||
*/
|
||||
contextRefs?: string[];
|
||||
|
||||
/**
|
||||
* Instruction type for CLI session execution.
|
||||
* - prompt: raw text sent as conversation input
|
||||
* - skill: CLI-specific skill invocation (Claude: /name, Codex: $name)
|
||||
* - command: CLI native command
|
||||
*/
|
||||
instructionType?: 'prompt' | 'skill' | 'command';
|
||||
|
||||
/**
|
||||
* Skill name for instructionType='skill'.
|
||||
* The actual prefix (/ or $) is determined by the target CLI tool.
|
||||
*/
|
||||
skillName?: string;
|
||||
|
||||
/**
|
||||
* Selected slash command name (e.g., "workflow:plan", "review-code")
|
||||
* When set, overrides instruction during execution.
|
||||
|
||||
@@ -145,6 +145,20 @@ export interface OrchestrationStep {
|
||||
*/
|
||||
executionType: ExecutionType;
|
||||
|
||||
/**
|
||||
* Instruction type for native CLI session execution.
|
||||
* - prompt: raw text conversation input
|
||||
* - skill: CLI-specific skill invocation (prefix determined by CLI tool)
|
||||
* - command: CLI native command
|
||||
*/
|
||||
instructionType?: 'prompt' | 'skill' | 'command';
|
||||
|
||||
/**
|
||||
* Skill name for instructionType='skill'.
|
||||
* The actual prefix (/ or $) is assembled by the backend InstructionAssembler.
|
||||
*/
|
||||
skillName?: string;
|
||||
|
||||
/**
|
||||
* For flow-based plans, the ID of the source FlowNode.
|
||||
*/
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
import type { RouteContext } from './types.js';
|
||||
import { getCliSessionManager } from '../services/cli-session-manager.js';
|
||||
import type { InstructionType } from '../services/cli-instruction-assembler.js';
|
||||
import path from 'path';
|
||||
import { getCliSessionPolicy } from '../services/cli-session-policy.js';
|
||||
import { RateLimiter } from '../services/rate-limiter.js';
|
||||
@@ -91,7 +92,8 @@ export async function handleCliSessionsRoutes(ctx: RouteContext): Promise<boolea
|
||||
preferredShell,
|
||||
tool,
|
||||
model,
|
||||
resumeKey
|
||||
resumeKey,
|
||||
launchMode
|
||||
} = (body || {}) as any;
|
||||
|
||||
if (tool && typeof tool === 'string') {
|
||||
@@ -115,7 +117,8 @@ export async function handleCliSessionsRoutes(ctx: RouteContext): Promise<boolea
|
||||
preferredShell: preferredShell === 'pwsh' ? 'pwsh' : 'bash',
|
||||
tool: typeof tool === 'string' ? tool.trim() : undefined,
|
||||
model,
|
||||
resumeKey
|
||||
resumeKey,
|
||||
launchMode: launchMode === 'yolo' ? 'yolo' : 'default',
|
||||
});
|
||||
|
||||
appendCliSessionAudit({
|
||||
@@ -353,7 +356,9 @@ export async function handleCliSessionsRoutes(ctx: RouteContext): Promise<boolea
|
||||
workingDir,
|
||||
category,
|
||||
resumeKey,
|
||||
resumeStrategy
|
||||
resumeStrategy,
|
||||
instructionType,
|
||||
skillName
|
||||
} = (body || {}) as any;
|
||||
|
||||
if (!tool || typeof tool !== 'string') {
|
||||
@@ -380,7 +385,9 @@ export async function handleCliSessionsRoutes(ctx: RouteContext): Promise<boolea
|
||||
workingDir,
|
||||
category,
|
||||
resumeKey,
|
||||
resumeStrategy: resumeStrategy === 'promptConcat' ? 'promptConcat' : 'nativeResume'
|
||||
resumeStrategy: resumeStrategy === 'promptConcat' ? 'promptConcat' : 'nativeResume',
|
||||
instructionType: typeof instructionType === 'string' ? instructionType as InstructionType : undefined,
|
||||
skillName: typeof skillName === 'string' ? skillName : undefined,
|
||||
});
|
||||
|
||||
appendCliSessionAudit({
|
||||
|
||||
37
ccw/src/core/services/cli-instruction-assembler.ts
Normal file
37
ccw/src/core/services/cli-instruction-assembler.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
// ========================================
|
||||
// CLI Instruction Assembler
|
||||
// ========================================
|
||||
// Assembles the final sendText string based on CLI type and instruction type.
|
||||
|
||||
export type InstructionType = 'prompt' | 'skill' | 'command';
|
||||
|
||||
/**
|
||||
* Assemble the text to send to a CLI interactive session.
|
||||
*
|
||||
* - prompt → raw content text
|
||||
* - skill → CLI-specific skill prefix (claude: /, codex: $, others: fallback to prompt)
|
||||
* - command → raw content text (CLI native command)
|
||||
*/
|
||||
export function assembleInstruction(
|
||||
cliTool: string,
|
||||
instructionType: InstructionType,
|
||||
content: string,
|
||||
skillName?: string,
|
||||
): string {
|
||||
if (instructionType === 'prompt' || instructionType === 'command') {
|
||||
return content;
|
||||
}
|
||||
|
||||
// instructionType === 'skill'
|
||||
const name = skillName ?? '';
|
||||
|
||||
switch (cliTool) {
|
||||
case 'claude':
|
||||
return `/${name} ${content}`;
|
||||
case 'codex':
|
||||
return `$${name} ${content}`;
|
||||
default:
|
||||
// Other CLIs don't support skill syntax — fallback to plain prompt
|
||||
return content;
|
||||
}
|
||||
}
|
||||
53
ccw/src/core/services/cli-launch-registry.ts
Normal file
53
ccw/src/core/services/cli-launch-registry.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
// ========================================
|
||||
// CLI Launch Registry
|
||||
// ========================================
|
||||
// Defines interactive-mode launch parameters for each CLI tool.
|
||||
// Supports 'default' and 'yolo' launch modes.
|
||||
|
||||
export type CliTool = 'claude' | 'gemini' | 'qwen' | 'codex' | 'opencode';
|
||||
|
||||
export type LaunchMode = 'default' | 'yolo';
|
||||
|
||||
export interface CliLaunchConfig {
|
||||
command: string;
|
||||
args: string[];
|
||||
env?: Record<string, string>;
|
||||
}
|
||||
|
||||
function parseCommand(raw: string): CliLaunchConfig {
|
||||
const parts = raw.split(/\s+/);
|
||||
return { command: parts[0], args: parts.slice(1) };
|
||||
}
|
||||
|
||||
const LAUNCH_CONFIGS: Record<CliTool, Record<LaunchMode, CliLaunchConfig>> = {
|
||||
claude: {
|
||||
default: parseCommand('claude'),
|
||||
yolo: parseCommand('claude --permission-mode bypassPermissions'),
|
||||
},
|
||||
gemini: {
|
||||
default: parseCommand('gemini'),
|
||||
yolo: parseCommand('gemini --approval-mode yolo'),
|
||||
},
|
||||
qwen: {
|
||||
default: parseCommand('qwen'),
|
||||
yolo: parseCommand('qwen --approval-mode yolo'),
|
||||
},
|
||||
codex: {
|
||||
default: parseCommand('codex'),
|
||||
yolo: parseCommand('codex --full-auto'),
|
||||
},
|
||||
opencode: {
|
||||
default: parseCommand('opencode'),
|
||||
yolo: parseCommand('opencode'),
|
||||
},
|
||||
};
|
||||
|
||||
const KNOWN_TOOLS = new Set<string>(Object.keys(LAUNCH_CONFIGS));
|
||||
|
||||
export function getLaunchConfig(tool: string, launchMode: LaunchMode): CliLaunchConfig {
|
||||
if (KNOWN_TOOLS.has(tool)) {
|
||||
return LAUNCH_CONFIGS[tool as CliTool][launchMode];
|
||||
}
|
||||
// Unknown tool: treat the tool name itself as the command
|
||||
return { command: tool, args: [] };
|
||||
}
|
||||
@@ -13,6 +13,8 @@ import {
|
||||
} from './cli-session-command-builder.js';
|
||||
import { getCliSessionPolicy } from './cli-session-policy.js';
|
||||
import { appendCliSessionAudit } from './cli-session-audit.js';
|
||||
import { getLaunchConfig } from './cli-launch-registry.js';
|
||||
import { assembleInstruction, type InstructionType } from './cli-instruction-assembler.js';
|
||||
|
||||
export interface CliSession {
|
||||
sessionKey: string;
|
||||
@@ -24,6 +26,8 @@ export interface CliSession {
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
isPaused: boolean;
|
||||
/** When set, this session is a native CLI interactive process (not a shell). */
|
||||
cliTool?: string;
|
||||
}
|
||||
|
||||
export interface CreateCliSessionOptions {
|
||||
@@ -34,6 +38,8 @@ export interface CreateCliSessionOptions {
|
||||
tool?: string;
|
||||
model?: string;
|
||||
resumeKey?: string;
|
||||
/** Launch mode for native CLI sessions. */
|
||||
launchMode?: 'default' | 'yolo';
|
||||
}
|
||||
|
||||
export interface ExecuteInCliSessionOptions {
|
||||
@@ -45,6 +51,10 @@ export interface ExecuteInCliSessionOptions {
|
||||
category?: 'user' | 'internal' | 'insight';
|
||||
resumeKey?: string;
|
||||
resumeStrategy?: CliSessionResumeStrategy;
|
||||
/** Instruction type for native CLI sessions. */
|
||||
instructionType?: InstructionType;
|
||||
/** Skill name for instructionType='skill'. */
|
||||
skillName?: string;
|
||||
}
|
||||
|
||||
export interface CliSessionOutputEvent {
|
||||
@@ -202,12 +212,31 @@ export class CliSessionManager {
|
||||
|
||||
createSession(options: CreateCliSessionOptions): CliSession {
|
||||
const workingDir = normalizeWorkingDir(options.workingDir);
|
||||
const preferredShell = options.preferredShell ?? 'bash';
|
||||
const { shellKind, file, args } = pickShell(preferredShell);
|
||||
|
||||
const sessionKey = createSessionKey();
|
||||
const createdAt = nowIso();
|
||||
|
||||
let shellKind: CliSessionShellKind;
|
||||
let file: string;
|
||||
let args: string[];
|
||||
let cliTool: string | undefined;
|
||||
|
||||
if (options.tool) {
|
||||
// Native CLI interactive session: spawn the CLI process directly
|
||||
const launchMode = options.launchMode ?? 'default';
|
||||
const config = getLaunchConfig(options.tool, launchMode);
|
||||
shellKind = 'git-bash'; // PTY shell kind label (not actually a shell)
|
||||
file = config.command;
|
||||
args = config.args;
|
||||
cliTool = options.tool;
|
||||
} else {
|
||||
// Legacy shell session: spawn bash/pwsh
|
||||
const preferredShell = options.preferredShell ?? 'bash';
|
||||
const picked = pickShell(preferredShell);
|
||||
shellKind = picked.shellKind;
|
||||
file = picked.file;
|
||||
args = picked.args;
|
||||
}
|
||||
|
||||
const pty = nodePty.spawn(file, args, {
|
||||
name: 'xterm-256color',
|
||||
cols: options.cols ?? 120,
|
||||
@@ -230,6 +259,7 @@ export class CliSessionManager {
|
||||
bufferBytes: 0,
|
||||
lastActivityAt: Date.now(),
|
||||
isPaused: false,
|
||||
cliTool,
|
||||
};
|
||||
|
||||
pty.onData((data) => {
|
||||
@@ -272,7 +302,8 @@ export class CliSessionManager {
|
||||
this.sessions.set(sessionKey, session);
|
||||
|
||||
// WSL often ignores Windows cwd; best-effort cd to mounted path.
|
||||
if (shellKind === 'wsl-bash') {
|
||||
// Only for legacy shell sessions, not native CLI sessions.
|
||||
if (!cliTool && shellKind === 'wsl-bash') {
|
||||
const wslCwd = toWslPath(workingDir.replace(/\\/g, '/'));
|
||||
this.sendText(sessionKey, `cd ${wslCwd}`, true);
|
||||
}
|
||||
@@ -388,27 +419,37 @@ export class CliSessionManager {
|
||||
? `${resumeKey}-${Date.now()}`
|
||||
: `exec-${Date.now()}-${randomBytes(3).toString('hex')}`;
|
||||
|
||||
const { command } = buildCliSessionExecuteCommand({
|
||||
projectRoot: this.projectRoot,
|
||||
shellKind: session.shellKind,
|
||||
tool: options.tool,
|
||||
prompt: options.prompt,
|
||||
mode: options.mode,
|
||||
model: options.model,
|
||||
workingDir: options.workingDir ?? session.workingDir,
|
||||
category: options.category,
|
||||
resumeStrategy: options.resumeStrategy,
|
||||
prevExecutionId,
|
||||
executionId
|
||||
});
|
||||
let command: string;
|
||||
|
||||
if (session.cliTool) {
|
||||
// Native CLI session: assemble instruction and sendText directly
|
||||
const instructionType = options.instructionType ?? 'prompt';
|
||||
command = assembleInstruction(session.cliTool, instructionType, options.prompt, options.skillName);
|
||||
this.sendText(sessionKey, command, true);
|
||||
} else {
|
||||
// Legacy shell session: build ccw cli pipe command
|
||||
const result = buildCliSessionExecuteCommand({
|
||||
projectRoot: this.projectRoot,
|
||||
shellKind: session.shellKind,
|
||||
tool: options.tool,
|
||||
prompt: options.prompt,
|
||||
mode: options.mode,
|
||||
model: options.model,
|
||||
workingDir: options.workingDir ?? session.workingDir,
|
||||
category: options.category,
|
||||
resumeStrategy: options.resumeStrategy,
|
||||
prevExecutionId,
|
||||
executionId
|
||||
});
|
||||
command = result.command;
|
||||
this.sendText(sessionKey, command, true);
|
||||
}
|
||||
|
||||
// Best-effort: preemptively update mapping so subsequent queue items can chain.
|
||||
if (resumeMapKey) {
|
||||
this.resumeKeyLastExecution.set(resumeMapKey, executionId);
|
||||
}
|
||||
|
||||
this.sendText(sessionKey, command, true);
|
||||
|
||||
broadcastToClients({
|
||||
type: 'CLI_SESSION_EXECUTE',
|
||||
payload: { sessionKey, executionId, command, timestamp: nowIso() }
|
||||
|
||||
@@ -21,6 +21,7 @@ import { broadcastToClients } from '../websocket.js';
|
||||
import { executeCliTool } from '../../tools/cli-executor-core.js';
|
||||
import { cliSessionMux } from './cli-session-mux.js';
|
||||
import { appendCliSessionAudit } from './cli-session-audit.js';
|
||||
import { assembleInstruction, type InstructionType } from './cli-instruction-assembler.js';
|
||||
import type {
|
||||
Flow,
|
||||
FlowNode,
|
||||
@@ -264,12 +265,30 @@ export class NodeRunner {
|
||||
error: `Target session not found: ${targetSessionKey}`
|
||||
};
|
||||
}
|
||||
|
||||
// Resolve instructionType and skillName for native CLI sessions
|
||||
let instructionType = data.instructionType;
|
||||
let skillName = data.skillName;
|
||||
if (!instructionType) {
|
||||
if (skillName) {
|
||||
instructionType = 'skill';
|
||||
} else if (data.slashCommand) {
|
||||
// Backward compat: map slashCommand to skill
|
||||
instructionType = 'skill';
|
||||
skillName = data.slashCommand;
|
||||
} else {
|
||||
instructionType = 'prompt';
|
||||
}
|
||||
}
|
||||
|
||||
const routed = manager.execute(targetSessionKey, {
|
||||
tool,
|
||||
prompt: instruction,
|
||||
mode,
|
||||
resumeKey: data.resumeKey,
|
||||
resumeStrategy: data.resumeStrategy === 'promptConcat' ? 'promptConcat' : 'nativeResume'
|
||||
resumeStrategy: data.resumeStrategy === 'promptConcat' ? 'promptConcat' : 'nativeResume',
|
||||
instructionType: instructionType as InstructionType,
|
||||
skillName,
|
||||
});
|
||||
|
||||
// Best-effort: record audit event so Observability panel includes orchestrator-routed executions.
|
||||
|
||||
Reference in New Issue
Block a user