validate-spec

validate-spec is a skill for Claude Code, Codex from dogganidhal/noddde. It costs 36 tokens per session (1,759 once invoked), scanned A, original, MIT.

A procedure for checking whether working code fully matches its written software specification. It compares the specification, source code, and tests, including their exports and required behaviour.

In plain words
What is it for?
It is for a final implementation review after tests pass, checking coverage, behaviour, invariants, edge cases, and leftover stubs.
Why use it?
Passing tests alone may miss missing exports, unhandled edge cases, or code that has drifted from the specification.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/dogganidhal/noddde/validate-spec
Any agent
npx skills add dogganidhal/noddde --skill validate-spec
Clone the repo
git clone --depth 1 https://github.com/dogganidhal/noddde

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for validate-spec

README.md
[![agentmods](https://agentmods.dev/badge/skills/dogganidhal/noddde/validate-spec.svg)](https://agentmods.dev/skills/dogganidhal/noddde/validate-spec)
Your own site
<a href="https://agentmods.dev/skills/dogganidhal/noddde/validate-spec"><img src="https://agentmods.dev/badge/skills/dogganidhal/noddde/validate-spec.svg" alt="Measured on agentmods" height="20"></a>
Per session 36 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,759 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00036 $0.01759
Opus 5 $0.00018 $0.00879
Sonnet 5 $0.00007 $0.00352
Haiku 4.5 $0.00004 $0.00176

Measured 5d ago against content hash 151c05ee9cb9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

validate-spec 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 5d 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.

.claude/skills/validate-spec/SKILL.md · 223 lines

How it starts

The opening of the file, as written. The whole thing — 223 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Step 5: Validate Spec Against Implementation

Final cross-check: verify the implementation fully satisfies the spec, beyond just passing tests.

Pipeline step 5 of 6. Called by the /spec orchestrator after step 4 (tests GREEN).

Why this step exists: Tests can pass while the implementation still drifts from the spec — missing exports, unenforced invariants, unhandled edge cases, leftover stubs. This step catches that.

Step 1: Find Spec and Source

Accept either a spec path or source file path:

  • Spec → source: read source_file from frontmatter
  • Source → spec: replace packages/core/src/ with specs/core/, .ts with .spec.md

Read both files completely. Also read the test file.

Step 2: Export Coverage

Compare the spec's exports frontmatter against the source file's actual exports.

Export Coverage:
  ✅ AggregateTypes — exported in source
  ✅ defineAggregate — exported in source
  ❌ InferAggregateID — listed in spec but NOT exported in source
  ⚠️  HelperUtil — exported in source but NOT listed in spec

Flags:

  • ❌ = spec promises this export but it's missing → implementation gap
  • ⚠️ = source exports something the spec doesn't mention → spec may be incomplete, or export is internal

Step 3: Behavioral Requirement Audit

For each numbered behavioral requirement in ## Behavioral Requirements:

  1. Read the requirement
  2. Search the source file for the implementation
  3. Check if a corresponding test exists in the test file
  4. Grade: ✅ (implemented + tested) | 🔧 (implemented, not tested) | ❌ (not implemented)
Behavioral Requirements:
  1. ✅ "DecideHandlerMap requires one handler per command name" — enforced via mapped type, tested
  2. ✅ "defineAggregate is a pass-through identity function" — implemented, tested
  3. ❌ "Command handler returns single event normalized to array" — stub in source

Step 4: Invariant Check

For each invariant in ## Invariants:

  1. Check if it's enforced by the type system (compile-time) or runtime check
  2. Check if there's a test that would catch a violation

Read the full file on GitHub · 223 lines

Changes

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.

  1. 5d ago First seen · 223 lines · 36 tokens per session scan A 151c05ee9cb9

Subscribe to this mod's changes

validate-spec is a skill published in the GitHub repository dogganidhal/noddde (48 stars, last pushed 5d ago), licensed MIT. It adds 36 tokens to every session and 1,759 once invoked, about $0.0002 per session on Opus 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-08-30.

Related

Other skills, from other repositories

gh-issue-organizer

GitHub Issue の棚卸し・整理を体系的に実行するスキル。オープンイシューの分類、 グルーピング、クローズ判定、優先度付け、バッチ化を行う。 CodeRabbit 自動生成イシューと手動報告イシューの区別、根本原因別グルーピング、 完了済みイシューの特定とクローズ提案を含む。 トリガー:「イシューを整理して」「issue を棚卸し」「GitHub issue をトリアージ」 「stale issue をクローズ」「issue の優先度付け」 といった GitHub Issue 整理関連リクエストで起動。.

j5ik2o/event-store-adapter-js · 171 tokens

git-commit

ワーキングディレクトリの変更をConventional Commitsに従ってコミットするスキル。 意味のある変更単位ごとにステージングし、英語でコミットメッセージを作成する。 co-authorやエージェント名をコミットメッセージに含めない。 ユーザーが「コミットして」「変更をコミット」「git commit」「commitして」 「この変更をコミット」「コミットメッセージを書いて」「コミットお願い」 などコミット関連のリクエストをした場合に必ず使用すること。 pushは含まない(コミットのみ)。.

j5ik2o/event-store-adapter-js · 149 tokens

skill-forge

Create or improve Claude Code and Codex skills. Use only when the request is explicitly about the skill itself: creating a new skill, editing a SKILL.md file, testing a skill draft in .claude/skills/.../SKILL.md or .codex/skills/.../SKILL.md, improving an existing skill, debugging why a skill is not triggering…

j5ik2o/event-store-adapter-js · 208 tokens

enterprise-architecture-patterns

Complete guide for enterprise architecture patterns including domain-driven design, event sourcing, CQRS, saga patterns, API gateway, service mesh, and scalability.

manutej/luxor-claude-marketplace · 34 tokens

openspec-archive-change

Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.

j5ik2o/event-store-adapter-js · 31 tokens

openspec-explore

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.

j5ik2o/event-store-adapter-js · 39 tokens