Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add pivoshenko/pivoshenko.ai --skill spec-verifygit clone --depth 1 https://github.com/pivoshenko/pivoshenko.aiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/pivoshenko/pivoshenko.ai/spec-verify)<a href="https://agentmods.dev/skills/pivoshenko/pivoshenko.ai/spec-verify"><img src="https://agentmods.dev/badge/skills/pivoshenko/pivoshenko.ai/spec-verify/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/pivoshenko/pivoshenko.ai/spec-verify"><img src="https://agentmods.dev/badge/skills/pivoshenko/pivoshenko.ai/spec-verify.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00182 | $0.01910 |
| Opus 5.5 | $0.00073 | $0.00764 |
| Sonnet 5.5 | $0.00036 | $0.00382 |
| Haiku 4.5 | $0.00018 | $0.00191 |
Grade A, and why
spec-verify scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 123 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Spec Verify
change -> validate -> gate -> scenario conformance -> report.
Three independent checks, reported separately, in increasing order of what they prove. openspec validate reads documents. The repo gate runs the code. Scenario conformance is the only one that asks whether the behavior the spec promised exists, and it is the reason this skill is in the set. Never collapse them into one verdict.
Read-only by default. This skill fixes nothing. Why -> a verifier that quietly patches what it finds stops being independent evidence and starts being a second author of the same claim.
Preflight
openspec context --json
no_openspec_root -> stop, offer openspec init --tools claude, wait. Never auto-init, never fall back to the current directory. Use the returned root.path. The user naming a store -> openspec store list --json for ids, then --store <id> on every command below, sticky for the run.
.claude/commands/opsx/verify.md present -> the OpenSpec-side mechanics are its job; invoke it and own only the conformance and gate halves. Absent, which is the usual case -> run the flow below off the CLI directly. Mention the opt-in exactly once, as an offer:
openspec config set profile custom
openspec config set workflows '["propose","explore","apply","update","sync","archive","verify"]'
openspec init --tools claude
Accepted or declined, do not raise it again in this run, and never run it unasked. Why -> the profile is global state shared by every repo on the machine, so this is a machine-wide flip made to satisfy one change in one repo.
Flow
- Resolve the change and read its shape:
Keepopenspec status --change "<name>" --jsonchangeRootandartifactPaths. Treat everystatusfield as file-existence only - it says an artifact was written, never that it is right.isCompleteis the sharpest example: it goes true once all four artifact files exist, so a change with 1 of 3 tasks ticked still reportsisComplete: true. Task progress comes fromopenspec instructions apply --change "<name>" --jsoninstead - Artifact validity.
openspec validate <change> --strict --json-> parseitems[].issues[], report each with itsidandtype. This checks the spec documents are well-formed and nothing more. A clean run is not evidence about the code - The repo gate. Find the project's own verify command by reading the justfile or the package scripts -
just checkhere, a test suite elsewhere. Never invent one; nothing found -> ask. Then run it yourself as a shell command. Why -> this is the only check in the set that executes the code; the other two only read documents, and a worker's "tests pass" is a claim, not a result - Scenario conformance. Walk the delta as in Scenarios
- Tick audit. Walk
tasks.mdthe other way, as in Ticks - Report as in Report, then hand back as in Handback. Stop. Change nothing
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 123 lines · 182 tokens per session scan A fd22390f0f89
spec-verify is a skill published in the GitHub repository pivoshenko/pivoshenko.ai (6 stars, last pushed today), licensed MIT. It adds 182 tokens to every session and 1,910 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-16.
Other skills, from other repositories
comet-verify
A workflow for verifying a Comet change after its coding tasks are complete. Comet is a tool that tracks structured software changes through stages.
story-origin-check
Recover the first public timestamp and canonical major coverage for a newsjacking signal, then decide whether newer coverage is the same story, a different story, or a materially new development.
prompt-proximity-architecture
Turn an approved measurement charter, ICPs, and buyer jobs into a budget-aware prompt coverage blueprint across proximity bands, aided status, information acts, journey states, roles, locales, evidence grades, partitions, and measurement lanes. Use before prompt wording to define required, optional, and prohibited…
coverage-tracker-setup
Set up a lightweight Google Alerts-style coverage tracker for any number of keywords. Creates a tracker config with each keyword and what it actually means, then hands recurrence to the user's agent harness.
realistic-prompt-generation
Generate natural, controlled prompt variants from a target-blind design brief and prompt architecture while preserving approved jobs, acts, journeys, constraints, roles, locales, proximity bands, and evidence language. Use after architecture design and before contamination or semantic QA.
reactive-comment
Triage inbound journalist source queries and draft a response only when the user's expertise is a real fit. Runs each query through proven source-request lenses (4-gate fit triage, credential-standing test, deadline read, BLUF/inverted-pyramid drafting), kills weak fits, asks for missing proof, and never auto-sends.