plugins/linear-spec-plugin/skills/validate-execution/SKILL.md
Validate a Linear spec's implementation against its Definition of Done. For code projects: runs automated tests against the live application. For non-code projects: reviews deliverables against acceptance criteria. Writes a `Spec vX.Y — Validation Report` Project Document and comments the link on the spec issue. Runs incrementally on re-runs.
npx skillsauth add jaisonerick/spec-plugin validate-executionInstall 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.
Your task: validate the spec's output and guide the human through final verification. Persist all results to Linear.
Scripts live in ${CLAUDE_PLUGIN_DIR}/scripts/linear/. Required: LINEAR_API_KEY. If it isn't set, fetch it from 1Password: export LINEAR_API_KEY="$(op read op://Environments/Linear/credential)".
Outputs:
Spec vX.Y — Validation Report on the deliverable project.In Progress → In Review (after running) → Done (after human signs off).node "${CLAUDE_PLUGIN_DIR}/scripts/linear/resolve-spec.js" "<identifier>" --require-spec-label
Capture: issue.id, issue.identifier, issue.description, project.id, project.documents, team.key, sub-issues (= stories).
Spec vX.Y — Architecture).node "${CLAUDE_PLUGIN_DIR}/scripts/linear/get-issue.js" "<story-id>" --with-comments
### Re-run: <date> section to the same report (or to a v2 doc if the user prefers).Verify ALL required services are up and reachable. If ANY service is down, STOP. Report via SendMessage with a clear blocker.
Verify startup commands are documented (docs/dev-environment.md in the code repo, or the spec architecture's Setup section). If missing, STOP and mark BLOCKED.
Each Definition of Done item gets one or more validation cases. Keep it lean — ~10-15 cases per spec.
Compose the cases as a Markdown section to be written into the Validation Report Project Document. Use this structure:
# Spec vX.Y — Validation Report
**Spec:** <DIN-XXX URL>
**Run started:** <date>
## Cases
### TC-001 — <title>
- **Definition of Done item:** <which DoD checkbox this covers>
- **Area:** API | Integration | UI | Health | User Flow | Completeness | Quality | Accuracy | Format
- **Severity:** critical | major | minor
- **Steps:**
1. ...
- **Expected:** ...
- **Result:** PENDING | PASS | FAIL — <notes>
### TC-002 — ...
For each case:
curl/httpie via BashResult: line.For each criterion:
Stage the full report (cases + results + summary) to /tmp/linear-spec/<spec-id>/validation-report.md, then create or update the Project Document:
# First run
cat /tmp/linear-spec/<spec-id>/validation-report.md | \
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/create-document.js" \
--project "<project-id>" \
--title "Spec vX.Y — Validation Report"
# Re-run (overwrites the same document)
cat /tmp/linear-spec/<spec-id>/validation-report.md | \
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/update-document.js" "<existing-doc-id>"
Report content (top to bottom):
# Spec vX.Y — Validation Report
**Spec:** <DIN-XXX URL>
**Run:** <date>
## Summary
| Result | Count |
|---|---|
| PASS | N |
| FAIL | M |
| SKIP | K |
**Failures requiring fixes:**
- TC-002: <clear description of what's wrong>
## Cases
(full case list with results)
## Validation Findings
### Issues Found
- ...
### Missing or Incomplete
- ...
### Patterns Observed
- ...
## Re-run: <date> *(only on re-runs)*
- Cases re-executed: ...
- Status changes: ...
Post a comment summarizing the run and linking the report:
cat <<MD | node "${CLAUDE_PLUGIN_DIR}/scripts/linear/post-comment.js" "<spec-identifier>"
**Validation run — $(date +%Y-%m-%d)**
Result: N pass / M fail / K skip.
[Validation Report](<doc URL>)
MD
In Review, ready for human sign-off.In Progress so the orchestrator can dispatch fix tasks. Send a SendMessage to the team lead with the failures and severity.node "${CLAUDE_PLUGIN_DIR}/scripts/linear/transition-issue.js" "<spec-identifier>" --state "In Review"
Report via SendMessage:
Present the human validation guide in the chat (and optionally append it to the report doc as a final section):
## Human Validation Guide
### What was delivered
- Summary of the spec's outcomes
### How to review (code projects: how to run it)
- Exact steps to see/use the deliverables
### What to verify
Walk through each Definition of Done item that requires human judgment.
### Quick checks
- [ ] Key deliverables are complete and accessible
- [ ] Quality meets expectations
- [ ] [Project-specific checks]
### Known limitations in this spec
- (from "Simplified in this spec")
The spec ships only when the human confirms.
If validation hits environment issues instead of test failures:
SendMessage so the orchestrator can dispatch an engineer to fix the environmenttools
Assess how the LATEST spec-plugin version is performing across every previous session that invoked it — aggregate run efficiency (thinking%, compactions, exploration-vs-skills, preload firing, fresh-per-story), process adherence, and recurring spec-quality issues — then propose concrete, evidence-backed improvements for the NEXT version (plugin skills/agents/hooks, and spec/process patterns). Read-only: proposes, never self-modifies. Not tied to a single run.
development
Confirm whether a code symbol (method/class/field/endpoint/flag) actually exists and return its REAL signature + definition location — or the nearest match. Uses LSP/introspection, never grep-spelunking. Cheap and fast.
development
Walk one value or action end-to-end across every layer/hop — go-to-definition by go-to-definition, or with a debugger breakpoint — and report the real state transitions and where the contract/shape diverges. The workhorse for architecture sketches and cross-layer debugging.
testing
Bring a fresh worktree/checkout to a runnable state — verify base HEAD, copy gitignored files (.env), allocate per-agent DB/test env, install deps, run the smoke gate. Deterministic, mechanical. Reports a single ready/blocked verdict.