mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-03 15:43:11 +08:00
refactor(workflow-lite-planex): update skill name and improve documentation consistency
This commit is contained in:
@@ -282,6 +282,10 @@ const taskJsons = taskFiles.map(f => {
|
|||||||
const content = Read(f)
|
const content = Read(f)
|
||||||
const json = JSON.parse(content)
|
const json = JSON.parse(content)
|
||||||
json._filePath = f
|
json._filePath = f
|
||||||
|
// Fallback: derive id from filename if missing
|
||||||
|
if (!json.id) {
|
||||||
|
json.id = f.split('/').pop().replace('.json', '')
|
||||||
|
}
|
||||||
return json
|
return json
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -860,7 +864,7 @@ let todoMd = Read(`${sessionFolder}/TODO_LIST.md`)
|
|||||||
for (const task of finalTasks) {
|
for (const task of finalTasks) {
|
||||||
if (task.status === 'completed') {
|
if (task.status === 'completed') {
|
||||||
// Ensure marked as [x] in TODO_LIST.md
|
// Ensure marked as [x] in TODO_LIST.md
|
||||||
const uncheckedPattern = new RegExp(`^(- \\[ \\] ${task.id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}:.*)$`, 'm')
|
const uncheckedPattern = new RegExp(`^(- \\[ \\] ${task.id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(:.*)?)$`, 'm')
|
||||||
todoMd = todoMd.replace(uncheckedPattern, (match, line) => line.replace('- [ ]', '- [x]'))
|
todoMd = todoMd.replace(uncheckedPattern, (match, line) => line.replace('- [ ]', '- [x]'))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: wave-plan-pipeline
|
name: workflow-lite-planex
|
||||||
description: Explore-first wave pipeline. Decomposes requirement into exploration angles, runs wave exploration via spawn_agents_on_csv, synthesizes findings into execution tasks with cross-phase context linking (E*→T*), then wave-executes via spawn_agents_on_csv.
|
description: Explore-first wave pipeline. Decomposes requirement into exploration angles, runs wave exploration via spawn_agents_on_csv, synthesizes findings into execution tasks with cross-phase context linking (E*→T*), then wave-executes via spawn_agents_on_csv.
|
||||||
argument-hint: "[-y|--yes] [-c|--concurrency N] [--continue] \"requirement description\""
|
argument-hint: "[-y|--yes] [-c|--concurrency N] [--continue] \"requirement description\""
|
||||||
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
||||||
@@ -9,15 +9,15 @@ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUser
|
|||||||
|
|
||||||
When `--yes` or `-y`: Auto-confirm decomposition, skip interactive validation, use defaults.
|
When `--yes` or `-y`: Auto-confirm decomposition, skip interactive validation, use defaults.
|
||||||
|
|
||||||
# Wave Plan Pipeline
|
# Workflow Lite Planex
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$wave-plan-pipeline "Implement user authentication with OAuth, JWT, and 2FA"
|
$workflow-lite-planex "Implement user authentication with OAuth, JWT, and 2FA"
|
||||||
$wave-plan-pipeline -c 4 "Refactor payment module with Stripe and PayPal"
|
$workflow-lite-planex -c 4 "Refactor payment module with Stripe and PayPal"
|
||||||
$wave-plan-pipeline -y "Build notification system with email and SMS"
|
$workflow-lite-planex -y "Build notification system with email and SMS"
|
||||||
$wave-plan-pipeline --continue "auth-20260228"
|
$workflow-lite-planex --continue "auth-20260228"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Flags**:
|
**Flags**:
|
||||||
@@ -25,7 +25,7 @@ $wave-plan-pipeline --continue "auth-20260228"
|
|||||||
- `-c, --concurrency N`: Max concurrent agents within each wave (default: 4)
|
- `-c, --concurrency N`: Max concurrent agents within each wave (default: 4)
|
||||||
- `--continue`: Resume existing session
|
- `--continue`: Resume existing session
|
||||||
|
|
||||||
**Output Directory**: `.workflow/.wave-plan/{session-id}/`
|
**Output Directory**: `.workflow/.lite-plan/{session-id}/`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ Explore-first wave-based pipeline using `spawn_agents_on_csv`. Two-stage CSV exe
|
|||||||
|
|
||||||
```
|
```
|
||||||
┌──────────────────────────────────────────────────────────────────────┐
|
┌──────────────────────────────────────────────────────────────────────┐
|
||||||
│ WAVE PLAN PIPELINE │
|
│ WORKFLOW LITE PLANEX │
|
||||||
├──────────────────────────────────────────────────────────────────────┤
|
├──────────────────────────────────────────────────────────────────────┤
|
||||||
│ │
|
│ │
|
||||||
│ Phase 1: Requirement → explore.csv │
|
│ Phase 1: Requirement → explore.csv │
|
||||||
@@ -191,7 +191,7 @@ The `prev_context` column is built from `context_from` by looking up completed r
|
|||||||
## Session Structure
|
## Session Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
.workflow/.wave-plan/{session-id}/
|
.workflow/.lite-plan/{session-id}/
|
||||||
├── explore.csv # Exploration state
|
├── explore.csv # Exploration state
|
||||||
├── tasks.csv # Execution state
|
├── tasks.csv # Execution state
|
||||||
├── results.csv # Final results export
|
├── results.csv # Final results export
|
||||||
@@ -225,14 +225,14 @@ const slug = requirement.toLowerCase()
|
|||||||
.substring(0, 40)
|
.substring(0, 40)
|
||||||
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
||||||
const sessionId = `wpp-${slug}-${dateStr}`
|
const sessionId = `wpp-${slug}-${dateStr}`
|
||||||
const sessionFolder = `.workflow/.wave-plan/${sessionId}`
|
const sessionFolder = `.workflow/.lite-plan/${sessionId}`
|
||||||
|
|
||||||
// Continue mode: find existing session
|
// Continue mode: find existing session
|
||||||
if (continueMode) {
|
if (continueMode) {
|
||||||
const existing = Bash(`ls -t .workflow/.wave-plan/ 2>/dev/null | head -1`).trim()
|
const existing = Bash(`ls -t .workflow/.lite-plan/ 2>/dev/null | head -1`).trim()
|
||||||
if (existing) {
|
if (existing) {
|
||||||
sessionId = existing
|
sessionId = existing
|
||||||
sessionFolder = `.workflow/.wave-plan/${sessionId}`
|
sessionFolder = `.workflow/.lite-plan/${sessionId}`
|
||||||
// Check which phase to resume: if tasks.csv exists → Phase 4, else → Phase 2
|
// Check which phase to resume: if tasks.csv exists → Phase 4, else → Phase 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,7 +304,7 @@ REQUIREMENT: ${requirement}" --tool gemini --mode analysis --rule planning-break
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (answer.Validation === "Modify") {
|
if (answer.Validation === "Modify") {
|
||||||
console.log(`Edit: ${sessionFolder}/explore.csv\nResume: $wave-plan-pipeline --continue`)
|
console.log(`Edit: ${sessionFolder}/explore.csv\nResume: $workflow-lite-planex --continue`)
|
||||||
return
|
return
|
||||||
} else if (answer.Validation === "Cancel") {
|
} else if (answer.Validation === "Cancel") {
|
||||||
return
|
return
|
||||||
@@ -599,7 +599,7 @@ ${wt.map(t => ` - [${t.id}] ${t.title} (scope: ${t.scope}, from: ${t.context_fr
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (answer.Confirm === "Modify") {
|
if (answer.Confirm === "Modify") {
|
||||||
console.log(`Edit: ${sessionFolder}/tasks.csv\nResume: $wave-plan-pipeline --continue`)
|
console.log(`Edit: ${sessionFolder}/tasks.csv\nResume: $workflow-lite-planex --continue`)
|
||||||
return
|
return
|
||||||
} else if (answer.Confirm === "Cancel") {
|
} else if (answer.Confirm === "Cancel") {
|
||||||
return
|
return
|
||||||
@@ -897,7 +897,7 @@ Otherwise set status to "failed" with details in error field.
|
|||||||
const failed = finalTasks.filter(t => t.status === 'failed')
|
const failed = finalTasks.filter(t => t.status === 'failed')
|
||||||
const skipped = finalTasks.filter(t => t.status === 'skipped')
|
const skipped = finalTasks.filter(t => t.status === 'skipped')
|
||||||
|
|
||||||
const contextContent = `# Wave Plan Execution Report
|
const contextContent = `# Lite Planex Execution Report
|
||||||
|
|
||||||
**Session**: ${sessionId}
|
**Session**: ${sessionId}
|
||||||
**Requirement**: ${requirement}
|
**Requirement**: ${requirement}
|
||||||
@@ -969,7 +969,7 @@ ${[...new Set(finalTasks.flatMap(t => (t.files_modified || '').split(';')).filte
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
console.log(`
|
console.log(`
|
||||||
## Wave Plan Complete
|
## Lite Planex Complete
|
||||||
|
|
||||||
- **Session**: ${sessionId}
|
- **Session**: ${sessionId}
|
||||||
- **Explore**: ${exploreCSV.filter(r => r.status === 'completed').length}/${exploreCSV.length} angles
|
- **Explore**: ${exploreCSV.filter(r => r.status === 'completed').length}/${exploreCSV.length} angles
|
||||||
@@ -1134,8 +1134,8 @@ All agents across all phases share `discoveries.ndjson`. This eliminates redunda
|
|||||||
|
|
||||||
| Scenario | Recommended Approach |
|
| Scenario | Recommended Approach |
|
||||||
|----------|---------------------|
|
|----------|---------------------|
|
||||||
| Complex feature (unclear architecture) | `$wave-plan-pipeline` — explore first, then plan |
|
| Complex feature (unclear architecture) | `$workflow-lite-planex` — explore first, then plan |
|
||||||
| Simple known-pattern task | `$csv-wave-pipeline` — skip exploration, direct execution |
|
| Simple known-pattern task | `$workflow-lite-planex` — skip exploration, direct execution |
|
||||||
| Independent parallel tasks | `$csv-wave-pipeline -c 8` — single wave, max parallelism |
|
| Independent parallel tasks | `$workflow-lite-planex -c 8` — single wave, max parallelism |
|
||||||
| Diamond dependency (A→B,C→D) | `$wave-plan-pipeline` — 3 waves with context propagation |
|
| Diamond dependency (A→B,C→D) | `$workflow-lite-planex` — 3 waves with context propagation |
|
||||||
| Unknown codebase | `$wave-plan-pipeline` — exploration phase is essential |
|
| Unknown codebase | `$workflow-lite-planex` — exploration phase is essential |
|
||||||
|
|||||||
Reference in New Issue
Block a user