@howlil/ez-agents 3.5.0 → 4.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/README.md +735 -537
- package/agents/ez-architect-agent.md +267 -0
- package/agents/ez-backend-agent.md +303 -0
- package/agents/ez-chief-strategist.md +271 -0
- package/agents/ez-codebase-mapper.md +770 -770
- package/agents/ez-context-manager.md +319 -0
- package/agents/ez-debugger.md +1255 -1255
- package/agents/ez-design-expert.md +347 -0
- package/agents/ez-devops-agent.md +331 -0
- package/agents/ez-executor.md +487 -487
- package/agents/ez-frontend-agent.md +322 -0
- package/agents/ez-phase-researcher.md +553 -553
- package/agents/ez-planner.md +1307 -1307
- package/agents/ez-product-engineer.md +435 -0
- package/agents/ez-project-researcher.md +629 -629
- package/agents/ez-qa-agent.md +320 -0
- package/agents/ez-release-agent.md +333 -333
- package/agents/ez-requirements-agent.md +377 -377
- package/agents/ez-roadmapper.md +650 -650
- package/agents/ez-technical-writer.md +551 -0
- package/agents/ez-ux-expert.md +393 -0
- package/agents/ez-verifier.md +579 -579
- package/bin/guards/autonomy-guard.cjs +346 -0
- package/bin/guards/context-budget-guard.cjs +278 -0
- package/bin/guards/hallucination-guard.cjs +380 -0
- package/bin/guards/hidden-state-guard.cjs +182 -0
- package/bin/guards/team-overhead-guard.cjs +266 -0
- package/bin/guards/tool-sprawl-guard.cjs +271 -0
- package/bin/lib/analytics/analytics-collector.cjs +86 -0
- package/bin/lib/analytics/analytics-reporter.cjs +130 -0
- package/bin/lib/analytics/cohort-analyzer.cjs +138 -0
- package/bin/lib/analytics/funnel-analyzer.cjs +147 -0
- package/bin/lib/analytics/nps-tracker.cjs +147 -0
- package/bin/lib/archetype-detector.cjs +289 -0
- package/bin/lib/assistant-adapter.cjs +361 -0
- package/bin/lib/audit-exec.cjs +175 -0
- package/bin/lib/auth.cjs +176 -0
- package/bin/lib/backup-service.cjs +422 -0
- package/bin/lib/bdd-validator.cjs +622 -0
- package/bin/lib/business-flow-mapper.cjs +429 -0
- package/bin/lib/circuit-breaker.cjs +276 -0
- package/bin/lib/code-complexity-analyzer.cjs +360 -0
- package/bin/lib/codebase-analyzer.cjs +241 -0
- package/bin/lib/commands.cjs +691 -0
- package/bin/lib/config.cjs +236 -0
- package/bin/lib/constraint-extractor.cjs +526 -0
- package/bin/lib/content-scanner.cjs +238 -0
- package/bin/lib/context-cache.cjs +154 -0
- package/bin/lib/context-compressor.cjs +102 -0
- package/bin/lib/context-deduplicator.cjs +105 -0
- package/bin/lib/context-errors.cjs +78 -0
- package/bin/lib/context-manager.cjs +338 -0
- package/bin/lib/context-metadata-tracker.cjs +140 -0
- package/bin/lib/context-relevance-scorer.cjs +99 -0
- package/bin/lib/core.cjs +507 -0
- package/bin/lib/cost-alerts.cjs +174 -0
- package/bin/lib/cost-tracker.cjs +275 -0
- package/bin/lib/crash-recovery.cjs +220 -0
- package/bin/lib/dependency-graph.cjs +319 -0
- package/bin/lib/deploy/deploy-audit-log.cjs +76 -0
- package/bin/lib/deploy/deploy-detector.cjs +69 -0
- package/bin/lib/deploy/deploy-env-manager.cjs +109 -0
- package/bin/lib/deploy/deploy-health-check.cjs +88 -0
- package/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
- package/bin/lib/deploy/deploy-rollback.cjs +72 -0
- package/bin/lib/deploy/deploy-runner.cjs +97 -0
- package/bin/lib/deploy/deploy-status.cjs +74 -0
- package/bin/lib/discussion-synthesizer.cjs +439 -0
- package/bin/lib/error-cache.cjs +114 -0
- package/bin/lib/error-registry.cjs +177 -0
- package/bin/lib/file-access.cjs +207 -0
- package/bin/lib/file-lock.cjs +236 -0
- package/bin/lib/finops/budget-enforcer.cjs +126 -0
- package/bin/lib/finops/cost-reporter.cjs +132 -0
- package/bin/lib/finops/finops-analyzer.cjs +112 -0
- package/bin/lib/finops/spot-manager.cjs +118 -0
- package/bin/lib/framework-detector.cjs +396 -0
- package/bin/lib/frontmatter.cjs +313 -0
- package/bin/lib/fs-utils.cjs +153 -0
- package/bin/lib/gate-executor.cjs +272 -0
- package/bin/lib/gates/README.md +374 -0
- package/bin/lib/gates/gate-01-requirement.cjs +303 -0
- package/bin/lib/gates/gate-02-architecture.cjs +555 -0
- package/bin/lib/gates/gate-03-code.cjs +635 -0
- package/bin/lib/gates/gate-04-security.cjs +829 -0
- package/bin/lib/git-errors.cjs +83 -0
- package/bin/lib/git-utils.cjs +321 -0
- package/bin/lib/git-workflow-engine.cjs +1157 -0
- package/bin/lib/health-check.cjs +227 -0
- package/bin/lib/index.cjs +279 -0
- package/bin/lib/init.cjs +725 -0
- package/bin/lib/lock-logger.cjs +194 -0
- package/bin/lib/lock-state.cjs +263 -0
- package/bin/lib/lockfile-validator.cjs +227 -0
- package/bin/lib/log-rotation.cjs +71 -0
- package/bin/lib/logger.cjs +125 -0
- package/bin/lib/memory-compression.cjs +256 -0
- package/bin/lib/milestone.cjs +247 -0
- package/bin/lib/model-provider.cjs +241 -0
- package/bin/lib/package-manager-detector.cjs +203 -0
- package/bin/lib/package-manager-executor.cjs +385 -0
- package/bin/lib/package-manager-service.cjs +216 -0
- package/bin/lib/perf/api-monitor.cjs +88 -0
- package/bin/lib/perf/db-optimizer.cjs +78 -0
- package/bin/lib/perf/frontend-performance.cjs +56 -0
- package/bin/lib/perf/perf-analyzer.cjs +77 -0
- package/bin/lib/perf/perf-baseline.cjs +102 -0
- package/bin/lib/perf/perf-reporter.cjs +117 -0
- package/bin/lib/perf/regression-detector.cjs +92 -0
- package/bin/lib/phase.cjs +963 -0
- package/bin/lib/planning-write.cjs +123 -0
- package/bin/lib/project-reporter.cjs +565 -0
- package/bin/lib/quality-gate.cjs +332 -0
- package/bin/lib/quality-metrics.cjs +324 -0
- package/bin/lib/recovery-manager.cjs +98 -0
- package/bin/lib/release-validator.cjs +617 -0
- package/bin/lib/retry.cjs +119 -0
- package/bin/lib/roadmap.cjs +309 -0
- package/bin/lib/safe-exec.cjs +173 -0
- package/bin/lib/safe-path.cjs +130 -0
- package/bin/lib/security-errors.cjs +62 -0
- package/bin/lib/session-chain.cjs +304 -0
- package/bin/lib/session-errors.cjs +81 -0
- package/bin/lib/session-export.cjs +251 -0
- package/bin/lib/session-import.cjs +262 -0
- package/bin/lib/session-manager.cjs +280 -0
- package/bin/lib/skill-context.cjs +148 -0
- package/bin/lib/skill-matcher.cjs +236 -0
- package/bin/lib/skill-registry.cjs +360 -0
- package/bin/lib/skill-resolver.cjs +449 -0
- package/bin/lib/skill-triggers.cjs +90 -0
- package/bin/lib/skill-validator.cjs +270 -0
- package/bin/lib/skill-versioning.cjs +355 -0
- package/bin/lib/stack-detector.cjs +399 -0
- package/bin/lib/state.cjs +736 -0
- package/bin/lib/tech-debt-analyzer.cjs +309 -0
- package/bin/lib/temp-file.cjs +239 -0
- package/bin/lib/template.cjs +223 -0
- package/bin/lib/test-file-lock.cjs +112 -0
- package/bin/lib/test-graceful.cjs +93 -0
- package/bin/lib/test-logger.cjs +60 -0
- package/bin/lib/test-safe-exec.cjs +38 -0
- package/bin/lib/test-safe-path.cjs +33 -0
- package/bin/lib/test-temp-file.cjs +125 -0
- package/bin/lib/tier-manager.cjs +428 -0
- package/bin/lib/timeout-exec.cjs +63 -0
- package/bin/lib/tradeoff-analyzer.cjs +284 -0
- package/bin/lib/url-fetch.cjs +170 -0
- package/bin/lib/verify.cjs +863 -0
- package/bin/update.js +217 -214
- package/commands/deploy.cjs +53 -0
- package/commands/ez/add-tests.md +41 -41
- package/commands/ez/audit-milestone.md +36 -36
- package/commands/ez/complete-milestone.md +136 -136
- package/commands/ez/discuss-phase.md +90 -90
- package/commands/ez/execute-phase.md +52 -52
- package/commands/ez/help.md +22 -22
- package/commands/ez/map-codebase.md +71 -71
- package/commands/ez/new-milestone.md +44 -44
- package/commands/ez/new-project.md +51 -42
- package/commands/ez/plan-phase.md +53 -53
- package/commands/ez/progress.md +36 -36
- package/commands/ez/quick.md +45 -45
- package/commands/ez/resume-work.md +40 -40
- package/commands/ez/run-phase.md +580 -0
- package/commands/ez/settings.md +36 -36
- package/commands/ez/update.md +37 -37
- package/commands/ez/verify-work.md +402 -38
- package/commands/health-check.cjs +44 -0
- package/commands/rollback.cjs +47 -0
- package/ez-agents/bin/ez-tools.cjs +599 -2
- package/ez-agents/bin/guards/autonomy-guard.cjs +346 -0
- package/ez-agents/bin/guards/context-budget-guard.cjs +247 -0
- package/ez-agents/bin/guards/hallucination-guard.cjs +271 -0
- package/ez-agents/bin/guards/hidden-state-guard.cjs +182 -0
- package/ez-agents/bin/guards/team-overhead-guard.cjs +266 -0
- package/ez-agents/bin/guards/tool-sprawl-guard.cjs +271 -0
- package/ez-agents/bin/lib/analytics/analytics-collector.cjs +86 -0
- package/ez-agents/bin/lib/analytics/analytics-reporter.cjs +130 -0
- package/ez-agents/bin/lib/analytics/cohort-analyzer.cjs +138 -0
- package/ez-agents/bin/lib/analytics/funnel-analyzer.cjs +147 -0
- package/ez-agents/bin/lib/analytics/nps-tracker.cjs +147 -0
- package/ez-agents/bin/lib/archetype-detector.cjs +289 -0
- package/ez-agents/bin/lib/audit-exec.cjs +166 -167
- package/ez-agents/bin/lib/auth.cjs +176 -176
- package/ez-agents/bin/lib/backup-service.cjs +422 -0
- package/ez-agents/bin/lib/bdd-validator.cjs +622 -622
- package/ez-agents/bin/lib/business-flow-mapper.cjs +429 -0
- package/ez-agents/bin/lib/code-complexity-analyzer.cjs +360 -0
- package/ez-agents/bin/lib/codebase-analyzer.cjs +241 -0
- package/ez-agents/bin/lib/commands.cjs +685 -685
- package/ez-agents/bin/lib/config.cjs +41 -1
- package/ez-agents/bin/lib/constraint-extractor.cjs +526 -0
- package/ez-agents/bin/lib/content-scanner.cjs +238 -238
- package/ez-agents/bin/lib/context-cache.cjs +154 -154
- package/ez-agents/bin/lib/context-errors.cjs +71 -71
- package/ez-agents/bin/lib/context-manager.cjs +220 -220
- package/ez-agents/bin/lib/core.cjs +507 -512
- package/ez-agents/bin/lib/cost-tracker.cjs +243 -0
- package/ez-agents/bin/lib/crash-recovery.cjs +172 -0
- package/ez-agents/bin/lib/dependency-graph.cjs +319 -0
- package/ez-agents/bin/lib/deploy/deploy-audit-log.cjs +76 -0
- package/ez-agents/bin/lib/deploy/deploy-detector.cjs +69 -0
- package/ez-agents/bin/lib/deploy/deploy-env-manager.cjs +109 -0
- package/ez-agents/bin/lib/deploy/deploy-health-check.cjs +88 -0
- package/ez-agents/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
- package/ez-agents/bin/lib/deploy/deploy-rollback.cjs +72 -0
- package/ez-agents/bin/lib/deploy/deploy-runner.cjs +97 -0
- package/ez-agents/bin/lib/deploy/deploy-status.cjs +74 -0
- package/ez-agents/bin/lib/file-access.cjs +207 -207
- package/ez-agents/bin/lib/finops/budget-enforcer.cjs +126 -0
- package/ez-agents/bin/lib/finops/cost-reporter.cjs +132 -0
- package/ez-agents/bin/lib/finops/finops-analyzer.cjs +112 -0
- package/ez-agents/bin/lib/finops/spot-manager.cjs +118 -0
- package/ez-agents/bin/lib/framework-detector.cjs +396 -0
- package/ez-agents/bin/lib/frontmatter.cjs +3 -1
- package/ez-agents/bin/lib/gates/README.md +374 -0
- package/ez-agents/bin/lib/gates/gate-01-requirement.cjs +303 -0
- package/ez-agents/bin/lib/gates/gate-02-architecture.cjs +555 -0
- package/ez-agents/bin/lib/gates/gate-03-code.cjs +635 -0
- package/ez-agents/bin/lib/gates/gate-04-security.cjs +829 -0
- package/ez-agents/bin/lib/git-errors.cjs +83 -83
- package/ez-agents/bin/lib/git-utils.cjs +321 -321
- package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -1157
- package/ez-agents/bin/lib/health-check.cjs +162 -162
- package/ez-agents/bin/lib/index.cjs +2 -8
- package/ez-agents/bin/lib/init.cjs +0 -2
- package/ez-agents/bin/lib/lockfile-validator.cjs +227 -227
- package/ez-agents/bin/lib/log-rotation.cjs +71 -0
- package/ez-agents/bin/lib/logger.cjs +22 -47
- package/ez-agents/bin/lib/memory-compression.cjs +256 -256
- package/ez-agents/bin/lib/package-manager-detector.cjs +203 -203
- package/ez-agents/bin/lib/package-manager-executor.cjs +385 -385
- package/ez-agents/bin/lib/package-manager-service.cjs +216 -216
- package/ez-agents/bin/lib/perf/api-monitor.cjs +88 -0
- package/ez-agents/bin/lib/perf/db-optimizer.cjs +78 -0
- package/ez-agents/bin/lib/perf/frontend-performance.cjs +56 -0
- package/ez-agents/bin/lib/perf/perf-analyzer.cjs +77 -0
- package/ez-agents/bin/lib/perf/perf-baseline.cjs +102 -0
- package/ez-agents/bin/lib/perf/perf-reporter.cjs +117 -0
- package/ez-agents/bin/lib/perf/regression-detector.cjs +92 -0
- package/ez-agents/bin/lib/project-reporter.cjs +502 -0
- package/ez-agents/bin/lib/quality-gate.cjs +332 -0
- package/ez-agents/bin/lib/recovery-manager.cjs +98 -0
- package/ez-agents/bin/lib/release-validator.cjs +617 -614
- package/ez-agents/bin/lib/security-errors.cjs +62 -0
- package/ez-agents/bin/lib/session-chain.cjs +304 -304
- package/ez-agents/bin/lib/session-errors.cjs +81 -81
- package/ez-agents/bin/lib/session-export.cjs +251 -251
- package/ez-agents/bin/lib/session-import.cjs +262 -262
- package/ez-agents/bin/lib/session-manager.cjs +280 -280
- package/ez-agents/bin/lib/skill-context.cjs +148 -0
- package/ez-agents/bin/lib/skill-matcher.cjs +236 -0
- package/ez-agents/bin/lib/skill-registry.cjs +341 -0
- package/ez-agents/bin/lib/skill-resolver.cjs +449 -0
- package/ez-agents/bin/lib/skill-triggers.cjs +90 -0
- package/ez-agents/bin/lib/skill-validator.cjs +270 -0
- package/ez-agents/bin/lib/skill-versioning.cjs +355 -0
- package/ez-agents/bin/lib/stack-detector.cjs +399 -0
- package/ez-agents/bin/lib/tech-debt-analyzer.cjs +309 -0
- package/ez-agents/bin/lib/tier-manager.cjs +428 -428
- package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
- package/ez-agents/bin/lib/url-fetch.cjs +170 -170
- package/ez-agents/bin/lib/verify.cjs +863 -863
- package/ez-agents/references/decimal-phase-calculation.md +65 -65
- package/ez-agents/references/git-integration.md +248 -248
- package/ez-agents/references/git-planning-commit.md +38 -38
- package/ez-agents/references/metrics-schema.md +118 -118
- package/ez-agents/references/model-profile-resolution.md +34 -34
- package/ez-agents/references/model-profiles.md +93 -93
- package/ez-agents/references/phase-argument-parsing.md +61 -61
- package/ez-agents/references/planning-config.md +340 -340
- package/ez-agents/references/tier-strategy.md +103 -103
- package/ez-agents/references/ui-brand.md +160 -160
- package/ez-agents/references/verification-patterns.md +612 -612
- package/ez-agents/templates/DEBUG.md +164 -164
- package/ez-agents/templates/UAT.md +247 -247
- package/ez-agents/templates/agent-output-format.md +404 -0
- package/ez-agents/templates/bdd-feature.md +173 -173
- package/ez-agents/templates/codebase/architecture.md +255 -255
- package/ez-agents/templates/codebase/structure.md +285 -285
- package/ez-agents/templates/copilot-instructions.md +7 -7
- package/ez-agents/templates/debug-subagent-prompt.md +91 -91
- package/ez-agents/templates/discovery.md +146 -146
- package/ez-agents/templates/discussion.md +68 -68
- package/ez-agents/templates/handoff-protocol.md +294 -0
- package/ez-agents/templates/incident-runbook.md +205 -205
- package/ez-agents/templates/mode-workflow-templates.md +301 -0
- package/ez-agents/templates/phase-prompt.md +610 -610
- package/ez-agents/templates/planner-subagent-prompt.md +117 -117
- package/ez-agents/templates/project.md +184 -184
- package/ez-agents/templates/release-checklist.md +136 -133
- package/ez-agents/templates/research.md +552 -552
- package/ez-agents/templates/rollback-plan.md +201 -201
- package/ez-agents/templates/security-user-setup.md +244 -0
- package/ez-agents/templates/skill-validation-rules.md +476 -0
- package/ez-agents/templates/state.md +180 -176
- package/ez-agents/templates/summary-complex.md +59 -59
- package/ez-agents/tests/gates/gate-01-02.test.cjs +812 -0
- package/ez-agents/tests/gates/gate-03-04.test.cjs +762 -0
- package/ez-agents/tests/gates/gate-05-validator.test.cjs +145 -0
- package/ez-agents/tests/gates/gate-06-docs-validator.test.cjs +244 -0
- package/ez-agents/tests/gates/gate-07-release-validator.test.cjs +219 -0
- package/ez-agents/tests/guards/context-budget-guard.test.cjs +145 -0
- package/ez-agents/tests/guards/edge-case-guards.test.cjs +238 -0
- package/ez-agents/tests/guards/hallucination-guard.test.cjs +124 -0
- package/ez-agents/workflows/audit-milestone.md +1 -1
- package/ez-agents/workflows/autonomous.md +844 -844
- package/ez-agents/workflows/complete-milestone.md +1 -1
- package/ez-agents/workflows/discuss-phase.md +1 -1
- package/ez-agents/workflows/execute-phase.md +124 -3
- package/ez-agents/workflows/help.md +42 -181
- package/ez-agents/workflows/hotfix.md +291 -291
- package/ez-agents/workflows/new-milestone.md +713 -713
- package/ez-agents/workflows/new-project.md +1089 -1107
- package/ez-agents/workflows/plan-phase.md +0 -40
- package/ez-agents/workflows/release.md +253 -253
- package/ez-agents/workflows/resume-session.md +215 -215
- package/ez-agents/workflows/run-phase.md +531 -0
- package/ez-agents/workflows/settings.md +2 -35
- package/hooks/dist/ez-check-update.js +81 -81
- package/hooks/dist/ez-context-monitor.js +148 -141
- package/hooks/dist/ez-statusline.js +115 -115
- package/package.json +78 -71
- package/scripts/fix-qwen-installation.js +144 -144
- package/agents/ez-integration-checker.md +0 -443
- package/agents/ez-nyquist-auditor.md +0 -176
- package/agents/ez-observer-agent.md +0 -260
- package/agents/ez-plan-checker.md +0 -706
- package/agents/ez-research-synthesizer.md +0 -247
- package/agents/ez-scrum-master-agent.md +0 -242
- package/agents/ez-tech-lead-agent.md +0 -267
- package/agents/ez-ui-auditor.md +0 -439
- package/agents/ez-ui-checker.md +0 -300
- package/agents/ez-ui-researcher.md +0 -353
- package/commands/ez/add-phase.md +0 -43
- package/commands/ez/add-todo.md +0 -47
- package/commands/ez/arch-review.md +0 -102
- package/commands/ez/auth.md +0 -87
- package/commands/ez/autonomous.md +0 -41
- package/commands/ez/check-todos.md +0 -45
- package/commands/ez/cleanup.md +0 -18
- package/commands/ez/debug.md +0 -168
- package/commands/ez/export-session.md +0 -79
- package/commands/ez/gather-requirements.md +0 -117
- package/commands/ez/git-workflow.md +0 -72
- package/commands/ez/health.md +0 -22
- package/commands/ez/hotfix.md +0 -120
- package/commands/ez/import-session.md +0 -82
- package/commands/ez/insert-phase.md +0 -32
- package/commands/ez/join-discord.md +0 -18
- package/commands/ez/list-phase-assumptions.md +0 -46
- package/commands/ez/list-sessions.md +0 -96
- package/commands/ez/package-manager.md +0 -316
- package/commands/ez/pause-work.md +0 -38
- package/commands/ez/plan-milestone-gaps.md +0 -34
- package/commands/ez/preflight.md +0 -79
- package/commands/ez/reapply-patches.md +0 -124
- package/commands/ez/release.md +0 -153
- package/commands/ez/remove-phase.md +0 -31
- package/commands/ez/research-phase.md +0 -190
- package/commands/ez/resume.md +0 -107
- package/commands/ez/set-profile.md +0 -34
- package/commands/ez/standup.md +0 -85
- package/commands/ez/stats.md +0 -18
- package/commands/ez/ui-phase.md +0 -34
- package/commands/ez/ui-review.md +0 -32
- package/commands/ez/validate-phase.md +0 -35
- package/ez-agents/bin/lib/metrics-tracker.cjs +0 -406
- package/ez-agents/templates/UI-SPEC.md +0 -100
- package/ez-agents/templates/VALIDATION.md +0 -76
- package/ez-agents/templates/context.md +0 -352
- package/ez-agents/templates/verification-report.md +0 -322
- package/ez-agents/workflows/arch-review.md +0 -54
- package/ez-agents/workflows/export-session.md +0 -255
- package/ez-agents/workflows/gather-requirements.md +0 -206
- package/ez-agents/workflows/import-session.md +0 -303
- package/ez-agents/workflows/research-phase.md +0 -74
- package/ez-agents/workflows/standup.md +0 -64
- package/ez-agents/workflows/ui-phase.md +0 -290
- package/ez-agents/workflows/ui-review.md +0 -157
- package/ez-agents/workflows/validate-phase.md +0 -167
|
@@ -1,713 +1,713 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
|
|
3
|
-
Start a new milestone cycle for an existing project. Loads project context, gathers milestone goals (from MILESTONE-CONTEXT.md or conversation), updates PROJECT.md and STATE.md, optionally runs parallel research, defines scoped requirements with REQ-IDs, spawns the roadmapper to create phased execution plan, and commits all artifacts. Brownfield equivalent of new-project.
|
|
4
|
-
|
|
5
|
-
**GSD-2 Enhanced:** Includes crash recovery, cost tracking, fresh context, and stuck detection for production-grade reliability.
|
|
6
|
-
|
|
7
|
-
</purpose>
|
|
8
|
-
|
|
9
|
-
<required_reading>
|
|
10
|
-
|
|
11
|
-
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
12
|
-
|
|
13
|
-
</required_reading>
|
|
14
|
-
|
|
15
|
-
<process>
|
|
16
|
-
|
|
17
|
-
## 0. Pre-Flight Health Check (GSD-2 Pattern)
|
|
18
|
-
|
|
19
|
-
**MANDATORY FIRST STEP — Validate environment before ANY operation:**
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
# Run health check
|
|
23
|
-
HEALTH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" doctor --json)
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
**Check:**
|
|
27
|
-
- ✅ Node.js version >= 16.7.0
|
|
28
|
-
- ✅ AI tools available (Claude, OpenCode, etc.)
|
|
29
|
-
- ✅ Config valid (`.planning/config.json`)
|
|
30
|
-
- ✅ Git repo initialized
|
|
31
|
-
- ✅ API keys configured
|
|
32
|
-
|
|
33
|
-
**If any check fails:**
|
|
34
|
-
```
|
|
35
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
36
|
-
EZ ► HEALTH CHECK FAILED
|
|
37
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
38
|
-
|
|
39
|
-
❌ [Failed check description]
|
|
40
|
-
|
|
41
|
-
Fix:
|
|
42
|
-
[suggested command]
|
|
43
|
-
|
|
44
|
-
Example:
|
|
45
|
-
$ [example command]
|
|
46
|
-
|
|
47
|
-
Resolve before continuing with milestone initialization.
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Abort milestone init until resolved.**
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## 0a. Gather Initial Context (CONTEXT-01, CONTEXT-02)
|
|
55
|
-
|
|
56
|
-
**Initialize ContextManager for context gathering:**
|
|
57
|
-
|
|
58
|
-
```javascript
|
|
59
|
-
const ContextManager = require('../bin/lib/context-manager.cjs');
|
|
60
|
-
const contextManager = new ContextManager(process.cwd());
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Request milestone-specific context:**
|
|
64
|
-
|
|
65
|
-
```javascript
|
|
66
|
-
const context = await contextManager.requestContext({
|
|
67
|
-
files: ['.planning/PROJECT.md', '.planning/STATE.md', '.planning/ROADMAP.md'],
|
|
68
|
-
urls: []
|
|
69
|
-
});
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Agent can request additional context using:**
|
|
73
|
-
- `ez-tools context read <pattern>` — Read local files
|
|
74
|
-
- `ez-tools context fetch <url>` — Fetch URL content (requires user confirmation)
|
|
75
|
-
|
|
76
|
-
**Update STATE.md with context sources:**
|
|
77
|
-
|
|
78
|
-
```javascript
|
|
79
|
-
await contextManager.updateStateMd();
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Continue to Load Context (Step 1) with gathered context.**
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 1. Load Context
|
|
87
|
-
|
|
88
|
-
Read PROJECT.md (existing project, validated requirements, decisions)
|
|
89
|
-
Read MILESTONES.md (what shipped previously)
|
|
90
|
-
Read STATE.md (pending todos, blockers)
|
|
91
|
-
Check for MILESTONE-CONTEXT.md (from /ez:discuss-milestone)
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## 1a. Initialize Milestone Cost Tracking (GSD-2 Pattern)
|
|
96
|
-
|
|
97
|
-
**Create/Update metrics.json:**
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
# Initialize milestone budget
|
|
101
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-init \
|
|
102
|
-
--milestone="v[X.Y]" \
|
|
103
|
-
--budget-ceiling=50.00 \
|
|
104
|
-
--alert-threshold=0.8
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Create `.planning/metrics.json`:**
|
|
108
|
-
```json
|
|
109
|
-
{
|
|
110
|
-
"milestone": "v[X.Y]",
|
|
111
|
-
"started_at": "2026-03-18T12:00:00.000Z",
|
|
112
|
-
"budget": {
|
|
113
|
-
"ceiling": 50.00,
|
|
114
|
-
"alert_threshold": 0.8,
|
|
115
|
-
"projected": 0.00,
|
|
116
|
-
"spent": 0.00
|
|
117
|
-
},
|
|
118
|
-
"phases": {},
|
|
119
|
-
"cumulative": {
|
|
120
|
-
"total_tokens": 0,
|
|
121
|
-
"total_cost_usd": 0.00,
|
|
122
|
-
"by_provider": {}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Display budget info:**
|
|
128
|
-
```
|
|
129
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
130
|
-
EZ ► MILESTONE BUDGET
|
|
131
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
132
|
-
|
|
133
|
-
Milestone: v[X.Y]
|
|
134
|
-
Budget Ceiling: $50.00
|
|
135
|
-
Alert Threshold: 80% ($40.00)
|
|
136
|
-
|
|
137
|
-
You will be warned when spending reaches 80% of budget.
|
|
138
|
-
Auto-pause at $50.00.
|
|
139
|
-
|
|
140
|
-
View anytime: /ez:cost
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**Commit metrics.json:**
|
|
144
|
-
```bash
|
|
145
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "chore: initialize milestone budget" --files .planning/metrics.json
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## 2. Gather Milestone Goals
|
|
151
|
-
|
|
152
|
-
**If MILESTONE-CONTEXT.md exists:**
|
|
153
|
-
- Use features and scope from discuss-milestone
|
|
154
|
-
- Present summary for confirmation
|
|
155
|
-
|
|
156
|
-
**If no context file:**
|
|
157
|
-
- Present what shipped in last milestone
|
|
158
|
-
- Ask inline (freeform, NOT AskUserQuestion): "What do you want to build next?"
|
|
159
|
-
- Wait for their response, then use AskUserQuestion to probe specifics
|
|
160
|
-
- If user selects "Other" at any point to provide freeform input, ask follow-up as plain text — not another AskUserQuestion
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## 2a. Create Lock File (GSD-2 Pattern)
|
|
165
|
-
|
|
166
|
-
**Before any major operation:**
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
# Create auto.lock
|
|
170
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-create \
|
|
171
|
-
--operation="new-milestone" \
|
|
172
|
-
--milestone="v[X.Y]"
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
**Create `.planning/auto.lock`:**
|
|
176
|
-
```json
|
|
177
|
-
{
|
|
178
|
-
"pid": 12345,
|
|
179
|
-
"operation": "new-milestone",
|
|
180
|
-
"milestone": "v[X.Y]",
|
|
181
|
-
"started_at": "2026-03-18T12:00:00.000Z",
|
|
182
|
-
"last_heartbeat": "2026-03-18T12:00:00.000Z",
|
|
183
|
-
"state": "gathering_goals"
|
|
184
|
-
}
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Update heartbeat every 5 minutes:**
|
|
188
|
-
```bash
|
|
189
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-heartbeat
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**On completion:**
|
|
193
|
-
```bash
|
|
194
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
**On crash/restart:**
|
|
198
|
-
- Detect orphaned lock (PID dead)
|
|
199
|
-
- Synthesize recovery briefing
|
|
200
|
-
- Resume from last known state
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## 3. Determine Milestone Version
|
|
205
|
-
|
|
206
|
-
- Parse last version from MILESTONES.md
|
|
207
|
-
- Suggest next version (v1.0 → v1.1, or v2.0 for major)
|
|
208
|
-
- Confirm with user
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## 4. Update PROJECT.md
|
|
213
|
-
|
|
214
|
-
Add/update:
|
|
215
|
-
|
|
216
|
-
```markdown
|
|
217
|
-
## Current Milestone: v[X.Y] [Name]
|
|
218
|
-
|
|
219
|
-
**Goal:** [One sentence describing milestone focus]
|
|
220
|
-
|
|
221
|
-
**Target features:**
|
|
222
|
-
- [Feature 1]
|
|
223
|
-
- [Feature 2]
|
|
224
|
-
- [Feature 3]
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Update Active requirements section and "Last updated" footer.
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
## 5. Update STATE.md
|
|
232
|
-
|
|
233
|
-
```markdown
|
|
234
|
-
## Current Position
|
|
235
|
-
|
|
236
|
-
Phase: Not started (defining requirements)
|
|
237
|
-
Plan: —
|
|
238
|
-
Status: Defining requirements
|
|
239
|
-
Last activity: [today] — Milestone v[X.Y] started
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Keep Accumulated Context section from previous milestone.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## 6. Cleanup and Commit
|
|
247
|
-
|
|
248
|
-
Delete MILESTONE-CONTEXT.md if exists (consumed).
|
|
249
|
-
|
|
250
|
-
```bash
|
|
251
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: start milestone v[X.Y] [Name]" --files .planning/PROJECT.md .planning/STATE.md .planning/metrics.json
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
**Update lock file state:**
|
|
255
|
-
```bash
|
|
256
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="context_loaded"
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## 7. Load Context and Resolve Models
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init new-milestone)
|
|
265
|
-
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`.
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
## 8. Research Decision
|
|
273
|
-
|
|
274
|
-
AskUserQuestion: "Research the domain ecosystem for new features before defining requirements?"
|
|
275
|
-
- "Research first (Recommended)" — Discover patterns, features, architecture for NEW capabilities
|
|
276
|
-
- "Skip research" — Go straight to requirements
|
|
277
|
-
|
|
278
|
-
**Persist choice to config** (so future `/ez:plan-phase` honors it):
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
# If "Research first": persist true
|
|
282
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research true
|
|
283
|
-
|
|
284
|
-
# If "Skip research": persist false
|
|
285
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research false
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
**Update lock file state:**
|
|
289
|
-
```bash
|
|
290
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_decision"
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
**If "Research first":**
|
|
294
|
-
|
|
295
|
-
```
|
|
296
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
297
|
-
EZ ► RESEARCHING
|
|
298
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
299
|
-
|
|
300
|
-
◆ Spawning 4 researchers in parallel...
|
|
301
|
-
→ Stack, Features, Architecture, Pitfalls
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
mkdir -p .planning/research
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
**Spawn 4 parallel ez-project-researcher agents with FRESH CONTEXT (GSD-2 Pattern):**
|
|
309
|
-
|
|
310
|
-
Each uses this template with dimension-specific fields:
|
|
311
|
-
|
|
312
|
-
**Common structure for all 4 researchers:**
|
|
313
|
-
```
|
|
314
|
-
Task(prompt="
|
|
315
|
-
<research_type>Project Research — {DIMENSION} for [new features].</research_type>
|
|
316
|
-
|
|
317
|
-
<fresh_context>
|
|
318
|
-
CONTEXT RESET: This is a fresh 200K session.
|
|
319
|
-
No accumulated garbage from prior tasks.
|
|
320
|
-
Only relevant context pre-loaded below.
|
|
321
|
-
</fresh_context>
|
|
322
|
-
|
|
323
|
-
<pre_loaded_context>
|
|
324
|
-
- .planning/PROJECT.md excerpt (core value, milestone goals)
|
|
325
|
-
- .planning/REQUIREMENTS.md excerpt (active requirements)
|
|
326
|
-
- .planning/ROADMAP.md excerpt (phase structure)
|
|
327
|
-
</pre_loaded_context>
|
|
328
|
-
|
|
329
|
-
<milestone_context>
|
|
330
|
-
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
331
|
-
{EXISTING_CONTEXT}
|
|
332
|
-
Focus ONLY on what's needed for the NEW features.
|
|
333
|
-
</milestone_context>
|
|
334
|
-
|
|
335
|
-
<question>{QUESTION}</question>
|
|
336
|
-
|
|
337
|
-
<files_to_read>
|
|
338
|
-
- .planning/PROJECT.md (Project context)
|
|
339
|
-
</files_to_read>
|
|
340
|
-
|
|
341
|
-
<downstream_consumer>{CONSUMER}</downstream_consumer>
|
|
342
|
-
|
|
343
|
-
<quality_gate>{GATES}</quality_gate>
|
|
344
|
-
|
|
345
|
-
<output>
|
|
346
|
-
Write to: .planning/research/{FILE}
|
|
347
|
-
Use template: ~/.claude/ez-agents/templates/research-project/{FILE}
|
|
348
|
-
</output>
|
|
349
|
-
", subagent_type="ez-project-researcher", model="{researcher_model}", description="{DIMENSION} research")
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
**Dimension-specific fields:**
|
|
353
|
-
|
|
354
|
-
| Field | Stack | Features | Architecture | Pitfalls |
|
|
355
|
-
|-------|-------|----------|-------------|----------|
|
|
356
|
-
| EXISTING_CONTEXT | Existing validated capabilities (DO NOT re-research): [from PROJECT.md] | Existing features (already built): [from PROJECT.md] | Existing architecture: [from PROJECT.md or codebase map] | Focus on common mistakes when ADDING these features to existing system |
|
|
357
|
-
| QUESTION | What stack additions/changes are needed for [new features]? | How do [target features] typically work? Expected behavior? | How do [target features] integrate with existing architecture? | Common mistakes when adding [target features] to [domain]? |
|
|
358
|
-
| CONSUMER | Specific libraries with versions for NEW capabilities, integration points, what NOT to add | Table stakes vs differentiators vs anti-features, complexity noted, dependencies on existing | Integration points, new components, data flow changes, suggested build order | Warning signs, prevention strategy, which phase should address it |
|
|
359
|
-
| GATES | Versions current (verify with Context7), rationale explains WHY, integration considered | Categories clear, complexity noted, dependencies identified | Integration points identified, new vs modified explicit, build order considers deps | Pitfalls specific to adding these features, integration pitfalls covered, prevention actionable |
|
|
360
|
-
| FILE | STACK.md | FEATURES.md | ARCHITECTURE.md | PITFALLS.md |
|
|
361
|
-
|
|
362
|
-
After all 4 complete, spawn synthesizer:
|
|
363
|
-
|
|
364
|
-
```
|
|
365
|
-
Task(prompt="
|
|
366
|
-
Synthesize research outputs into SUMMARY.md.
|
|
367
|
-
|
|
368
|
-
<files_to_read>
|
|
369
|
-
- .planning/research/STACK.md
|
|
370
|
-
- .planning/research/FEATURES.md
|
|
371
|
-
- .planning/research/ARCHITECTURE.md
|
|
372
|
-
- .planning/research/PITFALLS.md
|
|
373
|
-
</files_to_read>
|
|
374
|
-
|
|
375
|
-
Write to: .planning/research/SUMMARY.md
|
|
376
|
-
Use template: ~/.claude/ez-agents/templates/research-project/SUMMARY.md
|
|
377
|
-
Commit after writing.
|
|
378
|
-
", subagent_type="ez-
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
Display key findings from SUMMARY.md:
|
|
382
|
-
```
|
|
383
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
384
|
-
EZ ► RESEARCH COMPLETE ✓
|
|
385
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
386
|
-
|
|
387
|
-
**Stack additions:** [from SUMMARY.md]
|
|
388
|
-
**Feature table stakes:** [from SUMMARY.md]
|
|
389
|
-
**Watch Out For:** [from SUMMARY.md]
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
**Update lock file state:**
|
|
393
|
-
```bash
|
|
394
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_complete"
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
**If "Skip research":** Continue to Step 9.
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
## 9. Define Requirements
|
|
402
|
-
|
|
403
|
-
```
|
|
404
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
405
|
-
EZ ► DEFINING REQUIREMENTS
|
|
406
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
Read PROJECT.md: core value, current milestone goals, validated requirements (what exists).
|
|
410
|
-
|
|
411
|
-
**If research exists:** Read FEATURES.md, extract feature categories.
|
|
412
|
-
|
|
413
|
-
Present features by category:
|
|
414
|
-
```
|
|
415
|
-
## [Category 1]
|
|
416
|
-
**Table stakes:** Feature A, Feature B
|
|
417
|
-
**Differentiators:** Feature C, Feature D
|
|
418
|
-
**Research notes:** [any relevant notes]
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
**If no research:** Gather requirements through conversation. Ask: "What are the main things users need to do with [new features]?" Clarify, probe for related capabilities, group into categories.
|
|
422
|
-
|
|
423
|
-
**Scope each category** via AskUserQuestion (multiSelect: true, header max 12 chars):
|
|
424
|
-
- "[Feature 1]" — [brief description]
|
|
425
|
-
- "[Feature 2]" — [brief description]
|
|
426
|
-
- "None for this milestone" — Defer entire category
|
|
427
|
-
|
|
428
|
-
Track: Selected → this milestone. Unselected table stakes → future. Unselected differentiators → out of scope.
|
|
429
|
-
|
|
430
|
-
**Identify gaps** via AskUserQuestion:
|
|
431
|
-
- "No, research covered it" — Proceed
|
|
432
|
-
- "Yes, let me add some" — Capture additions
|
|
433
|
-
|
|
434
|
-
**Generate REQUIREMENTS.md:**
|
|
435
|
-
- v1 Requirements grouped by category (checkboxes, REQ-IDs)
|
|
436
|
-
- Future Requirements (deferred)
|
|
437
|
-
- Out of Scope (explicit exclusions with reasoning)
|
|
438
|
-
- Traceability section (empty, filled by roadmap)
|
|
439
|
-
|
|
440
|
-
**REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, NOTIF-02). Continue numbering from existing.
|
|
441
|
-
|
|
442
|
-
**Requirement quality criteria:**
|
|
443
|
-
|
|
444
|
-
Good requirements are:
|
|
445
|
-
- **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
|
|
446
|
-
- **User-centric:** "User can X" (not "System does Y")
|
|
447
|
-
- **Atomic:** One capability per requirement (not "User can login and manage profile")
|
|
448
|
-
- **Independent:** Minimal dependencies on other requirements
|
|
449
|
-
|
|
450
|
-
Present FULL requirements list for confirmation:
|
|
451
|
-
|
|
452
|
-
```
|
|
453
|
-
## Milestone v[X.Y] Requirements
|
|
454
|
-
|
|
455
|
-
### [Category 1]
|
|
456
|
-
- [ ] **CAT1-01**: User can do X
|
|
457
|
-
- [ ] **CAT1-02**: User can do Y
|
|
458
|
-
|
|
459
|
-
### [Category 2]
|
|
460
|
-
- [ ] **CAT2-01**: User can do Z
|
|
461
|
-
|
|
462
|
-
Does this capture what you're building? (yes / adjust)
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
If "adjust": Return to scoping.
|
|
466
|
-
|
|
467
|
-
**Commit requirements:**
|
|
468
|
-
```bash
|
|
469
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: define milestone v[X.Y] requirements" --files .planning/REQUIREMENTS.md
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
**Update lock file state:**
|
|
473
|
-
```bash
|
|
474
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="requirements_defined"
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
---
|
|
478
|
-
|
|
479
|
-
## 10. Create Roadmap (with Stuck Detection - GSD-2 Pattern)
|
|
480
|
-
|
|
481
|
-
```
|
|
482
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
483
|
-
EZ ► CREATING ROADMAP
|
|
484
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
485
|
-
|
|
486
|
-
◆ Spawning roadmapper...
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
**Initialize stuck detection:**
|
|
490
|
-
|
|
491
|
-
```bash
|
|
492
|
-
# Start stuck watcher
|
|
493
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" stuck-watch start \
|
|
494
|
-
--operation="roadmap-creation" \
|
|
495
|
-
--max-retries=1 \
|
|
496
|
-
--timeout=300
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
**Starting phase number:** Read MILESTONES.md for last phase number. Continue from there (v1.0 ended at phase 5 → v1.1 starts at phase 6).
|
|
500
|
-
|
|
501
|
-
```
|
|
502
|
-
Task(prompt="
|
|
503
|
-
<planning_context>
|
|
504
|
-
<files_to_read>
|
|
505
|
-
- .planning/PROJECT.md
|
|
506
|
-
- .planning/REQUIREMENTS.md
|
|
507
|
-
- .planning/research/SUMMARY.md (if exists)
|
|
508
|
-
- .planning/config.json
|
|
509
|
-
- .planning/MILESTONES.md
|
|
510
|
-
</files_to_read>
|
|
511
|
-
</planning_context>
|
|
512
|
-
|
|
513
|
-
<instructions>
|
|
514
|
-
Create roadmap for milestone v[X.Y]:
|
|
515
|
-
1. Start phase numbering from [N]
|
|
516
|
-
2. Derive phases from THIS MILESTONE's requirements only
|
|
517
|
-
3. Map every requirement to exactly one phase
|
|
518
|
-
4. Derive 2-5 success criteria per phase (observable user behaviors)
|
|
519
|
-
5. Validate 100% coverage
|
|
520
|
-
6. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
|
|
521
|
-
7. Return ROADMAP CREATED with summary
|
|
522
|
-
|
|
523
|
-
Write files first, then return.
|
|
524
|
-
</instructions>
|
|
525
|
-
", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap")
|
|
526
|
-
```
|
|
527
|
-
|
|
528
|
-
**Handle return:**
|
|
529
|
-
|
|
530
|
-
**If `## ROADMAP BLOCKED`:**
|
|
531
|
-
1. Log error type and location
|
|
532
|
-
2. Retry ONCE with diagnostic context:
|
|
533
|
-
```
|
|
534
|
-
Task(prompt="
|
|
535
|
-
<retry_context>
|
|
536
|
-
PREVIOUS ATTEMPT FAILED
|
|
537
|
-
Error Type: [error_type]
|
|
538
|
-
Error Location: [location]
|
|
539
|
-
Suggested Fix: [fix]
|
|
540
|
-
|
|
541
|
-
CONTEXT SNAPSHOT FOR DEBUGGING:
|
|
542
|
-
[snapshot of files read]
|
|
543
|
-
|
|
544
|
-
Please try again with this diagnostic information.
|
|
545
|
-
</retry_context>
|
|
546
|
-
", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap (retry)")
|
|
547
|
-
```
|
|
548
|
-
3. If fails again → STOP with exact failure report:
|
|
549
|
-
```
|
|
550
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
551
|
-
EZ ► ROADMAP CREATION FAILED
|
|
552
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
553
|
-
|
|
554
|
-
Error Type: [type]
|
|
555
|
-
Error Location: [file:line]
|
|
556
|
-
Suggested Fix: [action]
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
Next Steps:
|
|
561
|
-
1. Review
|
|
562
|
-
2. Fix [specific issue]
|
|
563
|
-
3. Run: /ez:plan-milestone --retry
|
|
564
|
-
```
|
|
565
|
-
|
|
566
|
-
**If `## ROADMAP CREATED`:** Read ROADMAP.md, present inline:
|
|
567
|
-
|
|
568
|
-
```
|
|
569
|
-
## Proposed Roadmap
|
|
570
|
-
|
|
571
|
-
**[N] phases** | **[X] requirements mapped** | All covered ✓
|
|
572
|
-
|
|
573
|
-
| # | Phase | Goal | Requirements | Success Criteria |
|
|
574
|
-
|---|-------|------|--------------|------------------|
|
|
575
|
-
| [N] | [Name] | [Goal] | [REQ-IDs] | [count] |
|
|
576
|
-
|
|
577
|
-
### Phase Details
|
|
578
|
-
|
|
579
|
-
**Phase [N]: [Name]**
|
|
580
|
-
Goal: [goal]
|
|
581
|
-
Requirements: [REQ-IDs]
|
|
582
|
-
Success criteria:
|
|
583
|
-
1. [criterion]
|
|
584
|
-
2. [criterion]
|
|
585
|
-
```
|
|
586
|
-
|
|
587
|
-
**Ask for approval** via AskUserQuestion:
|
|
588
|
-
- "Approve" — Commit and continue
|
|
589
|
-
- "Adjust phases" — Tell me what to change
|
|
590
|
-
- "Review full file" — Show raw ROADMAP.md
|
|
591
|
-
|
|
592
|
-
**If "Adjust":** Get notes, re-spawn roadmapper with revision context, loop until approved.
|
|
593
|
-
**If "Review":** Display raw ROADMAP.md, re-ask.
|
|
594
|
-
|
|
595
|
-
**Commit roadmap** (after approval):
|
|
596
|
-
```bash
|
|
597
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: create milestone v[X.Y] roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
|
|
598
|
-
```
|
|
599
|
-
|
|
600
|
-
**Update lock file state:**
|
|
601
|
-
```bash
|
|
602
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="roadmap_created"
|
|
603
|
-
```
|
|
604
|
-
|
|
605
|
-
---
|
|
606
|
-
|
|
607
|
-
## 11. Release Lock File
|
|
608
|
-
|
|
609
|
-
**Milestone initialization complete:**
|
|
610
|
-
|
|
611
|
-
```bash
|
|
612
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
|
|
613
|
-
```
|
|
614
|
-
|
|
615
|
-
---
|
|
616
|
-
|
|
617
|
-
## 12. Post-Milestone Cost Report (GSD-2 Pattern)
|
|
618
|
-
|
|
619
|
-
**After all commits complete:**
|
|
620
|
-
|
|
621
|
-
```bash
|
|
622
|
-
# Generate cost report
|
|
623
|
-
COST_REPORT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-report \
|
|
624
|
-
--milestone="v[X.Y]" \
|
|
625
|
-
--format=summary)
|
|
626
|
-
```
|
|
627
|
-
|
|
628
|
-
**Display:**
|
|
629
|
-
```
|
|
630
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
631
|
-
EZ ► MILESTONE INITIALIZATION COST
|
|
632
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
633
|
-
|
|
634
|
-
Milestone: v[X.Y]
|
|
635
|
-
Phases: [N]
|
|
636
|
-
Requirements: [X]
|
|
637
|
-
|
|
638
|
-
Initialization Cost:
|
|
639
|
-
- Research: $[X.XX] ([N] tokens)
|
|
640
|
-
- Requirements: $[X.XX] ([N] tokens)
|
|
641
|
-
- Roadmap: $[X.XX] ([N] tokens)
|
|
642
|
-
- Total: $[X.XX] ([N] tokens)
|
|
643
|
-
|
|
644
|
-
Budget Remaining: $[XX.XX] of $[XX.XX]
|
|
645
|
-
|
|
646
|
-
Projected Total (based on similar milestones): $[XX.XX]
|
|
647
|
-
|
|
648
|
-
View detailed report: /ez:cost --milestone=v[X.Y]
|
|
649
|
-
```
|
|
650
|
-
|
|
651
|
-
---
|
|
652
|
-
|
|
653
|
-
## 13. Done
|
|
654
|
-
|
|
655
|
-
```
|
|
656
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
657
|
-
EZ ► MILESTONE INITIALIZED ✓
|
|
658
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
659
|
-
|
|
660
|
-
**Milestone v[X.Y]: [Name]**
|
|
661
|
-
|
|
662
|
-
| Artifact | Location |
|
|
663
|
-
|----------------|-----------------------------|
|
|
664
|
-
| Project | `.planning/PROJECT.md` |
|
|
665
|
-
| Research | `.planning/research/` |
|
|
666
|
-
| Requirements | `.planning/REQUIREMENTS.md` |
|
|
667
|
-
| Roadmap | `.planning/ROADMAP.md` |
|
|
668
|
-
| Metrics | `.planning/metrics.json` |
|
|
669
|
-
|
|
670
|
-
**[N] phases** | **[X] requirements** | Ready to build ✓
|
|
671
|
-
|
|
672
|
-
## ▶ Next Up
|
|
673
|
-
|
|
674
|
-
**Phase [N]: [Phase Name]** — [Goal]
|
|
675
|
-
|
|
676
|
-
`/ez:discuss-phase [N]` — gather context and clarify approach
|
|
677
|
-
|
|
678
|
-
<sub>`/clear` first → fresh context window</sub>
|
|
679
|
-
|
|
680
|
-
Also: `/ez:plan-phase [N]` — skip discussion, plan directly
|
|
681
|
-
```
|
|
682
|
-
|
|
683
|
-
</process>
|
|
684
|
-
|
|
685
|
-
<success_criteria>
|
|
686
|
-
- [ ] Pre-flight health check passed (all systems go)
|
|
687
|
-
- [ ] Cost tracking initialized (metrics.json created)
|
|
688
|
-
- [ ] Lock file created and maintained throughout
|
|
689
|
-
- [ ] PROJECT.md updated with Current Milestone section
|
|
690
|
-
- [ ] STATE.md reset for new milestone
|
|
691
|
-
- [ ] MILESTONE-CONTEXT.md consumed and deleted (if existed)
|
|
692
|
-
- [ ] Research completed (if selected) — 4 parallel agents, milestone-aware, fresh context
|
|
693
|
-
- [ ] Requirements gathered and scoped per category
|
|
694
|
-
- [ ] REQUIREMENTS.md created with REQ-IDs
|
|
695
|
-
- [ ] ez-roadmapper spawned with phase numbering context
|
|
696
|
-
- [ ] Stuck detection active during roadmap creation
|
|
697
|
-
- [ ] Roadmap files written immediately (not draft)
|
|
698
|
-
- [ ] User feedback incorporated (if any)
|
|
699
|
-
- [ ] ROADMAP.md phases continue from previous milestone
|
|
700
|
-
- [ ] All commits made (if planning docs committed)
|
|
701
|
-
- [ ] Lock file released on completion
|
|
702
|
-
- [ ] Cost report displayed
|
|
703
|
-
- [ ] User knows next step: `/ez:discuss-phase [N]`
|
|
704
|
-
|
|
705
|
-
**Atomic commits:** Each phase commits its artifacts immediately.
|
|
706
|
-
|
|
707
|
-
**GSD-2 Reliability:**
|
|
708
|
-
- ✅ Crash recovery via lock files
|
|
709
|
-
- ✅ Cost transparency via metrics.json
|
|
710
|
-
- ✅ Fresh context per researcher/agent
|
|
711
|
-
- ✅ Stuck detection with diagnostics
|
|
712
|
-
- ✅ Health check pre-flight validation
|
|
713
|
-
</success_criteria>
|
|
1
|
+
<purpose>
|
|
2
|
+
|
|
3
|
+
Start a new milestone cycle for an existing project. Loads project context, gathers milestone goals (from MILESTONE-CONTEXT.md or conversation), updates PROJECT.md and STATE.md, optionally runs parallel research, defines scoped requirements with REQ-IDs, spawns the roadmapper to create phased execution plan, and commits all artifacts. Brownfield equivalent of new-project.
|
|
4
|
+
|
|
5
|
+
**GSD-2 Enhanced:** Includes crash recovery, cost tracking, fresh context, and stuck detection for production-grade reliability.
|
|
6
|
+
|
|
7
|
+
</purpose>
|
|
8
|
+
|
|
9
|
+
<required_reading>
|
|
10
|
+
|
|
11
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
12
|
+
|
|
13
|
+
</required_reading>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
|
|
17
|
+
## 0. Pre-Flight Health Check (GSD-2 Pattern)
|
|
18
|
+
|
|
19
|
+
**MANDATORY FIRST STEP — Validate environment before ANY operation:**
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Run health check
|
|
23
|
+
HEALTH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" doctor --json)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Check:**
|
|
27
|
+
- ✅ Node.js version >= 16.7.0
|
|
28
|
+
- ✅ AI tools available (Claude, OpenCode, etc.)
|
|
29
|
+
- ✅ Config valid (`.planning/config.json`)
|
|
30
|
+
- ✅ Git repo initialized
|
|
31
|
+
- ✅ API keys configured
|
|
32
|
+
|
|
33
|
+
**If any check fails:**
|
|
34
|
+
```
|
|
35
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
36
|
+
EZ ► HEALTH CHECK FAILED
|
|
37
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
38
|
+
|
|
39
|
+
❌ [Failed check description]
|
|
40
|
+
|
|
41
|
+
Fix:
|
|
42
|
+
[suggested command]
|
|
43
|
+
|
|
44
|
+
Example:
|
|
45
|
+
$ [example command]
|
|
46
|
+
|
|
47
|
+
Resolve before continuing with milestone initialization.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Abort milestone init until resolved.**
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 0a. Gather Initial Context (CONTEXT-01, CONTEXT-02)
|
|
55
|
+
|
|
56
|
+
**Initialize ContextManager for context gathering:**
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
const ContextManager = require('../bin/lib/context-manager.cjs');
|
|
60
|
+
const contextManager = new ContextManager(process.cwd());
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Request milestone-specific context:**
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
const context = await contextManager.requestContext({
|
|
67
|
+
files: ['.planning/PROJECT.md', '.planning/STATE.md', '.planning/ROADMAP.md'],
|
|
68
|
+
urls: []
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Agent can request additional context using:**
|
|
73
|
+
- `ez-tools context read <pattern>` — Read local files
|
|
74
|
+
- `ez-tools context fetch <url>` — Fetch URL content (requires user confirmation)
|
|
75
|
+
|
|
76
|
+
**Update STATE.md with context sources:**
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
await contextManager.updateStateMd();
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Continue to Load Context (Step 1) with gathered context.**
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 1. Load Context
|
|
87
|
+
|
|
88
|
+
Read PROJECT.md (existing project, validated requirements, decisions)
|
|
89
|
+
Read MILESTONES.md (what shipped previously)
|
|
90
|
+
Read STATE.md (pending todos, blockers)
|
|
91
|
+
Check for MILESTONE-CONTEXT.md (from /ez:discuss-milestone)
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 1a. Initialize Milestone Cost Tracking (GSD-2 Pattern)
|
|
96
|
+
|
|
97
|
+
**Create/Update metrics.json:**
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Initialize milestone budget
|
|
101
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-init \
|
|
102
|
+
--milestone="v[X.Y]" \
|
|
103
|
+
--budget-ceiling=50.00 \
|
|
104
|
+
--alert-threshold=0.8
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Create `.planning/metrics.json`:**
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"milestone": "v[X.Y]",
|
|
111
|
+
"started_at": "2026-03-18T12:00:00.000Z",
|
|
112
|
+
"budget": {
|
|
113
|
+
"ceiling": 50.00,
|
|
114
|
+
"alert_threshold": 0.8,
|
|
115
|
+
"projected": 0.00,
|
|
116
|
+
"spent": 0.00
|
|
117
|
+
},
|
|
118
|
+
"phases": {},
|
|
119
|
+
"cumulative": {
|
|
120
|
+
"total_tokens": 0,
|
|
121
|
+
"total_cost_usd": 0.00,
|
|
122
|
+
"by_provider": {}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Display budget info:**
|
|
128
|
+
```
|
|
129
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
130
|
+
EZ ► MILESTONE BUDGET
|
|
131
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
132
|
+
|
|
133
|
+
Milestone: v[X.Y]
|
|
134
|
+
Budget Ceiling: $50.00
|
|
135
|
+
Alert Threshold: 80% ($40.00)
|
|
136
|
+
|
|
137
|
+
You will be warned when spending reaches 80% of budget.
|
|
138
|
+
Auto-pause at $50.00.
|
|
139
|
+
|
|
140
|
+
View anytime: /ez:cost
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Commit metrics.json:**
|
|
144
|
+
```bash
|
|
145
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "chore: initialize milestone budget" --files .planning/metrics.json
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 2. Gather Milestone Goals
|
|
151
|
+
|
|
152
|
+
**If MILESTONE-CONTEXT.md exists:**
|
|
153
|
+
- Use features and scope from discuss-milestone
|
|
154
|
+
- Present summary for confirmation
|
|
155
|
+
|
|
156
|
+
**If no context file:**
|
|
157
|
+
- Present what shipped in last milestone
|
|
158
|
+
- Ask inline (freeform, NOT AskUserQuestion): "What do you want to build next?"
|
|
159
|
+
- Wait for their response, then use AskUserQuestion to probe specifics
|
|
160
|
+
- If user selects "Other" at any point to provide freeform input, ask follow-up as plain text — not another AskUserQuestion
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 2a. Create Lock File (GSD-2 Pattern)
|
|
165
|
+
|
|
166
|
+
**Before any major operation:**
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Create auto.lock
|
|
170
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-create \
|
|
171
|
+
--operation="new-milestone" \
|
|
172
|
+
--milestone="v[X.Y]"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Create `.planning/auto.lock`:**
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"pid": 12345,
|
|
179
|
+
"operation": "new-milestone",
|
|
180
|
+
"milestone": "v[X.Y]",
|
|
181
|
+
"started_at": "2026-03-18T12:00:00.000Z",
|
|
182
|
+
"last_heartbeat": "2026-03-18T12:00:00.000Z",
|
|
183
|
+
"state": "gathering_goals"
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Update heartbeat every 5 minutes:**
|
|
188
|
+
```bash
|
|
189
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-heartbeat
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**On completion:**
|
|
193
|
+
```bash
|
|
194
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**On crash/restart:**
|
|
198
|
+
- Detect orphaned lock (PID dead)
|
|
199
|
+
- Synthesize recovery briefing
|
|
200
|
+
- Resume from last known state
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 3. Determine Milestone Version
|
|
205
|
+
|
|
206
|
+
- Parse last version from MILESTONES.md
|
|
207
|
+
- Suggest next version (v1.0 → v1.1, or v2.0 for major)
|
|
208
|
+
- Confirm with user
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 4. Update PROJECT.md
|
|
213
|
+
|
|
214
|
+
Add/update:
|
|
215
|
+
|
|
216
|
+
```markdown
|
|
217
|
+
## Current Milestone: v[X.Y] [Name]
|
|
218
|
+
|
|
219
|
+
**Goal:** [One sentence describing milestone focus]
|
|
220
|
+
|
|
221
|
+
**Target features:**
|
|
222
|
+
- [Feature 1]
|
|
223
|
+
- [Feature 2]
|
|
224
|
+
- [Feature 3]
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Update Active requirements section and "Last updated" footer.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 5. Update STATE.md
|
|
232
|
+
|
|
233
|
+
```markdown
|
|
234
|
+
## Current Position
|
|
235
|
+
|
|
236
|
+
Phase: Not started (defining requirements)
|
|
237
|
+
Plan: —
|
|
238
|
+
Status: Defining requirements
|
|
239
|
+
Last activity: [today] — Milestone v[X.Y] started
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Keep Accumulated Context section from previous milestone.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 6. Cleanup and Commit
|
|
247
|
+
|
|
248
|
+
Delete MILESTONE-CONTEXT.md if exists (consumed).
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: start milestone v[X.Y] [Name]" --files .planning/PROJECT.md .planning/STATE.md .planning/metrics.json
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Update lock file state:**
|
|
255
|
+
```bash
|
|
256
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="context_loaded"
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## 7. Load Context and Resolve Models
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init new-milestone)
|
|
265
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`.
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 8. Research Decision
|
|
273
|
+
|
|
274
|
+
AskUserQuestion: "Research the domain ecosystem for new features before defining requirements?"
|
|
275
|
+
- "Research first (Recommended)" — Discover patterns, features, architecture for NEW capabilities
|
|
276
|
+
- "Skip research" — Go straight to requirements
|
|
277
|
+
|
|
278
|
+
**Persist choice to config** (so future `/ez:plan-phase` honors it):
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# If "Research first": persist true
|
|
282
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research true
|
|
283
|
+
|
|
284
|
+
# If "Skip research": persist false
|
|
285
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research false
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Update lock file state:**
|
|
289
|
+
```bash
|
|
290
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_decision"
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**If "Research first":**
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
297
|
+
EZ ► RESEARCHING
|
|
298
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
299
|
+
|
|
300
|
+
◆ Spawning 4 researchers in parallel...
|
|
301
|
+
→ Stack, Features, Architecture, Pitfalls
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
mkdir -p .planning/research
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**Spawn 4 parallel ez-project-researcher agents with FRESH CONTEXT (GSD-2 Pattern):**
|
|
309
|
+
|
|
310
|
+
Each uses this template with dimension-specific fields:
|
|
311
|
+
|
|
312
|
+
**Common structure for all 4 researchers:**
|
|
313
|
+
```
|
|
314
|
+
Task(prompt="
|
|
315
|
+
<research_type>Project Research — {DIMENSION} for [new features].</research_type>
|
|
316
|
+
|
|
317
|
+
<fresh_context>
|
|
318
|
+
CONTEXT RESET: This is a fresh 200K session.
|
|
319
|
+
No accumulated garbage from prior tasks.
|
|
320
|
+
Only relevant context pre-loaded below.
|
|
321
|
+
</fresh_context>
|
|
322
|
+
|
|
323
|
+
<pre_loaded_context>
|
|
324
|
+
- .planning/PROJECT.md excerpt (core value, milestone goals)
|
|
325
|
+
- .planning/REQUIREMENTS.md excerpt (active requirements)
|
|
326
|
+
- .planning/ROADMAP.md excerpt (phase structure)
|
|
327
|
+
</pre_loaded_context>
|
|
328
|
+
|
|
329
|
+
<milestone_context>
|
|
330
|
+
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
331
|
+
{EXISTING_CONTEXT}
|
|
332
|
+
Focus ONLY on what's needed for the NEW features.
|
|
333
|
+
</milestone_context>
|
|
334
|
+
|
|
335
|
+
<question>{QUESTION}</question>
|
|
336
|
+
|
|
337
|
+
<files_to_read>
|
|
338
|
+
- .planning/PROJECT.md (Project context)
|
|
339
|
+
</files_to_read>
|
|
340
|
+
|
|
341
|
+
<downstream_consumer>{CONSUMER}</downstream_consumer>
|
|
342
|
+
|
|
343
|
+
<quality_gate>{GATES}</quality_gate>
|
|
344
|
+
|
|
345
|
+
<output>
|
|
346
|
+
Write to: .planning/research/{FILE}
|
|
347
|
+
Use template: ~/.claude/ez-agents/templates/research-project/{FILE}
|
|
348
|
+
</output>
|
|
349
|
+
", subagent_type="ez-project-researcher", model="{researcher_model}", description="{DIMENSION} research")
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Dimension-specific fields:**
|
|
353
|
+
|
|
354
|
+
| Field | Stack | Features | Architecture | Pitfalls |
|
|
355
|
+
|-------|-------|----------|-------------|----------|
|
|
356
|
+
| EXISTING_CONTEXT | Existing validated capabilities (DO NOT re-research): [from PROJECT.md] | Existing features (already built): [from PROJECT.md] | Existing architecture: [from PROJECT.md or codebase map] | Focus on common mistakes when ADDING these features to existing system |
|
|
357
|
+
| QUESTION | What stack additions/changes are needed for [new features]? | How do [target features] typically work? Expected behavior? | How do [target features] integrate with existing architecture? | Common mistakes when adding [target features] to [domain]? |
|
|
358
|
+
| CONSUMER | Specific libraries with versions for NEW capabilities, integration points, what NOT to add | Table stakes vs differentiators vs anti-features, complexity noted, dependencies on existing | Integration points, new components, data flow changes, suggested build order | Warning signs, prevention strategy, which phase should address it |
|
|
359
|
+
| GATES | Versions current (verify with Context7), rationale explains WHY, integration considered | Categories clear, complexity noted, dependencies identified | Integration points identified, new vs modified explicit, build order considers deps | Pitfalls specific to adding these features, integration pitfalls covered, prevention actionable |
|
|
360
|
+
| FILE | STACK.md | FEATURES.md | ARCHITECTURE.md | PITFALLS.md |
|
|
361
|
+
|
|
362
|
+
After all 4 complete, spawn synthesizer:
|
|
363
|
+
|
|
364
|
+
```
|
|
365
|
+
Task(prompt="
|
|
366
|
+
Synthesize research outputs into SUMMARY.md.
|
|
367
|
+
|
|
368
|
+
<files_to_read>
|
|
369
|
+
- .planning/research/STACK.md
|
|
370
|
+
- .planning/research/FEATURES.md
|
|
371
|
+
- .planning/research/ARCHITECTURE.md
|
|
372
|
+
- .planning/research/PITFALLS.md
|
|
373
|
+
</files_to_read>
|
|
374
|
+
|
|
375
|
+
Write to: .planning/research/SUMMARY.md
|
|
376
|
+
Use template: ~/.claude/ez-agents/templates/research-project/SUMMARY.md
|
|
377
|
+
Commit after writing.
|
|
378
|
+
", subagent_type="ez-phase-researcher", model="{synthesizer_model}", description="Synthesize research")
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
Display key findings from SUMMARY.md:
|
|
382
|
+
```
|
|
383
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
384
|
+
EZ ► RESEARCH COMPLETE ✓
|
|
385
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
386
|
+
|
|
387
|
+
**Stack additions:** [from SUMMARY.md]
|
|
388
|
+
**Feature table stakes:** [from SUMMARY.md]
|
|
389
|
+
**Watch Out For:** [from SUMMARY.md]
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Update lock file state:**
|
|
393
|
+
```bash
|
|
394
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_complete"
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
**If "Skip research":** Continue to Step 9.
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## 9. Define Requirements
|
|
402
|
+
|
|
403
|
+
```
|
|
404
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
405
|
+
EZ ► DEFINING REQUIREMENTS
|
|
406
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Read PROJECT.md: core value, current milestone goals, validated requirements (what exists).
|
|
410
|
+
|
|
411
|
+
**If research exists:** Read FEATURES.md, extract feature categories.
|
|
412
|
+
|
|
413
|
+
Present features by category:
|
|
414
|
+
```
|
|
415
|
+
## [Category 1]
|
|
416
|
+
**Table stakes:** Feature A, Feature B
|
|
417
|
+
**Differentiators:** Feature C, Feature D
|
|
418
|
+
**Research notes:** [any relevant notes]
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
**If no research:** Gather requirements through conversation. Ask: "What are the main things users need to do with [new features]?" Clarify, probe for related capabilities, group into categories.
|
|
422
|
+
|
|
423
|
+
**Scope each category** via AskUserQuestion (multiSelect: true, header max 12 chars):
|
|
424
|
+
- "[Feature 1]" — [brief description]
|
|
425
|
+
- "[Feature 2]" — [brief description]
|
|
426
|
+
- "None for this milestone" — Defer entire category
|
|
427
|
+
|
|
428
|
+
Track: Selected → this milestone. Unselected table stakes → future. Unselected differentiators → out of scope.
|
|
429
|
+
|
|
430
|
+
**Identify gaps** via AskUserQuestion:
|
|
431
|
+
- "No, research covered it" — Proceed
|
|
432
|
+
- "Yes, let me add some" — Capture additions
|
|
433
|
+
|
|
434
|
+
**Generate REQUIREMENTS.md:**
|
|
435
|
+
- v1 Requirements grouped by category (checkboxes, REQ-IDs)
|
|
436
|
+
- Future Requirements (deferred)
|
|
437
|
+
- Out of Scope (explicit exclusions with reasoning)
|
|
438
|
+
- Traceability section (empty, filled by roadmap)
|
|
439
|
+
|
|
440
|
+
**REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, NOTIF-02). Continue numbering from existing.
|
|
441
|
+
|
|
442
|
+
**Requirement quality criteria:**
|
|
443
|
+
|
|
444
|
+
Good requirements are:
|
|
445
|
+
- **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
|
|
446
|
+
- **User-centric:** "User can X" (not "System does Y")
|
|
447
|
+
- **Atomic:** One capability per requirement (not "User can login and manage profile")
|
|
448
|
+
- **Independent:** Minimal dependencies on other requirements
|
|
449
|
+
|
|
450
|
+
Present FULL requirements list for confirmation:
|
|
451
|
+
|
|
452
|
+
```
|
|
453
|
+
## Milestone v[X.Y] Requirements
|
|
454
|
+
|
|
455
|
+
### [Category 1]
|
|
456
|
+
- [ ] **CAT1-01**: User can do X
|
|
457
|
+
- [ ] **CAT1-02**: User can do Y
|
|
458
|
+
|
|
459
|
+
### [Category 2]
|
|
460
|
+
- [ ] **CAT2-01**: User can do Z
|
|
461
|
+
|
|
462
|
+
Does this capture what you're building? (yes / adjust)
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
If "adjust": Return to scoping.
|
|
466
|
+
|
|
467
|
+
**Commit requirements:**
|
|
468
|
+
```bash
|
|
469
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: define milestone v[X.Y] requirements" --files .planning/REQUIREMENTS.md
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**Update lock file state:**
|
|
473
|
+
```bash
|
|
474
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="requirements_defined"
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## 10. Create Roadmap (with Stuck Detection - GSD-2 Pattern)
|
|
480
|
+
|
|
481
|
+
```
|
|
482
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
483
|
+
EZ ► CREATING ROADMAP
|
|
484
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
485
|
+
|
|
486
|
+
◆ Spawning roadmapper...
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
**Initialize stuck detection:**
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
# Start stuck watcher
|
|
493
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" stuck-watch start \
|
|
494
|
+
--operation="roadmap-creation" \
|
|
495
|
+
--max-retries=1 \
|
|
496
|
+
--timeout=300
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
**Starting phase number:** Read MILESTONES.md for last phase number. Continue from there (v1.0 ended at phase 5 → v1.1 starts at phase 6).
|
|
500
|
+
|
|
501
|
+
```
|
|
502
|
+
Task(prompt="
|
|
503
|
+
<planning_context>
|
|
504
|
+
<files_to_read>
|
|
505
|
+
- .planning/PROJECT.md
|
|
506
|
+
- .planning/REQUIREMENTS.md
|
|
507
|
+
- .planning/research/SUMMARY.md (if exists)
|
|
508
|
+
- .planning/config.json
|
|
509
|
+
- .planning/MILESTONES.md
|
|
510
|
+
</files_to_read>
|
|
511
|
+
</planning_context>
|
|
512
|
+
|
|
513
|
+
<instructions>
|
|
514
|
+
Create roadmap for milestone v[X.Y]:
|
|
515
|
+
1. Start phase numbering from [N]
|
|
516
|
+
2. Derive phases from THIS MILESTONE's requirements only
|
|
517
|
+
3. Map every requirement to exactly one phase
|
|
518
|
+
4. Derive 2-5 success criteria per phase (observable user behaviors)
|
|
519
|
+
5. Validate 100% coverage
|
|
520
|
+
6. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
|
|
521
|
+
7. Return ROADMAP CREATED with summary
|
|
522
|
+
|
|
523
|
+
Write files first, then return.
|
|
524
|
+
</instructions>
|
|
525
|
+
", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap")
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
**Handle return:**
|
|
529
|
+
|
|
530
|
+
**If `## ROADMAP BLOCKED`:**
|
|
531
|
+
1. Log error type and location
|
|
532
|
+
2. Retry ONCE with diagnostic context:
|
|
533
|
+
```
|
|
534
|
+
Task(prompt="
|
|
535
|
+
<retry_context>
|
|
536
|
+
PREVIOUS ATTEMPT FAILED
|
|
537
|
+
Error Type: [error_type]
|
|
538
|
+
Error Location: [location]
|
|
539
|
+
Suggested Fix: [fix]
|
|
540
|
+
|
|
541
|
+
CONTEXT SNAPSHOT FOR DEBUGGING:
|
|
542
|
+
[snapshot of files read]
|
|
543
|
+
|
|
544
|
+
Please try again with this diagnostic information.
|
|
545
|
+
</retry_context>
|
|
546
|
+
", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap (retry)")
|
|
547
|
+
```
|
|
548
|
+
3. If fails again → STOP with exact failure report:
|
|
549
|
+
```
|
|
550
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
551
|
+
EZ ► ROADMAP CREATION FAILED
|
|
552
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
553
|
+
|
|
554
|
+
Error Type: [type]
|
|
555
|
+
Error Location: [file:line]
|
|
556
|
+
Suggested Fix: [action]
|
|
557
|
+
|
|
558
|
+
Debug: Run `/ez:debug` to see current session state
|
|
559
|
+
|
|
560
|
+
Next Steps:
|
|
561
|
+
1. Review error details
|
|
562
|
+
2. Fix [specific issue]
|
|
563
|
+
3. Run: /ez:plan-milestone --retry
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
**If `## ROADMAP CREATED`:** Read ROADMAP.md, present inline:
|
|
567
|
+
|
|
568
|
+
```
|
|
569
|
+
## Proposed Roadmap
|
|
570
|
+
|
|
571
|
+
**[N] phases** | **[X] requirements mapped** | All covered ✓
|
|
572
|
+
|
|
573
|
+
| # | Phase | Goal | Requirements | Success Criteria |
|
|
574
|
+
|---|-------|------|--------------|------------------|
|
|
575
|
+
| [N] | [Name] | [Goal] | [REQ-IDs] | [count] |
|
|
576
|
+
|
|
577
|
+
### Phase Details
|
|
578
|
+
|
|
579
|
+
**Phase [N]: [Name]**
|
|
580
|
+
Goal: [goal]
|
|
581
|
+
Requirements: [REQ-IDs]
|
|
582
|
+
Success criteria:
|
|
583
|
+
1. [criterion]
|
|
584
|
+
2. [criterion]
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
**Ask for approval** via AskUserQuestion:
|
|
588
|
+
- "Approve" — Commit and continue
|
|
589
|
+
- "Adjust phases" — Tell me what to change
|
|
590
|
+
- "Review full file" — Show raw ROADMAP.md
|
|
591
|
+
|
|
592
|
+
**If "Adjust":** Get notes, re-spawn roadmapper with revision context, loop until approved.
|
|
593
|
+
**If "Review":** Display raw ROADMAP.md, re-ask.
|
|
594
|
+
|
|
595
|
+
**Commit roadmap** (after approval):
|
|
596
|
+
```bash
|
|
597
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: create milestone v[X.Y] roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
**Update lock file state:**
|
|
601
|
+
```bash
|
|
602
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="roadmap_created"
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
## 11. Release Lock File
|
|
608
|
+
|
|
609
|
+
**Milestone initialization complete:**
|
|
610
|
+
|
|
611
|
+
```bash
|
|
612
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
## 12. Post-Milestone Cost Report (GSD-2 Pattern)
|
|
618
|
+
|
|
619
|
+
**After all commits complete:**
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
# Generate cost report
|
|
623
|
+
COST_REPORT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-report \
|
|
624
|
+
--milestone="v[X.Y]" \
|
|
625
|
+
--format=summary)
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
**Display:**
|
|
629
|
+
```
|
|
630
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
631
|
+
EZ ► MILESTONE INITIALIZATION COST
|
|
632
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
633
|
+
|
|
634
|
+
Milestone: v[X.Y]
|
|
635
|
+
Phases: [N]
|
|
636
|
+
Requirements: [X]
|
|
637
|
+
|
|
638
|
+
Initialization Cost:
|
|
639
|
+
- Research: $[X.XX] ([N] tokens)
|
|
640
|
+
- Requirements: $[X.XX] ([N] tokens)
|
|
641
|
+
- Roadmap: $[X.XX] ([N] tokens)
|
|
642
|
+
- Total: $[X.XX] ([N] tokens)
|
|
643
|
+
|
|
644
|
+
Budget Remaining: $[XX.XX] of $[XX.XX]
|
|
645
|
+
|
|
646
|
+
Projected Total (based on similar milestones): $[XX.XX]
|
|
647
|
+
|
|
648
|
+
View detailed report: /ez:cost --milestone=v[X.Y]
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
## 13. Done
|
|
654
|
+
|
|
655
|
+
```
|
|
656
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
657
|
+
EZ ► MILESTONE INITIALIZED ✓
|
|
658
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
659
|
+
|
|
660
|
+
**Milestone v[X.Y]: [Name]**
|
|
661
|
+
|
|
662
|
+
| Artifact | Location |
|
|
663
|
+
|----------------|-----------------------------|
|
|
664
|
+
| Project | `.planning/PROJECT.md` |
|
|
665
|
+
| Research | `.planning/research/` |
|
|
666
|
+
| Requirements | `.planning/REQUIREMENTS.md` |
|
|
667
|
+
| Roadmap | `.planning/ROADMAP.md` |
|
|
668
|
+
| Metrics | `.planning/metrics.json` |
|
|
669
|
+
|
|
670
|
+
**[N] phases** | **[X] requirements** | Ready to build ✓
|
|
671
|
+
|
|
672
|
+
## ▶ Next Up
|
|
673
|
+
|
|
674
|
+
**Phase [N]: [Phase Name]** — [Goal]
|
|
675
|
+
|
|
676
|
+
`/ez:discuss-phase [N]` — gather context and clarify approach
|
|
677
|
+
|
|
678
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
679
|
+
|
|
680
|
+
Also: `/ez:plan-phase [N]` — skip discussion, plan directly
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
</process>
|
|
684
|
+
|
|
685
|
+
<success_criteria>
|
|
686
|
+
- [ ] Pre-flight health check passed (all systems go)
|
|
687
|
+
- [ ] Cost tracking initialized (metrics.json created)
|
|
688
|
+
- [ ] Lock file created and maintained throughout
|
|
689
|
+
- [ ] PROJECT.md updated with Current Milestone section
|
|
690
|
+
- [ ] STATE.md reset for new milestone
|
|
691
|
+
- [ ] MILESTONE-CONTEXT.md consumed and deleted (if existed)
|
|
692
|
+
- [ ] Research completed (if selected) — 4 parallel agents, milestone-aware, fresh context
|
|
693
|
+
- [ ] Requirements gathered and scoped per category
|
|
694
|
+
- [ ] REQUIREMENTS.md created with REQ-IDs
|
|
695
|
+
- [ ] ez-roadmapper spawned with phase numbering context
|
|
696
|
+
- [ ] Stuck detection active during roadmap creation
|
|
697
|
+
- [ ] Roadmap files written immediately (not draft)
|
|
698
|
+
- [ ] User feedback incorporated (if any)
|
|
699
|
+
- [ ] ROADMAP.md phases continue from previous milestone
|
|
700
|
+
- [ ] All commits made (if planning docs committed)
|
|
701
|
+
- [ ] Lock file released on completion
|
|
702
|
+
- [ ] Cost report displayed
|
|
703
|
+
- [ ] User knows next step: `/ez:discuss-phase [N]`
|
|
704
|
+
|
|
705
|
+
**Atomic commits:** Each phase commits its artifacts immediately.
|
|
706
|
+
|
|
707
|
+
**GSD-2 Reliability:**
|
|
708
|
+
- ✅ Crash recovery via lock files
|
|
709
|
+
- ✅ Cost transparency via metrics.json
|
|
710
|
+
- ✅ Fresh context per researcher/agent
|
|
711
|
+
- ✅ Stuck detection with diagnostics
|
|
712
|
+
- ✅ Health check pre-flight validation
|
|
713
|
+
</success_criteria>
|