Review a technical specification for ambiguities, inconsistencies, incoherences, missing information, and implementability concerns.
Scanned 10/6/2026
npx -y skills add tomzx/agents --skill review-specifications --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Review Specifications?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/tomzx-review-specifications)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: review-specifications
description: Review a technical specification for ambiguities, inconsistencies, incoherences, missing information, and implementability concerns.
---
# Review Specifications
Audits a technical specification and reports findings across seven categories: ambiguities, inconsistencies, incoherences, missing information, implementability, reversibility, and forward compatibility.
## Prerequisites
- Apply the shared SDLC conventions in `skills/sdlc/references/shared.md`.
- If no argument is provided, locate the feature directory under `.sdlc/features/` whose frontmatter `issue` field references `$ISSUE_NUMBER`.
- `.sdlc/features/N-<slug>/specification.md`, or a specification document provided in context or as a file path
- `.sdlc/features/N-<slug>/requirements.md` (optional, improves coverage analysis)
## Steps
1. Read the specification from `.sdlc/features/N-<slug>/specification.md` if present, otherwise from context or as a file path.
2. Cross-reference against the requirements document if available.
3. Run the deterministic checkers best-effort: lint `api.yaml` with `npx -y @stoplight/spectral-cli lint` and render each `mermaid` block with `mmdc` (or `npx -y @mermaid-js/mermaid-cli`) when available. A tool that is not installed is skipped (never blocks); a validation failure is a blocking finding under Inconsistencies.
4. Identify issues in each of the six categories below.
5. Report findings. Omit any category that has no findings.
6. Write the findings to `.sdlc/features/N-<slug>/review-specification.md` with frontmatter `artifact: specification`, `verdict` (`approved` if there are no blocking findings, `changes-requested` if the author must address findings, `rejected` for a fundamental flaw), and `reviewed_at: <ISO date>`, and the findings as the body, per `skills/sdlc/references/shared.md`. Record any unresolved open questions in the findings body. For any question that carries meaningful risk to the implementation, also invoke `/create-assumption` to record it formally.
## Review Checklist
### Ambiguities
- Are field names and types unambiguous?
- Are behavior descriptions precise (no "it should handle errors appropriately")?
- Are state transitions and edge-case handling clearly defined?
### Inconsistencies
- Do data models match the API contracts (field names, types)?
- Do data models and the summary table match `api.yaml` where it exists (field names, types, required flags, error codes)?
- Are field names consistent across endpoints and schemas?
- Do sequence diagrams match the described API behavior (messages correspond to real endpoints, responses match documented status codes)?
- Does every endpoint in `api.yaml` appear in a sequence or the summary table, and vice versa (no orphan operations)?
### Incoherences
- Do any stated technical decisions contradict each other?
- Is the architecture consistent with the stated constraints?
- Are there self-contradictory statements within a single section?
### Missing Information
- Are all requirements from the requirements document addressed?
- Are error cases and edge conditions handled?
- Are authentication and authorization requirements specified?
- Are performance targets and SLAs stated?
### Implementability
- Are there design choices that are impractical or unnecessarily complex?
- Are there circular dependencies or unresolvable constraints?
- Are external dependencies clearly defined with their interfaces?
### Reversibility
- Can we undo this cleanly, or does the spec commit to decisions that are hard to reverse?
- Are destructive data model changes, breaking API changes, and irreversible transformations called out explicitly?
- Do migrations and state transitions include a backward path or deprecation window?
### Forward Compatibility
- Can the data models and API contracts grow additively, or does the design lock in the current shape?
- Do consumers tolerate unknown fields and unknown enum values rather than rejecting them?
- Is a versioning strategy and compatibility policy (e.g., additive-only within a major version) stated?
- Are extension points reserved for known likely future change, or are fixed-set assumptions baked in?
## Output Format
```markdown
## Ambiguities
<Findings or "No issues found.">
## Inconsistencies
<Findings or "No issues found.">
## Incoherences
<Findings or "No issues found.">
## Missing Information
<Findings or "No issues found.">
## Implementability
<Findings or "No issues found.">
## Reversibility
<Findings or "No issues found.">
## Forward Compatibility
<Findings or "No issues found.">
```
## Outcome
If `$OUTCOME_YAML` is set, emit your verdict there per `skills/sdlc/references/shared.md`:
| Verdict | When |
|---|---|
| `approved` | No blocking findings; the subject passes review |
| `changes-requested` | Findings the author must address before it passes |
| `rejected` | Fundamental flaw requiring rework or stopping |
In the same emission, list the findings file under `artifacts:` (`.sdlc/features/N-<slug>/review-specification.md`).
## Example Usage
**Scenario 1: Mismatched schema**
API contract says `user_id: string` but data model defines `id: uuid`.
Report under Inconsistencies.
**Scenario 2: Unspecified auth**
Spec defines endpoints that modify user data but never mentions authentication or authorization rules.
Report under Missing Information.
**Scenario 3: Unnecessary complexity**
Spec requires a distributed lock for a feature that could use a simple DB transaction.
Report under Implementability.
**Scenario 4: OpenAPI lint failure**
`spectral lint api.yaml` reports an unresolved `$ref` and an operation without a response.
Report under Inconsistencies: the normative contract does not validate.
## Next Step
Once the findings verdict is `approved`, continue with `/create-lifecycle`.
## Useful Commands Reference
| Command | Description |
|---|---|
| `npx -y @stoplight/spectral-cli lint api.yaml` | Best-effort OpenAPI lint; failure is a blocking finding |
| `mmdc -i <diagram.mmd>` or `npx -y @mermaid-js/mermaid-cli` | Best-effort Mermaid render check; failure is a blocking finding |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!