@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.
- package/LICENSE +21 -21
- package/README.md +157 -110
- package/README.zh-CN.md +84 -84
- package/agents/ez-plan-checker.md +2 -2
- package/agents/ez-research-synthesizer.md +1 -1
- package/agents/ez-ui-auditor.md +0 -2
- package/agents/ez-ui-checker.md +2 -4
- package/agents/ez-ui-researcher.md +0 -2
- package/agents/ez-verifier.md +1 -1
- package/bin/install.js +211 -211
- package/commands/ez/debug.md +1 -1
- package/commands/ez/map-codebase.md +1 -1
- package/commands/ez/reapply-patches.md +3 -3
- package/commands/ez/research-phase.md +1 -1
- package/{get-shit-done → ez-agents}/bin/ez-tools.cjs +1 -1
- package/{get-shit-done → ez-agents}/bin/lib/assistant-adapter.cjs +205 -205
- package/{get-shit-done → ez-agents}/bin/lib/audit-exec.cjs +150 -150
- package/{get-shit-done → ez-agents}/bin/lib/auth.cjs +175 -175
- package/{get-shit-done → ez-agents}/bin/lib/circuit-breaker.cjs +118 -118
- package/{get-shit-done → ez-agents}/bin/lib/commands.cjs +666 -666
- package/{get-shit-done → ez-agents}/bin/lib/config.cjs +183 -183
- package/{get-shit-done → ez-agents}/bin/lib/core.cjs +495 -495
- package/{get-shit-done → ez-agents}/bin/lib/file-lock.cjs +236 -236
- package/{get-shit-done → ez-agents}/bin/lib/frontmatter.cjs +299 -299
- package/{get-shit-done → ez-agents}/bin/lib/fs-utils.cjs +153 -153
- package/{get-shit-done → ez-agents}/bin/lib/git-utils.cjs +203 -203
- package/{get-shit-done → ez-agents}/bin/lib/health-check.cjs +163 -163
- package/{get-shit-done → ez-agents}/bin/lib/index.cjs +113 -113
- package/{get-shit-done → ez-agents}/bin/lib/init.cjs +710 -710
- package/{get-shit-done → ez-agents}/bin/lib/logger.cjs +117 -117
- package/{get-shit-done → ez-agents}/bin/lib/milestone.cjs +241 -241
- package/{get-shit-done → ez-agents}/bin/lib/model-provider.cjs +146 -146
- package/{get-shit-done → ez-agents}/bin/lib/phase.cjs +908 -908
- package/{get-shit-done → ez-agents}/bin/lib/retry.cjs +119 -119
- package/{get-shit-done → ez-agents}/bin/lib/roadmap.cjs +305 -305
- package/{get-shit-done → ez-agents}/bin/lib/safe-exec.cjs +128 -128
- package/{get-shit-done → ez-agents}/bin/lib/safe-path.cjs +130 -130
- package/{get-shit-done → ez-agents}/bin/lib/state.cjs +721 -721
- package/{get-shit-done → ez-agents}/bin/lib/temp-file.cjs +239 -239
- package/{get-shit-done → ez-agents}/bin/lib/template.cjs +222 -222
- package/{get-shit-done → ez-agents}/bin/lib/test-file-lock.cjs +112 -112
- package/{get-shit-done → ez-agents}/bin/lib/test-graceful.cjs +93 -93
- package/{get-shit-done → ez-agents}/bin/lib/test-logger.cjs +60 -60
- package/{get-shit-done → ez-agents}/bin/lib/test-safe-exec.cjs +38 -38
- package/{get-shit-done → ez-agents}/bin/lib/test-safe-path.cjs +33 -33
- package/{get-shit-done → ez-agents}/bin/lib/test-temp-file.cjs +125 -125
- package/{get-shit-done → ez-agents}/bin/lib/timeout-exec.cjs +62 -62
- package/{get-shit-done → ez-agents}/bin/lib/verify.cjs +820 -820
- package/{get-shit-done → ez-agents}/references/checkpoints.md +776 -776
- package/{get-shit-done → ez-agents}/references/questioning.md +162 -162
- package/{get-shit-done → ez-agents}/references/tdd.md +263 -263
- package/{get-shit-done → ez-agents}/templates/codebase/concerns.md +310 -310
- package/{get-shit-done → ez-agents}/templates/codebase/conventions.md +307 -307
- package/{get-shit-done → ez-agents}/templates/codebase/integrations.md +280 -280
- package/{get-shit-done → ez-agents}/templates/codebase/stack.md +186 -186
- package/{get-shit-done → ez-agents}/templates/codebase/testing.md +480 -480
- package/{get-shit-done → ez-agents}/templates/config.json +37 -37
- package/{get-shit-done → ez-agents}/templates/continue-here.md +78 -78
- package/{get-shit-done → ez-agents}/templates/milestone-archive.md +123 -123
- package/{get-shit-done → ez-agents}/templates/milestone.md +115 -115
- package/{get-shit-done → ez-agents}/templates/requirements.md +231 -231
- package/{get-shit-done → ez-agents}/templates/research-project/ARCHITECTURE.md +204 -204
- package/{get-shit-done → ez-agents}/templates/research-project/FEATURES.md +147 -147
- package/{get-shit-done → ez-agents}/templates/research-project/PITFALLS.md +200 -200
- package/{get-shit-done → ez-agents}/templates/research-project/STACK.md +120 -120
- package/{get-shit-done → ez-agents}/templates/research-project/SUMMARY.md +170 -170
- package/{get-shit-done → ez-agents}/templates/retrospective.md +54 -54
- package/{get-shit-done → ez-agents}/templates/roadmap.md +202 -202
- package/{get-shit-done → ez-agents}/templates/summary-minimal.md +41 -41
- package/{get-shit-done → ez-agents}/templates/summary-standard.md +48 -48
- package/{get-shit-done → ez-agents}/templates/summary.md +248 -248
- package/{get-shit-done → ez-agents}/templates/user-setup.md +311 -311
- package/{get-shit-done → ez-agents}/templates/verification-report.md +322 -322
- package/{get-shit-done → ez-agents}/workflows/add-phase.md +112 -112
- package/{get-shit-done → ez-agents}/workflows/add-tests.md +351 -351
- package/{get-shit-done → ez-agents}/workflows/add-todo.md +158 -158
- package/{get-shit-done → ez-agents}/workflows/audit-milestone.md +332 -332
- package/{get-shit-done → ez-agents}/workflows/autonomous.md +743 -743
- package/{get-shit-done → ez-agents}/workflows/check-todos.md +177 -177
- package/{get-shit-done → ez-agents}/workflows/cleanup.md +152 -152
- package/{get-shit-done → ez-agents}/workflows/complete-milestone.md +766 -766
- package/ez-agents/workflows/debug.md +0 -0
- package/{get-shit-done → ez-agents}/workflows/diagnose-issues.md +219 -219
- package/{get-shit-done → ez-agents}/workflows/discovery-phase.md +289 -289
- package/{get-shit-done → ez-agents}/workflows/discuss-phase.md +762 -762
- package/{get-shit-done → ez-agents}/workflows/execute-phase.md +468 -468
- package/{get-shit-done → ez-agents}/workflows/execute-plan.md +483 -483
- package/{get-shit-done → ez-agents}/workflows/health.md +159 -159
- package/{get-shit-done → ez-agents}/workflows/help.md +492 -492
- package/{get-shit-done → ez-agents}/workflows/insert-phase.md +130 -130
- package/{get-shit-done → ez-agents}/workflows/list-phase-assumptions.md +178 -178
- package/{get-shit-done → ez-agents}/workflows/map-codebase.md +316 -316
- package/{get-shit-done → ez-agents}/workflows/new-milestone.md +384 -384
- package/{get-shit-done → ez-agents}/workflows/new-project.md +1111 -1111
- package/{get-shit-done → ez-agents}/workflows/node-repair.md +92 -92
- package/{get-shit-done → ez-agents}/workflows/pause-work.md +122 -122
- package/{get-shit-done → ez-agents}/workflows/plan-milestone-gaps.md +274 -274
- package/{get-shit-done → ez-agents}/workflows/plan-phase.md +651 -651
- package/{get-shit-done → ez-agents}/workflows/progress.md +382 -382
- package/{get-shit-done → ez-agents}/workflows/quick.md +610 -610
- package/{get-shit-done → ez-agents}/workflows/remove-phase.md +155 -155
- package/{get-shit-done → ez-agents}/workflows/research-phase.md +74 -74
- package/{get-shit-done → ez-agents}/workflows/resume-project.md +307 -307
- package/{get-shit-done → ez-agents}/workflows/set-profile.md +81 -81
- package/{get-shit-done → ez-agents}/workflows/settings.md +242 -242
- package/{get-shit-done → ez-agents}/workflows/stats.md +57 -57
- package/{get-shit-done → ez-agents}/workflows/transition.md +544 -544
- package/{get-shit-done → ez-agents}/workflows/ui-phase.md +290 -290
- package/{get-shit-done → ez-agents}/workflows/ui-review.md +157 -157
- package/{get-shit-done → ez-agents}/workflows/update.md +320 -320
- package/{get-shit-done → ez-agents}/workflows/validate-phase.md +167 -167
- package/{get-shit-done → ez-agents}/workflows/verify-phase.md +243 -243
- package/{get-shit-done → ez-agents}/workflows/verify-work.md +5 -5
- package/hooks/dist/ez-check-update.js +81 -0
- package/hooks/dist/ez-context-monitor.js +141 -0
- package/hooks/dist/ez-statusline.js +115 -0
- package/package.json +13 -3
- package/scripts/build-hooks.js +43 -43
- package/scripts/run-tests.cjs +29 -29
- /package/{get-shit-done → ez-agents}/references/continuation-format.md +0 -0
- /package/{get-shit-done → ez-agents}/references/decimal-phase-calculation.md +0 -0
- /package/{get-shit-done → ez-agents}/references/git-integration.md +0 -0
- /package/{get-shit-done → ez-agents}/references/git-planning-commit.md +0 -0
- /package/{get-shit-done → ez-agents}/references/model-profile-resolution.md +0 -0
- /package/{get-shit-done → ez-agents}/references/model-profiles.md +0 -0
- /package/{get-shit-done → ez-agents}/references/phase-argument-parsing.md +0 -0
- /package/{get-shit-done → ez-agents}/references/planning-config.md +0 -0
- /package/{get-shit-done → ez-agents}/references/ui-brand.md +0 -0
- /package/{get-shit-done → ez-agents}/references/verification-patterns.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/DEBUG.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/UAT.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/UI-SPEC.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/VALIDATION.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/codebase/architecture.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/codebase/structure.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/context.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/copilot-instructions.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/debug-subagent-prompt.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/discovery.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/phase-prompt.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/planner-subagent-prompt.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/project.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/research.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/state.md +0 -0
- /package/{get-shit-done → ez-agents}/templates/summary-complex.md +0 -0
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Autonomous repair operator for failed task verification. Invoked by execute-plan when a task fails its done-criteria. Proposes and attempts structured fixes before escalating to the user.
|
|
3
|
-
</purpose>
|
|
4
|
-
|
|
5
|
-
<inputs>
|
|
6
|
-
- FAILED_TASK: Task number, name, and done-criteria from the plan
|
|
7
|
-
- ERROR: What verification produced — actual result vs expected
|
|
8
|
-
- PLAN_CONTEXT: Adjacent tasks and phase goal (for constraint awareness)
|
|
9
|
-
- REPAIR_BUDGET: Max repair attempts remaining (default: 2)
|
|
10
|
-
</inputs>
|
|
11
|
-
|
|
12
|
-
<repair_directive>
|
|
13
|
-
Analyze the failure and choose exactly one repair strategy:
|
|
14
|
-
|
|
15
|
-
**RETRY** — The approach was right but execution failed. Try again with a concrete adjustment.
|
|
16
|
-
- Use when: command error, missing dependency, wrong path, env issue, transient failure
|
|
17
|
-
- Output: `RETRY: [specific adjustment to make before retrying]`
|
|
18
|
-
|
|
19
|
-
**DECOMPOSE** — The task is too coarse. Break it into smaller verifiable sub-steps.
|
|
20
|
-
- Use when: done-criteria covers multiple concerns, implementation gaps are structural
|
|
21
|
-
- Output: `DECOMPOSE: [sub-task 1] | [sub-task 2] | ...` (max 3 sub-tasks)
|
|
22
|
-
- Sub-tasks must each have a single verifiable outcome
|
|
23
|
-
|
|
24
|
-
**PRUNE** — The task is infeasible given current constraints. Skip with justification.
|
|
25
|
-
- Use when: prerequisite missing and not fixable here, out of scope, contradicts an earlier decision
|
|
26
|
-
- Output: `PRUNE: [one-sentence justification]`
|
|
27
|
-
|
|
28
|
-
**ESCALATE** — Repair budget exhausted, or this is an architectural decision (Rule 4).
|
|
29
|
-
- Use when: RETRY failed more than once with different approaches, or fix requires structural change
|
|
30
|
-
- Output: `ESCALATE: [what was tried] | [what decision is needed]`
|
|
31
|
-
</repair_directive>
|
|
32
|
-
|
|
33
|
-
<process>
|
|
34
|
-
|
|
35
|
-
<step name="diagnose">
|
|
36
|
-
Read the error and done-criteria carefully. Ask:
|
|
37
|
-
1. Is this a transient/environmental issue? → RETRY
|
|
38
|
-
2. Is the task verifiably too broad? → DECOMPOSE
|
|
39
|
-
3. Is a prerequisite genuinely missing and unfixable in scope? → PRUNE
|
|
40
|
-
4. Has RETRY already been attempted with this task? Check REPAIR_BUDGET. If 0 → ESCALATE
|
|
41
|
-
</step>
|
|
42
|
-
|
|
43
|
-
<step name="execute_retry">
|
|
44
|
-
If RETRY:
|
|
45
|
-
1. Apply the specific adjustment stated in the directive
|
|
46
|
-
2. Re-run the task implementation
|
|
47
|
-
3. Re-run verification
|
|
48
|
-
4. If passes → continue normally, log `[Node Repair - RETRY] Task [X]: [adjustment made]`
|
|
49
|
-
5. If fails again → decrement REPAIR_BUDGET, re-invoke node-repair with updated context
|
|
50
|
-
</step>
|
|
51
|
-
|
|
52
|
-
<step name="execute_decompose">
|
|
53
|
-
If DECOMPOSE:
|
|
54
|
-
1. Replace the failed task inline with the sub-tasks (do not modify PLAN.md on disk)
|
|
55
|
-
2. Execute sub-tasks sequentially, each with its own verification
|
|
56
|
-
3. If all sub-tasks pass → treat original task as succeeded, log `[Node Repair - DECOMPOSE] Task [X] → [N] sub-tasks`
|
|
57
|
-
4. If a sub-task fails → re-invoke node-repair for that sub-task (REPAIR_BUDGET applies per sub-task)
|
|
58
|
-
</step>
|
|
59
|
-
|
|
60
|
-
<step name="execute_prune">
|
|
61
|
-
If PRUNE:
|
|
62
|
-
1. Mark task as skipped with justification
|
|
63
|
-
2. Log to SUMMARY "Issues Encountered": `[Node Repair - PRUNE] Task [X]: [justification]`
|
|
64
|
-
3. Continue to next task
|
|
65
|
-
</step>
|
|
66
|
-
|
|
67
|
-
<step name="execute_escalate">
|
|
68
|
-
If ESCALATE:
|
|
69
|
-
1. Surface to user via verification_failure_gate with full repair history
|
|
70
|
-
2. Present: what was tried (each RETRY/DECOMPOSE attempt), what the blocker is, options available
|
|
71
|
-
3. Wait for user direction before continuing
|
|
72
|
-
</step>
|
|
73
|
-
|
|
74
|
-
</process>
|
|
75
|
-
|
|
76
|
-
<logging>
|
|
77
|
-
All repair actions must appear in SUMMARY.md under "## Deviations from Plan":
|
|
78
|
-
|
|
79
|
-
| Type | Format |
|
|
80
|
-
|------|--------|
|
|
81
|
-
| RETRY success | `[Node Repair - RETRY] Task X: [adjustment] — resolved` |
|
|
82
|
-
| RETRY fail → ESCALATE | `[Node Repair - RETRY] Task X: [N] attempts exhausted — escalated to user` |
|
|
83
|
-
| DECOMPOSE | `[Node Repair - DECOMPOSE] Task X split into [N] sub-tasks — all passed` |
|
|
84
|
-
| PRUNE | `[Node Repair - PRUNE] Task X skipped: [justification]` |
|
|
85
|
-
</logging>
|
|
86
|
-
|
|
87
|
-
<constraints>
|
|
88
|
-
- REPAIR_BUDGET defaults to 2 per task. Configurable via config.json `workflow.node_repair_budget`.
|
|
89
|
-
- Never modify PLAN.md on disk — decomposed sub-tasks are in-memory only.
|
|
90
|
-
- DECOMPOSE sub-tasks must be more specific than the original, not synonymous rewrites.
|
|
91
|
-
- If config.json `workflow.node_repair` is `false`, skip directly to verification_failure_gate (user retains original behavior).
|
|
92
|
-
</constraints>
|
|
1
|
+
<purpose>
|
|
2
|
+
Autonomous repair operator for failed task verification. Invoked by execute-plan when a task fails its done-criteria. Proposes and attempts structured fixes before escalating to the user.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<inputs>
|
|
6
|
+
- FAILED_TASK: Task number, name, and done-criteria from the plan
|
|
7
|
+
- ERROR: What verification produced — actual result vs expected
|
|
8
|
+
- PLAN_CONTEXT: Adjacent tasks and phase goal (for constraint awareness)
|
|
9
|
+
- REPAIR_BUDGET: Max repair attempts remaining (default: 2)
|
|
10
|
+
</inputs>
|
|
11
|
+
|
|
12
|
+
<repair_directive>
|
|
13
|
+
Analyze the failure and choose exactly one repair strategy:
|
|
14
|
+
|
|
15
|
+
**RETRY** — The approach was right but execution failed. Try again with a concrete adjustment.
|
|
16
|
+
- Use when: command error, missing dependency, wrong path, env issue, transient failure
|
|
17
|
+
- Output: `RETRY: [specific adjustment to make before retrying]`
|
|
18
|
+
|
|
19
|
+
**DECOMPOSE** — The task is too coarse. Break it into smaller verifiable sub-steps.
|
|
20
|
+
- Use when: done-criteria covers multiple concerns, implementation gaps are structural
|
|
21
|
+
- Output: `DECOMPOSE: [sub-task 1] | [sub-task 2] | ...` (max 3 sub-tasks)
|
|
22
|
+
- Sub-tasks must each have a single verifiable outcome
|
|
23
|
+
|
|
24
|
+
**PRUNE** — The task is infeasible given current constraints. Skip with justification.
|
|
25
|
+
- Use when: prerequisite missing and not fixable here, out of scope, contradicts an earlier decision
|
|
26
|
+
- Output: `PRUNE: [one-sentence justification]`
|
|
27
|
+
|
|
28
|
+
**ESCALATE** — Repair budget exhausted, or this is an architectural decision (Rule 4).
|
|
29
|
+
- Use when: RETRY failed more than once with different approaches, or fix requires structural change
|
|
30
|
+
- Output: `ESCALATE: [what was tried] | [what decision is needed]`
|
|
31
|
+
</repair_directive>
|
|
32
|
+
|
|
33
|
+
<process>
|
|
34
|
+
|
|
35
|
+
<step name="diagnose">
|
|
36
|
+
Read the error and done-criteria carefully. Ask:
|
|
37
|
+
1. Is this a transient/environmental issue? → RETRY
|
|
38
|
+
2. Is the task verifiably too broad? → DECOMPOSE
|
|
39
|
+
3. Is a prerequisite genuinely missing and unfixable in scope? → PRUNE
|
|
40
|
+
4. Has RETRY already been attempted with this task? Check REPAIR_BUDGET. If 0 → ESCALATE
|
|
41
|
+
</step>
|
|
42
|
+
|
|
43
|
+
<step name="execute_retry">
|
|
44
|
+
If RETRY:
|
|
45
|
+
1. Apply the specific adjustment stated in the directive
|
|
46
|
+
2. Re-run the task implementation
|
|
47
|
+
3. Re-run verification
|
|
48
|
+
4. If passes → continue normally, log `[Node Repair - RETRY] Task [X]: [adjustment made]`
|
|
49
|
+
5. If fails again → decrement REPAIR_BUDGET, re-invoke node-repair with updated context
|
|
50
|
+
</step>
|
|
51
|
+
|
|
52
|
+
<step name="execute_decompose">
|
|
53
|
+
If DECOMPOSE:
|
|
54
|
+
1. Replace the failed task inline with the sub-tasks (do not modify PLAN.md on disk)
|
|
55
|
+
2. Execute sub-tasks sequentially, each with its own verification
|
|
56
|
+
3. If all sub-tasks pass → treat original task as succeeded, log `[Node Repair - DECOMPOSE] Task [X] → [N] sub-tasks`
|
|
57
|
+
4. If a sub-task fails → re-invoke node-repair for that sub-task (REPAIR_BUDGET applies per sub-task)
|
|
58
|
+
</step>
|
|
59
|
+
|
|
60
|
+
<step name="execute_prune">
|
|
61
|
+
If PRUNE:
|
|
62
|
+
1. Mark task as skipped with justification
|
|
63
|
+
2. Log to SUMMARY "Issues Encountered": `[Node Repair - PRUNE] Task [X]: [justification]`
|
|
64
|
+
3. Continue to next task
|
|
65
|
+
</step>
|
|
66
|
+
|
|
67
|
+
<step name="execute_escalate">
|
|
68
|
+
If ESCALATE:
|
|
69
|
+
1. Surface to user via verification_failure_gate with full repair history
|
|
70
|
+
2. Present: what was tried (each RETRY/DECOMPOSE attempt), what the blocker is, options available
|
|
71
|
+
3. Wait for user direction before continuing
|
|
72
|
+
</step>
|
|
73
|
+
|
|
74
|
+
</process>
|
|
75
|
+
|
|
76
|
+
<logging>
|
|
77
|
+
All repair actions must appear in SUMMARY.md under "## Deviations from Plan":
|
|
78
|
+
|
|
79
|
+
| Type | Format |
|
|
80
|
+
|------|--------|
|
|
81
|
+
| RETRY success | `[Node Repair - RETRY] Task X: [adjustment] — resolved` |
|
|
82
|
+
| RETRY fail → ESCALATE | `[Node Repair - RETRY] Task X: [N] attempts exhausted — escalated to user` |
|
|
83
|
+
| DECOMPOSE | `[Node Repair - DECOMPOSE] Task X split into [N] sub-tasks — all passed` |
|
|
84
|
+
| PRUNE | `[Node Repair - PRUNE] Task X skipped: [justification]` |
|
|
85
|
+
</logging>
|
|
86
|
+
|
|
87
|
+
<constraints>
|
|
88
|
+
- REPAIR_BUDGET defaults to 2 per task. Configurable via config.json `workflow.node_repair_budget`.
|
|
89
|
+
- Never modify PLAN.md on disk — decomposed sub-tasks are in-memory only.
|
|
90
|
+
- DECOMPOSE sub-tasks must be more specific than the original, not synonymous rewrites.
|
|
91
|
+
- If config.json `workflow.node_repair` is `false`, skip directly to verification_failure_gate (user retains original behavior).
|
|
92
|
+
</constraints>
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Create `.continue-here.md` handoff file to preserve complete work state across sessions. Enables seamless resumption with full context restoration.
|
|
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="detect">
|
|
12
|
-
Find current phase directory from most recently modified files:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
# Find most recent phase directory with work
|
|
16
|
-
ls -lt .planning/phases/*/PLAN.md 2>/dev/null | head -1 | grep -oP 'phases/\K[^/]+'
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
If no active phase detected, ask user which phase they're pausing work on.
|
|
20
|
-
</step>
|
|
21
|
-
|
|
22
|
-
<step name="gather">
|
|
23
|
-
**Collect complete state for handoff:**
|
|
24
|
-
|
|
25
|
-
1. **Current position**: Which phase, which plan, which task
|
|
26
|
-
2. **Work completed**: What got done this session
|
|
27
|
-
3. **Work remaining**: What's left in current plan/phase
|
|
28
|
-
4. **Decisions made**: Key decisions and rationale
|
|
29
|
-
5. **Blockers/issues**: Anything stuck
|
|
30
|
-
6. **Mental context**: The approach, next steps, "vibe"
|
|
31
|
-
7. **Files modified**: What's changed but not committed
|
|
32
|
-
|
|
33
|
-
Ask user for clarifications if needed via conversational questions.
|
|
34
|
-
</step>
|
|
35
|
-
|
|
36
|
-
<step name="write">
|
|
37
|
-
**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
|
|
38
|
-
|
|
39
|
-
```markdown
|
|
40
|
-
---
|
|
41
|
-
phase: XX-name
|
|
42
|
-
task: 3
|
|
43
|
-
total_tasks: 7
|
|
44
|
-
status: in_progress
|
|
45
|
-
last_updated: [timestamp from current-timestamp]
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
<current_state>
|
|
49
|
-
[Where exactly are we? Immediate context]
|
|
50
|
-
</current_state>
|
|
51
|
-
|
|
52
|
-
<completed_work>
|
|
53
|
-
|
|
54
|
-
- Task 1: [name] - Done
|
|
55
|
-
- Task 2: [name] - Done
|
|
56
|
-
- Task 3: [name] - In progress, [what's done]
|
|
57
|
-
</completed_work>
|
|
58
|
-
|
|
59
|
-
<remaining_work>
|
|
60
|
-
|
|
61
|
-
- Task 3: [what's left]
|
|
62
|
-
- Task 4: Not started
|
|
63
|
-
- Task 5: Not started
|
|
64
|
-
</remaining_work>
|
|
65
|
-
|
|
66
|
-
<decisions_made>
|
|
67
|
-
|
|
68
|
-
- Decided to use [X] because [reason]
|
|
69
|
-
- Chose [approach] over [alternative] because [reason]
|
|
70
|
-
</decisions_made>
|
|
71
|
-
|
|
72
|
-
<blockers>
|
|
73
|
-
- [Blocker 1]: [status/workaround]
|
|
74
|
-
</blockers>
|
|
75
|
-
|
|
76
|
-
<context>
|
|
77
|
-
[Mental state, what were you thinking, the plan]
|
|
78
|
-
</context>
|
|
79
|
-
|
|
80
|
-
<next_action>
|
|
81
|
-
Start with: [specific first action when resuming]
|
|
82
|
-
</next_action>
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Be specific enough for a fresh Claude to understand immediately.
|
|
86
|
-
|
|
87
|
-
Use `current-timestamp` for last_updated field. You can use init todos (which provides timestamps) or call directly:
|
|
88
|
-
```bash
|
|
89
|
-
timestamp=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" current-timestamp full --raw)
|
|
90
|
-
```
|
|
91
|
-
</step>
|
|
92
|
-
|
|
93
|
-
<step name="commit">
|
|
94
|
-
```bash
|
|
95
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md
|
|
96
|
-
```
|
|
97
|
-
</step>
|
|
98
|
-
|
|
99
|
-
<step name="confirm">
|
|
100
|
-
```
|
|
101
|
-
✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
|
|
102
|
-
|
|
103
|
-
Current state:
|
|
104
|
-
|
|
105
|
-
- Phase: [XX-name]
|
|
106
|
-
- Task: [X] of [Y]
|
|
107
|
-
- Status: [in_progress/blocked]
|
|
108
|
-
- Committed as WIP
|
|
109
|
-
|
|
110
|
-
To resume: /ez:resume-work
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
</step>
|
|
114
|
-
|
|
115
|
-
</process>
|
|
116
|
-
|
|
117
|
-
<success_criteria>
|
|
118
|
-
- [ ] .continue-here.md created in correct phase directory
|
|
119
|
-
- [ ] All sections filled with specific content
|
|
120
|
-
- [ ] Committed as WIP
|
|
121
|
-
- [ ] User knows location and how to resume
|
|
122
|
-
</success_criteria>
|
|
1
|
+
<purpose>
|
|
2
|
+
Create `.continue-here.md` handoff file to preserve complete work state across sessions. Enables seamless resumption with full context restoration.
|
|
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="detect">
|
|
12
|
+
Find current phase directory from most recently modified files:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Find most recent phase directory with work
|
|
16
|
+
ls -lt .planning/phases/*/PLAN.md 2>/dev/null | head -1 | grep -oP 'phases/\K[^/]+'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
If no active phase detected, ask user which phase they're pausing work on.
|
|
20
|
+
</step>
|
|
21
|
+
|
|
22
|
+
<step name="gather">
|
|
23
|
+
**Collect complete state for handoff:**
|
|
24
|
+
|
|
25
|
+
1. **Current position**: Which phase, which plan, which task
|
|
26
|
+
2. **Work completed**: What got done this session
|
|
27
|
+
3. **Work remaining**: What's left in current plan/phase
|
|
28
|
+
4. **Decisions made**: Key decisions and rationale
|
|
29
|
+
5. **Blockers/issues**: Anything stuck
|
|
30
|
+
6. **Mental context**: The approach, next steps, "vibe"
|
|
31
|
+
7. **Files modified**: What's changed but not committed
|
|
32
|
+
|
|
33
|
+
Ask user for clarifications if needed via conversational questions.
|
|
34
|
+
</step>
|
|
35
|
+
|
|
36
|
+
<step name="write">
|
|
37
|
+
**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
---
|
|
41
|
+
phase: XX-name
|
|
42
|
+
task: 3
|
|
43
|
+
total_tasks: 7
|
|
44
|
+
status: in_progress
|
|
45
|
+
last_updated: [timestamp from current-timestamp]
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
<current_state>
|
|
49
|
+
[Where exactly are we? Immediate context]
|
|
50
|
+
</current_state>
|
|
51
|
+
|
|
52
|
+
<completed_work>
|
|
53
|
+
|
|
54
|
+
- Task 1: [name] - Done
|
|
55
|
+
- Task 2: [name] - Done
|
|
56
|
+
- Task 3: [name] - In progress, [what's done]
|
|
57
|
+
</completed_work>
|
|
58
|
+
|
|
59
|
+
<remaining_work>
|
|
60
|
+
|
|
61
|
+
- Task 3: [what's left]
|
|
62
|
+
- Task 4: Not started
|
|
63
|
+
- Task 5: Not started
|
|
64
|
+
</remaining_work>
|
|
65
|
+
|
|
66
|
+
<decisions_made>
|
|
67
|
+
|
|
68
|
+
- Decided to use [X] because [reason]
|
|
69
|
+
- Chose [approach] over [alternative] because [reason]
|
|
70
|
+
</decisions_made>
|
|
71
|
+
|
|
72
|
+
<blockers>
|
|
73
|
+
- [Blocker 1]: [status/workaround]
|
|
74
|
+
</blockers>
|
|
75
|
+
|
|
76
|
+
<context>
|
|
77
|
+
[Mental state, what were you thinking, the plan]
|
|
78
|
+
</context>
|
|
79
|
+
|
|
80
|
+
<next_action>
|
|
81
|
+
Start with: [specific first action when resuming]
|
|
82
|
+
</next_action>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Be specific enough for a fresh Claude to understand immediately.
|
|
86
|
+
|
|
87
|
+
Use `current-timestamp` for last_updated field. You can use init todos (which provides timestamps) or call directly:
|
|
88
|
+
```bash
|
|
89
|
+
timestamp=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" current-timestamp full --raw)
|
|
90
|
+
```
|
|
91
|
+
</step>
|
|
92
|
+
|
|
93
|
+
<step name="commit">
|
|
94
|
+
```bash
|
|
95
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md
|
|
96
|
+
```
|
|
97
|
+
</step>
|
|
98
|
+
|
|
99
|
+
<step name="confirm">
|
|
100
|
+
```
|
|
101
|
+
✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
|
|
102
|
+
|
|
103
|
+
Current state:
|
|
104
|
+
|
|
105
|
+
- Phase: [XX-name]
|
|
106
|
+
- Task: [X] of [Y]
|
|
107
|
+
- Status: [in_progress/blocked]
|
|
108
|
+
- Committed as WIP
|
|
109
|
+
|
|
110
|
+
To resume: /ez:resume-work
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
</step>
|
|
114
|
+
|
|
115
|
+
</process>
|
|
116
|
+
|
|
117
|
+
<success_criteria>
|
|
118
|
+
- [ ] .continue-here.md created in correct phase directory
|
|
119
|
+
- [ ] All sections filled with specific content
|
|
120
|
+
- [ ] Committed as WIP
|
|
121
|
+
- [ ] User knows location and how to resume
|
|
122
|
+
</success_criteria>
|