@howlil/ez-agents 2.0.0 → 3.0.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 (145) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +157 -110
  3. package/README.zh-CN.md +84 -84
  4. package/agents/ez-plan-checker.md +2 -2
  5. package/agents/ez-research-synthesizer.md +1 -1
  6. package/agents/ez-ui-auditor.md +0 -2
  7. package/agents/ez-ui-checker.md +2 -4
  8. package/agents/ez-ui-researcher.md +0 -2
  9. package/agents/ez-verifier.md +1 -1
  10. package/bin/install.js +211 -211
  11. package/commands/ez/debug.md +1 -1
  12. package/commands/ez/map-codebase.md +1 -1
  13. package/commands/ez/reapply-patches.md +3 -3
  14. package/commands/ez/research-phase.md +1 -1
  15. package/{get-shit-done → ez-agents}/bin/ez-tools.cjs +1 -1
  16. package/{get-shit-done → ez-agents}/bin/lib/assistant-adapter.cjs +205 -205
  17. package/{get-shit-done → ez-agents}/bin/lib/audit-exec.cjs +150 -150
  18. package/{get-shit-done → ez-agents}/bin/lib/auth.cjs +175 -175
  19. package/{get-shit-done → ez-agents}/bin/lib/circuit-breaker.cjs +118 -118
  20. package/{get-shit-done → ez-agents}/bin/lib/commands.cjs +666 -666
  21. package/{get-shit-done → ez-agents}/bin/lib/config.cjs +183 -183
  22. package/{get-shit-done → ez-agents}/bin/lib/core.cjs +495 -495
  23. package/{get-shit-done → ez-agents}/bin/lib/file-lock.cjs +236 -236
  24. package/{get-shit-done → ez-agents}/bin/lib/frontmatter.cjs +299 -299
  25. package/{get-shit-done → ez-agents}/bin/lib/fs-utils.cjs +153 -153
  26. package/{get-shit-done → ez-agents}/bin/lib/git-utils.cjs +203 -203
  27. package/{get-shit-done → ez-agents}/bin/lib/health-check.cjs +163 -163
  28. package/{get-shit-done → ez-agents}/bin/lib/index.cjs +113 -113
  29. package/{get-shit-done → ez-agents}/bin/lib/init.cjs +710 -710
  30. package/{get-shit-done → ez-agents}/bin/lib/logger.cjs +117 -117
  31. package/{get-shit-done → ez-agents}/bin/lib/milestone.cjs +241 -241
  32. package/{get-shit-done → ez-agents}/bin/lib/model-provider.cjs +146 -146
  33. package/{get-shit-done → ez-agents}/bin/lib/phase.cjs +908 -908
  34. package/{get-shit-done → ez-agents}/bin/lib/retry.cjs +119 -119
  35. package/{get-shit-done → ez-agents}/bin/lib/roadmap.cjs +305 -305
  36. package/{get-shit-done → ez-agents}/bin/lib/safe-exec.cjs +128 -128
  37. package/{get-shit-done → ez-agents}/bin/lib/safe-path.cjs +130 -130
  38. package/{get-shit-done → ez-agents}/bin/lib/state.cjs +721 -721
  39. package/{get-shit-done → ez-agents}/bin/lib/temp-file.cjs +239 -239
  40. package/{get-shit-done → ez-agents}/bin/lib/template.cjs +222 -222
  41. package/{get-shit-done → ez-agents}/bin/lib/test-file-lock.cjs +112 -112
  42. package/{get-shit-done → ez-agents}/bin/lib/test-graceful.cjs +93 -93
  43. package/{get-shit-done → ez-agents}/bin/lib/test-logger.cjs +60 -60
  44. package/{get-shit-done → ez-agents}/bin/lib/test-safe-exec.cjs +38 -38
  45. package/{get-shit-done → ez-agents}/bin/lib/test-safe-path.cjs +33 -33
  46. package/{get-shit-done → ez-agents}/bin/lib/test-temp-file.cjs +125 -125
  47. package/{get-shit-done → ez-agents}/bin/lib/timeout-exec.cjs +62 -62
  48. package/{get-shit-done → ez-agents}/bin/lib/verify.cjs +820 -820
  49. package/{get-shit-done → ez-agents}/references/checkpoints.md +776 -776
  50. package/{get-shit-done → ez-agents}/references/questioning.md +162 -162
  51. package/{get-shit-done → ez-agents}/references/tdd.md +263 -263
  52. package/{get-shit-done → ez-agents}/templates/codebase/concerns.md +310 -310
  53. package/{get-shit-done → ez-agents}/templates/codebase/conventions.md +307 -307
  54. package/{get-shit-done → ez-agents}/templates/codebase/integrations.md +280 -280
  55. package/{get-shit-done → ez-agents}/templates/codebase/stack.md +186 -186
  56. package/{get-shit-done → ez-agents}/templates/codebase/testing.md +480 -480
  57. package/{get-shit-done → ez-agents}/templates/config.json +37 -37
  58. package/{get-shit-done → ez-agents}/templates/continue-here.md +78 -78
  59. package/{get-shit-done → ez-agents}/templates/milestone-archive.md +123 -123
  60. package/{get-shit-done → ez-agents}/templates/milestone.md +115 -115
  61. package/{get-shit-done → ez-agents}/templates/requirements.md +231 -231
  62. package/{get-shit-done → ez-agents}/templates/research-project/ARCHITECTURE.md +204 -204
  63. package/{get-shit-done → ez-agents}/templates/research-project/FEATURES.md +147 -147
  64. package/{get-shit-done → ez-agents}/templates/research-project/PITFALLS.md +200 -200
  65. package/{get-shit-done → ez-agents}/templates/research-project/STACK.md +120 -120
  66. package/{get-shit-done → ez-agents}/templates/research-project/SUMMARY.md +170 -170
  67. package/{get-shit-done → ez-agents}/templates/retrospective.md +54 -54
  68. package/{get-shit-done → ez-agents}/templates/roadmap.md +202 -202
  69. package/{get-shit-done → ez-agents}/templates/summary-minimal.md +41 -41
  70. package/{get-shit-done → ez-agents}/templates/summary-standard.md +48 -48
  71. package/{get-shit-done → ez-agents}/templates/summary.md +248 -248
  72. package/{get-shit-done → ez-agents}/templates/user-setup.md +311 -311
  73. package/{get-shit-done → ez-agents}/templates/verification-report.md +322 -322
  74. package/{get-shit-done → ez-agents}/workflows/add-phase.md +112 -112
  75. package/{get-shit-done → ez-agents}/workflows/add-tests.md +351 -351
  76. package/{get-shit-done → ez-agents}/workflows/add-todo.md +158 -158
  77. package/{get-shit-done → ez-agents}/workflows/audit-milestone.md +332 -332
  78. package/{get-shit-done → ez-agents}/workflows/autonomous.md +743 -743
  79. package/{get-shit-done → ez-agents}/workflows/check-todos.md +177 -177
  80. package/{get-shit-done → ez-agents}/workflows/cleanup.md +152 -152
  81. package/{get-shit-done → ez-agents}/workflows/complete-milestone.md +766 -766
  82. package/ez-agents/workflows/debug.md +0 -0
  83. package/{get-shit-done → ez-agents}/workflows/diagnose-issues.md +219 -219
  84. package/{get-shit-done → ez-agents}/workflows/discovery-phase.md +289 -289
  85. package/{get-shit-done → ez-agents}/workflows/discuss-phase.md +762 -762
  86. package/{get-shit-done → ez-agents}/workflows/execute-phase.md +468 -468
  87. package/{get-shit-done → ez-agents}/workflows/execute-plan.md +483 -483
  88. package/{get-shit-done → ez-agents}/workflows/health.md +159 -159
  89. package/{get-shit-done → ez-agents}/workflows/help.md +492 -492
  90. package/{get-shit-done → ez-agents}/workflows/insert-phase.md +130 -130
  91. package/{get-shit-done → ez-agents}/workflows/list-phase-assumptions.md +178 -178
  92. package/{get-shit-done → ez-agents}/workflows/map-codebase.md +316 -316
  93. package/{get-shit-done → ez-agents}/workflows/new-milestone.md +384 -384
  94. package/{get-shit-done → ez-agents}/workflows/new-project.md +1111 -1111
  95. package/{get-shit-done → ez-agents}/workflows/node-repair.md +92 -92
  96. package/{get-shit-done → ez-agents}/workflows/pause-work.md +122 -122
  97. package/{get-shit-done → ez-agents}/workflows/plan-milestone-gaps.md +274 -274
  98. package/{get-shit-done → ez-agents}/workflows/plan-phase.md +651 -651
  99. package/{get-shit-done → ez-agents}/workflows/progress.md +382 -382
  100. package/{get-shit-done → ez-agents}/workflows/quick.md +610 -610
  101. package/{get-shit-done → ez-agents}/workflows/remove-phase.md +155 -155
  102. package/{get-shit-done → ez-agents}/workflows/research-phase.md +74 -74
  103. package/{get-shit-done → ez-agents}/workflows/resume-project.md +307 -307
  104. package/{get-shit-done → ez-agents}/workflows/set-profile.md +81 -81
  105. package/{get-shit-done → ez-agents}/workflows/settings.md +242 -242
  106. package/{get-shit-done → ez-agents}/workflows/stats.md +57 -57
  107. package/{get-shit-done → ez-agents}/workflows/transition.md +544 -544
  108. package/{get-shit-done → ez-agents}/workflows/ui-phase.md +290 -290
  109. package/{get-shit-done → ez-agents}/workflows/ui-review.md +157 -157
  110. package/{get-shit-done → ez-agents}/workflows/update.md +320 -320
  111. package/{get-shit-done → ez-agents}/workflows/validate-phase.md +167 -167
  112. package/{get-shit-done → ez-agents}/workflows/verify-phase.md +243 -243
  113. package/{get-shit-done → ez-agents}/workflows/verify-work.md +5 -5
  114. package/hooks/dist/ez-check-update.js +81 -0
  115. package/hooks/dist/ez-context-monitor.js +141 -0
  116. package/hooks/dist/ez-statusline.js +115 -0
  117. package/package.json +13 -3
  118. package/scripts/build-hooks.js +43 -43
  119. package/scripts/run-tests.cjs +29 -29
  120. /package/{get-shit-done → ez-agents}/references/continuation-format.md +0 -0
  121. /package/{get-shit-done → ez-agents}/references/decimal-phase-calculation.md +0 -0
  122. /package/{get-shit-done → ez-agents}/references/git-integration.md +0 -0
  123. /package/{get-shit-done → ez-agents}/references/git-planning-commit.md +0 -0
  124. /package/{get-shit-done → ez-agents}/references/model-profile-resolution.md +0 -0
  125. /package/{get-shit-done → ez-agents}/references/model-profiles.md +0 -0
  126. /package/{get-shit-done → ez-agents}/references/phase-argument-parsing.md +0 -0
  127. /package/{get-shit-done → ez-agents}/references/planning-config.md +0 -0
  128. /package/{get-shit-done → ez-agents}/references/ui-brand.md +0 -0
  129. /package/{get-shit-done → ez-agents}/references/verification-patterns.md +0 -0
  130. /package/{get-shit-done → ez-agents}/templates/DEBUG.md +0 -0
  131. /package/{get-shit-done → ez-agents}/templates/UAT.md +0 -0
  132. /package/{get-shit-done → ez-agents}/templates/UI-SPEC.md +0 -0
  133. /package/{get-shit-done → ez-agents}/templates/VALIDATION.md +0 -0
  134. /package/{get-shit-done → ez-agents}/templates/codebase/architecture.md +0 -0
  135. /package/{get-shit-done → ez-agents}/templates/codebase/structure.md +0 -0
  136. /package/{get-shit-done → ez-agents}/templates/context.md +0 -0
  137. /package/{get-shit-done → ez-agents}/templates/copilot-instructions.md +0 -0
  138. /package/{get-shit-done → ez-agents}/templates/debug-subagent-prompt.md +0 -0
  139. /package/{get-shit-done → ez-agents}/templates/discovery.md +0 -0
  140. /package/{get-shit-done → ez-agents}/templates/phase-prompt.md +0 -0
  141. /package/{get-shit-done → ez-agents}/templates/planner-subagent-prompt.md +0 -0
  142. /package/{get-shit-done → ez-agents}/templates/project.md +0 -0
  143. /package/{get-shit-done → ez-agents}/templates/research.md +0 -0
  144. /package/{get-shit-done → ez-agents}/templates/state.md +0 -0
  145. /package/{get-shit-done → ez-agents}/templates/summary-complex.md +0 -0
@@ -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 gsd-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), gsd-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 `gsd-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
- - [ ] `gsd-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>
@@ -1,74 +1,74 @@
1
- <purpose>
2
- Research how to implement a phase. Spawns gsd-phase-researcher with phase context.
3
-
4
- Standalone research command. For most workflows, use `/ez:plan-phase` which integrates research automatically.
5
- </purpose>
6
-
7
- <process>
8
-
9
- ## Step 0: Resolve Model Profile
10
-
11
- @~/.claude/get-shit-done/references/model-profile-resolution.md
12
-
13
- Resolve model for:
14
- - `gsd-phase-researcher`
15
-
16
- ## Step 1: Normalize and Validate Phase
17
-
18
- @~/.claude/get-shit-done/references/phase-argument-parsing.md
19
-
20
- ```bash
21
- PHASE_INFO=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}")
22
- ```
23
-
24
- If `found` is false: Error and exit.
25
-
26
- ## Step 2: Check Existing Research
27
-
28
- ```bash
29
- ls .planning/phases/${PHASE}-*/RESEARCH.md 2>/dev/null
30
- ```
31
-
32
- If exists: Offer update/view/skip options.
33
-
34
- ## Step 3: Gather Phase Context
35
-
36
- ```bash
37
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init phase-op "${PHASE}")
38
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
39
- # Extract: phase_dir, padded_phase, phase_number, state_path, requirements_path, context_path
40
- ```
41
-
42
- ## Step 4: Spawn Researcher
43
-
44
- ```
45
- Task(
46
- prompt="<objective>
47
- Research implementation approach for Phase {phase}: {name}
48
- </objective>
49
-
50
- <files_to_read>
51
- - {context_path} (USER DECISIONS from /ez:discuss-phase)
52
- - {requirements_path} (Project requirements)
53
- - {state_path} (Project decisions and history)
54
- </files_to_read>
55
-
56
- <additional_context>
57
- Phase description: {description}
58
- </additional_context>
59
-
60
- <output>
61
- Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
62
- </output>",
63
- subagent_type="ez-phase-researcher",
64
- model="{researcher_model}"
65
- )
66
- ```
67
-
68
- ## Step 5: Handle Return
69
-
70
- - `## RESEARCH COMPLETE` — Display summary, offer: Plan/Dig deeper/Review/Done
71
- - `## CHECKPOINT REACHED` — Present to user, spawn continuation
72
- - `## RESEARCH INCONCLUSIVE` — Show attempts, offer: Add context/Try different mode/Manual
73
-
74
- </process>
1
+ <purpose>
2
+ Research how to implement a phase. Spawns ez-phase-researcher with phase context.
3
+
4
+ Standalone research command. For most workflows, use `/ez:plan-phase` which integrates research automatically.
5
+ </purpose>
6
+
7
+ <process>
8
+
9
+ ## Step 0: Resolve Model Profile
10
+
11
+ @~/.claude/ez-agents/references/model-profile-resolution.md
12
+
13
+ Resolve model for:
14
+ - `ez-phase-researcher`
15
+
16
+ ## Step 1: Normalize and Validate Phase
17
+
18
+ @~/.claude/ez-agents/references/phase-argument-parsing.md
19
+
20
+ ```bash
21
+ PHASE_INFO=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}")
22
+ ```
23
+
24
+ If `found` is false: Error and exit.
25
+
26
+ ## Step 2: Check Existing Research
27
+
28
+ ```bash
29
+ ls .planning/phases/${PHASE}-*/RESEARCH.md 2>/dev/null
30
+ ```
31
+
32
+ If exists: Offer update/view/skip options.
33
+
34
+ ## Step 3: Gather Phase Context
35
+
36
+ ```bash
37
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init phase-op "${PHASE}")
38
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
39
+ # Extract: phase_dir, padded_phase, phase_number, state_path, requirements_path, context_path
40
+ ```
41
+
42
+ ## Step 4: Spawn Researcher
43
+
44
+ ```
45
+ Task(
46
+ prompt="<objective>
47
+ Research implementation approach for Phase {phase}: {name}
48
+ </objective>
49
+
50
+ <files_to_read>
51
+ - {context_path} (USER DECISIONS from /ez:discuss-phase)
52
+ - {requirements_path} (Project requirements)
53
+ - {state_path} (Project decisions and history)
54
+ </files_to_read>
55
+
56
+ <additional_context>
57
+ Phase description: {description}
58
+ </additional_context>
59
+
60
+ <output>
61
+ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
62
+ </output>",
63
+ subagent_type="ez-phase-researcher",
64
+ model="{researcher_model}"
65
+ )
66
+ ```
67
+
68
+ ## Step 5: Handle Return
69
+
70
+ - `## RESEARCH COMPLETE` — Display summary, offer: Plan/Dig deeper/Review/Done
71
+ - `## CHECKPOINT REACHED` — Present to user, spawn continuation
72
+ - `## RESEARCH INCONCLUSIVE` — Show attempts, offer: Add context/Try different mode/Manual
73
+
74
+ </process>