Skills vs Agents: Understanding the Difference - AbsolutelySkilled Blog

maddhruv @maddhruv

Skills vs Agents: Understanding the Difference

The AI agent ecosystem has two concepts that sound similar but serve fundamentally different purposes: skills and agents (also called subagents). Most people conflate them. Getting the distinction right unlocks better, more composable AI workflows.

Here is the short version: skills are textbooks, agents are specialists. A skill tells the agent what to know. An agent defines who does the work.

This post breaks down the difference, when to use each, and how they work together.


What Are Skills?

Skills are portable knowledge packages that follow the AgentSkills.io open standard. They work across 40+ AI agent products - Claude Code, Cursor, VS Code, GitHub Copilot, Gemini CLI, and many more.

A skill is a folder containing a SKILL.md file with instructions, optional reference documents for deeper context, scripts, and templates:

clean-code/
  SKILL.md           # Core instructions
  evals.json         # Test suite
  references/        # Deep-dive docs loaded on demand
    naming.md
    function-design.md

When you start a session, the agent scans installed skills and loads only the name and description of each one. When a task matches a skill’s description, the full instructions are pulled into context. The agent follows them while working on your task.

Key properties of skills:

  • Portable - same skill works in Claude Code, Cursor, VS Code, and any other compatible agent
  • Knowledge-focused - they extend what the agent knows, not what tools it has
  • Run inline - instructions load into the main conversation context (no isolation)
  • Open standard - defined by the AgentSkills.io specification

Install a skill with a single command:

npx skills add AbsolutelySkilled/AbsolutelySkilled --skill clean-code

No servers, no configuration, no infrastructure. The agent picks it up automatically.

For a deeper dive, see our complete guide to AI agent skills.


What Are Agents (Subagents)?

Agents - more precisely, subagents - are specialized AI assistants that run in their own context window. Each agent has its own system prompt, its own set of tools, its own permissions, and optionally its own model.

When Claude Code encounters a task that matches an agent’s description, it delegates the work. The agent runs independently in isolation, then returns its results to the main conversation.

Here is what an agent definition looks like:

# .claude/agents/code-reviewer.md
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Grep, Glob
disallowedTools: Write, Edit, Bash
model: sonnet
maxTurns: 15
permissionMode: default
---

You are a code reviewer. Analyze changes and provide specific,
actionable feedback on quality, security, and best practices.
Focus on bugs, logic errors, and architectural concerns.

Key properties of agents:

  • Platform-specific - agent definitions are a Claude Code concept (though other tools have similar ideas)
  • Execution-focused - they define who does the work, with what tools and permissions
  • Run in isolation - each agent has its own context window, separate from the main conversation
  • Configurable permissions - you control exactly which tools the agent can use

Agents are stored in .claude/agents/ (project-level) or ~/.claude/agents/ (user-level).


The Key Differences

DimensionSkillsAgents
What they areKnowledge packages (textbooks)Execution contexts (specialists)
StandardAgentSkills.io open standardClaude Code specific
PortabilityWorks across 40+ toolsTied to Claude Code
ContextInline in main conversationIsolated context window
PurposeExtend what the agent knowsDefine who does the work
File formatSKILL.md in a folderAgent definition file (YAML + markdown)
Invocation/skill-name or auto-detectClaude delegates, @-mention, or --agent flag
CompositionSkills reference other skillsAgents preload skills

The fundamental distinction: skills are knowledge, agents are execution environments.

A skill about code review teaches the agent how to review code - what to look for, which patterns are problems, what your team’s conventions are. An agent for code review creates an isolated assistant with read-only tools, a turn limit, and a focused system prompt.


When to Use Skills

Use skills when you need to give an agent knowledge and expertise:

  • Domain best practices - coding standards, design patterns, architectural principles
  • Framework knowledge - how to use Stripe, Next.js, Terraform, or any specific tool
  • Team conventions - your naming conventions, PR review checklist, deployment process
  • Process guidance - how to write proposals, run retrospectives, analyze data
  • Cross-agent portability - when the knowledge should work in Claude Code, Cursor, and VS Code

Skills are the default choice. They are simpler, more portable, and work everywhere. Most of what people think requires an agent is actually better served by a skill.

Example: You want the agent to follow your team’s React conventions. Create a skill with the conventions, component patterns, and common gotchas. The skill loads into context whenever the agent works on React files. No isolation needed, no special tools required.

Browse 160+ production-ready skills in our catalog.


When to Use Agents

Use agents when you need to control the execution environment:

  • Tool restrictions - the task should only use Read, Grep, and Glob (no file writes)
  • Isolated context - the work produces lots of output you don’t need in your main conversation
  • Delegation - you want a specialist to handle a task independently and return a summary
  • Background execution - the task should run concurrently while you keep working
  • Cost control - route the task to a faster, cheaper model (like Haiku for exploration)
  • Permission boundaries - the agent should operate with specific permission modes

Example: You want a code reviewer that cannot modify files. Create an agent with tools: [Read, Grep, Glob] and disallowedTools: [Write, Edit, Bash]. It can analyze code but physically cannot change anything. No skill can enforce that constraint - it requires an agent definition.


How They Work Together

The most powerful pattern combines both: a skill provides the knowledge, an agent creates a controlled execution environment.

Step 1: Create a skill with your review standards

# .agents/skills/code-review/SKILL.md
---
name: code-review
description: >
  Code review standards and checklist. Use when reviewing pull requests,
  diffs, or code changes for quality, security, and best practices.
---

## Review checklist

1. Check all database queries for SQL injection
2. Verify authentication on every endpoint
3. Look for race conditions in concurrent code
4. Confirm error messages don't leak internal details
5. Ensure test coverage for new logic branches

## Common gotchas

- Our ORM uses soft deletes - check for `WHERE deleted_at IS NULL`
- API rate limits are 100/min per key - verify retry logic exists

Step 2: Create an agent that preloads the skill

# .claude/agents/code-reviewer.md
---
name: code-reviewer
description: Reviews code for quality using team standards
tools: Read, Grep, Glob, Bash
disallowedTools: Write, Edit
skills:
  - code-review
maxTurns: 15
---

Review the code changes. Follow the preloaded review standards.
Report findings organized by severity: Critical, Warnings, Suggestions.

The skill is portable - it works in Claude Code, Cursor, VS Code, and any other agent that supports the AgentSkills standard. A developer using Cursor gets the same review knowledge.

The agent definition is Claude Code specific - it creates a focused, permission-controlled reviewer that cannot modify files. It preloads the skill so the knowledge is available from the first turn.

Together, they are more powerful than either one alone.


The .agents/skills/ Convention

Where you store skills determines which agents discover them:

PathScopeDiscovered by
.agents/skills/<name>/Project, cross-clientAll compatible agents
.claude/skills/<name>/Project, Claude-onlyClaude Code only
~/.agents/skills/<name>/User, cross-clientAll compatible agents
~/.claude/skills/<name>/User, Claude-onlyClaude Code only

The .agents/skills/ paths are the emerging cross-client convention. Skills installed there are automatically visible to Claude Code, Cursor, VS Code, and other compatible agents. Use .claude/skills/ only when the skill relies on Claude-specific features that other agents wouldn’t understand.


Quick Reference

Choose a skill when:

  • You need to add knowledge, expertise, or process guidance
  • The capability should be portable across agent products
  • No special tool restrictions or isolation is needed
  • You want zero infrastructure overhead

Choose an agent when:

  • You need to restrict which tools are available
  • The work should run in isolated context
  • You want to delegate to a specialist with its own model
  • You need background execution or permission boundaries

Choose both when:

  • You want portable knowledge (skill) with controlled execution (agent)
  • The agent should follow specific standards that other tools should also know about

Getting Started

Install your first skill:

npx skills add AbsolutelySkilled/AbsolutelySkilled --skill clean-code

Browse the full catalog of 160+ production-ready skills at absolutelyskilled.pro/skills.

If you want to build skills for your own domain, check out the skill-forge skill - it generates production-ready skills from documentation URLs or domain topics.

For auditing skills and agent definitions for security, use skill-audit - it detects prompt injection, permission abuse, and supply chain risks.

Ready to extend your AI agent?

Browse 160+ production-ready skills across 25 categories.

Explore Skills Catalog