Agents vs Skills
Core Difference
| Agent | Skill (Plugin) | |
|---|---|---|
| Role | Decides what to do and when | Does what it’s told |
| Reasoning | Yes — plans, reacts, adapts | No — deterministic execution |
| Initiates actions | Yes | No |
| Calls other things | Yes (calls skills/tools) | Usually no |
| State/memory | Maintains context across steps | Stateless by default |
| Complexity | High — open-ended goals | Low — fixed inputs/outputs |
Mental Models
The Contractor & Power Tools
An agent is a contractor who decides how to complete a job — which steps to take, in what order, and how to react when things go wrong. Skills are the power tools the contractor picks up and uses. The tools don’t decide anything; the contractor does.
The Manager & Employees
An agent is a manager who receives a vague goal (“increase sales”) and figures out the plan. Skills are specialist employees who each do one thing well when asked — the accountant runs the numbers, the designer makes the mockup. The manager coordinates; the employees execute.
The Function Test
If you can write it as a deterministic function, write it as a skill. Only reach for an agent when the decision-making itself is the hard part.
When to Create a Skill
- The task has a predictable input/output — same input always produces same output
- No reasoning required — just execution (fetch a URL, query a DB, send an email, parse a file)
- It’s a reusable capability that multiple agents might need
- You can unit test it in isolation without an LLM
- The task is a leaf node — it doesn’t need to call other skills to complete
Examples:
GetWeather(city)→ returns current weatherSearchDatabase(query)→ returns matching recordsSendEmail(to, subject, body)→ sends an emailParseInvoice(file)→ extracts line items from a PDF
When to Create an Agent
- The task requires deciding which steps to take and in what order
- The goal is open-ended — the path to completion isn’t known upfront
- It needs to react to intermediate results before deciding the next action
- Requires multi-turn reasoning, memory, or conversation state
- The task involves error recovery — retry, reroute, or ask for clarification when something fails
- Multiple skills need to be coordinated to achieve the goal
Examples:
ResearchAssistant— decides whether to search the web, summarise findings, ask a clarifying question, or cite sources based on what it findsDatabaseAssistant— determines which tables to query, validates the generated SQL, retries on failureInvoiceProcessor— parses the invoice, looks up the vendor, checks for duplicates, flags anomalies, routes for approval
Decision Framework
Can you write it as a function?
├── Yes → Is it reusable across multiple agents?
│ ├── Yes → Skill
│ └── No → Inline logic (don't abstract yet)
└── No → Does it need to coordinate multiple steps?
├── Yes → Agent (possibly with sub-skills)
└── No → Revisit — you may be over-engineering
Scenario Guide
| Scenario | Use |
|---|---|
| Fetch data from an API | Skill |
| Generate a SQL query from natural language | Skill (wraps LLM with fixed I/O) |
| Answer a question that may require multiple lookups | Agent |
| Send a notification | Skill |
| Triage an inbox and decide what to do with each email | Agent |
| Convert a file format | Skill |
| Autonomously complete a multi-step research task | Agent |
| Validate a form field | Skill |
| Manage a workflow with branching logic and retries | Agent (or Workflow) |
Common Mistakes
- Making agents too granular — if your “agent” only ever calls one skill, it should just be a skill
- Making skills too smart — if your skill is making decisions about what to do next, it’s becoming an agent
- Skipping skills entirely — agents that inline all their logic are hard to test and reuse
- Agent for everything — most tasks are deterministic; adding an LLM where a function suffices adds latency, cost, and unpredictability
In Specific Frameworks
| Framework | Term for Skill | Term for Agent |
|---|---|---|
| Microsoft Agent Framework | Tool / MCP Server | Agent |
| Semantic Kernel | Plugin (formerly Skill) | Agent |
| LangChain | Tool | Agent / Chain |
| Claude Code | Skill (slash command) | Claude (the model + harness) |
| AutoGen | Tool / Function | ConversableAgent |
See Also:: Microsoft Agent Framework
See Also:: Agentic Frameworks
See Also:: Semantic Kernel