Post

AI Skills, Plugins, and the Agent Stack- How the Right Combination Gets Work Done

How AI skills, plugins, MCP, subagents, hooks, memory, and project instructions work together to turn a general-purpose model into a practical execution system.

AI Skills, Plugins, and the Agent Stack- How the Right Combination Gets Work Done

Key Takeaways

  • A model provides reasoning, but the surrounding agent architecture determines what the model can actually accomplish.
  • Skills provide reusable domain knowledge and workflows; MCP provides access to external systems; subagents provide isolated execution; hooks provide deterministic automation; plugins package these capabilities together.
  • The strongest AI workflows do not put everything into one giant prompt. They distribute knowledge, tools, automation, and state across the appropriate layer.
  • The quality of an AI system increasingly depends on how capabilities are composed, not merely which model is being used.

The model is only one part of the system

The common mental model of AI is:

1
2
3
4
5
6
7
User
  ↓
Prompt
  ↓
Model
  ↓
Answer

That model is sufficient for explanation, brainstorming, summarisation, and many simple coding tasks.

Real engineering work is different.

A development or security workflow may require the system to:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Understand the project
        ↓
Inspect files
        ↓
Search the codebase
        ↓
Query external systems
        ↓
Execute commands
        ↓
Run tests
        ↓
Analyse results
        ↓
Modify code
        ↓
Review the changes
        ↓
Produce an artifact

A model can reason about those steps, but reasoning alone does not give it access to the repository, ticketing system, browser, database, test environment, or deployment pipeline.

This is where the agent stack becomes important.

The building blocks

Modern agent environments increasingly separate several functions instead of treating them as one feature.

ComponentPrimary role
CLAUDE.md / project instructionsPersistent project context and conventions
SkillsReusable knowledge and workflows
MCPConnection to external tools and services
SubagentsIsolated workers for specialised tasks
HooksDeterministic automation triggered by events
PluginsPackaging and distribution of capabilities
MemoryUseful information retained across sessions
Code intelligenceSymbol-aware code navigation and diagnostics

Claude Code’s current documentation explicitly distinguishes these roles and describes plugins as packaging layers that can combine Skills, hooks, subagents, MCP servers, and other capabilities.

Skills are reusable expertise

A Skill is a reusable unit of procedural knowledge.

Anthropic describes Skills as directories containing a SKILL.md plus optional instructions, scripts, and resources. The important design principle is progressive disclosure: the agent can first discover a Skill’s metadata and load the detailed content only when the Skill is relevant.

A simplified structure might look like:

1
2
3
4
5
6
skills/
└── api-security-review/
    ├── SKILL.md
    ├── methodology.md
    ├── examples/
    └── scripts/

Instead of repeatedly explaining:

1
2
3
4
5
6
Review authentication.
Check authorisation.
Check session handling.
Check input validation.
Check business logic.
Document evidence.

the workflow can become:

1
/audit-api

The important distinction is that a useful Skill is more than a saved prompt.

It can contain:

1
2
3
4
5
6
knowledge
workflow
references
decision criteria
scripts
examples

Anthropic also recommends using traditional code where deterministic execution is more reliable or efficient than asking the model to generate every step itself.

MCP provides capability, not methodology

MCP solves another problem:

1
2
The AI knows what should happen
but cannot access the required system.

For example:

1
2
3
4
5
6
AI Agent
   ├── GitHub
   ├── Jira
   ├── Database
   ├── Browser
   └── Internal APIs

MCP can provide the connection to those systems.

But connectivity alone is not enough.

Consider a database.

MCP may provide:

1
2
3
query()
get_schema()
list_tables()

A Skill can provide:

1
2
3
4
5
6
Which tables matter
Which relationships matter
Which fields contain sensitive data
Which queries are appropriate
Which queries should be avoided
How the result should be interpreted

Claude Code’s documentation makes this exact distinction: MCP supplies access to external systems, while Skills can provide the domain knowledge and workflow for using those systems correctly.

So:

1
2
3
MCP = "You can access the database."

Skill = "Here is how this organisation's database should be used."

Subagents solve a different problem

Large investigations can overwhelm the primary context.

Instead of doing:

1
2
3
4
5
6
7
Primary Agent
   ↓
Read 300 files
   ↓
Perform 100 checks
   ↓
Keep all intermediate output

the work can be split:

1
2
3
4
5
Primary Agent
   ├── Authentication reviewer
   ├── API reviewer
   ├── Dependency reviewer
   └── Test reviewer

Each worker operates in an isolated context and returns only the useful result.

Claude Code currently documents subagents specifically as isolated workers suited to context-heavy or specialised work.

This changes the architecture from:

1
one model doing everything

to:

1
2
3
4
5
orchestrator
    ↓
specialised workers
    ↓
structured results

Hooks are where deterministic behaviour belongs

There are tasks where the model should not have to decide whether something happens.

For example:

1
2
3
4
5
6
7
8
9
File edited
   ↓
Hook
   ↓
Run formatter
   ↓
Run tests
   ↓
Return result

Another example:

1
2
3
4
5
Dangerous command requested
        ↓
Pre-tool hook
        ↓
Block execution

Claude Code distinguishes hooks from Skills precisely because hooks are event-driven and deterministic, whereas Skills depend on the agent applying instructions and reasoning through a workflow.

This leads to a useful rule:

1
2
3
4
5
If something must happen every time,
make it automation.

If the agent must decide how to do something,
make it a Skill.

Plugins are the packaging layer

A Plugin becomes useful when the same setup needs to be reused or distributed.

Conceptually:

1
2
3
4
5
6
7
8
9
10
11
security-plugin/
├── skills/
│   ├── api-review/
│   ├── mobile-review/
│   └── report-writing/
├── agents/
│   ├── reviewer.md
│   └── validator.md
├── hooks/
│   └── validation.sh
└── .mcp.json

The plugin can then represent an entire capability stack.

Claude Code’s current documentation describes Plugins as bundles that can package Skills, agents/subagents, hooks, MCP servers, and related configuration for reuse across projects.

That is much more scalable than distributing a document containing instructions and telling every developer to copy-paste them into a conversation.

The correct combination

The real power appears when the components are combined intentionally.

Consider an API security workflow:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Project instructions
        ↓
Security Skill
        ↓
MCP → source repository
        ↓
MCP → test environment
        ↓
Subagent → authentication analysis
        ↓
Subagent → authorisation analysis
        ↓
Subagent → API abuse analysis
        ↓
Hook → automated validation
        ↓
Primary agent
        ↓
Security report

Every layer has a specific responsibility.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CLAUDE.md
"What rules always apply?"

Skill
"How is this task performed?"

MCP
"Which external systems can I use?"

Subagent
"Which work should happen in isolation?"

Hook
"Which action must happen automatically?"

Plugin
"How do I package and distribute all of this?"

That separation is what makes the system manageable.

Why one giant prompt is a poor architecture

A giant prompt may initially look attractive:

1
2
3
4
5
6
7
8
Here are all project rules.
Here is the API documentation.
Here is our security methodology.
Here are the test cases.
Here is the database schema.
Here are the deployment instructions.
Here are all the tools.
Here is the previous conversation.

The problem is that the model now has to determine what matters from everything.

The better architecture is:

1
2
3
4
5
6
7
8
9
Always-needed context
        +
Relevant Skill
        +
Required tools
        +
Specialist worker
        +
Useful memory

This is effectively context engineering.

The objective is not maximum information.

It is maximum relevant information at the right time.

A practical architecture

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
                 ┌───────────────┐
                 │     MODEL     │
                 │ Reasoning     │
                 └───────┬───────┘
                         │
                ┌────────▼────────┐
                │ KNOWLEDGE       │
                │ Skills + Rules  │
                └────────┬────────┘
                         │
        ┌────────────────┼────────────────┐
        │                │                │
     MCP Tools       Subagents         Memory
        │                │                │
        └────────────────┼────────────────┘
                         │
                     Hooks
                         │
                    Execution
                         │
                    Artifacts

The model remains the reasoning engine.

Everything around it determines how effectively that engine can operate.

Security becomes part of the architecture

As agents become more capable, their extension ecosystem becomes part of the security boundary.

Anthropic warns that Skills can contain executable code, scripts, dependencies, and network-related behaviour and recommends treating Skills as software that should be inspected before being trusted.

The same principle applies to Plugins and MCP servers.

A sensible trust chain is therefore:

1
2
3
4
5
6
7
8
9
10
11
12
13
Model
  ↓
Skill
  ↓
Plugin
  ↓
MCP server
  ↓
Tool
  ↓
Permission
  ↓
Data / system access

More capability means more potential attack surface.

The deeper shift

The progression is:

1
2
3
4
5
6
7
8
9
10
11
Prompt engineering
        ↓
Tool use
        ↓
Agent workflows
        ↓
Composable capabilities
        ↓
Multi-agent systems
        ↓
AI execution environments

The model is becoming only one component of the system.

The important engineering skill is increasingly knowing which capability belongs where.

That is what allows a relatively small instruction such as:

1
"Audit the authentication flow."

to trigger a complete, repeatable workflow rather than a generic answer.

References

  • Anthropic — Introducing Agent Skills.
  • Claude Code Documentation — Extending Claude Code.
  • Claude Code Documentation — .claude directory and project configuration.
This post is licensed under CC BY 4.0 by the author.