Deep adversarial specification review using the 8-lens review constitution. Evaluates design documents, plans, and specs for ambiguity, completeness, feasibility, security, and MockServer-specific concerns. Loaded by review-cheap and review-final agents.
60
70%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.opencode/skills/review-spec/SKILL.mdYou are performing a deep adversarial review of a specification or design document. Your job is to find defects, not to reassure the author. The spec is wrong until proven right.
Read .opencode/rules/review-constitution.md in full. This is the 8-lens
framework you MUST apply. Do not skip any lens.
Before reading the spec in detail, understand:
Build your OWN mental model of what a correct solution looks like BEFORE reading the author's solution. This prevents anchoring bias.
Read the full specification. For each section, note:
Work through each lens from the constitution. For each lens:
Ambiguity (Lens 1) — highest priority for specs:
Incompleteness (Lens 2):
Inconsistency (Lens 3):
Infeasibility (Lens 4):
Insecurity (Lens 5) — STRIDE analysis:
Inoperability (Lens 6):
Incorrectness (Lens 7):
Overcomplexity (Lens 8):
Well-formed specs follow the Pyramid Principle with progressive disclosure
(.opencode/rules/documentation-style.md): an executive summary / outcome
first, then context, then detailed requirements — exactly the shape of
.opencode/skills/ideate/spec-template.md. If a spec buries its conclusion,
introduces detail before its context, or has no top-level takeaway, record it as
an OBSERVATION (it impairs reviewability) — not a blocking finding unless it
also causes a genuine ambiguity or incompleteness defect under the lenses above.
The spec may make claims about existing code behaviour, file locations, API signatures, or configuration defaults. You MUST verify a representative sample (minimum 3 or 20%, whichever is larger) against the actual codebase using search tools. If ANY verification fails, flag ALL unverified claims as suspect.
If the spec claims to enumerate affected files, endpoints, configs, or tests:
Before returning your verdict, verify ALL of these:
Return exactly ONE of:
Do NOT use "PASS with reservations" or similar hedging. Either it passes or it blocks.
Every finding MUST follow this structure:
[PRINCIPLE-ID] Severity: CRITICAL|MAJOR|MINOR|OBSERVATION
Location: spec-section or file/path:line
Finding: <Concise description>
Evidence: <Quote from spec or code, or "verified in codebase">
Recommendation: <Specific, actionable fix>## Adversarial Specification Review
**Document:** <spec title/path>
**Sections reviewed:** <count>
**Verdict:** PASS | BLOCK
### Findings
<findings in severity order: CRITICAL first, then MAJOR, MINOR, OBSERVATION>
### Unasked Questions
<genuine gaps the spec does not address>
### Lens Application Summary
<for each lens: applicable/N/A with brief justification>
### Review Completeness Check
<checklist with pass/fail for each item>817ee95
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.