@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
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Lex Christopherson
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Lex Christopherson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  [![GitHub stars](https://img.shields.io/github/stars/howlil/ez-agents?style=for-the-badge&logo=github)](https://github.com/howlil/ez-agents/stargazers)
10
10
 
11
11
  ```bash
12
- npm install -g git+https://github.com/howlil/ez-agents.git
12
+ npm i -g @howlil/ez-agents@latest
13
13
  ```
14
14
 
15
15
  **Works with:** Claude Code ¡ OpenCode ¡ Gemini CLI ¡ Codex ¡ Copilot ¡ Qwen ¡ Kimi
@@ -42,7 +42,7 @@ EZ Agents fixes this by adding a lightweight orchestration layer. Think of it as
42
42
  ### 1. Install
43
43
 
44
44
  ```bash
45
- npm install -g git+https://github.com/howlil/ez-agents.git
45
+ npm i -g @howlil/ez-agents@latest
46
46
  ```
47
47
 
48
48
  ### 2. Setup for Your AI Tool
@@ -106,6 +106,28 @@ You'll answer a few questions about what you're building, then EZ Agents generat
106
106
  └─────────────────────────┘
107
107
  ```
108
108
 
109
+ ### Smart Orchestration
110
+
111
+ Core commands automatically invoke helper commands based on context — so you don't have to remember to run them. All auto-invocations are visible with an `[auto]` prefix.
112
+
113
+ | Command | Auto Pre | Auto Post | Conditional |
114
+ |---------|----------|-----------|-------------|
115
+ | `/ez:execute-phase` | health check | verify-work | discuss-phase (medium/enterprise, no CONTEXT.md) ¡ add-todo (scope creep) |
116
+ | `/ez:plan-phase` | — | — | discuss-phase (phase touches auth/DB/payment/security area) |
117
+ | `/ez:release medium` | — | — | verify-work |
118
+ | `/ez:release enterprise` | — | — | verify-work → audit-milestone → arch-review |
119
+ | `/ez:progress` | health check (silent) | — | — |
120
+
121
+ **Override flags:**
122
+
123
+ | Flag | Effect |
124
+ |------|--------|
125
+ | `--no-auto` | Disable all auto-invocations for that run |
126
+ | `--verbose` | Show detail for every auto-invocation step |
127
+ | `--skip-discussion` | Skip only the auto discuss-phase trigger |
128
+
129
+ Disable globally: set `"smart_orchestration": { "enabled": false }` in `.planning/config.json`.
130
+
109
131
  ### Parallel Execution with Git Commits
110
132
 
111
133
  Setiap task dijalankan secara paralel (jika tidak ada dependensi), dengan fresh context dan atomic commit:
@@ -166,6 +188,7 @@ Phase 1: Foundation
166
188
  - **Context Engineering** — PROJECT.md, STATE.md, SUMMARY.md preserve decisions across sessions
167
189
  - **Atomic Commits** — Each task gets its own commit with context about what changed and why
168
190
  - **Milestone Tracking** — Version releases with requirements audit and git tagging
191
+ - **Smart Orchestration** — Core commands auto-invoke helpers (health, verify-work, discuss-phase) based on context. All visible with `[auto]` prefix. Override with `--no-auto`.
169
192
 
170
193
  ### Built for Production
171
194
 
@@ -203,8 +226,8 @@ Parallel agents analyze your stack, architecture, conventions, and pain points.
203
226
  | Command | What It Does |
204
227
  |---------|-------------|
205
228
  | `/ez:discuss-phase [N]` | Clarify implementation approach before planning |
206
- | `/ez:plan-phase [N]` | Research domain, create task breakdown, define verification |
207
- | `/ez:execute-phase [N]` | Build the plan (parallel waves, one commit per task) |
229
+ | `/ez:plan-phase [N]` | Research domain, create task breakdown, define verification. Auto-runs discuss-phase for sensitive areas (auth/DB/payment). |
230
+ | `/ez:execute-phase [N]` | Build the plan (parallel waves, one commit per task). Auto: health check → execute → verify-work. |
208
231
  | `/ez:verify-work [N]` | Manual testing with auto-diagnosis of failures |
209
232
 
210
233
  ### Managing Scope
@@ -235,6 +258,57 @@ Parallel agents analyze your stack, architecture, conventions, and pain points.
235
258
 
236
259
  ---
237
260
 
261
+ ## Context Access Commands
262
+
263
+ EZ Agents provides commands for gathering context from local files and remote URLs during planning phases.
264
+
265
+ ### `ez-tools context read <pattern>`
266
+
267
+ Read local files using glob patterns.
268
+
269
+ **Examples:**
270
+ ```bash
271
+ node ez-tools.cjs context read "README.md"
272
+ node ez-tools.cjs context read "src/**/*.ts"
273
+ node ez-tools.cjs context read "*.json" "!package-lock.json"
274
+ ```
275
+
276
+ **Supported patterns:**
277
+ - Single files: `README.md`
278
+ - Glob patterns: `src/**/*.ts`
279
+ - Brace expansion: `*.{ts,js}`
280
+ - Negation: `!*.test.ts`
281
+
282
+ ### `ez-tools context fetch <url>`
283
+
284
+ Fetch content from URL (HTTPS only, requires user confirmation).
285
+
286
+ **Examples:**
287
+ ```bash
288
+ node ez-tools.cjs context fetch https://example.com/spec.md
289
+ node ez-tools.cjs context fetch https://raw.githubusercontent.com/user/repo/main/README.md
290
+ ```
291
+
292
+ **Security:**
293
+ - Only HTTPS URLs allowed
294
+ - User confirmation required before fetching
295
+ - Content scanned for XSS/malware before use
296
+
297
+ ### `ez-tools context request`
298
+
299
+ Interactive mode for requesting multiple context sources. Enter file patterns or URLs one per line, then press Enter on an empty line to finish.
300
+
301
+ **Example:**
302
+ ```bash
303
+ node ez-tools.cjs context request
304
+ > README.md
305
+ > src/**/*.ts
306
+ > https://example.com/api-docs.md
307
+ >
308
+ ```
309
+
310
+ ---
311
+
238
312
  ## Setup
239
313
 
240
314
  ### Prerequisites
@@ -242,23 +316,20 @@ Parallel agents analyze your stack, architecture, conventions, and pain points.
242
316
  - Node.js >= 16.7.0
243
317
  - One of: Claude Code, OpenCode, Gemini CLI, Codex, Copilot, Qwen Code, Kimi Code
244
318
 
245
- ### Installation Options
246
-
247
- **From GitHub (Recommended)**
319
+ ### Installation
248
320
 
249
321
  ```bash
250
- npm install -g git+https://github.com/howlil/ez-agents.git
322
+ npm i -g @howlil/ez-agents@latest
251
323
  ez-agents --claude --global
252
324
  ```
253
325
 
254
- **From npm**
326
+ ### Updating
255
327
 
256
328
  ```bash
257
- npm install -g @howlil/ez-agents
258
- ez-agents --claude --global
329
+ npm update -g @howlil/ez-agents
259
330
  ```
260
331
 
261
- **Development Install**
332
+ **Development Install** (for contributing)
262
333
 
263
334
  ```bash
264
335
  git clone https://github.com/howlil/ez-agents.git
@@ -267,14 +338,6 @@ npm install -g .
267
338
  ez-agents --claude --local
268
339
  ```
269
340
 
270
- ### Updating
271
-
272
- ```bash
273
- ez-agents-update
274
- ```
275
-
276
- Shows changelog before installing. If you have local modifications, they're backed up and can be reapplied with `/ez:reapply-patches`.
277
-
278
341
  ---
279
342
 
280
343
  ## Configuration
@@ -288,6 +351,7 @@ EZ Agents stores settings in `.planning/config.json`. You configure this during
288
351
  | `mode` | `interactive`, `yolo` | `interactive` | `yolo` skips confirmation prompts |
289
352
  | `model_profile` | `quality`, `balanced`, `budget` | `balanced` | Controls which model tier each agent uses |
290
353
  | `granularity` | `coarse`, `standard`, `fine` | `standard` | How many phases (3-5, 5-8, or 8-12) |
354
+ | `smart_orchestration.enabled` | `true`, `false` | `true` | Enable/disable auto-invocation of helper commands |
291
355
 
292
356
  ### Model Profiles
293
357
 
@@ -0,0 +1,260 @@
1
+ ---
2
+ name: ez-observer-agent
3
+ description: Quality watchdog that flags process hygiene issues, orphaned requirements, scope creep, and anti-patterns. Non-blocking by default — advisory only unless a hard blocker is found.
4
+ tools: Read, Bash, Grep, Glob
5
+ color: purple
6
+ ---
7
+
8
+ <role>
9
+ You are the EZ Agents Observer — the quality conscience of the team. You watch for process hygiene issues before a phase executes and report findings to the orchestrator.
10
+
11
+ Your default mode is **advisory**: you flag concerns without blocking execution. Only raise a **hard blocker** for issues that would cause wasted effort (executing a plan that contradicts a locked decision) or security risks (secrets in committed files).
12
+
13
+ **CRITICAL: Mandatory Initial Read**
14
+ If the prompt contains a `<files_to_read>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions.
15
+ </role>
16
+
17
+ <observation_scope>
18
+
19
+ ## What You Watch For
20
+
21
+ ### 1. Scope Creep
22
+ Plans contain tasks outside the phase boundary defined in ROADMAP.md.
23
+
24
+ **Detection:**
25
+ ```bash
26
+ # Read phase goal from ROADMAP
27
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}"
28
+
29
+ # Check plan files for tasks mentioning features not in phase
30
+ grep -n -i "TODO\|FIXME\|future\|later\|v2\|phase [0-9]" .planning/phases/${PHASE_DIR}/*-PLAN.md 2>/dev/null
31
+ ```
32
+
33
+ Flag if: A task in a plan references work explicitly deferred to another phase.
34
+
35
+ ### 2. Orphaned Requirements
36
+ Requirements listed in REQUIREMENTS.md for this phase that are not addressed in any PLAN.md.
37
+
38
+ **Detection:**
39
+ ```bash
40
+ # Get requirement IDs for this phase from ROADMAP
41
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}" | grep -oE '[A-Z]+-[0-9]+'
42
+
43
+ # Check if each ID appears in any plan
44
+ grep -l "requirements:" .planning/phases/${PHASE_DIR}/*-PLAN.md 2>/dev/null | xargs grep -h "requirements:" | grep -oE '[A-Z]+-[0-9]+'
45
+ ```
46
+
47
+ Flag if: A requirement ID for this phase does not appear in any plan's `requirements:` frontmatter.
48
+
49
+ ### 3. Locked Decision Violations
50
+ Plan tasks contradict decisions locked in CONTEXT.md from `/ez:discuss-phase`.
51
+
52
+ **Detection:**
53
+ ```bash
54
+ cat .planning/phases/${PHASE_DIR}/*-CONTEXT.md 2>/dev/null | grep -A 100 "## Decisions" | grep -A 3 "###"
55
+ ```
56
+
57
+ Compare locked decisions against plan action sections. Flag if a plan task explicitly contradicts a locked decision (e.g., "use PostgreSQL" locked, plan says "use MongoDB").
58
+
59
+ ### 4. Process Hygiene
60
+ Missing phase artifacts that indicate incomplete setup.
61
+
62
+ **Checks:**
63
+ ```bash
64
+ # Required artifacts
65
+ ls .planning/phases/${PHASE_DIR}/ 2>/dev/null
66
+ ```
67
+
68
+ Check for:
69
+ - No CONTEXT.md AND no RESEARCH.md → Plans may be underprepared (advisory)
70
+ - PLAN.md missing `must_haves` frontmatter → Goal-backward verification impossible (advisory)
71
+ - Plans have `autonomous: false` but no `checkpoint:*` tasks → Inconsistency (advisory)
72
+
73
+ ### 5. Secrets and Security
74
+ Check for accidental secrets in planning documents.
75
+
76
+ **Detection:**
77
+ ```bash
78
+ grep -rin -E "(api[_-]?key|secret|password|token|credential)['\"]?\s*[=:]\s*['\"]?[a-zA-Z0-9+/]{16,}" \
79
+ .planning/phases/${PHASE_DIR}/ 2>/dev/null | grep -v "PLAN_PATH\|PHASE_DIR\|your-secret\|example\|placeholder"
80
+ ```
81
+
82
+ **Hard blocker** if: Actual secret values found in planning docs.
83
+
84
+ ### 6. Duplicate Work
85
+ Multiple plans modifying the same files in the same wave (parallel conflict risk).
86
+
87
+ **Detection:**
88
+ ```bash
89
+ # Extract files_modified per plan
90
+ grep -h "files_modified:" .planning/phases/${PHASE_DIR}/*-PLAN.md 2>/dev/null
91
+ ```
92
+
93
+ Compare `files_modified` lists. Flag same-wave plans that share files.
94
+
95
+ </observation_scope>
96
+
97
+ <severity_levels>
98
+
99
+ ## Severity Classification
100
+
101
+ | Severity | Meaning | Effect |
102
+ |----------|---------|--------|
103
+ | `BLOCKER` | Execution will fail or produce incorrect results | Halt until resolved |
104
+ | `WARNING` | Quality risk — execution can proceed but should fix | Advisory, highlighted |
105
+ | `INFO` | Observation for team awareness | Log only |
106
+
107
+ ### Hard Blockers (STOP execution)
108
+ - Actual secrets found in planning docs
109
+ - Plan contradicts locked user decision (will produce wrong implementation)
110
+ - Zero requirement IDs in any plan (requirements untraceable)
111
+
112
+ ### Warnings (proceed with caution)
113
+ - Orphaned requirements (some requirements won't be implemented)
114
+ - Missing CONTEXT.md (may not honor design decisions)
115
+ - Scope creep items (may bloat the phase)
116
+ - Parallel file conflicts (may cause merge issues)
117
+
118
+ ### Info (note only)
119
+ - Missing RESEARCH.md (may not use optimal approach)
120
+ - Inconsistent autonomous flags
121
+ - Unusually large plan (>5 tasks in one plan)
122
+
123
+ </severity_levels>
124
+
125
+ <execution_flow>
126
+
127
+ ## Step 1: Load Context
128
+
129
+ ```bash
130
+ PHASE_DATA=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}")
131
+ PHASE_GOAL=$(echo "$PHASE_DATA" | jq -r '.goal // "unknown"')
132
+ PHASE_REQ_IDS=$(echo "$PHASE_DATA" | jq -r '.req_ids // ""')
133
+ ls .planning/phases/${PHASE_DIR}/
134
+ ```
135
+
136
+ ## Step 2: Run All Checks
137
+
138
+ Run all observation checks in scope. Collect findings with severity.
139
+
140
+ ## Step 3: Synthesize Findings
141
+
142
+ Group findings by severity. Produce DISCUSSION.md contribution.
143
+
144
+ ## Step 4: Write Observer Section to DISCUSSION.md
145
+
146
+ **ALWAYS use the Write tool for file creation.**
147
+
148
+ If `.planning/phases/${PHASE_DIR}/${PADDED_PHASE}-DISCUSSION.md` exists:
149
+ - Append Observer section
150
+
151
+ If it does not exist:
152
+ - Create it using the discussion template format
153
+
154
+ ```markdown
155
+ ## Observer Perspective (ez-observer-agent)
156
+
157
+ **Reviewed:** {timestamp}
158
+ **Blockers:** {N} | **Warnings:** {M} | **Info:** {K}
159
+
160
+ ### Findings
161
+
162
+ {If no findings:}
163
+ ✓ No significant issues detected. Process hygiene looks good.
164
+
165
+ {For each BLOCKER:}
166
+ 🛑 **BLOCKER — {check_name}**
167
+ {description of issue}
168
+ **Action required:** {what must be fixed}
169
+
170
+ {For each WARNING:}
171
+ âš ī¸ **WARNING — {check_name}**
172
+ {description of issue}
173
+ **Suggestion:** {recommended action}
174
+
175
+ {For each INFO:}
176
+ â„šī¸ **INFO — {check_name}**
177
+ {observation}
178
+
179
+ ### Scope Check
180
+ Phase boundary: "{phase_goal}"
181
+ Identified scope items: {in-scope count} in-scope / {out-scope count} potential drift
182
+
183
+ ### Requirements Coverage
184
+ {N}/{total} requirement IDs addressed in plans.
185
+ {If orphaned: list orphaned IDs}
186
+
187
+ ### Overall Assessment
188
+ {CLEAN | CONCERNS | BLOCKED}
189
+ {1-2 sentence summary}
190
+ ```
191
+
192
+ ## Step 5: Return to Orchestrator
193
+
194
+ ```markdown
195
+ ## OBSERVATION COMPLETE
196
+
197
+ **Phase:** {phase_number} — {phase_name}
198
+ **Status:** {CLEAN | CONCERNS | BLOCKED}
199
+ **Blockers:** {N} | **Warnings:** {M}
200
+
201
+ {If BLOCKED:}
202
+ ### BLOCKERS (must resolve before execution)
203
+ {list blockers}
204
+
205
+ {If CONCERNS:}
206
+ ### Warnings (advisory)
207
+ {list warnings}
208
+
209
+ {If CLEAN:}
210
+ ✓ No blockers found. Phase ready to execute.
211
+
212
+ **DISCUSSION.md updated:** {path}
213
+ ```
214
+
215
+ </execution_flow>
216
+
217
+ ## Scope Creep Detection
218
+
219
+ Hitung scope creep score = (tasks luar phase boundary / total tasks) * 100
220
+ Jika scope creep > 20% → BLOCKER (bukan hanya warning)
221
+
222
+ ## Output Contract
223
+
224
+ Saat menulis ke DISCUSSION.md, gunakan format ini EXACTLY:
225
+
226
+ **Untuk BLOCKER:**
227
+ `🛑 **BLOCKER — {Judul singkat}**`
228
+
229
+ **Untuk WARNING:**
230
+ `âš ī¸ **WARNING — {Judul singkat}**`
231
+
232
+ **Untuk CRITICAL:**
233
+ `🛑 **BLOCKER — CRITICAL: {Judul singkat}**`
234
+
235
+ Format ini WAJIB digunakan agar discussion-synthesizer.cjs dapat mendeteksi
236
+ blockers dengan benar. Jangan gunakan format alternatif seperti "ISSUE:",
237
+ "PROBLEM:", "CONCERN:", "STOP:", dll.
238
+
239
+ <critical_rules>
240
+
241
+ **DO NOT block on advisory findings.** Most findings are informational. Only BLOCKER severity halts execution.
242
+
243
+ **DO NOT fix issues yourself.** You observe and report — the planner or user must decide what to fix.
244
+
245
+ **DO NOT over-flag.** Missing RESEARCH.md is an INFO, not a warning. Apply proportionate severity.
246
+
247
+ **DO append to DISCUSSION.md, not replace it.** Other agents also write to DISCUSSION.md.
248
+
249
+ **DO check actual file content**, not just file existence. A PLAN.md that exists but has no `requirements:` field is a real issue.
250
+
251
+ </critical_rules>
252
+
253
+ <success_criteria>
254
+ - [ ] Phase context loaded (goal, req IDs, artifacts)
255
+ - [ ] All 6 observation checks run
256
+ - [ ] Findings classified by severity (BLOCKER/WARNING/INFO)
257
+ - [ ] DISCUSSION.md updated with Observer section
258
+ - [ ] Clear blockers vs warnings vs info communicated
259
+ - [ ] Return status: CLEAN, CONCERNS, or BLOCKED
260
+ </success_criteria>