Help us improve
Share bugs, ideas, or general feedback.
From ecc
Transforms ambiguous or high-impact product/engineering changes into scoped, verifiable acceptance criteria before or alongside implementation. Use to de-risk features, migrations, security changes, or agent handoffs.
npx claudepluginhub affaan-m/ecc --plugin eccHow this skill is triggered — by the user, by Claude, or both
Slash command
/ecc:intent-driven-developmentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce useful acceptance criteria without turning specification into ceremony. Inspect
Guides writing specifications and acceptance criteria with vertical slicing. Covers rules for good acceptance criteria, code in specs, and outside-in thinking.
Generates engineering specs for non-trivial features, changes, or refactors before planning or coding. Covers goals, non-goals, constraints, acceptance criteria, and open questions.
Enforces a gated Spec → Plan → Build → Test → Review → Ship lifecycle for multi-file features and projects, preventing AI coding agents from skipping specification and verification steps.
Share bugs, ideas, or general feedback.
Produce useful acceptance criteria without turning specification into ceremony. Inspect available context first, expose genuine ambiguity, and choose verification methods that fit the work and its risk.
/intent-driven-developmentDo not activate for trivial edits, straightforward one-line fixes, active debugging sessions, code review requests, or implementation requests whose acceptance conditions are already clear.
[revised], updates scope or verification method, increments the revision number, and re-presents only the changed criteriaQuick Capture — "Add CSV export to the dashboard"
Goal: Authenticated users can download dashboard data as a CSV file.
In scope: Export of currently filtered rows; filename includes date.
Out of scope: Scheduled exports, email delivery, Excel format.
Assumptions: Max row count is under 10k; no PII in exported fields.
AC-001: Export generates file with correct headers
- Scenario: authenticated user, at least one data row visible
- Action: click "Export CSV"
- Expected: browser downloads file with columns [id, name, created_at]
- Must not: expose internal fields or rows belonging to other users
- Verification: automated integration test + manual schema spot-check
- Priority: Required
Full Acceptance Brief trigger — "Migrate user auth to OAuth"
Auth change + external dependency + existing session data → Full Brief with Risk Review table, blocking decisions on session invalidation strategy, and explicit rollback AC.
Existing spec review — user pastes a PRD
Skill reviews it for missing scope boundaries, unverifiable requirements ("the system shall be fast"), and silent assumptions, then returns corrected or supplemental criteria without restarting discovery.
[revised], state the constraint, and adjust scope or
verification method), increment the revision number, and re-present only the changed criteria
to the user before continuing. Require explicit confirmation only if the revision changes a
blocking decision or materially reduces safety or correctness guarantees.Use the smallest useful output.
Use for a clear but non-trivial change with low or moderate risk. Produce:
Do not delay implementation for approval unless a blocking risk from the operating rules exists or the user specifically asked for a specification first.
Use for ambiguous, cross-system, security-sensitive, data-changing, migration, compliance, or high-cost changes, or when the user requests a handoff artifact. Produce the full template below and request confirmation for unresolved blocking decisions before risky implementation.
When the user already supplied a PRD, issue, plan, or acceptance criteria:
Extract or ask for:
Avoid asking generic questions about irrelevant risks.
When local or connected artifacts are available, inspect only what is needed:
Record discovered facts separately from user-provided assumptions. If context cannot be inspected, say what is unknown and ask focused questions.
The repository reveals technical facts — how the system behaves today, its conventions, and its contracts. It does not reveal product or business constraints: business rules, compliance and regulatory obligations, contractual SLAs, pricing, data-retention policy, prioritization, and target users. Never reconstruct these from code or naming. Capture them only from the user or an authoritative product artifact, and list them as assumptions to confirm until then.
State:
Use AC-001, AC-002, and so on. Each criterion must describe observable behavior and an
appropriate verification method; criteria and tests are not required to map one-to-one.
For each applicable criterion include:
Do not use words such as "correctly", "securely", "fast", "intuitive", or "robust" without defining observable evidence or recording them as a human-review judgment.
Consider these categories, but include only categories that apply:
| Category | Include when | Typical evidence |
|---|---|---|
| Happy path | New or changed user-visible behavior | Successful workflow or state transition |
| Validation | The change accepts input | Rejected malformed or boundary value without mutation |
| Authorization/privacy | Data or actions have access boundaries | Denied access and no sensitive disclosure |
| Persistence/migration | Stored data or schemas change | Backward read, migration, rollback or backup behavior |
| Compatibility | Public APIs, files, events, or clients may break | Existing contract or fixture remains valid |
| Failure recovery | Network, service, or asynchronous failure exists | No partial state or clear retry/degraded behavior |
| Idempotency/concurrency | Repeats or simultaneous writes are plausible | No duplicate side effect or invalid final state |
| Performance | A user or service threshold matters | Defined measurement conditions and threshold |
| UX/accessibility | A person interacts with the result | Keyboard, feedback, error recovery, visual/manual review |
Use this template for a Full Acceptance Brief. Omit irrelevant sections for Quick Capture.
# Acceptance Brief: <Change Name>
**Status:** Draft | Approved | Implemented | Verified
**Revision:** <number>
**Prepared for:** <user/team/agent, when known>
**Approval required before risky work:** Yes | No - <reason>
## Revision Log
| Rev | Date | Changed criteria | Reason |
| --- | --- | --- | --- |
| 1 | <date> | — | Initial draft |
## Goal
<One observable outcome sentence.>
## Scope
**In scope**
- <behavior included>
**Out of scope**
- <adjacent work excluded>
## Context
**Discovered facts** (technical, verified from repository or artifact)
- <how the system behaves today, conventions, contracts>
**Product/business constraints** (supplied by user or product artifact, never inferred from code)
- <business rule, compliance/SLA obligation, retention policy, priority, target user — or "none supplied yet">
**Assumptions**
- <unverified claim to confirm or validate>
**Dependencies and constraints**
- <external service, local convention, compatibility obligation, environment limit>
## Risk Review
| Risk area | Applies? | Required handling |
| --- | --- | --- |
| Security/privacy | Yes/No | <redaction, authorization, review, etc.> |
| Persistent data/migration | Yes/No | <compatibility, backup, rollback, etc.> |
| External effects/cost | Yes/No | <sandbox/test environment/authorization> |
| Compatibility/API | Yes/No | <contract to preserve or version> |
| UX/accessibility | Yes/No | <manual or automated evidence> |
## Acceptance Criteria
### AC-001: <observable behavior>
- **Scenario:** <starting condition>
- **Action:** <single trigger>
- **Expected:** <observable result>
- **Must not:** <prohibited side effect, if applicable>
- **Verification:** <method and intended evidence>
- **Environment/safety:** <constraints, if applicable>
- **Priority:** Required | Important | Optional
## Blocking Decisions
- [ ] <only decisions that prevent safe or correct progress>
## Verification Plan
| Criterion | Verification evidence | Status |
| --- | --- | --- |
| AC-001 | <test/check/review command or evidence type> | Pending |
Use these to judge whether the skill actually produced a verifiable brief, not planning prose.
A failing acceptance criterion
AC-001: The export works correctly and is secure.
Fails — "works correctly" and "secure" are not observable, there is no scenario, trigger, expected result, or verification method, and nothing states what must not happen. A reader cannot tell whether the implementation satisfied it.
A passing acceptance criterion
AC-001: Export generates file with correct headers
- Scenario: authenticated user, at least one data row visible
- Action: click "Export CSV"
- Expected: browser downloads file with columns [id, name, created_at]
- Must not: expose internal fields or rows belonging to other users
- Verification: automated integration test + manual schema spot-check
- Priority: Required
Passes — a concrete observable outcome, a prohibited side effect, and a named verification method. Two people would agree on whether it was met.
A failing context entry
Discovered facts: Users on the free tier are limited to 100 exports per month.
Fails — a per-tier limit is a business rule. It must not appear under discovered facts inferred from code; it belongs under Product/business constraints, supplied by the user, or be listed as an assumption to confirm.
A brief passes only if every answer is "yes". Any "no" means revise before returning it.
Before returning the brief, check:
When another planning or implementation workflow is available, pass the acceptance brief or criterion IDs to it. When no dedicated workflow exists, provide the brief directly as the implementation reference. Do not assume any named skill or tool is installed.