How Claude Code extensions actually work

Claude Code has three kinds of extensions. They look similar in a catalog, but they work โ€” and cost โ€” very differently. Here's the mental model.

The one thing to internalize: you almost never "call" an extension. You install it, then just describe what you want โ€” Claude picks the right tool itself.

The three types

Skill

Instruction folders

Expert knowledge Claude loads on demand. At session start Claude sees only each skill's one-line description; when your request matches, it loads the full instructions and follows them.

"Fill out this PDF form" โ€” the pdf skill activates by itself.
Subagent

Specialist workers

Separate Claude instances with their own context window and system prompt. The main Claude delegates to them like a tech lead handing off tickets โ€” automatically, or when you name them.

"Use the backend-architect agent to design this API."
MCP server

Capability plugs

External tools Claude can operate: a real browser, your Notion, a database, Stripe. Approved once per project, then used conversationally.

"Open the staging site and screenshot the checkout flow."

The 60-second workflow

  1. Find something in the registry and copy its command, or run uvx skilldex search <keyword>.
  2. Install it: uvx skilldex install pdf. Skills land in ~/.claude/skills, subagents in .claude/agents, MCP servers in the project's .mcp.json.
  3. Start a new Claude Code session. MCP servers ask for a one-time approval.
  4. Just ask. Describe the task in plain words. If Claude doesn't pick the extension up, nudge it by name: "use the pdf skill."
# uvx ships with uv (brew install uv) โ€” or: pip install skilldex
uvx skilldex search pdf
uvx skilldex install pdf        # skill โ†’ available in every project
uvx skilldex install playwright # MCP server โ†’ this project only
uvx skilldex list               # see everything installed

What each type costs you

TypeIdle costRule of thumb
Skill~2 lines of context eachInstall liberally
SubagentFree until used; each use is a separate Claude runInstall freely
MCPTool definitions load into every sessionConnect sparingly, per project

Frequently asked questions

Do I call skills or agents like functions?

No. Install them, then describe what you want in plain language. Claude reads every installed extension's description and routes your request itself. Naming one ("use the pdf skill", "ask the security-auditor agent") is just a nudge for when routing doesn't happen on its own.

Will installing lots of extensions slow Claude down or hurt quality?

Depends on the type. Skills are nearly free โ€” only their one-line descriptions sit in context until used. Subagents cost nothing until invoked. MCP servers are the heavy ones: every connected server loads its tool definitions into each session, so ten servers means slower startup, less context for your actual work, and occasional wrong-tool choices.

Rule of thumb: skills liberally, agents freely, MCP sparingly per project.

How does an agent pack like agent-orchestration work?

Installing it drops several specialist definitions (e.g. a context manager, task decomposers) into .claude/agents/. When you give Claude a big multi-part task, it can delegate pieces to those specialists, each in its own context window โ€” which keeps your main conversation clean and lets work run in parallel. You'll see delegation happen in the session log. Ask Claude "what agents do you have available?" to see the roster.

What's the difference between installing with and without --project?

Skills and agents go to ~/.claude/ by default โ€” available in every project. Add --project to install into ./.claude/ instead, scoped to the current repo (and shareable with your team via git). MCP servers are project-scoped by default โ€” written to ./.mcp.json where you run the install โ€” or add --global to register one user-wide so it loads in every session, in every folder. Keep global for the one or two servers you use constantly; each one costs context in every session.

Some MCP servers mention API keys. Where do I put them?

Registry entries never contain real keys โ€” they use ${VAR} placeholders, and the install output tells you which environment variables to set (e.g. export NOTION_TOKEN=... in your shell profile). Never paste a real key into .mcp.json: it's usually committed to git. uvx skilldex audit checks your machine for exactly that mistake.

How do I uninstall something?

Delete its folder: rm -rf ~/.claude/skills/<id> (or the project-scoped equivalent), remove agent files from .claude/agents/, and remove the server's block from .mcp.json. uvx skilldex list shows where everything lives.

Where do the registry's entries come from? Can I trust them?

Every entry is a small JSON file in a public repo, added by pull request and validated by CI (schema, kebab-case ids, and a scan that rejects anything resembling a hardcoded secret). Entries point at their source repos โ€” many are official (Anthropic, Notion, Stripe, Supabase, Sentry, Google, Microsoft). Always review what you install; the source link is on every card.

Is this an official Anthropic project?

No โ€” skilldex is an independent, MIT-licensed community project and isn't affiliated with Anthropic. Skills, subagents, and MCP are open extension formats; skilldex is a package manager for them.

Built something yourself? Get it listed with a one-file pull request โ€” add your entry.