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/genkovich/sdd/classify-sizenpx skills add genkovich/sdd --skill classify-sizegit clone --depth 1 https://github.com/genkovich/sddWrote 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/genkovich/sdd/classify-size)<a href="https://agentmods.dev/skills/genkovich/sdd/classify-size"><img src="https://agentmods.dev/badge/skills/genkovich/sdd/classify-size.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.00234 | $0.01970 |
| Opus 5 | $0.00117 | $0.00985 |
| Sonnet 5 | $0.00047 | $0.00394 |
| Haiku 4.5 | $0.00023 | $0.00197 |
Grade A, and why
classify-size 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 4d 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 — 75 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Skill: classify-size
Atomic skill — classifies a feature into XS/S/M/L/XL and fixes the result in
docs/features/<slug>/.size, plus the pipeline route (quick / standard / full) in
docs/features/<slug>/.route. This is the single source of size- and route-aware behaviour for
the rest of the pipeline: later skills read .size to decide MVP vs Full output depth, and
their handoffs read .route to decide how optional-stage skips resolve (auto-skip / offered /
never — the Routes table in ../_shared/size-matrix.md).
This skill is the canonical owner of the size matrix → ../_shared/size-matrix.md. The classification rules, the MVP-vs-Full table, and the one-sentence rule all live there; this skill only runs the dialogue and writes the file.
Called inline by specify. When .size is absent at the start of the backbone, specify step 1 runs this protocol inline (same signals, same file, folded into one bundled question) — this skill stays the standalone utility for classifying up front or re-classifying when scope changes; the protocol is never duplicated elsewhere.
Owner
PM or Tech Lead (driver of the intake phase). An architect may escalate S → M on spotting a new subsystem.
Inputs
<slug>— feature slug.- (Optional) the idea / intake note — for a rough starting hint. The skill works without it.
Protocol
- Check existing.
test -f docs/features/<slug>/.size(and.route). If.sizeexists, read both values and ask «.sizeis currently<X>(route<Y>). Reclassify?». On «no» — STOP (suggest editing, don't overwrite silently). Re-running just to switch the route is a legal, common case — mid-flight override per the Routes table. - Ask the four signals — one
AskUserQuestioneach, phrased per../_shared/ask-style.md:- PR count —
1/2–5/5–15/15+. - Time to merge the main part —
≤1 day/~1 week/1–2 sprints/>1 month. - New module / new API / DB migration —
none/one of three/two of three/all three. - Breaking changes for consumers —
no/internal only/public clients.
- PR count —
- Map to a class using the table in
../_shared/size-matrix.md. On an edge case, name the dominant signal aloud («M because it adds a new API + 1–2 sprints, even though PR count is on the S/M border»). For an all-maximums answer, ask explicitly «needs a separate roadmap?» → yes = XL. - Confirm size + route — ONE question. Derive the default route from the size (XS/S →
quick, M →standard, L/XL →full— the Routes table in../_shared/size-matrix.md). Then oneAskUserQuestion: «Classifying as<size>() → route<route>(). Lock both in?» — options:Yes/Yes, but route <other>/No, I want size <X>/Reclassify. Never a second question just for the route. - Write
.size+.route. Each one line, plain text —.sizeonlyXS/S/M/L/XL;.routeonlyquick/standard/full— no comments, no frontmatter.docs/features/<slug>/.size,docs/features/<slug>/.route. - Re-sync the frontmatter mirrors (
.sizeis the source of truth).feature_size:lives in up to three places: the.sizefile (canonical) plus thespec.mdandsad.mdfrontmatter (human-readable mirrors). For each of the two files that exists: same value → OK; different (a reclassification, or a hand-edited mirror) → update the frontmatter to the new.sizevalue and say so — never leave a mirror stale; missing field → suggest addingfeature_size: <size>. If the user insists a mirror is the right value, that's a reclassification — loop back to step 4 and re-confirm, then re-sync. - Structural self-check — per
../_shared/self-check.md: re-read the written files from disk and verify 3 items: (1).sizeholds exactly one of {XS, S, M, L, XL} (one bare word, no trailing content); (2).routeholds exactly one of {quick, standard, full}; (3) both frontmatter mirrors (feature_size:inspec.mdandsad.md, for whichever exists) match.size. Fix + re-check ≤2 cycles; surface anything unresolved. - Propose commit + handoff.
size: <slug> classified as <size> (route <route>)(or fold into the intake commit if a wrapper called this). Then emit the stage-handoff block per../_shared/handoff.md(utility variant) — What I did (incl. «self-check: 3/3 pass») + Review (.size,.route) + Run next: resume your backbone stage (e.g./sdd:specify <slug>);/clearoptional.
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.
- 4d ago First seen · 75 lines · 234 tokens per session scan A 5691b90ad559
classify-size is a skill published in the GitHub repository genkovich/sdd (118 stars, last pushed 15d ago), licensed MIT. It adds 234 tokens to every session and 1,970 once invoked, about $0.0012 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.
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…