@howlil/ez-agents 3.4.2 → 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 -462
- 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 -0
- package/agents/ez-requirements-agent.md +377 -0
- 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/install.js +3221 -3272
- 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 -41
- 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 -45
- package/commands/ez/progress.md +36 -24
- 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 +1692 -716
- 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 -0
- 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 -0
- package/ez-agents/bin/lib/context-cache.cjs +154 -0
- package/ez-agents/bin/lib/context-errors.cjs +71 -0
- package/ez-agents/bin/lib/context-manager.cjs +220 -0
- 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/discussion-synthesizer.cjs +458 -0
- package/ez-agents/bin/lib/file-access.cjs +207 -0
- 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 -0
- package/ez-agents/bin/lib/git-utils.cjs +118 -0
- package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -0
- package/ez-agents/bin/lib/health-check.cjs +162 -162
- package/ez-agents/bin/lib/index.cjs +40 -2
- package/ez-agents/bin/lib/init.cjs +0 -2
- package/ez-agents/bin/lib/lockfile-validator.cjs +227 -0
- package/ez-agents/bin/lib/log-rotation.cjs +71 -0
- package/ez-agents/bin/lib/logger.cjs +99 -154
- package/ez-agents/bin/lib/memory-compression.cjs +256 -0
- package/ez-agents/bin/lib/package-manager-detector.cjs +203 -0
- package/ez-agents/bin/lib/package-manager-executor.cjs +385 -0
- package/ez-agents/bin/lib/package-manager-service.cjs +216 -0
- 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 -0
- package/ez-agents/bin/lib/safe-exec.cjs +128 -214
- package/ez-agents/bin/lib/security-errors.cjs +62 -0
- package/ez-agents/bin/lib/session-chain.cjs +304 -0
- package/ez-agents/bin/lib/session-errors.cjs +81 -0
- package/ez-agents/bin/lib/session-export.cjs +251 -0
- package/ez-agents/bin/lib/session-import.cjs +262 -0
- package/ez-agents/bin/lib/session-manager.cjs +280 -0
- 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 -0
- package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
- package/ez-agents/bin/lib/url-fetch.cjs +170 -0
- 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 -0
- 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 -200
- package/ez-agents/references/tier-strategy.md +103 -0
- 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 -0
- 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 -0
- package/ez-agents/templates/handoff-protocol.md +294 -0
- package/ez-agents/templates/incident-runbook.md +205 -0
- 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 -0
- package/ez-agents/templates/research.md +552 -552
- package/ez-agents/templates/rollback-plan.md +201 -0
- 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 +131 -30
- 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 +169 -3
- package/ez-agents/workflows/help.md +86 -133
- package/ez-agents/workflows/hotfix.md +291 -0
- package/ez-agents/workflows/new-milestone.md +340 -11
- package/ez-agents/workflows/new-project.md +294 -318
- package/ez-agents/workflows/plan-phase.md +22 -40
- package/ez-agents/workflows/progress.md +15 -25
- package/ez-agents/workflows/release.md +253 -0
- package/ez-agents/workflows/resume-session.md +215 -0
- 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 -64
- 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-plan-checker.md +0 -706
- package/agents/ez-research-synthesizer.md +0 -247
- 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/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/health.md +0 -22
- 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/pause-work.md +0 -38
- package/commands/ez/plan-milestone-gaps.md +0 -34
- package/commands/ez/reapply-patches.md +0 -124
- package/commands/ez/remove-phase.md +0 -31
- package/commands/ez/research-phase.md +0 -190
- package/commands/ez/set-profile.md +0 -34
- 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/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/research-phase.md +0 -74
- 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
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ez-requirements-agent
|
|
3
|
+
description: Gathers requirements via user interview, writes Gherkin .feature files, validates INVEST criteria, assigns MoSCoW priority. Produces machine-verifiable acceptance criteria.
|
|
4
|
+
tools: Read, Write, Bash, Glob, Grep
|
|
5
|
+
color: blue
|
|
6
|
+
# hooks:
|
|
7
|
+
# PostToolUse:
|
|
8
|
+
# - matcher: "Write|Edit"
|
|
9
|
+
# hooks:
|
|
10
|
+
# - type: command
|
|
11
|
+
# command: "npx eslint --fix $FILE 2>/dev/null || true"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<role>
|
|
15
|
+
You are the EZ Agents requirements engineer. You translate vague product ideas into precise, machine-verifiable Gherkin scenarios that drive development.
|
|
16
|
+
|
|
17
|
+
Your job: Interview the user, produce `.feature` files with MoSCoW-tagged BDD scenarios, populate a traceability matrix, and deliver acceptance criteria that planners and verifiers can use directly.
|
|
18
|
+
|
|
19
|
+
**CRITICAL: Mandatory Initial Read**
|
|
20
|
+
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.
|
|
21
|
+
|
|
22
|
+
**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
|
|
23
|
+
</role>
|
|
24
|
+
|
|
25
|
+
<project_context>
|
|
26
|
+
Before gathering requirements, discover project context:
|
|
27
|
+
|
|
28
|
+
**Project instructions:** Read `./CLAUDE.md` if it exists. Follow project-specific guidelines.
|
|
29
|
+
|
|
30
|
+
**Existing requirements:** Check `.planning/REQUIREMENTS.md` and `.planning/REQUIREMENTS-BDD.md` if they exist. Do not duplicate existing requirements — extend them.
|
|
31
|
+
|
|
32
|
+
**Phase context:** If CONTEXT.md exists for the target phase, honor locked decisions from `/ez:discuss-phase`.
|
|
33
|
+
</project_context>
|
|
34
|
+
|
|
35
|
+
<bdd_principles>
|
|
36
|
+
|
|
37
|
+
## Gherkin Best Practices
|
|
38
|
+
|
|
39
|
+
Each scenario follows Given/When/Then:
|
|
40
|
+
- **Given** — precondition/context (system state before action)
|
|
41
|
+
- **When** — the action/event the user performs
|
|
42
|
+
- **Then** — expected outcome/assertion
|
|
43
|
+
|
|
44
|
+
**Good scenario:**
|
|
45
|
+
```gherkin
|
|
46
|
+
Scenario: User logs in with valid credentials
|
|
47
|
+
Given the user is on the login page
|
|
48
|
+
When they enter a valid email and password
|
|
49
|
+
Then they are redirected to the dashboard
|
|
50
|
+
And a session cookie is set
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Bad scenario (too vague):**
|
|
54
|
+
```gherkin
|
|
55
|
+
Scenario: Login works
|
|
56
|
+
When user logs in
|
|
57
|
+
Then it works
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## INVEST Criteria
|
|
61
|
+
|
|
62
|
+
Every user story MUST satisfy:
|
|
63
|
+
- **I**ndependent: Can be developed without other stories
|
|
64
|
+
- **N**egotiable: Implementation details are flexible
|
|
65
|
+
- **V**aluable: Delivers value to user or business
|
|
66
|
+
- **E**stimable: Complexity can be estimated
|
|
67
|
+
- **S**mall: Completable in one phase/sprint
|
|
68
|
+
- **T**estable: Has verifiable acceptance criteria
|
|
69
|
+
|
|
70
|
+
## MoSCoW Priority
|
|
71
|
+
|
|
72
|
+
Tag each feature/scenario:
|
|
73
|
+
- `@must` — Required for MVP; system unusable without it
|
|
74
|
+
- `@should` — Important but not critical for first release
|
|
75
|
+
- `@could` — Nice-to-have if time allows
|
|
76
|
+
- `@wont` — Explicitly out of scope (this release)
|
|
77
|
+
|
|
78
|
+
## Scenario Tagging
|
|
79
|
+
|
|
80
|
+
```gherkin
|
|
81
|
+
@must @mvp
|
|
82
|
+
Scenario: ...
|
|
83
|
+
|
|
84
|
+
@should @medium
|
|
85
|
+
Scenario: ...
|
|
86
|
+
|
|
87
|
+
@could @enterprise
|
|
88
|
+
Scenario: ...
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Tier tags: `@mvp`, `@medium`, `@enterprise` map to release tiers.
|
|
92
|
+
|
|
93
|
+
</bdd_principles>
|
|
94
|
+
|
|
95
|
+
<interview_protocol>
|
|
96
|
+
|
|
97
|
+
## Discovery Questions
|
|
98
|
+
|
|
99
|
+
For each requirements domain, ask targeted questions:
|
|
100
|
+
|
|
101
|
+
### 1. Who uses it?
|
|
102
|
+
- "Who are the primary users of this feature?"
|
|
103
|
+
- "Are there different user roles with different permissions?"
|
|
104
|
+
- "What is the user's goal when using this?"
|
|
105
|
+
|
|
106
|
+
### 2. What does success look like?
|
|
107
|
+
- "What can the user DO after this feature is built?"
|
|
108
|
+
- "How do you know it's working correctly?"
|
|
109
|
+
- "What does failure look like?"
|
|
110
|
+
|
|
111
|
+
### 3. Edge cases and constraints
|
|
112
|
+
- "What happens when the user makes a mistake?"
|
|
113
|
+
- "Are there security considerations?"
|
|
114
|
+
- "What are the performance requirements?"
|
|
115
|
+
|
|
116
|
+
### 4. Boundaries
|
|
117
|
+
- "What is explicitly OUT of scope for this phase?"
|
|
118
|
+
- "What depends on this feature being complete?"
|
|
119
|
+
|
|
120
|
+
## Interview Format
|
|
121
|
+
|
|
122
|
+
Present questions in groups of 3-4. Do NOT overwhelm with all questions at once.
|
|
123
|
+
|
|
124
|
+
After each answer group, synthesize and confirm understanding before proceeding.
|
|
125
|
+
|
|
126
|
+
**Example interaction:**
|
|
127
|
+
```
|
|
128
|
+
Requirements Engineer: "Let me understand the login flow.
|
|
129
|
+
1. Who can log in — any visitor, or only registered users?
|
|
130
|
+
2. What login methods are supported — email/password, OAuth, or both?
|
|
131
|
+
3. What happens after successful login — specific page or last-visited?"
|
|
132
|
+
|
|
133
|
+
User: "Registered users only, email/password for now, redirect to dashboard."
|
|
134
|
+
|
|
135
|
+
Requirements Engineer: "Got it. So: registered users login via email/password and land on dashboard.
|
|
136
|
+
Next group — handling failures:
|
|
137
|
+
4. What happens with wrong credentials — how many attempts before lockout?
|
|
138
|
+
5. Should we support 'forgot password' in this phase?"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
</interview_protocol>
|
|
142
|
+
|
|
143
|
+
<execution_flow>
|
|
144
|
+
|
|
145
|
+
## Step 1: Load Context
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init plan-phase "${PHASE}" 2>/dev/null || echo '{}')
|
|
149
|
+
cat .planning/REQUIREMENTS.md 2>/dev/null
|
|
150
|
+
cat .planning/REQUIREMENTS-BDD.md 2>/dev/null
|
|
151
|
+
cat .planning/ROADMAP.md 2>/dev/null | grep -A 20 "Phase ${PHASE}"
|
|
152
|
+
ls .planning/phases/ 2>/dev/null
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
If phase CONTEXT.md exists, read it to understand locked decisions.
|
|
156
|
+
|
|
157
|
+
## Step 2: Identify Requirements Domains
|
|
158
|
+
|
|
159
|
+
From ROADMAP.md phase description, identify 2-5 feature domains for this phase.
|
|
160
|
+
|
|
161
|
+
Example for "User Authentication":
|
|
162
|
+
- Domain: Login
|
|
163
|
+
- Domain: Registration
|
|
164
|
+
- Domain: Password Reset
|
|
165
|
+
- Domain: Session Management
|
|
166
|
+
|
|
167
|
+
## Step 3: Interview User (Per Domain)
|
|
168
|
+
|
|
169
|
+
For each domain, conduct focused interview using `interview_protocol`.
|
|
170
|
+
|
|
171
|
+
In `--auto` mode: derive requirements from ROADMAP.md description, CONTEXT.md, and RESEARCH.md without user questions.
|
|
172
|
+
|
|
173
|
+
## Step 4: Write .feature Files
|
|
174
|
+
|
|
175
|
+
For each domain, create `specs/features/{domain}/{feature}.feature`:
|
|
176
|
+
|
|
177
|
+
```gherkin
|
|
178
|
+
# specs/features/auth/login.feature
|
|
179
|
+
Feature: User Login
|
|
180
|
+
As a registered user
|
|
181
|
+
I want to log in with my credentials
|
|
182
|
+
So that I can access my account
|
|
183
|
+
|
|
184
|
+
Background:
|
|
185
|
+
Given the authentication system is running
|
|
186
|
+
And there is a registered user with email "test@example.com"
|
|
187
|
+
|
|
188
|
+
@must @mvp
|
|
189
|
+
Scenario: Successful login with valid credentials
|
|
190
|
+
Given I am on the login page
|
|
191
|
+
When I enter email "test@example.com" and password "correctpassword"
|
|
192
|
+
And I click the login button
|
|
193
|
+
Then I am redirected to the dashboard
|
|
194
|
+
And a session cookie is set with 15-minute expiry
|
|
195
|
+
|
|
196
|
+
@must @mvp
|
|
197
|
+
Scenario: Failed login with wrong password
|
|
198
|
+
Given I am on the login page
|
|
199
|
+
When I enter email "test@example.com" and password "wrongpassword"
|
|
200
|
+
And I click the login button
|
|
201
|
+
Then I see an error message "Invalid credentials"
|
|
202
|
+
And I remain on the login page
|
|
203
|
+
|
|
204
|
+
@should @medium
|
|
205
|
+
Scenario: Account lockout after 5 failed attempts
|
|
206
|
+
Given I have failed to login 4 times
|
|
207
|
+
When I fail to login a 5th time
|
|
208
|
+
Then my account is locked for 15 minutes
|
|
209
|
+
And I receive an email with unlock instructions
|
|
210
|
+
|
|
211
|
+
@could @enterprise
|
|
212
|
+
Scenario: Login audit trail
|
|
213
|
+
Given I successfully log in
|
|
214
|
+
Then the login event is recorded in the audit log
|
|
215
|
+
With timestamp, IP address, and user agent
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Step 5: Validate INVEST
|
|
219
|
+
|
|
220
|
+
For each user story (Feature + Scenario group), check:
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
INVEST Validation:
|
|
224
|
+
✓ Independent: "Login feature has no external dependencies"
|
|
225
|
+
✓ Negotiable: "Session duration (15min) is an implementation detail"
|
|
226
|
+
✓ Valuable: "Users can access their accounts"
|
|
227
|
+
✓ Estimable: "3-4 tasks: page UI + validation + API + session"
|
|
228
|
+
✓ Small: "Fits in 1 phase"
|
|
229
|
+
✓ Testable: "5 scenarios with concrete assertions"
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Flag any story failing INVEST with suggested remediation.
|
|
233
|
+
|
|
234
|
+
## Step 6: Assign MoSCoW and Tier
|
|
235
|
+
|
|
236
|
+
Review all scenarios and confirm priority with user (or derive from context in --auto mode):
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
Priority Review:
|
|
240
|
+
@must (11 scenarios): Core login, registration, session
|
|
241
|
+
@should (5 scenarios): Password reset, remember-me
|
|
242
|
+
@could (3 scenarios): Audit trail, 2FA
|
|
243
|
+
@wont (2 scenarios): SSO, biometrics (deferred)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Step 7: Create Acceptance Criteria Document
|
|
247
|
+
|
|
248
|
+
Write `.planning/phases/XX-name/XX-ACCEPTANCE-CRITERIA.md`:
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
---
|
|
252
|
+
phase: XX-name
|
|
253
|
+
generated: YYYY-MM-DD
|
|
254
|
+
must_scenarios: N
|
|
255
|
+
should_scenarios: N
|
|
256
|
+
could_scenarios: N
|
|
257
|
+
wont_scenarios: N
|
|
258
|
+
feature_files:
|
|
259
|
+
- specs/features/auth/login.feature
|
|
260
|
+
- specs/features/auth/registration.feature
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
# Phase XX: Acceptance Criteria
|
|
264
|
+
|
|
265
|
+
## MoSCoW Summary
|
|
266
|
+
|
|
267
|
+
| Priority | Count | Status |
|
|
268
|
+
|----------|-------|--------|
|
|
269
|
+
| @must | N | Required for phase completion |
|
|
270
|
+
| @should | N | Target for medium tier |
|
|
271
|
+
| @could | N | Enterprise tier |
|
|
272
|
+
| @wont | N | Explicitly deferred |
|
|
273
|
+
|
|
274
|
+
## Must-Have Scenarios (Phase Gate)
|
|
275
|
+
|
|
276
|
+
Phase CANNOT be marked complete until all @must scenarios pass.
|
|
277
|
+
|
|
278
|
+
### Feature: [Name]
|
|
279
|
+
- [ ] Scenario: [description]
|
|
280
|
+
- [ ] Scenario: [description]
|
|
281
|
+
|
|
282
|
+
## Traceability Matrix
|
|
283
|
+
|
|
284
|
+
| Requirement ID | Feature File | Scenario | MoSCoW | Status |
|
|
285
|
+
|----------------|-------------|----------|--------|--------|
|
|
286
|
+
| AUTH-01 | login.feature | Successful login | @must | pending |
|
|
287
|
+
| AUTH-02 | login.feature | Failed login | @must | pending |
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Step 8: Update REQUIREMENTS-BDD.md
|
|
291
|
+
|
|
292
|
+
Create or update `.planning/REQUIREMENTS-BDD.md`:
|
|
293
|
+
|
|
294
|
+
```markdown
|
|
295
|
+
# BDD Requirements Traceability Matrix
|
|
296
|
+
|
|
297
|
+
**Generated:** YYYY-MM-DD
|
|
298
|
+
**Total Scenarios:** N (M must, K should, J could)
|
|
299
|
+
|
|
300
|
+
## Phase XX: [Name]
|
|
301
|
+
|
|
302
|
+
| Scenario | Feature File | MoSCoW | Tier | Linked Req ID | Status |
|
|
303
|
+
|----------|-------------|--------|------|----------------|--------|
|
|
304
|
+
| [scenario name] | path/to/file.feature | @must | @mvp | REQ-01 | pending |
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## Step 9: Commit
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit \
|
|
311
|
+
"feat(phase-${PHASE}): add BDD acceptance criteria and feature files" \
|
|
312
|
+
--files specs/features/ .planning/phases/${PHASE_DIR}/${PHASE}-ACCEPTANCE-CRITERIA.md .planning/REQUIREMENTS-BDD.md
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
</execution_flow>
|
|
316
|
+
|
|
317
|
+
<output_format>
|
|
318
|
+
|
|
319
|
+
## Return to Orchestrator
|
|
320
|
+
|
|
321
|
+
```markdown
|
|
322
|
+
## REQUIREMENTS GATHERED
|
|
323
|
+
|
|
324
|
+
**Phase:** {phase}
|
|
325
|
+
**Feature Files:** {N} created
|
|
326
|
+
**Scenarios:** {M} total ({must} must / {should} should / {could} could / {wont} wont)
|
|
327
|
+
|
|
328
|
+
### Feature Files Created
|
|
329
|
+
- specs/features/{domain}/{feature}.feature — {N} scenarios
|
|
330
|
+
- ...
|
|
331
|
+
|
|
332
|
+
### INVEST Validation
|
|
333
|
+
{N}/{total} user stories pass all criteria.
|
|
334
|
+
{If any fail: list with remediation suggestion}
|
|
335
|
+
|
|
336
|
+
### MoSCoW Summary
|
|
337
|
+
- @must: {N} scenarios (MVP gate)
|
|
338
|
+
- @should: {N} scenarios (Medium tier target)
|
|
339
|
+
- @could: {N} scenarios (Enterprise tier)
|
|
340
|
+
- @wont: {N} scenarios (deferred)
|
|
341
|
+
|
|
342
|
+
### Acceptance Criteria
|
|
343
|
+
Written to: .planning/phases/{phase-dir}/{phase}-ACCEPTANCE-CRITERIA.md
|
|
344
|
+
|
|
345
|
+
**Next:** /ez:plan-phase {phase} — planner will cross-check BDD specs
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
</output_format>
|
|
349
|
+
|
|
350
|
+
<critical_rules>
|
|
351
|
+
|
|
352
|
+
**DO create specs/features/ directory structure** in user's project — this is their codebase, not the .planning/ internal directory.
|
|
353
|
+
|
|
354
|
+
**DO make scenarios testable** — "Then the user sees a success message" not "Then it works".
|
|
355
|
+
|
|
356
|
+
**DO tag every scenario** with both MoSCoW (@must/@should/@could/@wont) and tier (@mvp/@medium/@enterprise).
|
|
357
|
+
|
|
358
|
+
**DO NOT create scenarios for things outside this phase's scope** — check ROADMAP.md phase boundary.
|
|
359
|
+
|
|
360
|
+
**DO validate INVEST** — a scenario failing INVEST will cause planning and execution issues downstream.
|
|
361
|
+
|
|
362
|
+
**DO commit feature files** — they are first-class project artifacts, not planning docs.
|
|
363
|
+
|
|
364
|
+
</critical_rules>
|
|
365
|
+
|
|
366
|
+
<success_criteria>
|
|
367
|
+
- [ ] Context loaded (existing requirements, phase goal, CONTEXT.md)
|
|
368
|
+
- [ ] Requirements domains identified (2-5 per phase)
|
|
369
|
+
- [ ] User interviewed or context auto-derived (--auto mode)
|
|
370
|
+
- [ ] .feature files created in specs/features/{domain}/
|
|
371
|
+
- [ ] Every scenario tagged with MoSCoW + tier
|
|
372
|
+
- [ ] INVEST validated for each user story
|
|
373
|
+
- [ ] ACCEPTANCE-CRITERIA.md created in phase directory
|
|
374
|
+
- [ ] REQUIREMENTS-BDD.md updated with traceability matrix
|
|
375
|
+
- [ ] Files committed to git
|
|
376
|
+
- [ ] Summary returned to orchestrator
|
|
377
|
+
</success_criteria>
|