spec

spec is a skill for Claude Code from yuri-semenenko/ai-engineering-workspace. It costs 127 tokens per session (711 once invoked), scanned A, original, MIT.

A short written definition of a change's goal, exclusions, acceptance criteria, and unanswered questions. Acceptance criteria are the observable conditions that determine whether the work is finished.

In plain words
What is it for?
Use it before implementing a feature or any non-trivial change. It provides a small checklist for implementation and later verification.
Why use it?
It prevents different people from having different ideas about what should be built or when it is done. Writing down non-goals also keeps extra work from entering the change unnoticed.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter.

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/yuri-semenenko/ai-engineering-workspace/spec
Any agent
npx skills add yuri-semenenko/ai-engineering-workspace --skill spec
Clone the repo
git clone --depth 1 https://github.com/yuri-semenenko/ai-engineering-workspace

Made for: Claude Code.

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 spec

README.md
[![agentmods](https://agentmods.dev/badge/skills/yuri-semenenko/ai-engineering-workspace/spec.svg)](https://agentmods.dev/skills/yuri-semenenko/ai-engineering-workspace/spec)
Your own site
<a href="https://agentmods.dev/skills/yuri-semenenko/ai-engineering-workspace/spec"><img src="https://agentmods.dev/badge/skills/yuri-semenenko/ai-engineering-workspace/spec.svg" alt="Measured on agentmods" height="20"></a>
Per session 127 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 711 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.1 $0.00127 $0.00711
Opus 5 $0.00063 $0.00356
Sonnet 5 $0.00025 $0.00142
Haiku 4.5 $0.00013 $0.00071

Measured 5d ago against content hash c9beccbcafaa, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

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-code/.claude/skills/spec/SKILL.md · 51 lines

How it starts

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

Spec

Pin down what "done" means before writing code. Even a five-line spec beats none: it forces the boundary question (what are we not doing?) and gives /verify something concrete to check against. This is the lightweight entry to the Define phase — reach for /rfc only when there are genuinely competing architectural options to weigh.

Rationalizations

Rationalization Rebuttal
"Task too simple for a spec." Acceptance criteria apply at any scale. A simple task gets a five-line spec, not zero.
"The requirements are obvious from the ask." Then writing them down costs a minute and catches the one place they weren't.
"We'll figure out the edge cases while coding." Edge cases decided mid-implementation default to whatever is easiest to code, not what's right.
"A spec will slow us down." Rework from a misunderstood requirement is slower than twenty lines of markdown.

Format

## Goal
<1-2 sentences: the user-visible outcome, not the implementation.>

## Non-goals
<What this change deliberately does NOT do. The scope fence —
anything here appearing in the diff is scope creep.>

## Acceptance criteria
<Testable statements. Each one either passes or fails — no "works well".
- [ ] <observable behavior, ideally with concrete input → output>
- [ ] <error/edge case behavior>>

## Open questions
<Anything blocking or ambiguous. If a question changes the approach,
resolve it before coding; otherwise note the assumption and proceed.>

Rules

  • Proportional depth. Five lines for a small fix, ~20 for a feature. If it wants more than a page, the task is either too big (split it) or architectural (use /rfc).
  • Criteria must be falsifiable. "Fast", "clean", "user-friendly" are not criteria. "P95 under 200ms", "keyboard-navigable" are.
  • Non-goals are load-bearing. They are the scope-discipline contract: the implementation touches only what the spec names.
  • Surface assumptions explicitly (per persona). An unstated assumption in a spec is a bug filed in advance.
  • Hand off to verification. When implementation ends, walk the acceptance criteria as the /verify checklist — each unchecked box is unfinished work, not a footnote.

Read the full file on GitHub · 51 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 · 51 lines · 127 tokens per session scan A c9beccbcafaa

Subscribe to this mod's changes

spec is a skill published in the GitHub repository yuri-semenenko/ai-engineering-workspace (1 stars, last pushed 5d ago), licensed MIT. It adds 127 tokens to every session and 711 once invoked, about $0.0006 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-31.