When to Use Claude Code Skills vs Workflows vs Agents

The three-tier hierarchy that structures my Personal AI Infrastructure
October 30, 2025
Daniel Miessler

Three-tier hierarchy diagram showing Skills as containers, Workflows nested inside, and Agents as parallel workers

When Anthropic released Skills in October 2025, I faced a confusing problem: Skills, Workflows (formerly Commands), and Agents are all essentially markdown files containing prompts. Structurally identical. So which do you use, and when?

The Quick Answer ​

PrimitivePurposeWhen to UseLocation
SkillDomain containerGrouping related capabilities~/.claude/skills/{Domain}/
WorkflowTask procedureExecuting specific operations~/.claude/skills/{Domain}/Workflows/
AgentParallel workerConcurrent multi-task execution~/.claude/agents/

The Hierarchy ​

┌─────────────────────────────────────────────────────────────┐
│                         AGENTS                              │
│            (Parallel workers - execute skills)              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  Engineer   │  │  Architect  │  │  Researcher │   ...   │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘         │
└─────────┼────────────────┼────────────────┼─────────────────┘
          │                │                │
          ▼                ▼                ▼
┌─────────────────────────────────────────────────────────────┐
│                         SKILLS                              │
│              (Domain containers - 77+ skills)               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Blogging/       Research/        Art/         ...  │   │
│  │  ├── SKILL.md    ├── SKILL.md    ├── SKILL.md       │   │
│  │  ├── Workflows/  ├── Workflows/  ├── Workflows/     │   │
│  │  ├── Tools/      ├── Tools/      ├── Tools/         │   │
│  │  └── *.md        └── *.md        └── *.md           │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
          │                │                │
          ▼                ▼                ▼
┌─────────────────────────────────────────────────────────────┐
│                       WORKFLOWS                             │
│           (Task procedures inside skills)                   │
│      Create.md   Publish.md   Deploy.md   Research.md       │
└─────────────────────────────────────────────────────────────┘

Skills = Domain containers (Blogging, Research, Art, Security) Workflows = Task procedures (Create, Publish, Deploy - nested inside skills) Agents = Parallel workers (Engineer, Architect, Researcher - execute skills concurrently)

Skill Structure ​

Internal skill structure diagram showing SKILL.md, context files in root, Workflows and Tools subdirectories

Every skill follows this flat structure:

~/.claude/skills/
├── Blogging/                  # Domain container (TitleCase)
│   ├── SKILL.md               # Main file: triggers, routing, docs
│   ├── Voice.md               # Context file (in root, NOT in subdirectory)
│   ├── Formatting.md          # Context file (in root, NOT in subdirectory)
│   ├── Workflows/             # Task procedures only
│   │   ├── Create.md          # Write new content
│   │   ├── Publish.md         # Deploy to production
│   │   └── Rewrite.md         # Edit existing content
│   └── Tools/                 # CLI automation
│       └── DevServer.ts       # TypeScript tooling

Key rules:

  • TitleCase naming everywhere (Blogging, not blogging)
  • Context files in root (no context/ subdirectory)
  • Workflows/ contains only execution procedures
  • Tools/ contains CLI automation scripts
  • Maximum 2 levels deep (flat hierarchy)

Skill Anatomy: SKILL.md ​

The main skill file has two parts:

1. YAML Frontmatter (what triggers activation):

yaml
---
name: Blogging
description: Blog workflow. USE WHEN blog, website, publish, deploy, write.
---

2. Markdown Body (routing and documentation):

markdown
# Blogging

## Workflow Routing

| Workflow | Trigger | File |
|----------|---------|------|
| **Create** | "write a post" | `Workflows/Create.md` |
| **Publish** | "deploy", "publish" | `Workflows/Publish.md` |
| **Rewrite** | "edit this post" | `Workflows/Rewrite.md` |

Claude matches your intent to the description, loads the skill, and routes to the appropriate workflow.

The Three Tiers Explained ​

Tier 1: Skills (Domain Containers) ​

When to use: Organizing a domain of related capabilities.

Skills are self-contained modules. Everything for blogging lives in skills/Blogging/. Everything for research lives in skills/Research/.

When you say "write a blog post," the Blogging skill activates, analyzes your intent, and routes to Workflows/Create.md.

Tier 2: Workflows (Task Procedures) ​

When to use: Executing a specific task within a domain.

Workflows are step-by-step procedures that live inside their parent skill. They're the "how to do X" files.

Examples:

  • Blogging/Workflows/Create.md — How to write a new post
  • Research/Workflows/ExtensiveResearch.md — How to conduct deep research
  • Art/Workflows/Essay.md — How to create blog header images

Tier 3: Agents (Parallel Workers) ​

When to use: Concurrent execution of multiple tasks.

Agents are standalone files in ~/.claude/agents/ that execute work in parallel. They invoke skills and workflows as workers.

Example flow:

  1. You request complex research
  2. The Research skill spawns 3 parallel agents
  3. Each agent executes research workflows on different sources
  4. Results merge back together

Example: My Current Structure ​

~/.claude/
├── skills/                    # 77+ domain containers
│   ├── Blogging/
│   │   ├── SKILL.md           # Routing and documentation
│   │   ├── Voice.md           # Writing style guidelines
│   │   ├── Formatting.md      # Post structure rules
│   │   ├── Workflows/
│   │   │   ├── Create.md
│   │   │   ├── Publish.md
│   │   │   └── Rewrite.md
│   │   └── Tools/
│   │       └── DevServer.ts
│   ├── Research/
│   │   ├── SKILL.md
│   │   ├── Sources.md
│   │   ├── Workflows/
│   │   │   ├── QuickResearch.md
│   │   │   ├── StandardResearch.md
│   │   │   └── ExtensiveResearch.md
│   │   └── Tools/
│   ├── Art/
│   │   ├── SKILL.md
│   │   ├── Aesthetic.md
│   │   ├── Workflows/
│   │   │   ├── Essay.md
│   │   │   ├── TechnicalDiagrams.md
│   │   │   └── Mermaid.md
│   │   └── Tools/
│   │       └── Generate.ts
│   └── ... (74 more skills)
├── agents/                    # Parallel workers
│   ├── Engineer.md
│   ├── Architect.md
│   ├── Researcher.md
│   └── ... (20+ agents)
└── MEMORY/                    # Learning and state
    ├── LEARNING/
    └── STATE/

Key Benefits ​

Encapsulation: All blogging capabilities live in one place.

Discoverability: ls skills/Blogging/Workflows/ shows all blogging tasks.

Portability: Skills are self-contained and shareable.

Intent routing: Natural language triggers the right skill automatically.

Modularity: Small, focused files instead of monolithic prompts.

Decision Flowchart ​

When adding new capability, ask:

  1. Does this belong to an existing domain? → Add to that skill
  2. Is this a new domain? → Create new skill
  3. Is this a specific task? → Create workflow inside skill
  4. Does this need CLI automation? → Create tool inside skill
  5. Does this need parallel execution? → Create agent

The system is working well—I currently have 77 skills, hundreds of workflows, and 20+ agents, all following this structure.

Notes

  1. Simon Willison's analysis of Claude Skills from October 2025. Claude Skills are awesome, maybe a bigger deal than MCP
  2. Daniel's Personal AI Infrastructure project is open source. PAI on GitHub
  3. Anthropic's official Skills documentation. Agent Skills Documentation
  4. 🤖 AIL 1: Daniel wrote this post. I (Kai, his AI assistant) helped with proofreading, formatting, and the header image. Learn more about AIL.