Borrowing it
Nothing to install: this file belongs to robconery/cassini-workshop. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/robconery/cassini-workshop/main/.claude/commands/spec.mdgit clone --depth 1 https://github.com/robconery/cassini-workshopWrote 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/commands/robconery/cassini-workshop/spec)<a href="https://agentmods.dev/commands/robconery/cassini-workshop/spec"><img src="https://agentmods.dev/badge/commands/robconery/cassini-workshop/spec/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/commands/robconery/cassini-workshop/spec"><img src="https://agentmods.dev/badge/commands/robconery/cassini-workshop/spec.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.00027 | $0.00970 |
| Opus 5.5 | $0.00011 | $0.00388 |
| Sonnet 5.5 | $0.00005 | $0.00194 |
| Haiku 4.5 | $0.00003 | $0.00097 |
Grade C, and why
spec scanned grade C with 1 finding 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 2mo 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.
Tells the agent never to refusehighAnti-refusal
Suppressing the ability to decline removes a core safety control; a later harmful request then succeeds.
3. **Stories check.** If `docs/STORIES.md` is missing or empty, do NOT refuse — This is a copy
100% identical to spec — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
spec
Turn docs/STORIES.md into executable spec files using the bdd-specs
skill. This command is the bridge between agreed stories and red specs that
/build-loop will turn green.
Scope
- IN: generating spec files from finalized stories; helping author stories when none exist yet; reporting on existing specs.
- OUT: writing implementation code (
/build-loop); changing requirements (/explore,/design); ordering tasks (/plan).
Preflight (refuse early)
- Require project info. If
docs/PROJECT.mdis missing or still a stub (mostlyTODOs), refuse and tell the user:No PROJECT.md — run /explore first to define what we're building. - Require a spec. If
docs/SPEC.mdis missing or a stub, refuse:No SPEC.md — run /design first so there's something to spec against. - Stories check. If
docs/STORIES.mdis missing or empty, do NOT refuse — instead, help create them: invoke theuser-storiesskill to authordocs/STORIES.mdfrom SPEC.md before continuing.
Behavior
- Read
docs/PROJECT.md,docs/SPEC.md,docs/STORIES.md,docs/ARCHITECTURE.md(for context), and any existing spec files (e.g.tests/**/*.spec.ts,specs/**/*.ts,**/__tests__/**). - If specs already exist for a story, LEAVE THEM ALONE. Do not overwrite, edit, rename, or reorganize. Report what was found and tell the user you can overwrite on explicit request.
- For stories with no corresponding spec file, delegate to the
bdd-specsskill to generate them. Pass the story id(s) so output aligns 1:1 withdocs/STORIES.md(Story → Feature, AC → Scenario, each Then → one Specification). - Every newly generated spec is pending by default — use the runner's
skip / todo / pending marker (
it.todo,it.skip,test.todo, etc., depending on whether the project usesbun:testor Jest). They must not accidentally pass; they must be visibly pending until/build-loopimplements them. - Specs must align to stories, but names should read naturally:
- File name: a readable kebab-case slug from the story title — no
story-NNNprefix. e.g.atomic-create-user-order-entitlements.spec.ts. - Outer
describe: the human-readable feature, no id. e.g.describe("Feature: atomic create of user, order, entitlements", …). - Traceability: put a single comment at the top of the file with the
story id, e.g.
// STORY-007 — Atomic create of user, order, entitlements. That comment is the only place the id appears.
- File name: a readable kebab-case slug from the story title — no
- Never invent acceptance criteria. If a story is underspecified, stop and
send the user back to refine it via the
user-storiesskill.
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.
- 2mo ago First seen · 80 lines · 27 tokens per session scan C 6a79bf47e589
spec is a command published in the GitHub repository robconery/cassini-workshop (1 stars, last pushed 4mo ago), licensed MIT. It adds 27 tokens to every session and 970 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it C with 1 finding (tells the agent never to refuse). It is 100% identical to spec, differing in 0 lines, and is treated as a copy.
Other commands, from other repositories
mutate
Run mutation testing to evaluate test suite effectiveness.
run
Comprehensive code review using specialized agents — orchestrates code, comments, tests, errors, types, and simplify agents sequentially.
tests
Test coverage quality analysis — behavioral coverage, critical gap identification, test resilience evaluation.
run-evals
Batch-run all LLM eval cases in tools/evals/cases/.json; aggregate pass/fail, cost, regression vs last run; exit nonzero in CI mode.
prototype
You are building a proof-of-concept for the current Grainulator sprint. Read CLAUDE.md for sprint context and claims.json for existing research claims.
debate-replay
Deterministically replay a past debate from a session snapshot — regression tests the deliberation engine.