.claude/skills/speckit-superb-review/SKILL.md
Verify the generated tasks.md covers every requirement in spec.md before implementation begins. Produces a spec-coverage matrix and a gap report. Catches missing or under-specified tasks at planning time, not delivery time.
npx skillsauth add pradeepmouli/lspeasy speckit-superb-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Invocation: Optional post-hook for
speckit.tasks. Fires aftertasks.mdis generated. Purpose: Prevent "all tasks done, feature incomplete" — the most expensive form of rework.
tasks.md is generated from plan.md and spec.md, but it is a mechanical
transformation. Requirements can fall through the cracks when:
spec.md were noted but not translated into tasksresearch.md but never became a taskThis review catches all of these before a single line of code is written.
$ARGUMENTS
Read the following files (all from the current feature directory):
spec.md — the authoritative source of requirementsplan.md — the technical approach and architecture decisionstasks.md — the generated implementation plandata-model.md (if exists) — entity and relationship constraintscontracts/ (if exists) — interface contractsIf spec.md is missing, STOP and report:
ERROR: spec.md not found. Cannot perform coverage review without the spec.
Run speckit.specify first.
Produce a numbered list of every distinct, testable requirement from spec.md:
Format:
R01: [requirement — one sentence, action-oriented]
R02: [requirement]
...
Include:
Mark each requirement as:
[TESTABLE] — can be verified by a test[OBSERVABLE] — can be verified by running the feature[STRUCTURAL] — architectural constraint (no direct test, but verifiable via code review)For each requirement R-XX, find which task(s) in tasks.md implement it.
Produce the coverage matrix:
| Req | Requirement | Tasks | Coverage |
|------|--------------------------------------|-----------|------------|
| R01 | User can log in with email+password | T3, T4 | ✓ Covered |
| R02 | Failed login shows error message | T4 | ✓ Covered |
| R03 | Passwords are stored hashed (bcrypt) | — | ✗ Gap |
| R04 | Session expires after 24 hours | — | ✗ Gap |
| R05 | Supports OAuth2 login | T7 | ~ Partial |
Coverage status:
✓ Covered — at least one task explicitly addresses this requirement~ Partial — a task addresses part of this requirement but leaves sub-requirements open✗ Gap — no task addresses this requirementFor every ✗ Gap or ~ Partial:
## Coverage Gaps
### Gap: R03 — Passwords are stored hashed (bcrypt)
**Requirement:** spec.md, Section 2.3 — "Passwords must be stored using bcrypt
with a minimum work factor of 12"
**Missing task:** No task in tasks.md creates or verifies password hashing logic.
**Suggested task addition:**
> Task N+1: Write test asserting stored password hash matches bcrypt format with
> work factor ≥ 12. Implement bcrypt hashing in the auth service. Verify
> no plaintext passwords appear in logs or database.
---
### Gap: R04 — Session expires after 24 hours
**Requirement:** spec.md, Section 2.5 — "Sessions must be invalidated after 24 hours"
**Missing task:** Session expiry logic has no corresponding test task.
**Suggested task addition:**
> Task N+2: Write test asserting session token is rejected after 24 hours.
> Implement expiry check in session middleware.
Beyond coverage, flag any task that has these quality issues:
| Quality Issue | Example | Flag |
|---|---|---|
| No test step | Task says "implement X" but has no "write failing test" step | ⚠ Missing TDD step |
| Vague file path | "Update the auth module" with no specific file | ⚠ Missing file path |
| Placeholder content | Task says "fill in details later" or "add appropriate handling" — open-ended directives with no concrete action | ⚠ Placeholder detected |
| Multiple behaviors in one task | Task covers login AND logout AND session | ⚠ Overly broad |
| No commit step | Task has no git commit at end | ⚠ Missing commit step |
Produce a summary:
## Coverage Review Summary
**Requirements extracted:** [N]
**Fully covered:** [A] ([A/N]%)
**Partially covered:** [B]
**Gaps identified:** [C]
**Task quality issues:** [D]
**Decision:**
If C > 0 (gaps exist):
⚠ GAPS DETECTED — Implementation should not begin until gaps are addressed.
Recommended action:
1. Review each gap above
2. Add missing tasks to tasks.md
3. Re-run coverage review OR proceed with explicit acknowledgment of scope reduction
If C == 0 and D == 0:
✓ COVERAGE COMPLETE — All requirements have corresponding tasks.
tasks.md is ready for implementation.
If C == 0 but D > 0:
⚠ QUALITY ISSUES — Coverage is complete but task quality issues may cause
TDD violations during implementation.
Recommended action: Fix flagged tasks before running speckit.implement.
If the user explicitly ran this review after acknowledging gaps, note the acknowledged gaps and proceed:
NOTE: [N] gaps were identified and flagged. Proceeding to implementation
with explicit acknowledgment. Gaps should be tracked as follow-on work.
tools
Use for ANY rename, file-move, or move-symbol refactor — especially rename-heavy work across multiple files. Claude Code's built-in LSP tool is READ-ONLY (find references, but no rename / file-move / move-symbol). Hand-editing those refactors silently misses re-exports, aliased imports, type-only imports, and {@link} doc references. This skill drives a real language server via the `lspeasy` CLI to apply a correct WorkspaceEdit that catches every reference. Trigger when the user asks to rename a function/class/variable/type project-wide, move a file and fix its importers, or pull a symbol out into another module.
tools
Documentation site for lspeasy Use when: You are building a browser-based LSP client, a WebSocket-backed language....
tools
Documentation site for lspeasy Use when: You are implementing a custom client layer and need the same validation....
tools
Use when working with lspeasy (client, core, server). Covers: lsp, language-server-protocol, lsp-client, language-client, jsonrpc, transport, lsp-server, language-server.