@howlil/ez-agents 3.4.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +84 -20
  3. package/agents/ez-observer-agent.md +260 -0
  4. package/agents/ez-release-agent.md +333 -0
  5. package/agents/ez-requirements-agent.md +377 -0
  6. package/agents/ez-scrum-master-agent.md +242 -0
  7. package/agents/ez-tech-lead-agent.md +267 -0
  8. package/bin/install.js +3221 -3230
  9. package/commands/ez/arch-review.md +102 -0
  10. package/commands/ez/execute-phase.md +11 -0
  11. package/commands/ez/export-session.md +79 -0
  12. package/commands/ez/gather-requirements.md +117 -0
  13. package/commands/ez/git-workflow.md +72 -0
  14. package/commands/ez/hotfix.md +120 -0
  15. package/commands/ez/import-session.md +82 -0
  16. package/commands/ez/join-discord.md +18 -18
  17. package/commands/ez/list-sessions.md +96 -0
  18. package/commands/ez/package-manager.md +316 -0
  19. package/commands/ez/plan-phase.md +9 -1
  20. package/commands/ez/preflight.md +79 -0
  21. package/commands/ez/progress.md +13 -1
  22. package/commands/ez/release.md +153 -0
  23. package/commands/ez/resume.md +107 -0
  24. package/commands/ez/standup.md +85 -0
  25. package/ez-agents/bin/ez-tools.cjs +1095 -716
  26. package/ez-agents/bin/lib/assistant-adapter.cjs +264 -264
  27. package/ez-agents/bin/lib/audit-exec.cjs +7 -2
  28. package/ez-agents/bin/lib/bdd-validator.cjs +622 -0
  29. package/ez-agents/bin/lib/circuit-breaker.cjs +118 -118
  30. package/ez-agents/bin/lib/config.cjs +190 -190
  31. package/ez-agents/bin/lib/content-scanner.cjs +238 -0
  32. package/ez-agents/bin/lib/context-cache.cjs +154 -0
  33. package/ez-agents/bin/lib/context-errors.cjs +71 -0
  34. package/ez-agents/bin/lib/context-manager.cjs +220 -0
  35. package/ez-agents/bin/lib/discussion-synthesizer.cjs +458 -0
  36. package/ez-agents/bin/lib/file-access.cjs +207 -0
  37. package/ez-agents/bin/lib/file-lock.cjs +236 -236
  38. package/ez-agents/bin/lib/frontmatter.cjs +299 -299
  39. package/ez-agents/bin/lib/fs-utils.cjs +153 -153
  40. package/ez-agents/bin/lib/git-errors.cjs +83 -0
  41. package/ez-agents/bin/lib/git-utils.cjs +118 -0
  42. package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -0
  43. package/ez-agents/bin/lib/index.cjs +157 -113
  44. package/ez-agents/bin/lib/init.cjs +757 -757
  45. package/ez-agents/bin/lib/lockfile-validator.cjs +227 -0
  46. package/ez-agents/bin/lib/logger.cjs +124 -124
  47. package/ez-agents/bin/lib/memory-compression.cjs +256 -0
  48. package/ez-agents/bin/lib/metrics-tracker.cjs +406 -0
  49. package/ez-agents/bin/lib/milestone.cjs +241 -241
  50. package/ez-agents/bin/lib/model-provider.cjs +241 -241
  51. package/ez-agents/bin/lib/package-manager-detector.cjs +203 -0
  52. package/ez-agents/bin/lib/package-manager-executor.cjs +385 -0
  53. package/ez-agents/bin/lib/package-manager-service.cjs +216 -0
  54. package/ez-agents/bin/lib/phase.cjs +925 -925
  55. package/ez-agents/bin/lib/planning-write.cjs +107 -107
  56. package/ez-agents/bin/lib/release-validator.cjs +614 -0
  57. package/ez-agents/bin/lib/retry.cjs +119 -119
  58. package/ez-agents/bin/lib/roadmap.cjs +306 -306
  59. package/ez-agents/bin/lib/safe-exec.cjs +128 -128
  60. package/ez-agents/bin/lib/safe-path.cjs +130 -130
  61. package/ez-agents/bin/lib/session-chain.cjs +304 -0
  62. package/ez-agents/bin/lib/session-errors.cjs +81 -0
  63. package/ez-agents/bin/lib/session-export.cjs +251 -0
  64. package/ez-agents/bin/lib/session-import.cjs +262 -0
  65. package/ez-agents/bin/lib/session-manager.cjs +280 -0
  66. package/ez-agents/bin/lib/state.cjs +736 -736
  67. package/ez-agents/bin/lib/temp-file.cjs +239 -239
  68. package/ez-agents/bin/lib/template.cjs +223 -223
  69. package/ez-agents/bin/lib/test-file-lock.cjs +112 -112
  70. package/ez-agents/bin/lib/test-graceful.cjs +93 -93
  71. package/ez-agents/bin/lib/test-logger.cjs +60 -60
  72. package/ez-agents/bin/lib/test-safe-exec.cjs +38 -38
  73. package/ez-agents/bin/lib/test-safe-path.cjs +33 -33
  74. package/ez-agents/bin/lib/test-temp-file.cjs +125 -125
  75. package/ez-agents/bin/lib/tier-manager.cjs +428 -0
  76. package/ez-agents/bin/lib/timeout-exec.cjs +63 -63
  77. package/ez-agents/bin/lib/url-fetch.cjs +170 -0
  78. package/ez-agents/bin/lib/verify.cjs +15 -1
  79. package/ez-agents/references/checkpoints.md +776 -776
  80. package/ez-agents/references/continuation-format.md +249 -249
  81. package/ez-agents/references/metrics-schema.md +118 -0
  82. package/ez-agents/references/planning-config.md +140 -0
  83. package/ez-agents/references/questioning.md +162 -162
  84. package/ez-agents/references/tdd.md +263 -263
  85. package/ez-agents/references/tier-strategy.md +103 -0
  86. package/ez-agents/templates/bdd-feature.md +173 -0
  87. package/ez-agents/templates/codebase/concerns.md +310 -310
  88. package/ez-agents/templates/codebase/conventions.md +307 -307
  89. package/ez-agents/templates/codebase/integrations.md +280 -280
  90. package/ez-agents/templates/codebase/stack.md +186 -186
  91. package/ez-agents/templates/codebase/testing.md +480 -480
  92. package/ez-agents/templates/config.json +37 -37
  93. package/ez-agents/templates/continue-here.md +78 -78
  94. package/ez-agents/templates/discussion.md +68 -0
  95. package/ez-agents/templates/incident-runbook.md +205 -0
  96. package/ez-agents/templates/milestone-archive.md +123 -123
  97. package/ez-agents/templates/milestone.md +115 -115
  98. package/ez-agents/templates/release-checklist.md +133 -0
  99. package/ez-agents/templates/requirements.md +231 -231
  100. package/ez-agents/templates/research-project/ARCHITECTURE.md +204 -204
  101. package/ez-agents/templates/research-project/FEATURES.md +147 -147
  102. package/ez-agents/templates/research-project/PITFALLS.md +200 -200
  103. package/ez-agents/templates/research-project/STACK.md +120 -120
  104. package/ez-agents/templates/research-project/SUMMARY.md +170 -170
  105. package/ez-agents/templates/retrospective.md +54 -54
  106. package/ez-agents/templates/roadmap.md +202 -202
  107. package/ez-agents/templates/rollback-plan.md +201 -0
  108. package/ez-agents/templates/summary-minimal.md +41 -41
  109. package/ez-agents/templates/summary-standard.md +48 -48
  110. package/ez-agents/templates/summary.md +248 -248
  111. package/ez-agents/templates/user-setup.md +311 -311
  112. package/ez-agents/templates/verification-report.md +322 -322
  113. package/ez-agents/workflows/add-phase.md +112 -112
  114. package/ez-agents/workflows/add-tests.md +351 -351
  115. package/ez-agents/workflows/add-todo.md +158 -158
  116. package/ez-agents/workflows/arch-review.md +54 -0
  117. package/ez-agents/workflows/audit-milestone.md +332 -332
  118. package/ez-agents/workflows/autonomous.md +131 -30
  119. package/ez-agents/workflows/check-todos.md +177 -177
  120. package/ez-agents/workflows/cleanup.md +152 -152
  121. package/ez-agents/workflows/complete-milestone.md +766 -766
  122. package/ez-agents/workflows/diagnose-issues.md +219 -219
  123. package/ez-agents/workflows/discovery-phase.md +289 -289
  124. package/ez-agents/workflows/discuss-phase.md +762 -762
  125. package/ez-agents/workflows/execute-phase.md +513 -468
  126. package/ez-agents/workflows/execute-plan.md +483 -483
  127. package/ez-agents/workflows/export-session.md +255 -0
  128. package/ez-agents/workflows/gather-requirements.md +206 -0
  129. package/ez-agents/workflows/health.md +159 -159
  130. package/ez-agents/workflows/help.md +584 -492
  131. package/ez-agents/workflows/hotfix.md +291 -0
  132. package/ez-agents/workflows/import-session.md +303 -0
  133. package/ez-agents/workflows/insert-phase.md +130 -130
  134. package/ez-agents/workflows/list-phase-assumptions.md +178 -178
  135. package/ez-agents/workflows/map-codebase.md +316 -316
  136. package/ez-agents/workflows/new-milestone.md +339 -10
  137. package/ez-agents/workflows/new-project.md +293 -299
  138. package/ez-agents/workflows/node-repair.md +92 -92
  139. package/ez-agents/workflows/pause-work.md +122 -122
  140. package/ez-agents/workflows/plan-milestone-gaps.md +274 -274
  141. package/ez-agents/workflows/plan-phase.md +673 -651
  142. package/ez-agents/workflows/progress.md +372 -382
  143. package/ez-agents/workflows/quick.md +610 -610
  144. package/ez-agents/workflows/release.md +253 -0
  145. package/ez-agents/workflows/remove-phase.md +155 -155
  146. package/ez-agents/workflows/research-phase.md +74 -74
  147. package/ez-agents/workflows/resume-project.md +307 -307
  148. package/ez-agents/workflows/resume-session.md +215 -0
  149. package/ez-agents/workflows/set-profile.md +81 -81
  150. package/ez-agents/workflows/settings.md +242 -242
  151. package/ez-agents/workflows/standup.md +64 -0
  152. package/ez-agents/workflows/stats.md +57 -57
  153. package/ez-agents/workflows/transition.md +544 -544
  154. package/ez-agents/workflows/ui-phase.md +290 -290
  155. package/ez-agents/workflows/ui-review.md +157 -157
  156. package/ez-agents/workflows/update.md +320 -320
  157. package/ez-agents/workflows/validate-phase.md +167 -167
  158. package/ez-agents/workflows/verify-phase.md +243 -243
  159. package/ez-agents/workflows/verify-work.md +584 -584
  160. package/package.json +10 -4
  161. package/scripts/build-hooks.js +43 -43
  162. package/scripts/run-tests.cjs +29 -29
@@ -1,37 +1,37 @@
1
- {
2
- "mode": "interactive",
3
- "granularity": "standard",
4
- "workflow": {
5
- "research": true,
6
- "plan_check": true,
7
- "verifier": true,
8
- "auto_advance": false,
9
- "nyquist_validation": true
10
- },
11
- "planning": {
12
- "commit_docs": true,
13
- "search_gitignored": false
14
- },
15
- "parallelization": {
16
- "enabled": true,
17
- "plan_level": true,
18
- "task_level": false,
19
- "skip_checkpoints": true,
20
- "max_concurrent_agents": 3,
21
- "min_plans_for_parallel": 2
22
- },
23
- "gates": {
24
- "confirm_project": true,
25
- "confirm_phases": true,
26
- "confirm_roadmap": true,
27
- "confirm_breakdown": true,
28
- "confirm_plan": true,
29
- "execute_next_plan": true,
30
- "issues_review": true,
31
- "confirm_transition": true
32
- },
33
- "safety": {
34
- "always_confirm_destructive": true,
35
- "always_confirm_external_services": true
36
- }
37
- }
1
+ {
2
+ "mode": "interactive",
3
+ "granularity": "standard",
4
+ "workflow": {
5
+ "research": true,
6
+ "plan_check": true,
7
+ "verifier": true,
8
+ "auto_advance": false,
9
+ "nyquist_validation": true
10
+ },
11
+ "planning": {
12
+ "commit_docs": true,
13
+ "search_gitignored": false
14
+ },
15
+ "parallelization": {
16
+ "enabled": true,
17
+ "plan_level": true,
18
+ "task_level": false,
19
+ "skip_checkpoints": true,
20
+ "max_concurrent_agents": 3,
21
+ "min_plans_for_parallel": 2
22
+ },
23
+ "gates": {
24
+ "confirm_project": true,
25
+ "confirm_phases": true,
26
+ "confirm_roadmap": true,
27
+ "confirm_breakdown": true,
28
+ "confirm_plan": true,
29
+ "execute_next_plan": true,
30
+ "issues_review": true,
31
+ "confirm_transition": true
32
+ },
33
+ "safety": {
34
+ "always_confirm_destructive": true,
35
+ "always_confirm_external_services": true
36
+ }
37
+ }
@@ -1,78 +1,78 @@
1
- # Continue-Here Template
2
-
3
- Copy and fill this structure for `.planning/phases/XX-name/.continue-here.md`:
4
-
5
- ```yaml
6
- ---
7
- phase: XX-name
8
- task: 3
9
- total_tasks: 7
10
- status: in_progress
11
- last_updated: 2025-01-15T14:30:00Z
12
- ---
13
- ```
14
-
15
- ```markdown
16
- <current_state>
17
- [Where exactly are we? What's the immediate context?]
18
- </current_state>
19
-
20
- <completed_work>
21
- [What got done this session - be specific]
22
-
23
- - Task 1: [name] - Done
24
- - Task 2: [name] - Done
25
- - Task 3: [name] - In progress, [what's done on it]
26
- </completed_work>
27
-
28
- <remaining_work>
29
- [What's left in this phase]
30
-
31
- - Task 3: [name] - [what's left to do]
32
- - Task 4: [name] - Not started
33
- - Task 5: [name] - Not started
34
- </remaining_work>
35
-
36
- <decisions_made>
37
- [Key decisions and why - so next session doesn't re-debate]
38
-
39
- - Decided to use [X] because [reason]
40
- - Chose [approach] over [alternative] because [reason]
41
- </decisions_made>
42
-
43
- <blockers>
44
- [Anything stuck or waiting on external factors]
45
-
46
- - [Blocker 1]: [status/workaround]
47
- </blockers>
48
-
49
- <context>
50
- [Mental state, "vibe", anything that helps resume smoothly]
51
-
52
- [What were you thinking about? What was the plan?
53
- This is the "pick up exactly where you left off" context.]
54
- </context>
55
-
56
- <next_action>
57
- [The very first thing to do when resuming]
58
-
59
- Start with: [specific action]
60
- </next_action>
61
- ```
62
-
63
- <yaml_fields>
64
- Required YAML frontmatter:
65
-
66
- - `phase`: Directory name (e.g., `02-authentication`)
67
- - `task`: Current task number
68
- - `total_tasks`: How many tasks in phase
69
- - `status`: `in_progress`, `blocked`, `almost_done`
70
- - `last_updated`: ISO timestamp
71
- </yaml_fields>
72
-
73
- <guidelines>
74
- - Be specific enough that a fresh Claude instance understands immediately
75
- - Include WHY decisions were made, not just what
76
- - The `<next_action>` should be actionable without reading anything else
77
- - This file gets DELETED after resume - it's not permanent storage
78
- </guidelines>
1
+ # Continue-Here Template
2
+
3
+ Copy and fill this structure for `.planning/phases/XX-name/.continue-here.md`:
4
+
5
+ ```yaml
6
+ ---
7
+ phase: XX-name
8
+ task: 3
9
+ total_tasks: 7
10
+ status: in_progress
11
+ last_updated: 2025-01-15T14:30:00Z
12
+ ---
13
+ ```
14
+
15
+ ```markdown
16
+ <current_state>
17
+ [Where exactly are we? What's the immediate context?]
18
+ </current_state>
19
+
20
+ <completed_work>
21
+ [What got done this session - be specific]
22
+
23
+ - Task 1: [name] - Done
24
+ - Task 2: [name] - Done
25
+ - Task 3: [name] - In progress, [what's done on it]
26
+ </completed_work>
27
+
28
+ <remaining_work>
29
+ [What's left in this phase]
30
+
31
+ - Task 3: [name] - [what's left to do]
32
+ - Task 4: [name] - Not started
33
+ - Task 5: [name] - Not started
34
+ </remaining_work>
35
+
36
+ <decisions_made>
37
+ [Key decisions and why - so next session doesn't re-debate]
38
+
39
+ - Decided to use [X] because [reason]
40
+ - Chose [approach] over [alternative] because [reason]
41
+ </decisions_made>
42
+
43
+ <blockers>
44
+ [Anything stuck or waiting on external factors]
45
+
46
+ - [Blocker 1]: [status/workaround]
47
+ </blockers>
48
+
49
+ <context>
50
+ [Mental state, "vibe", anything that helps resume smoothly]
51
+
52
+ [What were you thinking about? What was the plan?
53
+ This is the "pick up exactly where you left off" context.]
54
+ </context>
55
+
56
+ <next_action>
57
+ [The very first thing to do when resuming]
58
+
59
+ Start with: [specific action]
60
+ </next_action>
61
+ ```
62
+
63
+ <yaml_fields>
64
+ Required YAML frontmatter:
65
+
66
+ - `phase`: Directory name (e.g., `02-authentication`)
67
+ - `task`: Current task number
68
+ - `total_tasks`: How many tasks in phase
69
+ - `status`: `in_progress`, `blocked`, `almost_done`
70
+ - `last_updated`: ISO timestamp
71
+ </yaml_fields>
72
+
73
+ <guidelines>
74
+ - Be specific enough that a fresh Claude instance understands immediately
75
+ - Include WHY decisions were made, not just what
76
+ - The `<next_action>` should be actionable without reading anything else
77
+ - This file gets DELETED after resume - it's not permanent storage
78
+ </guidelines>
@@ -0,0 +1,68 @@
1
+ ---
2
+ phase: {phase-number}-{phase-slug}
3
+ status: open
4
+ participants: [ez-requirements-agent, ez-tech-lead-agent, ez-observer-agent, ez-scrum-master-agent]
5
+ opened: {timestamp}
6
+ consensus: pending
7
+ ---
8
+
9
+ # Phase {X}: {Name} — Pre-Execution Discussion
10
+
11
+ **Purpose:** Parallel agent perspectives before phase execution. Orchestrator reads consensus before spawning executors.
12
+
13
+ ---
14
+
15
+ ## Requirements Perspective (ez-requirements-agent)
16
+
17
+ > *Populated by ez-requirements-agent during phase kickoff*
18
+
19
+ {Populated during gather-requirements or plan-phase kickoff}
20
+
21
+ ---
22
+
23
+ ## Tech Lead Perspective (ez-tech-lead-agent)
24
+
25
+ > *Populated by ez-tech-lead-agent during plan-phase review*
26
+
27
+ {Populated during arch-review after plan creation}
28
+
29
+ ---
30
+
31
+ ## Observer Perspective (ez-observer-agent)
32
+
33
+ > *Populated by ez-observer-agent during execute-phase pre-flight*
34
+
35
+ {Populated during execute-phase pre-flight}
36
+
37
+ ---
38
+
39
+ ## Scrum Master Perspective (ez-scrum-master-agent)
40
+
41
+ > *Populated by ez-scrum-master-agent during phase kickoff*
42
+
43
+ {Populated during standup or phase kickoff}
44
+
45
+ ---
46
+
47
+ ## Consensus
48
+
49
+ > *Synthesized by orchestrator from above perspectives*
50
+
51
+ **Status:** {open | consensus-reached | needs-human}
52
+
53
+ ### Blockers
54
+ {List any hard blockers from any agent, or "None"}
55
+
56
+ ### Key Warnings
57
+ {List significant warnings, or "None"}
58
+
59
+ ### Go / No-Go
60
+ {GO — proceed to execution | NO-GO — resolve blockers first | HUMAN-NEEDED — requires user input}
61
+
62
+ ### Rationale
63
+ {1-2 sentences explaining the consensus decision}
64
+
65
+ ---
66
+
67
+ *Discussion opened: {timestamp}*
68
+ *Last updated: {timestamp}*
@@ -0,0 +1,205 @@
1
+ # Incident Runbook: {service-name}
2
+
3
+ **Version:** v{version} ({tier} tier)
4
+ **Last updated:** {date}
5
+ **Owner:** {team or individual}
6
+
7
+ ---
8
+
9
+ ## Severity Levels
10
+
11
+ | Level | Description | Response Time | Example |
12
+ |-------|-------------|---------------|---------|
13
+ | P0 — Critical | Complete outage, data loss | Immediate | App unreachable, DB corruption |
14
+ | P1 — High | Major feature broken, many users affected | 15 minutes | Login broken, payments failing |
15
+ | P2 — Medium | Feature degraded, workaround exists | 1 hour | Slow responses, non-critical feature down |
16
+ | P3 — Low | Minor issue, cosmetic | Next business day | UI glitch, non-critical error |
17
+
18
+ ---
19
+
20
+ ## On-Call Contacts
21
+
22
+ | Role | Contact | When to Call |
23
+ |------|---------|--------------|
24
+ | Primary on-call | {name/handle} | P0 and P1 |
25
+ | Secondary | {name/handle} | Primary unreachable |
26
+ | Database | {name/handle} | DB issues |
27
+ | Platform/Infra | {name/handle} | Infrastructure issues |
28
+
29
+ ---
30
+
31
+ ## Quick Diagnostics
32
+
33
+ ### 1. Is the app running?
34
+
35
+ ```bash
36
+ curl -f https://{your-domain}/health && echo "UP" || echo "DOWN"
37
+ ```
38
+
39
+ ### 2. Check recent deployments
40
+
41
+ ```bash
42
+ git log --oneline -5 # Recent commits
43
+ # Or check your deployment platform dashboard
44
+ ```
45
+
46
+ ### 3. Check error logs
47
+
48
+ ```bash
49
+ # Vercel: vercel logs
50
+ # Railway: railway logs
51
+ # Generic: tail -100 /var/log/app.log
52
+ # Or: check error tracking dashboard (Sentry, etc.)
53
+ ```
54
+
55
+ ### 4. Check database connectivity
56
+
57
+ ```bash
58
+ # Test DB connection
59
+ node -e "
60
+ const { PrismaClient } = require('@prisma/client');
61
+ const prisma = new PrismaClient();
62
+ prisma.\$connect().then(() => { console.log('DB OK'); process.exit(0); })
63
+ .catch(e => { console.error('DB FAIL:', e.message); process.exit(1); });
64
+ "
65
+ ```
66
+
67
+ ---
68
+
69
+ ## Common Incidents and Resolutions
70
+
71
+ ### App is down (P0)
72
+
73
+ 1. Check if recent deployment caused it: `git log --oneline -3`
74
+ 2. If yes → roll back immediately (see Rollback Procedure)
75
+ 3. If no → check infrastructure status (hosting provider status page)
76
+ 4. Check logs for error pattern
77
+ 5. If DB issue → see DB incident section
78
+
79
+ ### Login/Auth broken (P1)
80
+
81
+ 1. Check auth service logs
82
+ 2. Verify environment variables: `NEXTAUTH_SECRET`, `NEXTAUTH_URL`, OAuth credentials
83
+ 3. Check if auth provider (Google, GitHub, etc.) is having issues
84
+ 4. Test with curl: `curl -X POST /api/auth/signin`
85
+ 5. If JWT secret rotated → issue new tokens (force re-login acceptable)
86
+
87
+ ### Payments failing (P1)
88
+
89
+ 1. Check payment provider dashboard (Stripe, etc.) for service issues
90
+ 2. Check webhook delivery in provider dashboard
91
+ 3. Verify API keys are valid: check for expiry or rotation
92
+ 4. Check logs for specific Stripe error codes
93
+ 5. **Do NOT retry failed charges** until root cause identified
94
+
95
+ ### Database full / slow (P1)
96
+
97
+ 1. Check disk usage and connection count
98
+ 2. Identify slow queries: check database logs or monitoring
99
+ 3. Kill long-running queries if blocking
100
+ 4. Check for lock contention
101
+ 5. Consider read replica if load issue
102
+
103
+ ### High error rate (P2)
104
+
105
+ 1. Check error tracking for error pattern
106
+ 2. Identify affected endpoints from logs
107
+ 3. Check if recent deployment correlates
108
+ 4. Roll back if correlation found
109
+ 5. Otherwise: hotfix with `/ez:hotfix start {description}`
110
+
111
+ ---
112
+
113
+ ## Rollback Procedure
114
+
115
+ ```bash
116
+ # 1. Decision: roll back if P0/P1 persists > {rollback_window}
117
+
118
+ # 2. Roll back application
119
+ vercel rollback # Vercel
120
+ # OR: git revert HEAD && git push # generic
121
+
122
+ # 3. Verify health
123
+ curl -f https://{your-domain}/health
124
+
125
+ # 4. Notify stakeholders
126
+ # See communication templates below
127
+
128
+ # 5. Document in post-mortem
129
+ ```
130
+
131
+ Full rollback plan: `.planning/releases/v{version}-ROLLBACK-PLAN.md`
132
+
133
+ ---
134
+
135
+ ## Communication Templates
136
+
137
+ ### Customer-facing (P0)
138
+
139
+ ```
140
+ [{service-name} Status] Service disruption
141
+
142
+ We are experiencing a service disruption affecting {impact description}.
143
+ Our team is actively working to restore service.
144
+
145
+ Current status: Investigating
146
+ ETA: Unknown (update in 30 minutes)
147
+
148
+ We apologize for the inconvenience.
149
+ ```
150
+
151
+ ### Customer-facing (Resolved)
152
+
153
+ ```
154
+ [{service-name} Status] Service restored
155
+
156
+ The service disruption has been resolved at {time}.
157
+ All systems are operating normally.
158
+
159
+ Duration: {duration}
160
+ Impact: {description}
161
+
162
+ We apologize for the disruption. A full post-mortem will be published at {link}.
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Post-Incident Process
168
+
169
+ 1. **Immediate** (within 1 hour): Write incident timeline in `.planning/incidents/{date}-{title}.md`
170
+ 2. **Short-term** (within 24 hours): Root cause analysis complete
171
+ 3. **Follow-up** (within 1 week): Prevention measures implemented
172
+
173
+ ### Post-Mortem Template
174
+
175
+ ```markdown
176
+ # Incident Post-Mortem: {title}
177
+
178
+ **Date:** {date}
179
+ **Duration:** {start} – {end} ({total duration})
180
+ **Severity:** P{level}
181
+ **Impact:** {affected users/features}
182
+
183
+ ## Timeline
184
+ - HH:MM — {event}
185
+ - HH:MM — {event}
186
+
187
+ ## Root Cause
188
+ {Single sentence root cause}
189
+
190
+ ## Contributing Factors
191
+ {What made this possible}
192
+
193
+ ## What Went Well
194
+ {Detection speed, response time, etc.}
195
+
196
+ ## Action Items
197
+ | Action | Owner | Due |
198
+ |--------|-------|-----|
199
+ | {item} | {person} | {date} |
200
+ ```
201
+
202
+ ---
203
+
204
+ *Generated by EZ Agents release-agent*
205
+ *Tier: {tier} | Version: v{version}*