spec-verify
Verify a spec's implementation against its requirements using Serena structural analysis, build verification, and test coverage.
Skill by paulnsorensen
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/paulnsorensen-spec-verify
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/spec-verify
Tools it pre-approves 26
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Read,Glob,Grep,Bash(sg:*),Bash(echo:*),Bash(cargocheck:*),clippy:*),test:*),Bash(tsc:*),Bash(npmrun:*),
Show 14 more
Bash(pnpm:*),Bash(yarn:*),Bash(gobuild:*),vet:*),Bash(uvBash(python-m:*),Bash(pytest:*),Bash(ruff:*),Bash(mypy:*),Bash(prek:*),Agent,mcp__serena__*
What's inside
- Skill name
spec-verify- Description
- Verify a spec's implementation against its requirements using Serena structural analysis, build verification, and test coverage. Use when the user says "verify the spec", "check spec implementation", "does this match the spec", "spec coverage", "verify acceptance criteria", or invokes /spec-verify; also after /cure to validate the result. Do NOT use for writing code or for general code review — use /age.
- License
- MIT
- Allowed tools
- Read,, Glob,, Grep,, Bash(sg:*),, Bash(echo:*),, Bash(cargo, check:*),, Bash(cargo, clippy:*),, Bash(cargo, test:*),, Bash(tsc:*),, Bash(npm, run:*),, Bash(pnpm:*),, Bash(yarn:*),, Bash(go, build:*),, Bash(go, vet:*),, Bash(go, test:*),, Bash(uv, run:*),, Bash(python, -m:*),, Bash(pytest:*),, Bash(ruff:*),, Bash(mypy:*),, Bash(prek:*),, Agent,, mcp__serena__*
- Instructions
- 287 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (1)
- SKILL.md
SKILL.md (first lines)
# spec-verify
Verify implementation against spec. Trust the symbol graph, not vibes.
You are the spec verification agent. You read a spec document (produced by `/spec`),
then systematically verify that the implementation satisfies every user story,
functional requirement, and quality gate — using the Serena MCP for structural
verification, builds for correctness, and test analysis for coverage.
## Input
A path to a spec file (`.claude/specs/<slug>.md`). If no path given, list available
specs and ask.
Optional: `--quick` flag skips Serena deep analysis and test coverage, only checks
quality gates and requirement mapping.
## Protocol
### Phase 0: Parse the Spec
Read the spec file and extract into structured categories:
1. **User Stories** — each US-XXX with its acceptance criteria checkboxes
2. **Functional Requirements** — each FR-X
3. **Quality Gates** — commands that must pass
4. **Design Principles** — decision filters from the spec
5. **Red/Green Paths** — end-to-end verification scenarios
6. **Scope paths** — infer from spec context which directories/files are relevant
Build a verification checklist from these. Each item gets a status:
`PASS` | `FAIL` | `PARTIAL` | `UNTESTED` | `SKIPPED`
### Execution Strategy
Phase 1 (quality gates) runs first — it's a stop gate. If it passes, spawn
Phase 2 (Serena verification) and Phase 3 step 5 (test execution via whey-drainer)
in parallel. Phase 3 steps 1-4 (coverage shape analysis) and Phase 4
(acceptance criteria) run sequentially after Phase 2 because they depend on
Serena results.
### Phase 1: Quality Gates (build + lint)
Run quality gate commands from the spec directly. This is the fastest signal because a broken build blocks later verification.
For each quality gate command documented in the spec:
1. Run the command.
2. Record pass/fail
If no quality gates are documented, run the project's default build check (`cargo check`, `tsc --noEmit`, `go build ./...`, `uv run mypy .`, etc.) as a baseline.
**Stop gate**: If quality gates fail, report immediately with the failures.
Don't waste time on structural analysis of broken code.
### Phase 2: Serena Structural Verification
For each functional requirement and user story, verify the implementation exists
and has the right shape using the Serena MCP — not just file reads.
**For each requirement:**
1. **Locate implementation** — Use `mcp__serena__get_symbols_overview` and
`mcp__serena__find_referencing_symbols` to find the symbols that implement
this requirement. Cross-reference with the spec's proposed approach section
for expected file/module locations.
2. **Verify public API** — Use `mcp__serena__get_symbols_overview` on barrel/index
files to confirm expected exports exist. Check that the spec's described
interfaces match what's actually exported.
3. **Trace data flow** — Use `mcp__serena__find_declaration` (the Serena
equivalent of go-to-definition) and `mcp__serena__find_referencing_symbols`
to verify that data flows through the expected path. If the spec says
"orders calls pricing via the public API", verify that import chain through
Serena.
4. **Check boundary compliance** — Verify Sliced Bread rules:
- Imports cross slice boundaries only through index files (Serena `find_referencing_symbols`)
- Models don't import adapters or framework code (`find_declaration` on imports)
- Common/ doesn't import from siblings
**Serena availability check**: Call `mcp__serena__get_symbols_overview` on the
first source file. If it errors, fall back to ast-grep (`sg`) for structural
patterns and note degraded confidence.
**ast-grep fallback patterns:**
```bash
# Verify exports
sg --lang typescript -p 'export { $$$NAMES }' --json {file}
sg --lang python -p '__all__ = [$$$NAMES]' --json {file}
# Verify imports cross boundaries correctly
sg --lang typescript -p 'import $$$IMPORTS from "$MODULE"' --json {file}
# Find implementations
sg --lang typescript -p 'class $NAME implements $IFACE { $$$BODY }' --json {file}
sg --lang python -p 'class $NAME($BASE): $$$BODY' --json {file}
```
### Phase 3: Test Coverage Analysis
Verify that tests exist and cover the spec's requirements. Steps 1-4 analyze
coverage *shape* — mapping test names to requirements via Serena. Step 5 runs the
test suite (in parallel with Phase 2, per the Execution Strategy above).
1. **Find test files** — Glob for test files in scope:
```
{scope}/**/*.test.{ts,tsx,js,jsx}
{scope}/**/test_*.py
{scope}/**/*_test.{go,rs}
```
2. **Map tests to requirements** — Use `mcp__serena__get_symbols_overview` on test files to
extract test names/descriptions. Match against user story IDs and functional
requirements by name, keyword, or described behavior.From paulnsorensen/dotfiles, MIT.
More from paulnsorensen/dotfiles
- 0.603score
bin-doctor
paulnsorensen
Audit and repair installed binaries so each tool has one install path, a clean cache, and a current pin, across mise, Homebrew, cargo, uv, npm, pnpm, bun…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
chezmoi
paulnsorensen
Guides dotfile management with chezmoi when the user says "set up dotfiles", "manage my dotfiles", "bootstrap a new machine", "chezmoi", "encrypt my SSH key…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
build-optimize
paulnsorensen
Optimize local build, test, and check commands with measured wall-time evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.600score
ci-optimize
paulnsorensen
Optimize GitHub Actions workflow wait time with measured evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
cheese-board-loop
paulnsorensen
Runs the cheese-board workflow and asks the user each question it raises.
SkillAFreshness: A★ 2Claude Code +9 - 0.563score
bash-shortening
paulnsorensen
Rewrite verbose Bash into concise, idiomatic Bash without losing readability.
SkillBFreshness: B★ 2Claude Code +9 - 0.507score
grok-codebase
paulnsorensen
Use when the user wants deep, multi-session internalization of an unfamiliar codebase — not just an orientation, but the goal of being able to explain it on a…
SkillCFreshness: C★ 2Claude Code +9 - 0.498score
cargo-workflow
paulnsorensen
Standard cargo workflow for build/test/lint cycles.
SkillCFreshness: C★ 2Claude Code +9 - 0.498score
research
paulnsorensen
Multi-source research orchestrator scoped to the todoist-flow plugin so profiles like `dots profile launch claude todo` can do fact checks without enabling…
SkillCFreshness: C★ 2Claude Code +9 - 0.482score
tour
paulnsorensen
Use when the user wants a quick, single-session read-only tour of an unfamiliar codebase or a specific feature — orientation, not memorization.
SkillCFreshness: C★ 2Claude Code +9 - 0.482score
design-doc
paulnsorensen
Use when the user wants to draft, revise, critique, or shepherd a design document, RFC, ADR, tech spec, or design proposal.
SkillCFreshness: C★ 2Claude Code +9 - 0.482score
read-mode-probe
paulnsorensen
Use when the user wants to interrogate an unfamiliar codebase with structured probes rather than a summary — invariants, data flow, error paths, hot paths…
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 69
- Last commit (this folder)
- Sep 20, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/paulnsorensen/dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from paulnsorensen
- 0.603score
chezmoi
paulnsorensen
Guides dotfile management with chezmoi when the user says "set up dotfiles", "manage my dotfiles", "bootstrap a new machine", "chezmoi", "encrypt my SSH key…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
bin-doctor
paulnsorensen
Audit and repair installed binaries so each tool has one install path, a clean cache, and a current pin, across mise, Homebrew, cargo, uv, npm, pnpm, bun…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
build-optimize
paulnsorensen
Optimize local build, test, and check commands with measured wall-time evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.600score
ci-optimize
paulnsorensen
Optimize GitHub Actions workflow wait time with measured evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
cheese-board-loop
paulnsorensen
Runs the cheese-board workflow and asks the user each question it raises.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
skillz
paulnsorensen
Add, improve, audit, wedge, or autoimprove a skill.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
spec-verify skill. Agent Mart. https://agentmart.dev/skills/paulnsorensen-spec-verify (last updated 2026-10-24)