Install any skill in seconds. Free to start, no credit card required.
Get Started Free →ADR + Spec mandatory gate before any project or feature development. Architecture Decision Records and Software Design Docs enforce design clarity. Use when starting a new project, initiating non-trivial features, or discussing architecture decisions and design docs.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 124% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 81% | 0% |
Every new project and every non-trivial feature must pass through a dual-gate entry point before any code is written. This skill enforces the discipline of explicit design documentation before implementation.
The two required artifacts:
This gate prevents common failures: discovering broken assumptions mid-build, remaking decisions that were already made weeks earlier, and projects that only "exist" in chat and dissolve when the conversation ends.
A specification is a document that fully describes a feature or system at the design level, sufficient for another engineer (or AI agent) to continue implementation without asking the original author questions.
# <Feature/System Name> Specification
## Objective
What problem does this solve? (1-2 sentences)
## Scope
What is IN scope?
- Explicit feature list
- Boundaries
What is OUT of scope?
- What will NOT be built now (and why)
## Requirements
- User-visible requirements
- Non-functional requirements (performance, security, scale)
- Constraints (regulatory, technical, business)
## Proposed Architecture
- High-level design
- Key components and interactions
- Data model (if applicable)
- External dependencies
## Inputs and Outputs
- What does the system accept?
- What does it produce?
- Format and validation rules
## Error Handling
- What can fail?
- How should failures be handled?
- Recovery strategy
## Success Metrics
- How will we know this was built correctly?
- Quantifiable measures if possibledocs/<feature-name>-spec.md or a dedicated SPEC.md in the root.If any of these is false, the spec is incomplete. Incomplete specs are useless because they move the ambiguity into code, where it multiplies.
An ADR is a lightweight record of a design decision, its rationale, and its consequences. Not every decision needs an ADR — only non-obvious choices.
When is a decision non-obvious?
# ADR-NNN: <Decision Title>
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Superseded | Deprecated
**Author:** <name>
## Context
Why did we need to decide this? What problem or constraint forced the decision?
## Decision
What did we decide to do? Be specific and concrete.
## Rationale
Why this choice over the alternatives? What trade-off did we accept?
## Alternatives Considered
1. **Alternative A**: Why we rejected it
2. **Alternative B**: Why we rejected it
## Consequences
What are the downstream effects of this choice?
- Positive: What becomes easier or better?
- Negative: What becomes harder or more costly?
## Related Decisions
- Links to other ADRs or specs affected by this choicedocs/adr/ADR-NNN-title.md or a single architecture-decisions.md file.An ADR is not a sales pitch. It's a record of what was decided and why, including downsides. If it reads as "this is the best," it's incomplete — all choices have trade-offs, and the ADR should name them.
Before writing any code, verify:
If all are true, proceed. If any are false, write the missing documents first.
No. This applies to:
Size is not an exception. An ADR can be 5 lines. A spec can be a single page. The act of writing is what forces clarity. Skipping it because "it's small" is the exact scenario that produces forgotten decisions and rework months later.
architecture-decisions.md).How to know the spec is good: another engineer can read it, understand the full scope and constraints, and implement it without asking you questions.
How to know the ADRs are good: someone unfamiliar with the project reads them and understands both what was decided and why it was the better choice than the alternatives.
If either document fails this test, incomplete.
This skill pairs well with other design-first disciplines (RFC, Technical Design Docs, Threat Models). Use them together to shift complexity left — from implementation to design, where it's cheapest to fix.
Other measured skills in the registry, with their headline benchmark lift.