@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
|
@@ -281,46 +281,6 @@ test -f "${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md" && echo "VALIDATION_CREATED
|
|
|
281
281
|
|
|
282
282
|
**If not found:** Warn and continue — plans may fail Dimension 8.
|
|
283
283
|
|
|
284
|
-
## 5.6. UI Design Contract Gate
|
|
285
|
-
|
|
286
|
-
> Skip if `workflow.ui_phase` is explicitly `false` AND `workflow.ui_safety_gate` is explicitly `false` in `.planning/config.json`. If keys are absent, treat as enabled.
|
|
287
|
-
|
|
288
|
-
```bash
|
|
289
|
-
UI_PHASE_CFG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get workflow.ui_phase 2>/dev/null || echo "true")
|
|
290
|
-
UI_GATE_CFG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get workflow.ui_safety_gate 2>/dev/null || echo "true")
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
**If both are `false`:** Skip to step 6.
|
|
294
|
-
|
|
295
|
-
Check if phase has frontend indicators:
|
|
296
|
-
|
|
297
|
-
```bash
|
|
298
|
-
PHASE_SECTION=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}" 2>/dev/null)
|
|
299
|
-
echo "$PHASE_SECTION" | grep -iE "UI|interface|frontend|component|layout|page|screen|view|form|dashboard|widget" > /dev/null 2>&1
|
|
300
|
-
HAS_UI=$?
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
**If `HAS_UI` is 0 (frontend indicators found):**
|
|
304
|
-
|
|
305
|
-
Check for existing UI-SPEC:
|
|
306
|
-
```bash
|
|
307
|
-
UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
**If UI-SPEC.md found:** Set `UI_SPEC_PATH=$UI_SPEC_FILE`. Display: `Using UI design contract: ${UI_SPEC_PATH}`
|
|
311
|
-
|
|
312
|
-
**If UI-SPEC.md missing AND `UI_GATE_CFG` is `true`:**
|
|
313
|
-
|
|
314
|
-
Use AskUserQuestion:
|
|
315
|
-
- header: "UI Design Contract"
|
|
316
|
-
- question: "Phase {N} has frontend indicators but no UI-SPEC.md. Generate a design contract before planning?"
|
|
317
|
-
- options:
|
|
318
|
-
- "Generate UI-SPEC first" → Display: "Run `/ez:ui-phase {N}` then re-run `/ez:plan-phase {N}`". Exit workflow.
|
|
319
|
-
- "Continue without UI-SPEC" → Continue to step 6.
|
|
320
|
-
- "Not a frontend phase" → Continue to step 6.
|
|
321
|
-
|
|
322
|
-
**If `HAS_UI` is 1 (no frontend indicators):** Skip silently to step 6.
|
|
323
|
-
|
|
324
284
|
## 6. Check Existing Plans
|
|
325
285
|
|
|
326
286
|
```bash
|
|
@@ -1,253 +1,253 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Orchestrate tier-aware production releases. Validates state, runs security gates, evaluates tier checklist, creates release branch, generates changelog, bumps version, writes rollback plan, and tags the release.
|
|
3
|
-
</purpose>
|
|
4
|
-
|
|
5
|
-
<process>
|
|
6
|
-
|
|
7
|
-
<auto_invoke>
|
|
8
|
-
Check for --no-auto in ARGUMENTS. If present, skip this section and proceed to step 1.
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
SMART_ORCH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get smart_orchestration.enabled 2>/dev/null || echo "true")
|
|
12
|
-
```
|
|
13
|
-
If `SMART_ORCH` is `"false"`: skip, proceed to step 1.
|
|
14
|
-
|
|
15
|
-
**Tier-based pre-flight:**
|
|
16
|
-
Parse the tier argument from ARGUMENTS (mvp / medium / enterprise).
|
|
17
|
-
|
|
18
|
-
- **mvp**: No pre-flight auto-invocations. Proceed directly to step 1.
|
|
19
|
-
- **medium**: Check if a VERIFICATION.md from verify-work already exists for the current phase. If not:
|
|
20
|
-
→ Display: `[auto] Running verify-work before medium release...`
|
|
21
|
-
→ Invoke: Skill(ez:verify-work)
|
|
22
|
-
→ Continue to step 1.
|
|
23
|
-
- **enterprise**: Run in sequence:
|
|
24
|
-
→ Display: `[auto] Running verify-work...`
|
|
25
|
-
→ Invoke: Skill(ez:verify-work)
|
|
26
|
-
→ Display: `[auto] Running audit-milestone...`
|
|
27
|
-
→ Invoke: Skill(ez:audit-milestone)
|
|
28
|
-
→ Display: `[auto] Running arch-review...`
|
|
29
|
-
→ Invoke: Skill(ez:arch-review)
|
|
30
|
-
→ Continue to step 1.
|
|
31
|
-
|
|
32
|
-
All auto-invocations are prefixed with `[auto]` in output. Override with `--no-auto` to skip all pre-invocations.
|
|
33
|
-
</auto_invoke>
|
|
34
|
-
|
|
35
|
-
## 1. Initialize
|
|
36
|
-
|
|
37
|
-
Parse $ARGUMENTS:
|
|
38
|
-
- Command: `release` or `preflight`
|
|
39
|
-
- Tier: `mvp`, `medium`, or `enterprise`
|
|
40
|
-
- Version: semver string (e.g., `1.0.0`)
|
|
41
|
-
|
|
42
|
-
**If missing tier or version (for release command):**
|
|
43
|
-
```
|
|
44
|
-
Usage: /ez:release <tier> <version>
|
|
45
|
-
/ez:release preflight <tier>
|
|
46
|
-
|
|
47
|
-
Examples:
|
|
48
|
-
/ez:release mvp v1.0.0
|
|
49
|
-
/ez:release medium v1.5.0
|
|
50
|
-
/ez:release enterprise v2.0.0
|
|
51
|
-
/ez:release preflight medium
|
|
52
|
-
```
|
|
53
|
-
Exit.
|
|
54
|
-
|
|
55
|
-
**Normalize version:** Strip leading `v` if present (e.g., `v1.0.0` → `1.0.0`).
|
|
56
|
-
|
|
57
|
-
**Load tier config:**
|
|
58
|
-
```bash
|
|
59
|
-
TIER_CONFIG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" tier-config "${TARGET_TIER}" 2>/dev/null)
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Display banner:
|
|
63
|
-
```
|
|
64
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
-
EZ ► RELEASE v{version} — {TIER} TIER
|
|
66
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## 2. Validate Semver
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
echo "${VERSION}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$"
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**If invalid:** Error — "Version must be semver (X.Y.Z). Got: {version}"
|
|
76
|
-
|
|
77
|
-
## 3. Check Current State
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# Uncommitted changes
|
|
81
|
-
git status --short
|
|
82
|
-
|
|
83
|
-
# Current branch
|
|
84
|
-
git branch --show-current
|
|
85
|
-
|
|
86
|
-
# Current version
|
|
87
|
-
CURRENT=$(node -e "console.log(require('./package.json').version)" 2>/dev/null || echo "0.0.0")
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**If uncommitted changes:** Error — "Commit or stash all changes before releasing"
|
|
91
|
-
|
|
92
|
-
## 4. Run Security Gates
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
echo "Running security gates..."
|
|
96
|
-
|
|
97
|
-
# Gate 1: No secrets in tracked files
|
|
98
|
-
SECRET_HITS=$(git grep -i -E "(api[_-]?key|password|secret)['\"]?\s*[=:]\s*['\"]?[a-zA-Z0-9+/]{20,}" HEAD 2>/dev/null | \
|
|
99
|
-
grep -v "example\|placeholder\|your-key\|process\.env\|env\.\|config\.\|getenv" | wc -l)
|
|
100
|
-
|
|
101
|
-
# Gate 2: npm audit
|
|
102
|
-
npm audit --audit-level=critical 2>/dev/null
|
|
103
|
-
AUDIT_EXIT=$?
|
|
104
|
-
|
|
105
|
-
# Gate 3: Production TODOs
|
|
106
|
-
PROD_TODOS=$(grep -rn "TODO\|FIXME\|HACK" src/ --include="*.ts" --include="*.js" --include="*.py" 2>/dev/null | \
|
|
107
|
-
grep -v "test\|spec\|__test__\|\.test\." | wc -l)
|
|
108
|
-
|
|
109
|
-
# Gate 4: .env in .gitignore
|
|
110
|
-
grep -q "^\.env" .gitignore 2>/dev/null && ENV_SAFE=true || ENV_SAFE=false
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Security gate results:
|
|
114
|
-
```
|
|
115
|
-
Security Gates:
|
|
116
|
-
✓/✗ No secrets in committed files ({SECRET_HITS} found)
|
|
117
|
-
✓/✗ npm audit clean (exit {AUDIT_EXIT})
|
|
118
|
-
✓/✗ No production TODOs ({PROD_TODOS} found)
|
|
119
|
-
✓/✗ .env in .gitignore
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
**Hard stop:** If SECRET_HITS > 0 → "BLOCKED: Secrets found in committed files. Remove before releasing."
|
|
123
|
-
**Hard stop:** If AUDIT_EXIT is non-zero → "BLOCKED: Critical vulnerabilities found. Run npm audit fix."
|
|
124
|
-
|
|
125
|
-
## 5. Run Tier Checklist
|
|
126
|
-
|
|
127
|
-
Load checklist template from `~/.claude/ez-agents/templates/release-checklist.md`.
|
|
128
|
-
|
|
129
|
-
Run automated checks for the target tier:
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" release check-tier "${TARGET_TIER}"
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Display checklist results with pass/fail/skip for each item.
|
|
136
|
-
|
|
137
|
-
**If `preflight` command:** Display checklist results and exit here.
|
|
138
|
-
|
|
139
|
-
## 6. Check Coverage (if test coverage available)
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
# Try to find coverage report
|
|
143
|
-
COVERAGE=$(cat coverage/coverage-summary.json 2>/dev/null | jq '.total.lines.pct // 0')
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
Coverage thresholds by tier:
|
|
147
|
-
- mvp: 60%
|
|
148
|
-
- medium: 80%
|
|
149
|
-
- enterprise: 95%
|
|
150
|
-
|
|
151
|
-
**If below threshold:** Warning (not hard blocker — tests may not be configured).
|
|
152
|
-
|
|
153
|
-
## 7. Spawn Release Agent
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
157
|
-
◆ Spawning release agent...
|
|
158
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Release agent prompt:
|
|
162
|
-
|
|
163
|
-
```markdown
|
|
164
|
-
<objective>
|
|
165
|
-
Create a {TARGET_TIER} tier release v{VERSION}.
|
|
166
|
-
</objective>
|
|
167
|
-
|
|
168
|
-
<release_config>
|
|
169
|
-
Tier: {TARGET_TIER}
|
|
170
|
-
Version: {VERSION}
|
|
171
|
-
Current version: {CURRENT_VERSION}
|
|
172
|
-
</release_config>
|
|
173
|
-
|
|
174
|
-
<files_to_read>
|
|
175
|
-
- package.json (current version and scripts)
|
|
176
|
-
- CHANGELOG.md (if exists — append new entry)
|
|
177
|
-
- .planning/config.json (release tier config)
|
|
178
|
-
- ~/.claude/ez-agents/templates/release-checklist.md (checklist template)
|
|
179
|
-
- ~/.claude/ez-agents/templates/rollback-plan.md (rollback template)
|
|
180
|
-
</files_to_read>
|
|
181
|
-
|
|
182
|
-
<security_gate_results>
|
|
183
|
-
{security gate results from step 4}
|
|
184
|
-
</security_gate_results>
|
|
185
|
-
|
|
186
|
-
<checklist_results>
|
|
187
|
-
{checklist results from step 5}
|
|
188
|
-
</checklist_results>
|
|
189
|
-
|
|
190
|
-
<tasks>
|
|
191
|
-
1. Create release branch (per tier: trunk | github-flow | gitflow)
|
|
192
|
-
2. Generate changelog from git log since last tag
|
|
193
|
-
3. Bump version in package.json to {VERSION}
|
|
194
|
-
4. Create rollback plan in .planning/releases/v{VERSION}-ROLLBACK-PLAN.md
|
|
195
|
-
5. Commit release artifacts
|
|
196
|
-
6. Tag v{VERSION}
|
|
197
|
-
7. Report production readiness score
|
|
198
|
-
</tasks>
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
Task(
|
|
203
|
-
prompt=release_prompt,
|
|
204
|
-
subagent_type="ez-release-agent",
|
|
205
|
-
model="{planner_model from init}"
|
|
206
|
-
)
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
## 8. Handle Agent Return
|
|
210
|
-
|
|
211
|
-
**`## RELEASE COMPLETE`:**
|
|
212
|
-
|
|
213
|
-
```
|
|
214
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
215
|
-
EZ ► RELEASE v{version} READY ✓
|
|
216
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
217
|
-
|
|
218
|
-
{agent summary}
|
|
219
|
-
|
|
220
|
-
### To Ship
|
|
221
|
-
git push origin {branch} && git push origin v{version}
|
|
222
|
-
|
|
223
|
-
### Rollback Plan
|
|
224
|
-
.planning/releases/v{version}-ROLLBACK-PLAN.md
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
**If blocked:**
|
|
228
|
-
```
|
|
229
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
230
|
-
EZ ► RELEASE BLOCKED
|
|
231
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
232
|
-
|
|
233
|
-
{blocker details}
|
|
234
|
-
|
|
235
|
-
Fix the above issues then re-run: /ez:release {tier} v{version}
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
</process>
|
|
239
|
-
|
|
240
|
-
<success_criteria>
|
|
241
|
-
- [ ] Tier and version validated
|
|
242
|
-
- [ ] Uncommitted changes check passed
|
|
243
|
-
- [ ] All security gates run (fail on hard blockers)
|
|
244
|
-
- [ ] Tier checklist evaluated
|
|
245
|
-
- [ ] Coverage checked against tier threshold
|
|
246
|
-
- [ ] ez-release-agent spawned with full context
|
|
247
|
-
- [ ] Release branch created per tier strategy
|
|
248
|
-
- [ ] Changelog updated
|
|
249
|
-
- [ ] Version bumped in package.json
|
|
250
|
-
- [ ] Rollback plan written
|
|
251
|
-
- [ ] Tag created
|
|
252
|
-
- [ ] User sees push instructions and production readiness score
|
|
253
|
-
</success_criteria>
|
|
1
|
+
<purpose>
|
|
2
|
+
Orchestrate tier-aware production releases. Validates state, runs security gates, evaluates tier checklist, creates release branch, generates changelog, bumps version, writes rollback plan, and tags the release.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<process>
|
|
6
|
+
|
|
7
|
+
<auto_invoke>
|
|
8
|
+
Check for --no-auto in ARGUMENTS. If present, skip this section and proceed to step 1.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
SMART_ORCH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get smart_orchestration.enabled 2>/dev/null || echo "true")
|
|
12
|
+
```
|
|
13
|
+
If `SMART_ORCH` is `"false"`: skip, proceed to step 1.
|
|
14
|
+
|
|
15
|
+
**Tier-based pre-flight:**
|
|
16
|
+
Parse the tier argument from ARGUMENTS (mvp / medium / enterprise).
|
|
17
|
+
|
|
18
|
+
- **mvp**: No pre-flight auto-invocations. Proceed directly to step 1.
|
|
19
|
+
- **medium**: Check if a VERIFICATION.md from verify-work already exists for the current phase. If not:
|
|
20
|
+
→ Display: `[auto] Running verify-work before medium release...`
|
|
21
|
+
→ Invoke: Skill(ez:verify-work)
|
|
22
|
+
→ Continue to step 1.
|
|
23
|
+
- **enterprise**: Run in sequence:
|
|
24
|
+
→ Display: `[auto] Running verify-work...`
|
|
25
|
+
→ Invoke: Skill(ez:verify-work)
|
|
26
|
+
→ Display: `[auto] Running audit-milestone...`
|
|
27
|
+
→ Invoke: Skill(ez:audit-milestone)
|
|
28
|
+
→ Display: `[auto] Running arch-review...`
|
|
29
|
+
→ Invoke: Skill(ez:arch-review)
|
|
30
|
+
→ Continue to step 1.
|
|
31
|
+
|
|
32
|
+
All auto-invocations are prefixed with `[auto]` in output. Override with `--no-auto` to skip all pre-invocations.
|
|
33
|
+
</auto_invoke>
|
|
34
|
+
|
|
35
|
+
## 1. Initialize
|
|
36
|
+
|
|
37
|
+
Parse $ARGUMENTS:
|
|
38
|
+
- Command: `release` or `preflight`
|
|
39
|
+
- Tier: `mvp`, `medium`, or `enterprise`
|
|
40
|
+
- Version: semver string (e.g., `1.0.0`)
|
|
41
|
+
|
|
42
|
+
**If missing tier or version (for release command):**
|
|
43
|
+
```
|
|
44
|
+
Usage: /ez:release <tier> <version>
|
|
45
|
+
/ez:release preflight <tier>
|
|
46
|
+
|
|
47
|
+
Examples:
|
|
48
|
+
/ez:release mvp v1.0.0
|
|
49
|
+
/ez:release medium v1.5.0
|
|
50
|
+
/ez:release enterprise v2.0.0
|
|
51
|
+
/ez:release preflight medium
|
|
52
|
+
```
|
|
53
|
+
Exit.
|
|
54
|
+
|
|
55
|
+
**Normalize version:** Strip leading `v` if present (e.g., `v1.0.0` → `1.0.0`).
|
|
56
|
+
|
|
57
|
+
**Load tier config:**
|
|
58
|
+
```bash
|
|
59
|
+
TIER_CONFIG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" tier-config "${TARGET_TIER}" 2>/dev/null)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Display banner:
|
|
63
|
+
```
|
|
64
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
+
EZ ► RELEASE v{version} — {TIER} TIER
|
|
66
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 2. Validate Semver
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
echo "${VERSION}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**If invalid:** Error — "Version must be semver (X.Y.Z). Got: {version}"
|
|
76
|
+
|
|
77
|
+
## 3. Check Current State
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Uncommitted changes
|
|
81
|
+
git status --short
|
|
82
|
+
|
|
83
|
+
# Current branch
|
|
84
|
+
git branch --show-current
|
|
85
|
+
|
|
86
|
+
# Current version
|
|
87
|
+
CURRENT=$(node -e "console.log(require('./package.json').version)" 2>/dev/null || echo "0.0.0")
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**If uncommitted changes:** Error — "Commit or stash all changes before releasing"
|
|
91
|
+
|
|
92
|
+
## 4. Run Security Gates
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
echo "Running security gates..."
|
|
96
|
+
|
|
97
|
+
# Gate 1: No secrets in tracked files
|
|
98
|
+
SECRET_HITS=$(git grep -i -E "(api[_-]?key|password|secret)['\"]?\s*[=:]\s*['\"]?[a-zA-Z0-9+/]{20,}" HEAD 2>/dev/null | \
|
|
99
|
+
grep -v "example\|placeholder\|your-key\|process\.env\|env\.\|config\.\|getenv" | wc -l)
|
|
100
|
+
|
|
101
|
+
# Gate 2: npm audit
|
|
102
|
+
npm audit --audit-level=critical 2>/dev/null
|
|
103
|
+
AUDIT_EXIT=$?
|
|
104
|
+
|
|
105
|
+
# Gate 3: Production TODOs
|
|
106
|
+
PROD_TODOS=$(grep -rn "TODO\|FIXME\|HACK" src/ --include="*.ts" --include="*.js" --include="*.py" 2>/dev/null | \
|
|
107
|
+
grep -v "test\|spec\|__test__\|\.test\." | wc -l)
|
|
108
|
+
|
|
109
|
+
# Gate 4: .env in .gitignore
|
|
110
|
+
grep -q "^\.env" .gitignore 2>/dev/null && ENV_SAFE=true || ENV_SAFE=false
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Security gate results:
|
|
114
|
+
```
|
|
115
|
+
Security Gates:
|
|
116
|
+
✓/✗ No secrets in committed files ({SECRET_HITS} found)
|
|
117
|
+
✓/✗ npm audit clean (exit {AUDIT_EXIT})
|
|
118
|
+
✓/✗ No production TODOs ({PROD_TODOS} found)
|
|
119
|
+
✓/✗ .env in .gitignore
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Hard stop:** If SECRET_HITS > 0 → "BLOCKED: Secrets found in committed files. Remove before releasing."
|
|
123
|
+
**Hard stop:** If AUDIT_EXIT is non-zero → "BLOCKED: Critical vulnerabilities found. Run npm audit fix."
|
|
124
|
+
|
|
125
|
+
## 5. Run Tier Checklist
|
|
126
|
+
|
|
127
|
+
Load checklist template from `~/.claude/ez-agents/templates/release-checklist.md`.
|
|
128
|
+
|
|
129
|
+
Run automated checks for the target tier:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" release check-tier "${TARGET_TIER}"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Display checklist results with pass/fail/skip for each item.
|
|
136
|
+
|
|
137
|
+
**If `preflight` command:** Display checklist results and exit here.
|
|
138
|
+
|
|
139
|
+
## 6. Check Coverage (if test coverage available)
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Try to find coverage report
|
|
143
|
+
COVERAGE=$(cat coverage/coverage-summary.json 2>/dev/null | jq '.total.lines.pct // 0')
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Coverage thresholds by tier:
|
|
147
|
+
- mvp: 60%
|
|
148
|
+
- medium: 80%
|
|
149
|
+
- enterprise: 95%
|
|
150
|
+
|
|
151
|
+
**If below threshold:** Warning (not hard blocker — tests may not be configured).
|
|
152
|
+
|
|
153
|
+
## 7. Spawn Release Agent
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
157
|
+
◆ Spawning release agent...
|
|
158
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Release agent prompt:
|
|
162
|
+
|
|
163
|
+
```markdown
|
|
164
|
+
<objective>
|
|
165
|
+
Create a {TARGET_TIER} tier release v{VERSION}.
|
|
166
|
+
</objective>
|
|
167
|
+
|
|
168
|
+
<release_config>
|
|
169
|
+
Tier: {TARGET_TIER}
|
|
170
|
+
Version: {VERSION}
|
|
171
|
+
Current version: {CURRENT_VERSION}
|
|
172
|
+
</release_config>
|
|
173
|
+
|
|
174
|
+
<files_to_read>
|
|
175
|
+
- package.json (current version and scripts)
|
|
176
|
+
- CHANGELOG.md (if exists — append new entry)
|
|
177
|
+
- .planning/config.json (release tier config)
|
|
178
|
+
- ~/.claude/ez-agents/templates/release-checklist.md (checklist template)
|
|
179
|
+
- ~/.claude/ez-agents/templates/rollback-plan.md (rollback template)
|
|
180
|
+
</files_to_read>
|
|
181
|
+
|
|
182
|
+
<security_gate_results>
|
|
183
|
+
{security gate results from step 4}
|
|
184
|
+
</security_gate_results>
|
|
185
|
+
|
|
186
|
+
<checklist_results>
|
|
187
|
+
{checklist results from step 5}
|
|
188
|
+
</checklist_results>
|
|
189
|
+
|
|
190
|
+
<tasks>
|
|
191
|
+
1. Create release branch (per tier: trunk | github-flow | gitflow)
|
|
192
|
+
2. Generate changelog from git log since last tag
|
|
193
|
+
3. Bump version in package.json to {VERSION}
|
|
194
|
+
4. Create rollback plan in .planning/releases/v{VERSION}-ROLLBACK-PLAN.md
|
|
195
|
+
5. Commit release artifacts
|
|
196
|
+
6. Tag v{VERSION}
|
|
197
|
+
7. Report production readiness score
|
|
198
|
+
</tasks>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
Task(
|
|
203
|
+
prompt=release_prompt,
|
|
204
|
+
subagent_type="ez-release-agent",
|
|
205
|
+
model="{planner_model from init}"
|
|
206
|
+
)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 8. Handle Agent Return
|
|
210
|
+
|
|
211
|
+
**`## RELEASE COMPLETE`:**
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
215
|
+
EZ ► RELEASE v{version} READY ✓
|
|
216
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
217
|
+
|
|
218
|
+
{agent summary}
|
|
219
|
+
|
|
220
|
+
### To Ship
|
|
221
|
+
git push origin {branch} && git push origin v{version}
|
|
222
|
+
|
|
223
|
+
### Rollback Plan
|
|
224
|
+
.planning/releases/v{version}-ROLLBACK-PLAN.md
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**If blocked:**
|
|
228
|
+
```
|
|
229
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
230
|
+
EZ ► RELEASE BLOCKED
|
|
231
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
232
|
+
|
|
233
|
+
{blocker details}
|
|
234
|
+
|
|
235
|
+
Fix the above issues then re-run: /ez:release {tier} v{version}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
</process>
|
|
239
|
+
|
|
240
|
+
<success_criteria>
|
|
241
|
+
- [ ] Tier and version validated
|
|
242
|
+
- [ ] Uncommitted changes check passed
|
|
243
|
+
- [ ] All security gates run (fail on hard blockers)
|
|
244
|
+
- [ ] Tier checklist evaluated
|
|
245
|
+
- [ ] Coverage checked against tier threshold
|
|
246
|
+
- [ ] ez-release-agent spawned with full context
|
|
247
|
+
- [ ] Release branch created per tier strategy
|
|
248
|
+
- [ ] Changelog updated
|
|
249
|
+
- [ ] Version bumped in package.json
|
|
250
|
+
- [ ] Rollback plan written
|
|
251
|
+
- [ ] Tag created
|
|
252
|
+
- [ ] User sees push instructions and production readiness score
|
|
253
|
+
</success_criteria>
|