@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.
Files changed (162) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +84 -20
  3. package/agents/ez-observer-agent.md +260 -0
  4. package/agents/ez-release-agent.md +333 -0
  5. package/agents/ez-requirements-agent.md +377 -0
  6. package/agents/ez-scrum-master-agent.md +242 -0
  7. package/agents/ez-tech-lead-agent.md +267 -0
  8. package/bin/install.js +3221 -3230
  9. package/commands/ez/arch-review.md +102 -0
  10. package/commands/ez/execute-phase.md +11 -0
  11. package/commands/ez/export-session.md +79 -0
  12. package/commands/ez/gather-requirements.md +117 -0
  13. package/commands/ez/git-workflow.md +72 -0
  14. package/commands/ez/hotfix.md +120 -0
  15. package/commands/ez/import-session.md +82 -0
  16. package/commands/ez/join-discord.md +18 -18
  17. package/commands/ez/list-sessions.md +96 -0
  18. package/commands/ez/package-manager.md +316 -0
  19. package/commands/ez/plan-phase.md +9 -1
  20. package/commands/ez/preflight.md +79 -0
  21. package/commands/ez/progress.md +13 -1
  22. package/commands/ez/release.md +153 -0
  23. package/commands/ez/resume.md +107 -0
  24. package/commands/ez/standup.md +85 -0
  25. package/ez-agents/bin/ez-tools.cjs +1095 -716
  26. package/ez-agents/bin/lib/assistant-adapter.cjs +264 -264
  27. package/ez-agents/bin/lib/audit-exec.cjs +7 -2
  28. package/ez-agents/bin/lib/bdd-validator.cjs +622 -0
  29. package/ez-agents/bin/lib/circuit-breaker.cjs +118 -118
  30. package/ez-agents/bin/lib/config.cjs +190 -190
  31. package/ez-agents/bin/lib/content-scanner.cjs +238 -0
  32. package/ez-agents/bin/lib/context-cache.cjs +154 -0
  33. package/ez-agents/bin/lib/context-errors.cjs +71 -0
  34. package/ez-agents/bin/lib/context-manager.cjs +220 -0
  35. package/ez-agents/bin/lib/discussion-synthesizer.cjs +458 -0
  36. package/ez-agents/bin/lib/file-access.cjs +207 -0
  37. package/ez-agents/bin/lib/file-lock.cjs +236 -236
  38. package/ez-agents/bin/lib/frontmatter.cjs +299 -299
  39. package/ez-agents/bin/lib/fs-utils.cjs +153 -153
  40. package/ez-agents/bin/lib/git-errors.cjs +83 -0
  41. package/ez-agents/bin/lib/git-utils.cjs +118 -0
  42. package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -0
  43. package/ez-agents/bin/lib/index.cjs +157 -113
  44. package/ez-agents/bin/lib/init.cjs +757 -757
  45. package/ez-agents/bin/lib/lockfile-validator.cjs +227 -0
  46. package/ez-agents/bin/lib/logger.cjs +124 -124
  47. package/ez-agents/bin/lib/memory-compression.cjs +256 -0
  48. package/ez-agents/bin/lib/metrics-tracker.cjs +406 -0
  49. package/ez-agents/bin/lib/milestone.cjs +241 -241
  50. package/ez-agents/bin/lib/model-provider.cjs +241 -241
  51. package/ez-agents/bin/lib/package-manager-detector.cjs +203 -0
  52. package/ez-agents/bin/lib/package-manager-executor.cjs +385 -0
  53. package/ez-agents/bin/lib/package-manager-service.cjs +216 -0
  54. package/ez-agents/bin/lib/phase.cjs +925 -925
  55. package/ez-agents/bin/lib/planning-write.cjs +107 -107
  56. package/ez-agents/bin/lib/release-validator.cjs +614 -0
  57. package/ez-agents/bin/lib/retry.cjs +119 -119
  58. package/ez-agents/bin/lib/roadmap.cjs +306 -306
  59. package/ez-agents/bin/lib/safe-exec.cjs +128 -128
  60. package/ez-agents/bin/lib/safe-path.cjs +130 -130
  61. package/ez-agents/bin/lib/session-chain.cjs +304 -0
  62. package/ez-agents/bin/lib/session-errors.cjs +81 -0
  63. package/ez-agents/bin/lib/session-export.cjs +251 -0
  64. package/ez-agents/bin/lib/session-import.cjs +262 -0
  65. package/ez-agents/bin/lib/session-manager.cjs +280 -0
  66. package/ez-agents/bin/lib/state.cjs +736 -736
  67. package/ez-agents/bin/lib/temp-file.cjs +239 -239
  68. package/ez-agents/bin/lib/template.cjs +223 -223
  69. package/ez-agents/bin/lib/test-file-lock.cjs +112 -112
  70. package/ez-agents/bin/lib/test-graceful.cjs +93 -93
  71. package/ez-agents/bin/lib/test-logger.cjs +60 -60
  72. package/ez-agents/bin/lib/test-safe-exec.cjs +38 -38
  73. package/ez-agents/bin/lib/test-safe-path.cjs +33 -33
  74. package/ez-agents/bin/lib/test-temp-file.cjs +125 -125
  75. package/ez-agents/bin/lib/tier-manager.cjs +428 -0
  76. package/ez-agents/bin/lib/timeout-exec.cjs +63 -63
  77. package/ez-agents/bin/lib/url-fetch.cjs +170 -0
  78. package/ez-agents/bin/lib/verify.cjs +15 -1
  79. package/ez-agents/references/checkpoints.md +776 -776
  80. package/ez-agents/references/continuation-format.md +249 -249
  81. package/ez-agents/references/metrics-schema.md +118 -0
  82. package/ez-agents/references/planning-config.md +140 -0
  83. package/ez-agents/references/questioning.md +162 -162
  84. package/ez-agents/references/tdd.md +263 -263
  85. package/ez-agents/references/tier-strategy.md +103 -0
  86. package/ez-agents/templates/bdd-feature.md +173 -0
  87. package/ez-agents/templates/codebase/concerns.md +310 -310
  88. package/ez-agents/templates/codebase/conventions.md +307 -307
  89. package/ez-agents/templates/codebase/integrations.md +280 -280
  90. package/ez-agents/templates/codebase/stack.md +186 -186
  91. package/ez-agents/templates/codebase/testing.md +480 -480
  92. package/ez-agents/templates/config.json +37 -37
  93. package/ez-agents/templates/continue-here.md +78 -78
  94. package/ez-agents/templates/discussion.md +68 -0
  95. package/ez-agents/templates/incident-runbook.md +205 -0
  96. package/ez-agents/templates/milestone-archive.md +123 -123
  97. package/ez-agents/templates/milestone.md +115 -115
  98. package/ez-agents/templates/release-checklist.md +133 -0
  99. package/ez-agents/templates/requirements.md +231 -231
  100. package/ez-agents/templates/research-project/ARCHITECTURE.md +204 -204
  101. package/ez-agents/templates/research-project/FEATURES.md +147 -147
  102. package/ez-agents/templates/research-project/PITFALLS.md +200 -200
  103. package/ez-agents/templates/research-project/STACK.md +120 -120
  104. package/ez-agents/templates/research-project/SUMMARY.md +170 -170
  105. package/ez-agents/templates/retrospective.md +54 -54
  106. package/ez-agents/templates/roadmap.md +202 -202
  107. package/ez-agents/templates/rollback-plan.md +201 -0
  108. package/ez-agents/templates/summary-minimal.md +41 -41
  109. package/ez-agents/templates/summary-standard.md +48 -48
  110. package/ez-agents/templates/summary.md +248 -248
  111. package/ez-agents/templates/user-setup.md +311 -311
  112. package/ez-agents/templates/verification-report.md +322 -322
  113. package/ez-agents/workflows/add-phase.md +112 -112
  114. package/ez-agents/workflows/add-tests.md +351 -351
  115. package/ez-agents/workflows/add-todo.md +158 -158
  116. package/ez-agents/workflows/arch-review.md +54 -0
  117. package/ez-agents/workflows/audit-milestone.md +332 -332
  118. package/ez-agents/workflows/autonomous.md +131 -30
  119. package/ez-agents/workflows/check-todos.md +177 -177
  120. package/ez-agents/workflows/cleanup.md +152 -152
  121. package/ez-agents/workflows/complete-milestone.md +766 -766
  122. package/ez-agents/workflows/diagnose-issues.md +219 -219
  123. package/ez-agents/workflows/discovery-phase.md +289 -289
  124. package/ez-agents/workflows/discuss-phase.md +762 -762
  125. package/ez-agents/workflows/execute-phase.md +513 -468
  126. package/ez-agents/workflows/execute-plan.md +483 -483
  127. package/ez-agents/workflows/export-session.md +255 -0
  128. package/ez-agents/workflows/gather-requirements.md +206 -0
  129. package/ez-agents/workflows/health.md +159 -159
  130. package/ez-agents/workflows/help.md +584 -492
  131. package/ez-agents/workflows/hotfix.md +291 -0
  132. package/ez-agents/workflows/import-session.md +303 -0
  133. package/ez-agents/workflows/insert-phase.md +130 -130
  134. package/ez-agents/workflows/list-phase-assumptions.md +178 -178
  135. package/ez-agents/workflows/map-codebase.md +316 -316
  136. package/ez-agents/workflows/new-milestone.md +339 -10
  137. package/ez-agents/workflows/new-project.md +293 -299
  138. package/ez-agents/workflows/node-repair.md +92 -92
  139. package/ez-agents/workflows/pause-work.md +122 -122
  140. package/ez-agents/workflows/plan-milestone-gaps.md +274 -274
  141. package/ez-agents/workflows/plan-phase.md +673 -651
  142. package/ez-agents/workflows/progress.md +372 -382
  143. package/ez-agents/workflows/quick.md +610 -610
  144. package/ez-agents/workflows/release.md +253 -0
  145. package/ez-agents/workflows/remove-phase.md +155 -155
  146. package/ez-agents/workflows/research-phase.md +74 -74
  147. package/ez-agents/workflows/resume-project.md +307 -307
  148. package/ez-agents/workflows/resume-session.md +215 -0
  149. package/ez-agents/workflows/set-profile.md +81 -81
  150. package/ez-agents/workflows/settings.md +242 -242
  151. package/ez-agents/workflows/standup.md +64 -0
  152. package/ez-agents/workflows/stats.md +57 -57
  153. package/ez-agents/workflows/transition.md +544 -544
  154. package/ez-agents/workflows/ui-phase.md +290 -290
  155. package/ez-agents/workflows/ui-review.md +157 -157
  156. package/ez-agents/workflows/update.md +320 -320
  157. package/ez-agents/workflows/validate-phase.md +167 -167
  158. package/ez-agents/workflows/verify-phase.md +243 -243
  159. package/ez-agents/workflows/verify-work.md +584 -584
  160. package/package.json +10 -4
  161. package/scripts/build-hooks.js +43 -43
  162. package/scripts/run-tests.cjs +29 -29
@@ -0,0 +1,253 @@
1
+ <purpose>
2
+ Orchestrate tier-aware production releases. Validates state, runs security gates, evaluates tier checklist, creates release branch, generates changelog, bumps version, writes rollback plan, and tags the release.
3
+ </purpose>
4
+
5
+ <process>
6
+
7
+ <auto_invoke>
8
+ Check for --no-auto in ARGUMENTS. If present, skip this section and proceed to step 1.
9
+
10
+ ```bash
11
+ SMART_ORCH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get smart_orchestration.enabled 2>/dev/null || echo "true")
12
+ ```
13
+ If `SMART_ORCH` is `"false"`: skip, proceed to step 1.
14
+
15
+ **Tier-based pre-flight:**
16
+ Parse the tier argument from ARGUMENTS (mvp / medium / enterprise).
17
+
18
+ - **mvp**: No pre-flight auto-invocations. Proceed directly to step 1.
19
+ - **medium**: Check if a VERIFICATION.md from verify-work already exists for the current phase. If not:
20
+ → Display: `[auto] Running verify-work before medium release...`
21
+ → Invoke: Skill(ez:verify-work)
22
+ → Continue to step 1.
23
+ - **enterprise**: Run in sequence:
24
+ → Display: `[auto] Running verify-work...`
25
+ → Invoke: Skill(ez:verify-work)
26
+ → Display: `[auto] Running audit-milestone...`
27
+ → Invoke: Skill(ez:audit-milestone)
28
+ → Display: `[auto] Running arch-review...`
29
+ → Invoke: Skill(ez:arch-review)
30
+ → Continue to step 1.
31
+
32
+ All auto-invocations are prefixed with `[auto]` in output. Override with `--no-auto` to skip all pre-invocations.
33
+ </auto_invoke>
34
+
35
+ ## 1. Initialize
36
+
37
+ Parse $ARGUMENTS:
38
+ - Command: `release` or `preflight`
39
+ - Tier: `mvp`, `medium`, or `enterprise`
40
+ - Version: semver string (e.g., `1.0.0`)
41
+
42
+ **If missing tier or version (for release command):**
43
+ ```
44
+ Usage: /ez:release <tier> <version>
45
+ /ez:release preflight <tier>
46
+
47
+ Examples:
48
+ /ez:release mvp v1.0.0
49
+ /ez:release medium v1.5.0
50
+ /ez:release enterprise v2.0.0
51
+ /ez:release preflight medium
52
+ ```
53
+ Exit.
54
+
55
+ **Normalize version:** Strip leading `v` if present (e.g., `v1.0.0` → `1.0.0`).
56
+
57
+ **Load tier config:**
58
+ ```bash
59
+ TIER_CONFIG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" tier-config "${TARGET_TIER}" 2>/dev/null)
60
+ ```
61
+
62
+ Display banner:
63
+ ```
64
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
65
+ EZ ► RELEASE v{version} — {TIER} TIER
66
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
67
+ ```
68
+
69
+ ## 2. Validate Semver
70
+
71
+ ```bash
72
+ echo "${VERSION}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$"
73
+ ```
74
+
75
+ **If invalid:** Error — "Version must be semver (X.Y.Z). Got: {version}"
76
+
77
+ ## 3. Check Current State
78
+
79
+ ```bash
80
+ # Uncommitted changes
81
+ git status --short
82
+
83
+ # Current branch
84
+ git branch --show-current
85
+
86
+ # Current version
87
+ CURRENT=$(node -e "console.log(require('./package.json').version)" 2>/dev/null || echo "0.0.0")
88
+ ```
89
+
90
+ **If uncommitted changes:** Error — "Commit or stash all changes before releasing"
91
+
92
+ ## 4. Run Security Gates
93
+
94
+ ```bash
95
+ echo "Running security gates..."
96
+
97
+ # Gate 1: No secrets in tracked files
98
+ SECRET_HITS=$(git grep -i -E "(api[_-]?key|password|secret)['\"]?\s*[=:]\s*['\"]?[a-zA-Z0-9+/]{20,}" HEAD 2>/dev/null | \
99
+ grep -v "example\|placeholder\|your-key\|process\.env\|env\.\|config\.\|getenv" | wc -l)
100
+
101
+ # Gate 2: npm audit
102
+ npm audit --audit-level=critical 2>/dev/null
103
+ AUDIT_EXIT=$?
104
+
105
+ # Gate 3: Production TODOs
106
+ PROD_TODOS=$(grep -rn "TODO\|FIXME\|HACK" src/ --include="*.ts" --include="*.js" --include="*.py" 2>/dev/null | \
107
+ grep -v "test\|spec\|__test__\|\.test\." | wc -l)
108
+
109
+ # Gate 4: .env in .gitignore
110
+ grep -q "^\.env" .gitignore 2>/dev/null && ENV_SAFE=true || ENV_SAFE=false
111
+ ```
112
+
113
+ Security gate results:
114
+ ```
115
+ Security Gates:
116
+ ✓/✗ No secrets in committed files ({SECRET_HITS} found)
117
+ ✓/✗ npm audit clean (exit {AUDIT_EXIT})
118
+ ✓/✗ No production TODOs ({PROD_TODOS} found)
119
+ ✓/✗ .env in .gitignore
120
+ ```
121
+
122
+ **Hard stop:** If SECRET_HITS > 0 → "BLOCKED: Secrets found in committed files. Remove before releasing."
123
+ **Hard stop:** If AUDIT_EXIT is non-zero → "BLOCKED: Critical vulnerabilities found. Run npm audit fix."
124
+
125
+ ## 5. Run Tier Checklist
126
+
127
+ Load checklist template from `~/.claude/ez-agents/templates/release-checklist.md`.
128
+
129
+ Run automated checks for the target tier:
130
+
131
+ ```bash
132
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" release check-tier "${TARGET_TIER}"
133
+ ```
134
+
135
+ Display checklist results with pass/fail/skip for each item.
136
+
137
+ **If `preflight` command:** Display checklist results and exit here.
138
+
139
+ ## 6. Check Coverage (if test coverage available)
140
+
141
+ ```bash
142
+ # Try to find coverage report
143
+ COVERAGE=$(cat coverage/coverage-summary.json 2>/dev/null | jq '.total.lines.pct // 0')
144
+ ```
145
+
146
+ Coverage thresholds by tier:
147
+ - mvp: 60%
148
+ - medium: 80%
149
+ - enterprise: 95%
150
+
151
+ **If below threshold:** Warning (not hard blocker — tests may not be configured).
152
+
153
+ ## 7. Spawn Release Agent
154
+
155
+ ```
156
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
157
+ ◆ Spawning release agent...
158
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
159
+ ```
160
+
161
+ Release agent prompt:
162
+
163
+ ```markdown
164
+ <objective>
165
+ Create a {TARGET_TIER} tier release v{VERSION}.
166
+ </objective>
167
+
168
+ <release_config>
169
+ Tier: {TARGET_TIER}
170
+ Version: {VERSION}
171
+ Current version: {CURRENT_VERSION}
172
+ </release_config>
173
+
174
+ <files_to_read>
175
+ - package.json (current version and scripts)
176
+ - CHANGELOG.md (if exists — append new entry)
177
+ - .planning/config.json (release tier config)
178
+ - ~/.claude/ez-agents/templates/release-checklist.md (checklist template)
179
+ - ~/.claude/ez-agents/templates/rollback-plan.md (rollback template)
180
+ </files_to_read>
181
+
182
+ <security_gate_results>
183
+ {security gate results from step 4}
184
+ </security_gate_results>
185
+
186
+ <checklist_results>
187
+ {checklist results from step 5}
188
+ </checklist_results>
189
+
190
+ <tasks>
191
+ 1. Create release branch (per tier: trunk | github-flow | gitflow)
192
+ 2. Generate changelog from git log since last tag
193
+ 3. Bump version in package.json to {VERSION}
194
+ 4. Create rollback plan in .planning/releases/v{VERSION}-ROLLBACK-PLAN.md
195
+ 5. Commit release artifacts
196
+ 6. Tag v{VERSION}
197
+ 7. Report production readiness score
198
+ </tasks>
199
+ ```
200
+
201
+ ```
202
+ Task(
203
+ prompt=release_prompt,
204
+ subagent_type="ez-release-agent",
205
+ model="{planner_model from init}"
206
+ )
207
+ ```
208
+
209
+ ## 8. Handle Agent Return
210
+
211
+ **`## RELEASE COMPLETE`:**
212
+
213
+ ```
214
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
215
+ EZ ► RELEASE v{version} READY ✓
216
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
217
+
218
+ {agent summary}
219
+
220
+ ### To Ship
221
+ git push origin {branch} && git push origin v{version}
222
+
223
+ ### Rollback Plan
224
+ .planning/releases/v{version}-ROLLBACK-PLAN.md
225
+ ```
226
+
227
+ **If blocked:**
228
+ ```
229
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
+ EZ ► RELEASE BLOCKED
231
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
232
+
233
+ {blocker details}
234
+
235
+ Fix the above issues then re-run: /ez:release {tier} v{version}
236
+ ```
237
+
238
+ </process>
239
+
240
+ <success_criteria>
241
+ - [ ] Tier and version validated
242
+ - [ ] Uncommitted changes check passed
243
+ - [ ] All security gates run (fail on hard blockers)
244
+ - [ ] Tier checklist evaluated
245
+ - [ ] Coverage checked against tier threshold
246
+ - [ ] ez-release-agent spawned with full context
247
+ - [ ] Release branch created per tier strategy
248
+ - [ ] Changelog updated
249
+ - [ ] Version bumped in package.json
250
+ - [ ] Rollback plan written
251
+ - [ ] Tag created
252
+ - [ ] User sees push instructions and production readiness score
253
+ </success_criteria>
@@ -1,155 +1,155 @@
1
- <purpose>
2
- Remove an unstarted future phase from the project roadmap, delete its directory, renumber all subsequent phases to maintain a clean linear sequence, and commit the change. The git commit serves as the historical record of removal.
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="parse_arguments">
12
- Parse the command arguments:
13
- - Argument is the phase number to remove (integer or decimal)
14
- - Example: `/ez:remove-phase 17` → phase = 17
15
- - Example: `/ez:remove-phase 16.1` → phase = 16.1
16
-
17
- If no argument provided:
18
-
19
- ```
20
- ERROR: Phase number required
21
- Usage: /ez:remove-phase <phase-number>
22
- Example: /ez:remove-phase 17
23
- ```
24
-
25
- Exit.
26
- </step>
27
-
28
- <step name="init_context">
29
- Load phase operation context:
30
-
31
- ```bash
32
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init phase-op "${target}")
33
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
34
- ```
35
-
36
- Extract: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
37
-
38
- Also read STATE.md and ROADMAP.md content for parsing current position.
39
- </step>
40
-
41
- <step name="validate_future_phase">
42
- Verify the phase is a future phase (not started):
43
-
44
- 1. Compare target phase to current phase from STATE.md
45
- 2. Target must be > current phase number
46
-
47
- If target <= current phase:
48
-
49
- ```
50
- ERROR: Cannot remove Phase {target}
51
-
52
- Only future phases can be removed:
53
- - Current phase: {current}
54
- - Phase {target} is current or completed
55
-
56
- To abandon current work, use /ez:pause-work instead.
57
- ```
58
-
59
- Exit.
60
- </step>
61
-
62
- <step name="confirm_removal">
63
- Present removal summary and confirm:
64
-
65
- ```
66
- Removing Phase {target}: {Name}
67
-
68
- This will:
69
- - Delete: .planning/phases/{target}-{slug}/
70
- - Renumber all subsequent phases
71
- - Update: ROADMAP.md, STATE.md
72
-
73
- Proceed? (y/n)
74
- ```
75
-
76
- Wait for confirmation.
77
- </step>
78
-
79
- <step name="execute_removal">
80
- **Delegate the entire removal operation to ez-tools:**
81
-
82
- ```bash
83
- RESULT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase remove "${target}")
84
- ```
85
-
86
- If the phase has executed plans (SUMMARY.md files), ez-tools will error. Use `--force` only if the user confirms:
87
-
88
- ```bash
89
- RESULT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase remove "${target}" --force)
90
- ```
91
-
92
- The CLI handles:
93
- - Deleting the phase directory
94
- - Renumbering all subsequent directories (in reverse order to avoid conflicts)
95
- - Renaming all files inside renumbered directories (PLAN.md, SUMMARY.md, etc.)
96
- - Updating ROADMAP.md (removing section, renumbering all phase references, updating dependencies)
97
- - Updating STATE.md (decrementing phase count)
98
-
99
- Extract from result: `removed`, `directory_deleted`, `renamed_directories`, `renamed_files`, `roadmap_updated`, `state_updated`.
100
- </step>
101
-
102
- <step name="commit">
103
- Stage and commit the removal:
104
-
105
- ```bash
106
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "chore: remove phase {target} ({original-phase-name})" --files .planning/
107
- ```
108
-
109
- The commit message preserves the historical record of what was removed.
110
- </step>
111
-
112
- <step name="completion">
113
- Present completion summary:
114
-
115
- ```
116
- Phase {target} ({original-name}) removed.
117
-
118
- Changes:
119
- - Deleted: .planning/phases/{target}-{slug}/
120
- - Renumbered: {N} directories and {M} files
121
- - Updated: ROADMAP.md, STATE.md
122
- - Committed: chore: remove phase {target} ({original-name})
123
-
124
- ---
125
-
126
- ## What's Next
127
-
128
- Would you like to:
129
- - `/ez:progress` — see updated roadmap status
130
- - Continue with current phase
131
- - Review roadmap
132
-
133
- ---
134
- ```
135
- </step>
136
-
137
- </process>
138
-
139
- <anti_patterns>
140
-
141
- - Don't remove completed phases (have SUMMARY.md files) without --force
142
- - Don't remove current or past phases
143
- - Don't manually renumber — use `ez-tools phase remove` which handles all renumbering
144
- - Don't add "removed phase" notes to STATE.md — git commit is the record
145
- - Don't modify completed phase directories
146
- </anti_patterns>
147
-
148
- <success_criteria>
149
- Phase removal is complete when:
150
-
151
- - [ ] Target phase validated as future/unstarted
152
- - [ ] `ez-tools phase remove` executed successfully
153
- - [ ] Changes committed with descriptive message
154
- - [ ] User informed of changes
155
- </success_criteria>
1
+ <purpose>
2
+ Remove an unstarted future phase from the project roadmap, delete its directory, renumber all subsequent phases to maintain a clean linear sequence, and commit the change. The git commit serves as the historical record of removal.
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="parse_arguments">
12
+ Parse the command arguments:
13
+ - Argument is the phase number to remove (integer or decimal)
14
+ - Example: `/ez:remove-phase 17` → phase = 17
15
+ - Example: `/ez:remove-phase 16.1` → phase = 16.1
16
+
17
+ If no argument provided:
18
+
19
+ ```
20
+ ERROR: Phase number required
21
+ Usage: /ez:remove-phase <phase-number>
22
+ Example: /ez:remove-phase 17
23
+ ```
24
+
25
+ Exit.
26
+ </step>
27
+
28
+ <step name="init_context">
29
+ Load phase operation context:
30
+
31
+ ```bash
32
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init phase-op "${target}")
33
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
34
+ ```
35
+
36
+ Extract: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
37
+
38
+ Also read STATE.md and ROADMAP.md content for parsing current position.
39
+ </step>
40
+
41
+ <step name="validate_future_phase">
42
+ Verify the phase is a future phase (not started):
43
+
44
+ 1. Compare target phase to current phase from STATE.md
45
+ 2. Target must be > current phase number
46
+
47
+ If target <= current phase:
48
+
49
+ ```
50
+ ERROR: Cannot remove Phase {target}
51
+
52
+ Only future phases can be removed:
53
+ - Current phase: {current}
54
+ - Phase {target} is current or completed
55
+
56
+ To abandon current work, use /ez:pause-work instead.
57
+ ```
58
+
59
+ Exit.
60
+ </step>
61
+
62
+ <step name="confirm_removal">
63
+ Present removal summary and confirm:
64
+
65
+ ```
66
+ Removing Phase {target}: {Name}
67
+
68
+ This will:
69
+ - Delete: .planning/phases/{target}-{slug}/
70
+ - Renumber all subsequent phases
71
+ - Update: ROADMAP.md, STATE.md
72
+
73
+ Proceed? (y/n)
74
+ ```
75
+
76
+ Wait for confirmation.
77
+ </step>
78
+
79
+ <step name="execute_removal">
80
+ **Delegate the entire removal operation to ez-tools:**
81
+
82
+ ```bash
83
+ RESULT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase remove "${target}")
84
+ ```
85
+
86
+ If the phase has executed plans (SUMMARY.md files), ez-tools will error. Use `--force` only if the user confirms:
87
+
88
+ ```bash
89
+ RESULT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" phase remove "${target}" --force)
90
+ ```
91
+
92
+ The CLI handles:
93
+ - Deleting the phase directory
94
+ - Renumbering all subsequent directories (in reverse order to avoid conflicts)
95
+ - Renaming all files inside renumbered directories (PLAN.md, SUMMARY.md, etc.)
96
+ - Updating ROADMAP.md (removing section, renumbering all phase references, updating dependencies)
97
+ - Updating STATE.md (decrementing phase count)
98
+
99
+ Extract from result: `removed`, `directory_deleted`, `renamed_directories`, `renamed_files`, `roadmap_updated`, `state_updated`.
100
+ </step>
101
+
102
+ <step name="commit">
103
+ Stage and commit the removal:
104
+
105
+ ```bash
106
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "chore: remove phase {target} ({original-phase-name})" --files .planning/
107
+ ```
108
+
109
+ The commit message preserves the historical record of what was removed.
110
+ </step>
111
+
112
+ <step name="completion">
113
+ Present completion summary:
114
+
115
+ ```
116
+ Phase {target} ({original-name}) removed.
117
+
118
+ Changes:
119
+ - Deleted: .planning/phases/{target}-{slug}/
120
+ - Renumbered: {N} directories and {M} files
121
+ - Updated: ROADMAP.md, STATE.md
122
+ - Committed: chore: remove phase {target} ({original-name})
123
+
124
+ ---
125
+
126
+ ## What's Next
127
+
128
+ Would you like to:
129
+ - `/ez:progress` — see updated roadmap status
130
+ - Continue with current phase
131
+ - Review roadmap
132
+
133
+ ---
134
+ ```
135
+ </step>
136
+
137
+ </process>
138
+
139
+ <anti_patterns>
140
+
141
+ - Don't remove completed phases (have SUMMARY.md files) without --force
142
+ - Don't remove current or past phases
143
+ - Don't manually renumber — use `ez-tools phase remove` which handles all renumbering
144
+ - Don't add "removed phase" notes to STATE.md — git commit is the record
145
+ - Don't modify completed phase directories
146
+ </anti_patterns>
147
+
148
+ <success_criteria>
149
+ Phase removal is complete when:
150
+
151
+ - [ ] Target phase validated as future/unstarted
152
+ - [ ] `ez-tools phase remove` executed successfully
153
+ - [ ] Changes committed with descriptive message
154
+ - [ ] User informed of changes
155
+ </success_criteria>