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/vercel/chat/add-adapternpx skills add vercel/chat --skill add-adaptergit clone --depth 1 https://github.com/vercel/chatWhat 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.00109 | $0.01411 |
| Opus 5 | $0.00055 | $0.00705 |
| Sonnet 5 | $0.00022 | $0.00282 |
| Haiku 4.5 | $0.00011 | $0.00141 |
Grade A, and why
add-adapter 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 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.
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 — 74 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add a catalog adapter (vendor-official or community)
Use this to list a third-party adapter in the Chat SDK catalog and docs. It is not for building a first-party packages/adapter-* package.
Gather the source — never invent details
Ask the user for:
- Their adapter's GitHub repository URL.
- Their docs or README.
Read both. Everything you write into the catalog and docs must come directly from those sources or from the user. Do not assume or guess any information:
packageName— read it from the repo'spackage.json, verbatim.- Factory export (e.g.
createFooAdapter) — read it from the package's exports/source. Do not guess it from the display name. type(platformorstate), env vars, and the feature matrix — base these on what the code and README actually document.- Install and usage snippets — take them from the README; do not write example code the adapter may not support.
If the repo or README does not make something clear, stop and ask the user rather than filling it in. When in doubt, ask.
Choose the slug (kebab-case) and confirm it is not already taken: ls apps/docs/content/adapters/*/.
Pick the tier
- community — listed in the docs only. No
chat/adapterscatalog entry, no changeset. - vendor-official — a maintained/blessed adapter. Everything community has, plus a
chat/adapterscatalog entry, a matchingcreate-chat-sdkscaffold-spec entry, and a changeset. Frontmatter addsvendorOfficial: trueandauthor.
Files to change
<tier> is vendor-official or community.
apps/docs/content/adapters/<tier>/<slug>.mdx— the docs page. Start from assets/adapter.mdx. The filename basename must equal theslugfrontmatter field, and the page must render<FeatureSupport />.apps/docs/content/adapters/<tier>/meta.json— add"<slug>"to thepagesarray.apps/docs/adapters.json— add a registry entry:name,slug,type,community: true,description,packageName,author,readme(the GitHub URL). AddvendorOfficial: truefor vendor-official.packages/integration-tests/src/docs-adapters.test.ts— add"<slug>"to the hardcoded expected list for its tier.packages/integration-tests/src/documentation-test-utils.ts— add thepackageNametoVALID_DOC_PACKAGES, plus every import specifier used in the MDX code blocks (subpaths count separately).
What ships with it
1 file 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.
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 · 74 lines · 109 tokens per session scan A 1bc53abef088
add-adapter is a skill published in the GitHub repository vercel/chat (2,336 stars, last pushed today), licensed MIT. It adds 109 tokens to every session and 1,411 once invoked, about $0.0005 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
taste
Domain-first store/port design for any codebase: product-shaped APIs, swappable backends, schema at boundaries, one vocabulary catalog (derive don’t re-author), no infrastructure names on the domain surface. Use when adding or refactoring persistence, cache, policy resolve, registries, or anything that might leak…
caspian-connect-email
Connect Caspian email for OpenCode: ensure credentials (sandbox or dashboard API key), write caspian.env, connect inbox, enable email in caspian.json. Use when the user wants to link email, set up the agent inbox, or runs /caspian:connect-email.
caspian-connect-telegram
Connect Caspian Telegram for OpenCode, enable telegram in caspian.json channels, and tell the user to restart. Use when linking a Telegram bot or running /caspian:connect-telegram.
caspian-connect-discord
Connect Caspian Discord for OpenCode (install OAuth or BYO bot token), enable discord in caspian.json channels, and tell the user to restart. Use when linking Discord or running /caspian:connect-discord.
caspian-discord
Post a Discord message via Caspian to a channel snowflake id. Use when the user runs /caspian:discord or asks to message a Discord channel through the bot.
caspian-inbox
Caspian Inbox (caspian:Inbox) — list agent email and other configured channel conversations/messages. Use when the user asks for inbox, mail, unread email, Slack/Discord/channel messages via Caspian, or runs /caspian:inbox.