@howlil/ez-agents 3.4.1 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +84 -20
- package/agents/ez-observer-agent.md +260 -0
- package/agents/ez-release-agent.md +333 -0
- package/agents/ez-requirements-agent.md +377 -0
- package/agents/ez-scrum-master-agent.md +242 -0
- package/agents/ez-tech-lead-agent.md +267 -0
- package/bin/install.js +3221 -3230
- package/commands/ez/arch-review.md +102 -0
- package/commands/ez/execute-phase.md +11 -0
- package/commands/ez/export-session.md +79 -0
- package/commands/ez/gather-requirements.md +117 -0
- package/commands/ez/git-workflow.md +72 -0
- package/commands/ez/hotfix.md +120 -0
- package/commands/ez/import-session.md +82 -0
- package/commands/ez/join-discord.md +18 -18
- package/commands/ez/list-sessions.md +96 -0
- package/commands/ez/package-manager.md +316 -0
- package/commands/ez/plan-phase.md +9 -1
- package/commands/ez/preflight.md +79 -0
- package/commands/ez/progress.md +13 -1
- package/commands/ez/release.md +153 -0
- package/commands/ez/resume.md +107 -0
- package/commands/ez/standup.md +85 -0
- package/ez-agents/bin/ez-tools.cjs +1095 -716
- package/ez-agents/bin/lib/assistant-adapter.cjs +264 -264
- package/ez-agents/bin/lib/audit-exec.cjs +7 -2
- package/ez-agents/bin/lib/bdd-validator.cjs +622 -0
- package/ez-agents/bin/lib/circuit-breaker.cjs +118 -118
- package/ez-agents/bin/lib/config.cjs +190 -190
- package/ez-agents/bin/lib/content-scanner.cjs +238 -0
- package/ez-agents/bin/lib/context-cache.cjs +154 -0
- package/ez-agents/bin/lib/context-errors.cjs +71 -0
- package/ez-agents/bin/lib/context-manager.cjs +220 -0
- package/ez-agents/bin/lib/discussion-synthesizer.cjs +458 -0
- package/ez-agents/bin/lib/file-access.cjs +207 -0
- package/ez-agents/bin/lib/file-lock.cjs +236 -236
- package/ez-agents/bin/lib/frontmatter.cjs +299 -299
- package/ez-agents/bin/lib/fs-utils.cjs +153 -153
- package/ez-agents/bin/lib/git-errors.cjs +83 -0
- package/ez-agents/bin/lib/git-utils.cjs +118 -0
- package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -0
- package/ez-agents/bin/lib/index.cjs +157 -113
- package/ez-agents/bin/lib/init.cjs +757 -757
- package/ez-agents/bin/lib/lockfile-validator.cjs +227 -0
- package/ez-agents/bin/lib/logger.cjs +124 -124
- package/ez-agents/bin/lib/memory-compression.cjs +256 -0
- package/ez-agents/bin/lib/metrics-tracker.cjs +406 -0
- package/ez-agents/bin/lib/milestone.cjs +241 -241
- package/ez-agents/bin/lib/model-provider.cjs +241 -241
- package/ez-agents/bin/lib/package-manager-detector.cjs +203 -0
- package/ez-agents/bin/lib/package-manager-executor.cjs +385 -0
- package/ez-agents/bin/lib/package-manager-service.cjs +216 -0
- package/ez-agents/bin/lib/phase.cjs +925 -925
- package/ez-agents/bin/lib/planning-write.cjs +107 -107
- package/ez-agents/bin/lib/release-validator.cjs +614 -0
- package/ez-agents/bin/lib/retry.cjs +119 -119
- package/ez-agents/bin/lib/roadmap.cjs +306 -306
- package/ez-agents/bin/lib/safe-exec.cjs +128 -128
- package/ez-agents/bin/lib/safe-path.cjs +130 -130
- package/ez-agents/bin/lib/session-chain.cjs +304 -0
- package/ez-agents/bin/lib/session-errors.cjs +81 -0
- package/ez-agents/bin/lib/session-export.cjs +251 -0
- package/ez-agents/bin/lib/session-import.cjs +262 -0
- package/ez-agents/bin/lib/session-manager.cjs +280 -0
- package/ez-agents/bin/lib/state.cjs +736 -736
- package/ez-agents/bin/lib/temp-file.cjs +239 -239
- package/ez-agents/bin/lib/template.cjs +223 -223
- package/ez-agents/bin/lib/test-file-lock.cjs +112 -112
- package/ez-agents/bin/lib/test-graceful.cjs +93 -93
- package/ez-agents/bin/lib/test-logger.cjs +60 -60
- package/ez-agents/bin/lib/test-safe-exec.cjs +38 -38
- package/ez-agents/bin/lib/test-safe-path.cjs +33 -33
- package/ez-agents/bin/lib/test-temp-file.cjs +125 -125
- package/ez-agents/bin/lib/tier-manager.cjs +428 -0
- package/ez-agents/bin/lib/timeout-exec.cjs +63 -63
- package/ez-agents/bin/lib/url-fetch.cjs +170 -0
- package/ez-agents/bin/lib/verify.cjs +15 -1
- package/ez-agents/references/checkpoints.md +776 -776
- package/ez-agents/references/continuation-format.md +249 -249
- package/ez-agents/references/metrics-schema.md +118 -0
- package/ez-agents/references/planning-config.md +140 -0
- package/ez-agents/references/questioning.md +162 -162
- package/ez-agents/references/tdd.md +263 -263
- package/ez-agents/references/tier-strategy.md +103 -0
- package/ez-agents/templates/bdd-feature.md +173 -0
- package/ez-agents/templates/codebase/concerns.md +310 -310
- package/ez-agents/templates/codebase/conventions.md +307 -307
- package/ez-agents/templates/codebase/integrations.md +280 -280
- package/ez-agents/templates/codebase/stack.md +186 -186
- package/ez-agents/templates/codebase/testing.md +480 -480
- package/ez-agents/templates/config.json +37 -37
- package/ez-agents/templates/continue-here.md +78 -78
- package/ez-agents/templates/discussion.md +68 -0
- package/ez-agents/templates/incident-runbook.md +205 -0
- package/ez-agents/templates/milestone-archive.md +123 -123
- package/ez-agents/templates/milestone.md +115 -115
- package/ez-agents/templates/release-checklist.md +133 -0
- package/ez-agents/templates/requirements.md +231 -231
- package/ez-agents/templates/research-project/ARCHITECTURE.md +204 -204
- package/ez-agents/templates/research-project/FEATURES.md +147 -147
- package/ez-agents/templates/research-project/PITFALLS.md +200 -200
- package/ez-agents/templates/research-project/STACK.md +120 -120
- package/ez-agents/templates/research-project/SUMMARY.md +170 -170
- package/ez-agents/templates/retrospective.md +54 -54
- package/ez-agents/templates/roadmap.md +202 -202
- package/ez-agents/templates/rollback-plan.md +201 -0
- package/ez-agents/templates/summary-minimal.md +41 -41
- package/ez-agents/templates/summary-standard.md +48 -48
- package/ez-agents/templates/summary.md +248 -248
- package/ez-agents/templates/user-setup.md +311 -311
- package/ez-agents/templates/verification-report.md +322 -322
- package/ez-agents/workflows/add-phase.md +112 -112
- package/ez-agents/workflows/add-tests.md +351 -351
- package/ez-agents/workflows/add-todo.md +158 -158
- package/ez-agents/workflows/arch-review.md +54 -0
- package/ez-agents/workflows/audit-milestone.md +332 -332
- package/ez-agents/workflows/autonomous.md +131 -30
- package/ez-agents/workflows/check-todos.md +177 -177
- package/ez-agents/workflows/cleanup.md +152 -152
- package/ez-agents/workflows/complete-milestone.md +766 -766
- package/ez-agents/workflows/diagnose-issues.md +219 -219
- package/ez-agents/workflows/discovery-phase.md +289 -289
- package/ez-agents/workflows/discuss-phase.md +762 -762
- package/ez-agents/workflows/execute-phase.md +513 -468
- package/ez-agents/workflows/execute-plan.md +483 -483
- package/ez-agents/workflows/export-session.md +255 -0
- package/ez-agents/workflows/gather-requirements.md +206 -0
- package/ez-agents/workflows/health.md +159 -159
- package/ez-agents/workflows/help.md +584 -492
- package/ez-agents/workflows/hotfix.md +291 -0
- package/ez-agents/workflows/import-session.md +303 -0
- package/ez-agents/workflows/insert-phase.md +130 -130
- package/ez-agents/workflows/list-phase-assumptions.md +178 -178
- package/ez-agents/workflows/map-codebase.md +316 -316
- package/ez-agents/workflows/new-milestone.md +339 -10
- package/ez-agents/workflows/new-project.md +293 -299
- package/ez-agents/workflows/node-repair.md +92 -92
- package/ez-agents/workflows/pause-work.md +122 -122
- package/ez-agents/workflows/plan-milestone-gaps.md +274 -274
- package/ez-agents/workflows/plan-phase.md +673 -651
- package/ez-agents/workflows/progress.md +372 -382
- package/ez-agents/workflows/quick.md +610 -610
- package/ez-agents/workflows/release.md +253 -0
- package/ez-agents/workflows/remove-phase.md +155 -155
- package/ez-agents/workflows/research-phase.md +74 -74
- package/ez-agents/workflows/resume-project.md +307 -307
- package/ez-agents/workflows/resume-session.md +215 -0
- package/ez-agents/workflows/set-profile.md +81 -81
- package/ez-agents/workflows/settings.md +242 -242
- package/ez-agents/workflows/standup.md +64 -0
- package/ez-agents/workflows/stats.md +57 -57
- package/ez-agents/workflows/transition.md +544 -544
- package/ez-agents/workflows/ui-phase.md +290 -290
- package/ez-agents/workflows/ui-review.md +157 -157
- package/ez-agents/workflows/update.md +320 -320
- package/ez-agents/workflows/validate-phase.md +167 -167
- package/ez-agents/workflows/verify-phase.md +243 -243
- package/ez-agents/workflows/verify-work.md +584 -584
- package/package.json +10 -4
- package/scripts/build-hooks.js +43 -43
- package/scripts/run-tests.cjs +29 -29
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<purpose>
|
|
2
2
|
|
|
3
|
-
Drive all remaining milestone phases autonomously. For each incomplete phase: discuss → plan → execute using Skill() flat invocations. Pauses only for explicit user decisions (grey area acceptance, blockers, validation requests). Re-reads ROADMAP.md after each phase to catch dynamically inserted phases.
|
|
3
|
+
Drive all remaining milestone phases autonomously. For each incomplete phase: discuss → plan → execute **ALL tasks in loop** using Skill() flat invocations. Pauses only for explicit user decisions (grey area acceptance, blockers, validation requests). Re-reads ROADMAP.md after each phase to catch dynamically inserted phases.
|
|
4
|
+
|
|
5
|
+
**Key:** Execute-phase loops through ALL task plans within a phase, not just the phase as a whole.
|
|
4
6
|
|
|
5
7
|
</purpose>
|
|
6
8
|
|
|
@@ -86,12 +88,12 @@ Exit cleanly.
|
|
|
86
88
|
```
|
|
87
89
|
## Phase Plan
|
|
88
90
|
|
|
89
|
-
| # | Phase | Status |
|
|
90
|
-
|
|
91
|
-
| 5 | Skill Scaffolding & Phase Discovery | In Progress |
|
|
92
|
-
| 6 | Smart Discuss | Not Started |
|
|
93
|
-
| 7 | Auto-Chain Refinements | Not Started |
|
|
94
|
-
| 8 | Lifecycle Orchestration | Not Started |
|
|
91
|
+
| # | Phase | Status | Tasks |
|
|
92
|
+
|---|-------|--------|-------|
|
|
93
|
+
| 5 | Skill Scaffolding & Phase Discovery | In Progress | [count] |
|
|
94
|
+
| 6 | Smart Discuss | Not Started | [count] |
|
|
95
|
+
| 7 | Auto-Chain Refinements | Not Started | [count] |
|
|
96
|
+
| 8 | Lifecycle Orchestration | Not Started | [count] |
|
|
95
97
|
```
|
|
96
98
|
|
|
97
99
|
**Fetch details for each phase:**
|
|
@@ -100,13 +102,13 @@ Exit cleanly.
|
|
|
100
102
|
DETAIL=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase ${PHASE_NUM})
|
|
101
103
|
```
|
|
102
104
|
|
|
103
|
-
Extract `phase_name`, `goal`, `success_criteria` from each. Store for use in execute_phase and transition messages.
|
|
105
|
+
Extract `phase_name`, `goal`, `success_criteria`, `task_count` from each. Store for use in execute_phase and transition messages.
|
|
104
106
|
|
|
105
107
|
</step>
|
|
106
108
|
|
|
107
109
|
<step name="execute_phase">
|
|
108
110
|
|
|
109
|
-
## 3. Execute Phase
|
|
111
|
+
## 3. Execute Phase (with Task Loop)
|
|
110
112
|
|
|
111
113
|
For the current phase, display the progress banner:
|
|
112
114
|
|
|
@@ -114,9 +116,11 @@ For the current phase, display the progress banner:
|
|
|
114
116
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
115
117
|
EZ ► AUTONOMOUS ▸ Phase {N}/{T}: {Name} [████░░░░] {P}%
|
|
116
118
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
119
|
+
|
|
120
|
+
Phase {N} has {task_count} tasks to execute
|
|
117
121
|
```
|
|
118
122
|
|
|
119
|
-
Where N = current phase number (from the ROADMAP, e.g., 6), T = total milestone phases (from `phase_count` parsed in initialize step, e.g., 8), P = percentage of all milestone phases completed so far.
|
|
123
|
+
Where N = current phase number (from the ROADMAP, e.g., 6), T = total milestone phases (from `phase_count` parsed in initialize step, e.g., 8), P = percentage of all milestone phases completed so far.
|
|
120
124
|
|
|
121
125
|
**3a. Smart Discuss**
|
|
122
126
|
|
|
@@ -154,15 +158,95 @@ Skill(skill="ez:plan-phase", args="${PHASE_NUM}")
|
|
|
154
158
|
|
|
155
159
|
Verify plan produced output — re-run `init phase-op` and check `has_plans`. If false → go to handle_blocker: "Plan phase ${PHASE_NUM} did not produce any plans."
|
|
156
160
|
|
|
157
|
-
**
|
|
161
|
+
**Get task list for loop:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
PLANS=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase-list-plans ${PHASE_NUM})
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Parse JSON for: `plans` array with `plan_number`, `plan_name`, `task_description`, `status` for each plan.
|
|
168
|
+
|
|
169
|
+
**Filter to incomplete plans:** Keep only plans where `status !== "complete"`.
|
|
170
|
+
|
|
171
|
+
**Store for task loop:** `plan_list` = array of incomplete plans.
|
|
172
|
+
|
|
173
|
+
**3c. Execute ALL Tasks in Loop**
|
|
174
|
+
|
|
175
|
+
Display task execution banner:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
179
|
+
EZ ► AUTONOMOUS ▸ Phase {N} Task Execution
|
|
180
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
181
|
+
|
|
182
|
+
{task_count} tasks to execute in Phase {N}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**For each plan in `plan_list` (loop through ALL tasks):**
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
FOR EACH plan IN plan_list:
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**3c-i. Display task progress:**
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
Task {plan.plan_number}/{task_count}: {plan.plan_name}
|
|
195
|
+
[████░░░░] {completed_tasks}/{total_tasks} completed
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**3c-ii. Execute single task:**
|
|
158
199
|
|
|
159
200
|
```
|
|
160
|
-
Skill(skill="ez:execute-phase", args="${PHASE_NUM} --no-transition")
|
|
201
|
+
Skill(skill="ez:execute-phase", args="${PHASE_NUM} --plan ${plan.plan_number} --no-transition")
|
|
161
202
|
```
|
|
162
203
|
|
|
163
|
-
**
|
|
204
|
+
**3c-iii. Verify task completion:**
|
|
164
205
|
|
|
165
|
-
|
|
206
|
+
```bash
|
|
207
|
+
TASK_STATUS=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase-get-task-status ${PHASE_NUM} ${plan.plan_number})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Parse `status` from JSON (values: "complete", "in_progress", "blocked", "failed").
|
|
211
|
+
|
|
212
|
+
**If `complete`:**
|
|
213
|
+
- Display: `✅ Task ${plan.plan_number}: ${plan.plan_name} — Complete`
|
|
214
|
+
- Mark task as completed in local tracking
|
|
215
|
+
- Continue to next task in loop
|
|
216
|
+
|
|
217
|
+
**If `in_progress`:**
|
|
218
|
+
- Display: `⚠ Task ${plan.plan_number}: ${plan.plan_name} — Still in progress`
|
|
219
|
+
- Retry status check once (wait 30 seconds)
|
|
220
|
+
- If still `in_progress` → go to handle_blocker: "Task ${plan.plan_number} did not complete"
|
|
221
|
+
|
|
222
|
+
**If `blocked` or `failed`:**
|
|
223
|
+
- Read error/blocker details from task status
|
|
224
|
+
- Go to handle_blocker with: "Task ${plan.plan_number} (${plan.plan_name}) ${status}: {details}"
|
|
225
|
+
|
|
226
|
+
**3c-iv. After each task completes, update phase progress:**
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase-update-progress ${PHASE_NUM}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**End loop** (continue to next plan in plan_list)
|
|
233
|
+
|
|
234
|
+
**After ALL tasks complete:**
|
|
235
|
+
|
|
236
|
+
Display phase completion banner:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
240
|
+
EZ ► AUTONOMOUS ▸ Phase {N} Complete ✅
|
|
241
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
242
|
+
|
|
243
|
+
All {task_count} tasks completed successfully
|
|
244
|
+
Phase {N}: {phase_name} — DONE
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**3d. Post-Execution Verification**
|
|
248
|
+
|
|
249
|
+
After all tasks in the phase complete, read the verification result:
|
|
166
250
|
|
|
167
251
|
```bash
|
|
168
252
|
VERIFY_STATUS=$(grep "^status:" "${PHASE_DIR}"/*-VERIFICATION.md 2>/dev/null | head -1 | cut -d: -f2 | tr -d ' ')
|
|
@@ -185,6 +269,7 @@ Go to handle_blocker: "Execute phase ${PHASE_NUM} did not produce verification r
|
|
|
185
269
|
Display:
|
|
186
270
|
```
|
|
187
271
|
Phase ${PHASE_NUM} ✅ ${PHASE_NAME} — Verification passed
|
|
272
|
+
All {task_count} tasks verified
|
|
188
273
|
```
|
|
189
274
|
|
|
190
275
|
Proceed to iterate step.
|
|
@@ -194,7 +279,7 @@ Proceed to iterate step.
|
|
|
194
279
|
Read the human_verification section from VERIFICATION.md to get the count and items requiring manual testing.
|
|
195
280
|
|
|
196
281
|
Display the items, then ask user via AskUserQuestion:
|
|
197
|
-
- **question:** "Phase ${PHASE_NUM} has items needing manual verification. Validate now or continue to next phase?"
|
|
282
|
+
- **question:** "Phase ${PHASE_NUM} has {N} items needing manual verification. Validate now or continue to next phase?"
|
|
198
283
|
- **options:** "Validate now" / "Continue without validation"
|
|
199
284
|
|
|
200
285
|
On **"Validate now"**: Present the specific items from VERIFICATION.md's human_verification section. After user reviews, ask:
|
|
@@ -213,6 +298,7 @@ Read gap summary from VERIFICATION.md (score and missing items). Display:
|
|
|
213
298
|
```
|
|
214
299
|
⚠ Phase ${PHASE_NUM}: ${PHASE_NAME} — Gaps Found
|
|
215
300
|
Score: {N}/{M} must-haves verified
|
|
301
|
+
{gap_count} tasks have gaps
|
|
216
302
|
```
|
|
217
303
|
|
|
218
304
|
Ask user via AskUserQuestion:
|
|
@@ -227,9 +313,15 @@ Skill(skill="ez:plan-phase", args="${PHASE_NUM} --gaps")
|
|
|
227
313
|
|
|
228
314
|
Verify gap plans were created — re-run `init phase-op ${PHASE_NUM}` and check `has_plans`. If no new gap plans → go to handle_blocker: "Gap closure planning for phase ${PHASE_NUM} did not produce plans."
|
|
229
315
|
|
|
230
|
-
Re-execute
|
|
316
|
+
**Re-execute ALL gap tasks in loop:**
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
GAP_PLANS=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase-list-plans ${PHASE_NUM} --gap-only)
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
For each gap plan in GAP_PLANS:
|
|
231
323
|
```
|
|
232
|
-
Skill(skill="ez:execute-phase", args="${PHASE_NUM} --no-transition")
|
|
324
|
+
Skill(skill="ez:execute-phase", args="${PHASE_NUM} --plan ${gap_plan.number} --no-transition")
|
|
233
325
|
```
|
|
234
326
|
|
|
235
327
|
Re-read verification status:
|
|
@@ -357,7 +449,7 @@ Read the 3-5 most relevant files to understand existing patterns.
|
|
|
357
449
|
DETAIL=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase ${PHASE_NUM})
|
|
358
450
|
```
|
|
359
451
|
|
|
360
|
-
Extract `goal`, `requirements`, `success_criteria` from the JSON response.
|
|
452
|
+
Extract `goal`, `requirements`, `success_criteria`, `task_count` from the JSON response.
|
|
361
453
|
|
|
362
454
|
**Infrastructure detection — check FIRST before generating grey areas:**
|
|
363
455
|
|
|
@@ -542,7 +634,7 @@ Decisions captured: {count} across {area_count} areas
|
|
|
542
634
|
|
|
543
635
|
## 4. Iterate
|
|
544
636
|
|
|
545
|
-
After each phase completes, re-read ROADMAP.md to catch phases inserted mid-execution (decimal phases like 5.1):
|
|
637
|
+
After each phase completes (ALL tasks executed), re-read ROADMAP.md to catch phases inserted mid-execution (decimal phases like 5.1):
|
|
546
638
|
|
|
547
639
|
```bash
|
|
548
640
|
ROADMAP=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap analyze)
|
|
@@ -563,7 +655,7 @@ Check for blockers in the Blockers/Concerns section. If blockers are found, go t
|
|
|
563
655
|
|
|
564
656
|
If incomplete phases remain: proceed to next phase, loop back to execute_phase.
|
|
565
657
|
|
|
566
|
-
If all phases complete
|
|
658
|
+
If all phases complete: proceed to lifecycle step.
|
|
567
659
|
|
|
568
660
|
</step>
|
|
569
661
|
|
|
@@ -674,6 +766,7 @@ Display final completion banner:
|
|
|
674
766
|
Milestone: {milestone_version} — {milestone_name}
|
|
675
767
|
Status: Complete ✅
|
|
676
768
|
Lifecycle: audit ✅ → complete ✅ → cleanup ✅
|
|
769
|
+
All Tasks: {total_tasks} executed across {phase_count} phases
|
|
677
770
|
|
|
678
771
|
Ship it! 🚀
|
|
679
772
|
```
|
|
@@ -686,16 +779,16 @@ Display final completion banner:
|
|
|
686
779
|
|
|
687
780
|
When any phase operation fails or a blocker is detected, present 3 options via AskUserQuestion:
|
|
688
781
|
|
|
689
|
-
**Prompt:** "Phase {N} ({Name}) encountered an issue: {description}"
|
|
782
|
+
**Prompt:** "Phase {N} ({Name}), Task {task_num} encountered an issue: {description}"
|
|
690
783
|
|
|
691
784
|
**Options:**
|
|
692
|
-
1. **"Fix and retry"** — Re-run the failed step (discuss, plan, or execute) for this
|
|
693
|
-
2. **"Skip this
|
|
785
|
+
1. **"Fix and retry"** — Re-run the failed step (discuss, plan, or execute) for this task
|
|
786
|
+
2. **"Skip this task"** — Mark task as skipped, continue to next task in same phase
|
|
694
787
|
3. **"Stop autonomous mode"** — Display summary of progress so far and exit cleanly
|
|
695
788
|
|
|
696
789
|
**On "Fix and retry":** Loop back to the failed step within execute_phase. If the same step fails again after retry, re-present these options.
|
|
697
790
|
|
|
698
|
-
**On "Skip this
|
|
791
|
+
**On "Skip this task":** Log `Phase {N}, Task {task_num} ⏭ {task_name} — Skipped by user` and continue to next task in the phase loop.
|
|
699
792
|
|
|
700
793
|
**On "Stop autonomous mode":** Display progress summary:
|
|
701
794
|
|
|
@@ -704,11 +797,12 @@ When any phase operation fails or a blocker is detected, present 3 options via A
|
|
|
704
797
|
EZ ► AUTONOMOUS ▸ STOPPED
|
|
705
798
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
706
799
|
|
|
707
|
-
Completed: {list of completed phases}
|
|
708
|
-
|
|
709
|
-
|
|
800
|
+
Completed Phases: {list of completed phases}
|
|
801
|
+
In Progress: Phase {N}, Task {task_num}
|
|
802
|
+
Skipped Tasks: {list of skipped tasks}
|
|
803
|
+
Remaining Tasks: {count} tasks in {count} phases
|
|
710
804
|
|
|
711
|
-
Resume with: /ez:autonomous --from {
|
|
805
|
+
Resume with: /ez:autonomous --from {current_phase}
|
|
712
806
|
```
|
|
713
807
|
|
|
714
808
|
</step>
|
|
@@ -719,16 +813,23 @@ When any phase operation fails or a blocker is detected, present 3 options via A
|
|
|
719
813
|
- [ ] All incomplete phases executed in order (smart discuss → plan → execute each)
|
|
720
814
|
- [ ] Smart discuss proposes grey area answers in tables, user accepts or overrides per area
|
|
721
815
|
- [ ] Progress banners displayed between phases
|
|
722
|
-
- [ ] Execute-phase
|
|
816
|
+
- [ ] Execute-phase loops through ALL task plans within each phase
|
|
817
|
+
- [ ] Each task plan executed individually with --plan {N} flag
|
|
818
|
+
- [ ] Task progress displayed during loop ([████░░░░] X/Y completed)
|
|
819
|
+
- [ ] Task completion verified after each execution
|
|
820
|
+
- [ ] Failed/blocked tasks route to handle_blocker
|
|
821
|
+
- [ ] After ALL tasks complete, phase verification runs
|
|
723
822
|
- [ ] Post-execution verification reads VERIFICATION.md and routes on status
|
|
724
823
|
- [ ] Passed verification → automatic continue to next phase
|
|
725
824
|
- [ ] Human-needed verification → user prompted to validate or skip
|
|
726
825
|
- [ ] Gaps-found → user offered gap closure, continue, or stop
|
|
826
|
+
- [ ] Gap closure re-executes ALL gap tasks in loop
|
|
727
827
|
- [ ] Gap closure limited to 1 retry (prevents infinite loops)
|
|
728
828
|
- [ ] Plan-phase and execute-phase failures route to handle_blocker
|
|
729
829
|
- [ ] ROADMAP.md re-read after each phase (catches inserted phases)
|
|
730
830
|
- [ ] STATE.md checked for blockers before each phase
|
|
731
831
|
- [ ] Blockers handled via user choice (retry / skip / stop)
|
|
832
|
+
- [ ] Task-level blocker handling (skip task vs skip phase)
|
|
732
833
|
- [ ] Final completion or stop summary displayed
|
|
733
834
|
- [ ] After all phases complete, lifecycle step is invoked (not manual suggestion)
|
|
734
835
|
- [ ] Lifecycle transition banner displayed before audit
|
|
@@ -737,7 +838,7 @@ When any phase operation fails or a blocker is detected, present 3 options via A
|
|
|
737
838
|
- [ ] Audit technical failure (no file/no status) routes to handle_blocker
|
|
738
839
|
- [ ] Complete-milestone invoked via Skill() with ${milestone_version} arg
|
|
739
840
|
- [ ] Cleanup invoked via Skill() — internal confirmation is acceptable (CTRL-01)
|
|
740
|
-
- [ ] Final completion banner
|
|
841
|
+
- [ ] Final completion banner displays total task count
|
|
741
842
|
- [ ] Progress bar uses phase number / total milestone phases (not position among incomplete)
|
|
742
843
|
- [ ] Smart discuss documents relationship to discuss-phase with CTRL-03 note
|
|
743
844
|
</success_criteria>
|
|
@@ -1,177 +1,177 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
List all pending todos, allow selection, load full context for the selected todo, and route to appropriate action.
|
|
3
|
-
</purpose>
|
|
4
|
-
|
|
5
|
-
<required_reading>
|
|
6
|
-
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
-
</required_reading>
|
|
8
|
-
|
|
9
|
-
<process>
|
|
10
|
-
|
|
11
|
-
<step name="init_context">
|
|
12
|
-
Load todo context:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init todos)
|
|
16
|
-
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
|
|
20
|
-
|
|
21
|
-
If `todo_count` is 0:
|
|
22
|
-
```
|
|
23
|
-
No pending todos.
|
|
24
|
-
|
|
25
|
-
Todos are captured during work sessions with /ez:add-todo.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
Would you like to:
|
|
30
|
-
|
|
31
|
-
1. Continue with current phase (/ez:progress)
|
|
32
|
-
2. Add a todo now (/ez:add-todo)
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Exit.
|
|
36
|
-
</step>
|
|
37
|
-
|
|
38
|
-
<step name="parse_filter">
|
|
39
|
-
Check for area filter in arguments:
|
|
40
|
-
- `/ez:check-todos` → show all
|
|
41
|
-
- `/ez:check-todos api` → filter to area:api only
|
|
42
|
-
</step>
|
|
43
|
-
|
|
44
|
-
<step name="list_todos">
|
|
45
|
-
Use the `todos` array from init context (already filtered by area if specified).
|
|
46
|
-
|
|
47
|
-
Parse and display as numbered list:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
Pending Todos:
|
|
51
|
-
|
|
52
|
-
1. Add auth token refresh (api, 2d ago)
|
|
53
|
-
2. Fix modal z-index issue (ui, 1d ago)
|
|
54
|
-
3. Refactor database connection pool (database, 5h ago)
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
Reply with a number to view details, or:
|
|
59
|
-
- `/ez:check-todos [area]` to filter by area
|
|
60
|
-
- `q` to exit
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Format age as relative time from created timestamp.
|
|
64
|
-
</step>
|
|
65
|
-
|
|
66
|
-
<step name="handle_selection">
|
|
67
|
-
Wait for user to reply with a number.
|
|
68
|
-
|
|
69
|
-
If valid: load selected todo, proceed.
|
|
70
|
-
If invalid: "Invalid selection. Reply with a number (1-[N]) or `q` to exit."
|
|
71
|
-
</step>
|
|
72
|
-
|
|
73
|
-
<step name="load_context">
|
|
74
|
-
Read the todo file completely. Display:
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
## [title]
|
|
78
|
-
|
|
79
|
-
**Area:** [area]
|
|
80
|
-
**Created:** [date] ([relative time] ago)
|
|
81
|
-
**Files:** [list or "None"]
|
|
82
|
-
|
|
83
|
-
### Problem
|
|
84
|
-
[problem section content]
|
|
85
|
-
|
|
86
|
-
### Solution
|
|
87
|
-
[solution section content]
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
If `files` field has entries, read and briefly summarize each.
|
|
91
|
-
</step>
|
|
92
|
-
|
|
93
|
-
<step name="check_roadmap">
|
|
94
|
-
Check for roadmap (can use init progress or directly check file existence):
|
|
95
|
-
|
|
96
|
-
If `.planning/ROADMAP.md` exists:
|
|
97
|
-
1. Check if todo's area matches an upcoming phase
|
|
98
|
-
2. Check if todo's files overlap with a phase's scope
|
|
99
|
-
3. Note any match for action options
|
|
100
|
-
</step>
|
|
101
|
-
|
|
102
|
-
<step name="offer_actions">
|
|
103
|
-
**If todo maps to a roadmap phase:**
|
|
104
|
-
|
|
105
|
-
Use AskUserQuestion:
|
|
106
|
-
- header: "Action"
|
|
107
|
-
- question: "This todo relates to Phase [N]: [name]. What would you like to do?"
|
|
108
|
-
- options:
|
|
109
|
-
- "Work on it now" — move to done, start working
|
|
110
|
-
- "Add to phase plan" — include when planning Phase [N]
|
|
111
|
-
- "Brainstorm approach" — think through before deciding
|
|
112
|
-
- "Put it back" — return to list
|
|
113
|
-
|
|
114
|
-
**If no roadmap match:**
|
|
115
|
-
|
|
116
|
-
Use AskUserQuestion:
|
|
117
|
-
- header: "Action"
|
|
118
|
-
- question: "What would you like to do with this todo?"
|
|
119
|
-
- options:
|
|
120
|
-
- "Work on it now" — move to done, start working
|
|
121
|
-
- "Create a phase" — /ez:add-phase with this scope
|
|
122
|
-
- "Brainstorm approach" — think through before deciding
|
|
123
|
-
- "Put it back" — return to list
|
|
124
|
-
</step>
|
|
125
|
-
|
|
126
|
-
<step name="execute_action">
|
|
127
|
-
**Work on it now:**
|
|
128
|
-
```bash
|
|
129
|
-
mv ".planning/todos/pending/[filename]" ".planning/todos/done/"
|
|
130
|
-
```
|
|
131
|
-
Update STATE.md todo count. Present problem/solution context. Begin work or ask how to proceed.
|
|
132
|
-
|
|
133
|
-
**Add to phase plan:**
|
|
134
|
-
Note todo reference in phase planning notes. Keep in pending. Return to list or exit.
|
|
135
|
-
|
|
136
|
-
**Create a phase:**
|
|
137
|
-
Display: `/ez:add-phase [description from todo]`
|
|
138
|
-
Keep in pending. User runs command in fresh context.
|
|
139
|
-
|
|
140
|
-
**Brainstorm approach:**
|
|
141
|
-
Keep in pending. Start discussion about problem and approaches.
|
|
142
|
-
|
|
143
|
-
**Put it back:**
|
|
144
|
-
Return to list_todos step.
|
|
145
|
-
</step>
|
|
146
|
-
|
|
147
|
-
<step name="update_state">
|
|
148
|
-
After any action that changes todo count:
|
|
149
|
-
|
|
150
|
-
Re-run `init todos` to get updated count, then update STATE.md "### Pending Todos" section if exists.
|
|
151
|
-
</step>
|
|
152
|
-
|
|
153
|
-
<step name="git_commit">
|
|
154
|
-
If todo was moved to done/, commit the change:
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
|
|
158
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Tool respects `commit_docs` config and gitignore automatically.
|
|
162
|
-
|
|
163
|
-
Confirm: "Committed: docs: start work on todo - [title]"
|
|
164
|
-
</step>
|
|
165
|
-
|
|
166
|
-
</process>
|
|
167
|
-
|
|
168
|
-
<success_criteria>
|
|
169
|
-
- [ ] All pending todos listed with title, area, age
|
|
170
|
-
- [ ] Area filter applied if specified
|
|
171
|
-
- [ ] Selected todo's full context loaded
|
|
172
|
-
- [ ] Roadmap context checked for phase match
|
|
173
|
-
- [ ] Appropriate actions offered
|
|
174
|
-
- [ ] Selected action executed
|
|
175
|
-
- [ ] STATE.md updated if todo count changed
|
|
176
|
-
- [ ] Changes committed to git (if todo moved to done/)
|
|
177
|
-
</success_criteria>
|
|
1
|
+
<purpose>
|
|
2
|
+
List all pending todos, allow selection, load full context for the selected todo, and route to appropriate action.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="init_context">
|
|
12
|
+
Load todo context:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init todos)
|
|
16
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
|
|
20
|
+
|
|
21
|
+
If `todo_count` is 0:
|
|
22
|
+
```
|
|
23
|
+
No pending todos.
|
|
24
|
+
|
|
25
|
+
Todos are captured during work sessions with /ez:add-todo.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Would you like to:
|
|
30
|
+
|
|
31
|
+
1. Continue with current phase (/ez:progress)
|
|
32
|
+
2. Add a todo now (/ez:add-todo)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Exit.
|
|
36
|
+
</step>
|
|
37
|
+
|
|
38
|
+
<step name="parse_filter">
|
|
39
|
+
Check for area filter in arguments:
|
|
40
|
+
- `/ez:check-todos` → show all
|
|
41
|
+
- `/ez:check-todos api` → filter to area:api only
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="list_todos">
|
|
45
|
+
Use the `todos` array from init context (already filtered by area if specified).
|
|
46
|
+
|
|
47
|
+
Parse and display as numbered list:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Pending Todos:
|
|
51
|
+
|
|
52
|
+
1. Add auth token refresh (api, 2d ago)
|
|
53
|
+
2. Fix modal z-index issue (ui, 1d ago)
|
|
54
|
+
3. Refactor database connection pool (database, 5h ago)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
Reply with a number to view details, or:
|
|
59
|
+
- `/ez:check-todos [area]` to filter by area
|
|
60
|
+
- `q` to exit
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Format age as relative time from created timestamp.
|
|
64
|
+
</step>
|
|
65
|
+
|
|
66
|
+
<step name="handle_selection">
|
|
67
|
+
Wait for user to reply with a number.
|
|
68
|
+
|
|
69
|
+
If valid: load selected todo, proceed.
|
|
70
|
+
If invalid: "Invalid selection. Reply with a number (1-[N]) or `q` to exit."
|
|
71
|
+
</step>
|
|
72
|
+
|
|
73
|
+
<step name="load_context">
|
|
74
|
+
Read the todo file completely. Display:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
## [title]
|
|
78
|
+
|
|
79
|
+
**Area:** [area]
|
|
80
|
+
**Created:** [date] ([relative time] ago)
|
|
81
|
+
**Files:** [list or "None"]
|
|
82
|
+
|
|
83
|
+
### Problem
|
|
84
|
+
[problem section content]
|
|
85
|
+
|
|
86
|
+
### Solution
|
|
87
|
+
[solution section content]
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
If `files` field has entries, read and briefly summarize each.
|
|
91
|
+
</step>
|
|
92
|
+
|
|
93
|
+
<step name="check_roadmap">
|
|
94
|
+
Check for roadmap (can use init progress or directly check file existence):
|
|
95
|
+
|
|
96
|
+
If `.planning/ROADMAP.md` exists:
|
|
97
|
+
1. Check if todo's area matches an upcoming phase
|
|
98
|
+
2. Check if todo's files overlap with a phase's scope
|
|
99
|
+
3. Note any match for action options
|
|
100
|
+
</step>
|
|
101
|
+
|
|
102
|
+
<step name="offer_actions">
|
|
103
|
+
**If todo maps to a roadmap phase:**
|
|
104
|
+
|
|
105
|
+
Use AskUserQuestion:
|
|
106
|
+
- header: "Action"
|
|
107
|
+
- question: "This todo relates to Phase [N]: [name]. What would you like to do?"
|
|
108
|
+
- options:
|
|
109
|
+
- "Work on it now" — move to done, start working
|
|
110
|
+
- "Add to phase plan" — include when planning Phase [N]
|
|
111
|
+
- "Brainstorm approach" — think through before deciding
|
|
112
|
+
- "Put it back" — return to list
|
|
113
|
+
|
|
114
|
+
**If no roadmap match:**
|
|
115
|
+
|
|
116
|
+
Use AskUserQuestion:
|
|
117
|
+
- header: "Action"
|
|
118
|
+
- question: "What would you like to do with this todo?"
|
|
119
|
+
- options:
|
|
120
|
+
- "Work on it now" — move to done, start working
|
|
121
|
+
- "Create a phase" — /ez:add-phase with this scope
|
|
122
|
+
- "Brainstorm approach" — think through before deciding
|
|
123
|
+
- "Put it back" — return to list
|
|
124
|
+
</step>
|
|
125
|
+
|
|
126
|
+
<step name="execute_action">
|
|
127
|
+
**Work on it now:**
|
|
128
|
+
```bash
|
|
129
|
+
mv ".planning/todos/pending/[filename]" ".planning/todos/done/"
|
|
130
|
+
```
|
|
131
|
+
Update STATE.md todo count. Present problem/solution context. Begin work or ask how to proceed.
|
|
132
|
+
|
|
133
|
+
**Add to phase plan:**
|
|
134
|
+
Note todo reference in phase planning notes. Keep in pending. Return to list or exit.
|
|
135
|
+
|
|
136
|
+
**Create a phase:**
|
|
137
|
+
Display: `/ez:add-phase [description from todo]`
|
|
138
|
+
Keep in pending. User runs command in fresh context.
|
|
139
|
+
|
|
140
|
+
**Brainstorm approach:**
|
|
141
|
+
Keep in pending. Start discussion about problem and approaches.
|
|
142
|
+
|
|
143
|
+
**Put it back:**
|
|
144
|
+
Return to list_todos step.
|
|
145
|
+
</step>
|
|
146
|
+
|
|
147
|
+
<step name="update_state">
|
|
148
|
+
After any action that changes todo count:
|
|
149
|
+
|
|
150
|
+
Re-run `init todos` to get updated count, then update STATE.md "### Pending Todos" section if exists.
|
|
151
|
+
</step>
|
|
152
|
+
|
|
153
|
+
<step name="git_commit">
|
|
154
|
+
If todo was moved to done/, commit the change:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
|
|
158
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Tool respects `commit_docs` config and gitignore automatically.
|
|
162
|
+
|
|
163
|
+
Confirm: "Committed: docs: start work on todo - [title]"
|
|
164
|
+
</step>
|
|
165
|
+
|
|
166
|
+
</process>
|
|
167
|
+
|
|
168
|
+
<success_criteria>
|
|
169
|
+
- [ ] All pending todos listed with title, area, age
|
|
170
|
+
- [ ] Area filter applied if specified
|
|
171
|
+
- [ ] Selected todo's full context loaded
|
|
172
|
+
- [ ] Roadmap context checked for phase match
|
|
173
|
+
- [ ] Appropriate actions offered
|
|
174
|
+
- [ ] Selected action executed
|
|
175
|
+
- [ ] STATE.md updated if todo count changed
|
|
176
|
+
- [ ] Changes committed to git (if todo moved to done/)
|
|
177
|
+
</success_criteria>
|