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 agentmods add skills/xrensiu/claude-code-forge/acceptance-specnpx skills add XRenSiu/claude-code-forge --skill acceptance-specgit clone --depth 1 https://github.com/XRenSiu/claude-code-forgeWrote 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/xrensiu/claude-code-forge/acceptance-spec)<a href="https://agentmods.dev/skills/xrensiu/claude-code-forge/acceptance-spec"><img src="https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/acceptance-spec.svg" alt="Measured on agentmods" 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 | $0.00217 | $0.08982 |
| Opus 5 | $0.00109 | $0.04491 |
| Sonnet 5 | $0.00043 | $0.01796 |
| Haiku 4.5 | $0.00022 | $0.00898 |
Grade A, and why
acceptance-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 3d 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 — 382 lines — stays where its author put it; the contents beside it link to each section on GitHub.
acceptance-spec — Natural language → EARS spec + done_when contract
You are invoked to turn the user's natural-language requirement ($ARGUMENTS or recent user message) into a five-file acceptance contract that downstream agents can mechanically consume.
Say once at the start, then start working:
"I'm using the acceptance-spec skill. I'll draft EARS requirements, run a short clarify loop (only 3 question types, 2-3 rounds), then a quick spec-self-adversarial pass, then write proposal.md / spec.md / tasks.md / done_when.yaml / spec-robustness.md."
Do not narrate further — just walk the phases.
Iron rules (re-read before every phase)
- Three question types only — applies from S1 onward. During clarify, the only legal questions are:
(a)
[ambiguity]— same wording supports >1 reasonable reading, (b)[missing edge]— exception/extreme/empty/concurrent case undefined, (c)[undefined term]— domain noun lacks a precise definition. Anything else (tech stack, library choice, framework preference, deployment) is out of scope for this skill — defer it to design/planning skills. You must tag every[?]you write at S1 with one of the three tags above (e.g.[?] [ambiguity] ...). The tagging is not a S2-only formality — at S1 it forces you to confirm the question is legal before surfacing it. If you cannot tag a[?], do not write it. Seereferences/clarify-protocol.mdfor full taxonomy with examples; you must read that file before S1 alongsidereferences/ears-syntax.md. - Convergence budget. 3-5 questions per round, target convergence in 2-3 rounds, hard cap at 5 rounds. If round 5 still has open
[?], stop and tell the user the requirement is too large and must be split into multiple features — do not keep asking. - Every REQ has a stable ID.
REQ-001,REQ-002, ... assigned at S1, never renumbered. If a clarify answer splits a REQ in two, the new one gets the next free ID. Use this same ID later inbased_on:and in testbased_on:tags so traceability is real. - Every decision traces to one clarification answer. Each REQ in the final
spec.mdhas asource:line citing the user message that fixed it (e.g.source: "user clarified at S2 round 1 Q3 that cancellation honors UTC boundary"). - Borrow OpenSpec's file format, not its CLI. Output the five files as documented below; do not shell out to
openspec, do not depend on it. - You do not write tests. Tests are Step 4 (
test-suite-generator). Your job ends atdone_when.yaml. - Verifiable beats judgeable. Per HTML v2 §3 principle I (and the §3.5 corollary on fitness-check dissolution): in
done_when.yaml, every claim must land inexistence:(does the symbol exist) orbehavior:(does the behavior hold under test) — never in a softer "LLM judges this" layer. The v0.xfitness:layer was retired in v1.0.0 because most "needs an LLM judge" entries can be re-designed as programmatic checks ("README quickstart works" → really run it; "type signatures correct" → runtsc). Genuinely-unautomatable cases (doc clarity, design taste, tutorial flow) reach evaluation via/pm-reviewer'srequires_human_verificationverdict — they do NOT appear indone_when.yaml. The third layer is nowrules:, a flat condition list consumed by/meta-judgefor final-verdict synthesis. - REQs must be independently testable — no cross-REQ causal indirection. Each REQ is the unit a Step 4 test must derive from. Do not write things like
THE system SHALL silence the notification produced by REQ-001; that binds REQ-N's verifiability to REQ-001's runtime artifact and forces Step 4 fixtures to chain. Instead, restate the relevant precondition in REQ-N's own EARS clause (IF a mention is delivered AND the recipient is in DND, THEN ...). REQs may reference each other for narrative context (e.g. "follow-on from REQ-001" in the heading line) but the SHALL action must be derivable from the REQ's own clauses alone. Seereferences/ears-syntax.md"Cross-REQ causal indirection" row. - Worker output ≠ internal decision process. Each phase's user-visible output is only the deliverable for that phase (S1: draft + open questions; S2: a single round's question batch; S3: the five files). Do not interleave skill-internal logs ("clarify-protocol Rule 2 vs Rule 6 weighing", "skill invocation summary", "second-order scan notes") into the output. If something is useful as audit context, put it in a comment inside the deliverable file or omit it. Process narration belongs in your reasoning, not in what the user reads.
- Output is single-language per primary surface. EARS sentence bodies, REQ headings,
[?]notes, and clarify question text should all use one primary language consistently within a single artifact (typically English, since EARS keywords are English). Mixing English EARS bodies with Chinese question lists in the same file fragments the artifact and forces parallel translations. Glossary entries that define a Chinese-named domain term are fine — but the EARS body, the question prompts, and the source/log lines stay in one language. - One SHALL clause = one independently-derivable action. A single EARS REQ's SHALL must commit to exactly one observable action. Do NOT bind two distinct actions together with an
ANDcompound (e.g.THE system SHALL transition the subscription to status expired AND deny premium feature access on the next request). Even when the two actions are causally linked, packing them into the same SHALL fuses two independently-testable behaviors into one REQ — and when the second action overlaps the SHALL of another REQ (e.g. the same denial appears in anotherIF ... THEN ...clause), the contract develops cross-REQ duplication that confuses Step 4 test derivation and breaks one-to-one REQ ↔ test traceability. Split AND-compound SHALLs into separate REQs (each with its own ID, EARS type, andsource:). Acceptable use ofANDinside a SHALL is only when the two clauses describe one indivisible atomic effect of the same trigger (e.g.SHALL atomically (a) set status to cancelled AND (b) stop next-billing-cycle charge) and you also state atomicity is the testable contract. If you can derive a test for one half without the other half being involved, they are two REQs, not one. Seereferences/ears-syntax.md"Common drafting mistakes" → AND-compound SHALL row.
What ships with it
13 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/clarify-protocol.md 9.5 KB
- references/done-when-schema.yaml 7.0 KB
- references/ears-syntax.md 9.0 KB
- references/examples/subscription-cancellation/done_when.yaml 3.0 KB
- references/examples/subscription-cancellation/proposal.md 1.8 KB
- references/examples/subscription-cancellation/spec.md 2.9 KB
- references/examples/subscription-cancellation/tasks.md 1.8 KB
- references/output-templates/done-when-template.yaml 2.4 KB
- references/output-templates/proposal-template.md 536 B
- references/output-templates/spec-template.md 1.4 KB
- references/output-templates/tasks-template.md 573 B
- references/spec-robustness-template.md 10 KB
- scripts/validate_done_when.py 14 KB runs code
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.
- 3d ago First seen · 382 lines · 217 tokens per session scan A b98881130ab3
acceptance-spec is a skill published in the GitHub repository XRenSiu/claude-code-forge (2 stars, last pushed 1mo ago), licensed MIT. It adds 217 tokens to every session and 8,982 once invoked, about $0.0011 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.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…