
Beyond Claude Code: Building a Shared Skill Library
Learn how to build, share, and maintain a skill library across Claude.ai, Claude Code, the API, and the Agent SDK.
Guide
Sawyer Middeleer
Confused by AI agent terminology? This guide breaks down the exact difference between Tools, MCP (Model Context Protocol), and Agent Skills — so you can build smarter AI workflows today. By the end, you'll know exactly when to use each one, and how they fit together.
Quick Summary
Updated for AI discoveryIn AI agents, Tools are individual callable functions (search, calculator), MCP (Model Context Protocol) is Anthropic's open standard for connecting agents to external services, and Agent Skills are reusable pre-packaged workflows combining multiple tools. Use Tools for custom tasks, MCP for standardized integrations, Skills for repeatable workflows.
Questions this page answers
If you're brand new to Claude Code itself, start with the beginner's guide and then come back here for the deeper tools/MCP/skills architecture.
| Feature | Tools | MCP (Model Context Protocol) | Agent Skills |
|---|---|---|---|
| What it is | Functions an AI can call (e.g. search, calculator) | A protocol for connecting AI to external data sources and tools | Pre-built, reusable agent capabilities packaged for deployment |
| Who defines it | Developer | Anthropic (open standard) | Platform / marketplace |
| Best for | Custom one-off integrations | Standardized multi-tool connections | Repeatable workflows across projects |
| Complexity | Low | Medium | Low (plug-and-play) |
| Example | Web search, code execution | GitHub MCP, Slack MCP | "Research & summarize" skill |
| Primitive | What It Does | When to Use It |
|---|---|---|
| Tools | Execute single actions (fetch file, create ticket, run command) | You need one discrete operation |
| MCP | Standardized protocol connecting AI to external systems | You need reliable access to Slack, GitHub, databases, etc. |
| Skills | Packaged workflows with instructions + resources + checks | You need repeatable, consistent results across runs |
The key insight: Tools do actions. MCP provides access. Skills encode how to do the job right—and because they're files the agent can read and write, they're self-improving.
AI agent tools are individual functions an AI model can call — like web search, file reading, database queries, or API calls. Each tool does one discrete action with one input and one output. Tools are the building blocks of any agent, but they don't encode multi-step workflows or quality standards on their own.
A tool is a single operation the agent can execute. Think "one step," not "a workflow."
read_file — fetch contents of a filecreate_jira_ticket — create a ticket with given parametersrun_bash_command — execute a shell commandsearch_codebase — find files matching a patternsend_slack_message — post to a channelPrecision: One input → one output. Easy to test and debug.
Control: You know exactly what happened. No ambiguity.
Composability: Tools can be chained. But you still need to define the chain.

Tools don't encode how to do the job end-to-end. If you rely on tools + prompts alone:
Tools answer: "What can I do?"
They don't answer: "What should I do, in what order, with what quality bar?"
MCP (Model Context Protocol) is an open standard by Anthropic that defines how AI models connect to external tools, databases, and APIs. Instead of building custom integrations for every service, MCP provides a universal connector using JSON-RPC 2.0. It supports local (stdio) and remote (HTTP) transports.
MCP is an open protocol introduced by Anthropic in November 2024. It standardizes how AI applications connect to external systems.
The problem it solves: Without MCP, every integration is a custom one-off. Connect Claude to Slack? Custom code. Connect to GitHub? Different custom code. Connect to your database? Yet another integration.
MCP defines a consistent client/server protocol so you build the integration once, and any MCP-compatible AI can use it.
MCP uses JSON-RPC 2.0 for message encoding. All communication happens through three message types:
Request: { "jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {} }
Response: { "jsonrpc": "2.0", "id": 1, "result": { "tools": [...] } }
Notification: { "jsonrpc": "2.0", "method": "progress", "params": { "percent": 50 } }

1. stdio (Local)
Client spawns server as subprocess. Messages flow through stdin/stdout.
# Server reads from stdin, writes to stdout
[Client] → stdin → [Server Process] → stdout → [Client]
Best for: Local integrations, single-client scenarios, CLI tools.
2. Streamable HTTP (Remote)
Server runs independently. Clients connect via HTTP POST.
curl -X POST https://mcp-server.example.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: abc123" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", ...}'
Best for: Remote servers, multi-client scenarios, team deployments.
MCP gives you access, not method.
It tells you: "Here's how to connect to Slack and what you can do there."
It doesn't tell you: "When writing a status update, pull from these three channels, summarize in this format, and get approval before posting."
That's what Skills are for.
For a step-by-step walkthrough of using MCP tools inside Claude Code, see Section 6: MCP Tools in the Claude Code Beginner's Guide.
Agent Skills are pre-built, reusable packages of agent behavior that combine instructions, templates, and quality checks into a single capability. Unlike individual tools, a skill encodes the full "how" — step-by-step workflow, output format, and definition of done. Skills use progressive disclosure to load only what's needed, avoiding context bloat.
Skills are reusable workflows that bundle procedural knowledge and assets. They tell the agent how to do a job consistently.
Anthropic's analogy: Building a skill is like assembling an onboarding guide for a new hire. You're capturing procedural knowledge so the agent doesn't reinvent the process every time.
A useful mental model:

| Component | What It Contains | Example |
|---|---|---|
| Metadata | Name, description, when to use | "Use when creating PRDs from meeting notes" |
| Method | Step-by-step workflow | "1. Extract decisions 2. Identify owners 3. Format as template" |
| Resources | Templates, examples, schemas | prd-template.md, example-prd.md |
| Checks | Definition of done, guardrails | "Must have owner for each action item" |
Progressive disclosure: Skills use a three-level loading model.
| Level | When Loaded | Token Cost | Content |
|---|---|---|---|
| Level 1: Metadata | Always | ~100 tokens | Name + description |
| Level 2: Instructions | On trigger | <5k tokens | Full SKILL.md body |
| Level 3: Resources | As needed | Unlimited | Templates, scripts, examples |
The agent starts with just the description. Full instructions load only when the skill activates. Resource files load only when referenced.
This means you can package extensive institutional knowledge (templates, examples, playbooks) without paying the context cost until it's actually needed.
Anthropic ships pre-built Agent Skills for common document workflows:
| Skill | What It Does |
|---|---|
| pptx | Create and edit PowerPoint presentations |
| xlsx | Create and analyze Excel spreadsheets |
| docx | Create and edit Word documents |
| Generate PDF documents |
These run in a code execution environment with filesystem access. They're the difference between the LLM returning "here's what your slides should say" and actually producing a .pptx file you can open.
Want to use Claude Code with your team?
Try Duet—the collaborative workspace for AIs and Humans
Claude Code has its own skill system that's filesystem-based and project-local.
If you want a higher-level tour of skills inside the product before diving into directory structure, check out Section 7: Skills in the Claude Code Beginner's Guide.

---
name: code-review
description: Reviews code for security issues and best practices. Use when reviewing PRs or commits.
allowed-tools: Read, Grep, Glob
---
# Code Review
When reviewing code:
1. **Security scan**: Check for injection vulnerabilities, exposed secrets, unsafe deserialization
2. **Style check**: Verify naming conventions, file organization, comment quality
3. **Logic review**: Trace data flow, identify edge cases, check error handling
4. **Output format**: Use the template in review-template.md
## Common issues to flag
- SQL queries built with string concatenation
- User input passed directly to shell commands
- Missing input validation on API endpoints
- Hardcoded credentials or API keys
| Field | Purpose | Default |
|---|---|---|
name | Display name (lowercase, hyphens) | Directory name |
description | When to use (Claude uses for auto-invocation) | First paragraph |
allowed-tools | Restrict available tools | All tools |
disable-model-invocation | Prevent auto-use (manual /name only) | false |
user-invocable | Hide from / menu if false | true |
context | inline or fork (isolated subagent) | inline |
Default: User invokes with /skill-name, Claude auto-invokes when relevant.
Manual only (disable-model-invocation: true): User must type /skill-name. Claude won't auto-trigger.
Claude only (user-invocable: false): Claude auto-invokes when relevant. Not shown in menu.
Skills support variable substitution:
---
name: session-logger
---
Log activity to: logs/${CLAUDE_SESSION_ID}.log
User request: $ARGUMENTS
And shell command injection (output replaces placeholder):
---
name: pr-summary
---
## PR Context
Diff: !`gh pr diff`
Comments: !`gh pr view --comments`
Summarize this PR...
These examples pair well with the chat modes and scope-plan-execute workflow described in Working With Claude Code and the Chat Modes section. For more business-focused examples, see How to Run Your Entire Business with Claude Code.
Without skills: Every code review is different. Sometimes the agent checks security, sometimes style, sometimes neither. Output format varies.
With skills:
---
name: security-review
description: Security-focused code review. Use when reviewing PRs touching auth, payments, or user data.
allowed-tools: Read, Grep, Glob
---
# Security Review
## Checklist
1. [ ] No SQL injection (parameterized queries only)
2. [ ] No command injection (no shell calls with user input)
3. [ ] No exposed secrets (check for hardcoded keys)
4. [ ] Input validation on all external data
5. [ ] Proper authentication checks
## Output format
Use severity levels: CRITICAL, HIGH, MEDIUM, LOW
For each finding:
- File and line number
- Description of issue
- Suggested fix
Result: Every security review follows the same checklist. Output is consistent. Nothing gets missed.
The problem: Converting meeting transcripts to action items is tedious and inconsistent.
The skill:
---
name: meeting-processor
description: Convert meeting notes to decisions and action items. Use after meetings.
---
# Meeting Processor
## Steps
1. Extract all decisions made (statements of agreement or conclusion)
2. Extract all action items (tasks assigned to people)
3. Identify open questions (unresolved discussions)
4. Format using action-template.md
## Action item format
Each action item MUST have:
- Clear description (what, not how)
- Owner (single person responsible)
- Due date (if mentioned)
## Quality check
- Every action item has an owner
- No vague items ("follow up on X" → "John to send X proposal to team by Friday")
The skill:
---
name: api-docs
description: Generate API documentation from code. Use when documenting endpoints.
allowed-tools: Read, Grep, Glob
---
# API Documentation Generator
## Process
1. Find all route definitions (Grep for route patterns)
2. For each endpoint, extract:
- HTTP method and path
- Request parameters and body schema
- Response format
- Authentication requirements
3. Generate markdown using api-doc-template.md
## Include for each endpoint
- Description (what it does, not how)
- Request example (curl command)
- Response example (actual JSON)
- Error cases (4xx/5xx responses)
Want to use Claude Code with your team?
Try Duet—the collaborative workspace for AIs and Humans
Tools, MCP, and Skills form a layered architecture: Skills define the workflow and quality bar, MCP provides standardized access to external services, and Tools execute individual actions. A typical flow: a Skill triggers, loads its instructions, connects via MCP to external data, executes Tools for each step, then validates the output.

Example flow:
read_channel, search_messages, post_messageAs skills mature, the boundary between skills and tools will blur. Skills live on the filesystem and can contain executable code—meaning they can perform the same actions tools do, with two key advantages: agents can read skills to understand them, and write to them to self-improve.
The likely trajectory: tools and MCP become thin primitives (read/write, fetch, search), while skills absorb the domain-specific logic.

Problem: Pasting the same instructions into every conversation.
Solution: Package it as a skill. Write once, use consistently. See The Claude Code Playbook for a practical walkthrough.
Problem: Building complex workflows into MCP servers.
Solution: MCP handles access. Skills handle workflow. Keep them separate.
Problem: Agent produces output, but you don't know if it's complete.
Solution: Add checks to your skill. "Every action item must have an owner."
Problem: Loading all context upfront, blowing up the context window.
Solution: Use the three-level model. Metadata always. Instructions on trigger. Resources on demand.
Origin header on HTTP transports (prevent DNS rebinding)allowed-tools to restrict what a skill can dodisable-model-invocation: true for sensitive operations{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_code",
"arguments": { "query": "authentication" }
}
}
.claude/skills/my-skill/
├── SKILL.md # Instructions (required)
├── template.md # Output template
├── examples/ # Example outputs
└── scripts/ # Validation scripts
---
name: skill-name
description: When to use this skill
allowed-tools: Read, Grep, Glob
disable-model-invocation: false
user-invocable: true
---
Want this running in your own workspace?
Start free in Duet to run persistent agents across your team.

Learn how to build, share, and maintain a skill library across Claude.ai, Claude Code, the API, and the Agent SDK.

Build skill-first workflows with Claude Code that stick. CLAUDE.md, commands, skills, and the Explore-Plan-Execute-Verify loop. No coding required.

The 5 tasks where AI saves the most time, what not to put into AI tools, and a 30-minute action plan. Practical workflows for independent agents.