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/anthropics/claude-agent-sdk-python/verifynpx skills add anthropics/claude-agent-sdk-python --skill verifygit clone --depth 1 https://github.com/anthropics/claude-agent-sdk-pythonWhat 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.00048 | $0.01045 |
| Opus 5 | $0.00024 | $0.00522 |
| Sonnet 5 | $0.00010 | $0.00209 |
| Haiku 4.5 | $0.00005 | $0.00104 |
Grade C, and why
verify scanned grade C with 2 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 2d 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.
Downloads and executes remote codehighSupply chain
curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.
`scripts/download_cli.py` shells out to `curl https://claude.ai/install.sh | bash` Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
`scripts/download_cli.py` shells out to `curl https://claude.ai/install.sh | bash` 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.
Verifying the build scripts
The SDK itself is a library (drive it through import claude_agent_sdk), but
the scripts/ directory is a set of CLIs run by the release workflows.
Verify them by running them, not by importing them.
NEVER run the real installer
scripts/download_cli.py shells out to curl https://claude.ai/install.sh | bash
(and the PowerShell equivalent). Running it for real overwrites the claude
binary on the developer's machine. Do not run bash install.sh, and do not
invoke download_cli.py with latest/stable (or any case variant) against
the real network.
Instead, put stub curl / bash / powershell on a temp PATH and drive the
script under env -i with an isolated HOME (so find_installed_cli() cannot
discover the real binary and copy it into src/claude_agent_sdk/_bundled/).
The harness
SB=$(mktemp -d); mkdir -p $SB/stub $SB/home $SB/repo/src/claude_agent_sdk
cp scripts/{download_cli.py,build_wheel.py,update_cli_version.py,_cli_version_validation.py} $SB/repo/scripts/
printf '__cli_version__ = "2.1.208"\n' > $SB/repo/src/claude_agent_sdk/_cli_version.py
cat > $SB/stub/curl <<'EOF'
#!/bin/bash
out=""; prev=""; for a in "$@"; do [ "$prev" = "-o" ] && out="$a"; prev="$a"; done
echo "[stub curl] argv: $*" >> "$MARKER"
[ -n "$out" ] && printf '%b' "${CURL_BODY:-#!/bin/bash\necho hi\n}" > "$out"
exit ${CURL_EXIT:-0}
EOF
cat > $SB/stub/bash <<'EOF'
#!/bin/bash
{ echo "[stub bash] argc=$#"; for a in "$@"; do echo " <$a>"; done; } >> "$MARKER"
EOF
chmod +x $SB/stub/*
cd $SB/repo
env -i HOME=$SB/home PATH=$SB/stub:/usr/bin:/bin MARKER=$SB/m \
CLAUDE_CLI_VERSION=2.1.208 .venv/bin/python scripts/download_cli.py
run_command() captures the child's output, so the stubs must log to a
$MARKER file — printing to stderr is swallowed.
Flows worth driving
update_cli_version.py <version>— the whole validator surface is reachable here: a concrete version writes the file;latest/stable,v2.1.207,next,2.1, and a quote-breakout string each exit 1 with a distinct message and leave the file untouched.build_wheel.py --skip-sdist— reads the pin, then chains intodownload_cli.py. Rewrite_cli_version.pyin the sandbox to a moving tag / single quotes / garbage / delete it: each must fail before any subprocess is spawned.--cli-version <v>bypasses the pin (intentional escape hatch; the release workflow does not use it).download_cli.py— setCURL_BODYto an HTML error page or an empty string to prove the body check refuses it with no retry; empty thePATHto prove a missingcurlfails fast in one attempt;CURL_EXIT=22to prove a genuine transient failure still retries 3×.- The Windows path is unreachable on Linux. It is behind
platform.system() == "Windows". Drive it with a small runner thatpatch.object(m.platform, "system", return_value="Windows")and a stubpowershellthat reads the-Commandtext and honours$env:CLAUDE_CLI_INSTALL_SCRIPT. This is the one place where forcing the platform is legitimate.
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.
- 2d ago First seen · 80 lines · 48 tokens per session scan C f499a4e88c29
verify is a skill published in the GitHub repository anthropics/claude-agent-sdk-python (8,018 stars, last pushed today), licensed MIT. It adds 48 tokens to every session and 1,045 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). 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…