date

June 7, 2026

CLAUDE.md vs Skills vs Subagents vs Hooks vs MCP: Choosing the Right Claude Code Customization Tool

By DevFlares Team

CLAUDE.md vs Skills vs Subagents vs Hooks vs MCP: Choosing the Right Claude Code Customization Tool

Claude Code ships with five distinct customization features — and most teams use them wrong. Not because they are difficult to understand individually, but because it is easy to treat them as alternatives rather than as a coordinated system, each one designed for a specific class of problem.

The result is predictable: CLAUDE.md files that read like instruction manuals, Skills that duplicate project standards already in the context, hooks that nobody trusted enough to actually enforce anything, and MCP servers connected out of curiosity with no clear purpose. Every misplaced instruction makes Claude slightly less useful for every task that follows.

"

Use CLAUDE.md for rules, Skills for procedures, subagents for delegation, hooks for automation, and MCP for external capabilities. Each feature handles the type of concern it was designed for — and only that.

Why this matters now: As AI-assisted development matures, the teams that extract the most value are not those with the most Claude integrations — they are the ones who designed the right integration in the right layer. Context bloat, inconsistent automation, and unscoped external tools are engineering problems, not configuration problems. Treating Claude Code customization as a small architecture exercise changes the quality of every session that follows.


The Five Features at a Glance

Before diving into each feature individually, it helps to see them side by side. The clearest way to understand what belongs where is to look at when each feature activates and what it adds to Claude's working context.

Feature Primary Purpose When It Activates Best Used For
CLAUDE.md Persistent project guidance Every session, automatically Coding standards, architecture rules, project constraints
Skills Task-specific expertise When invoked or auto-matched Procedures, checklists, repeatable workflows
Subagents Delegated execution Invoked for a focused task Research, code review, exploration, isolated work
Hooks Automated reactions to events Triggered by lifecycle events Formatting, validation, notifications, enforcement
MCP Servers External tools and integrations Called when external access is needed GitHub, Jira, databases, Sentry, browsers, APIs

CLAUDE.md — The Engineering Handbook Claude Reads Every Time

Think of CLAUDE.md as the engineering handbook Claude reads before starting any task in your repository. It loads automatically into every session and carries the foundational context that Claude should apply consistently — whether fixing a bug, writing a migration, reviewing a pull request, or generating documentation.

The practical test for whether something belongs in CLAUDE.md is simple: should Claude apply this instruction during almost every task in this repository? If yes, it belongs here. If it is only relevant for specific request types, it is probably a Skill.

What Belongs Here

  • · Framework and language conventions
  • · Repository structure notes
  • · Build and test commands
  • · Architectural decisions
  • · Security constraints
  • · Files Claude should not touch

What Does Not Belong

  • · 40-step deployment checklists
  • · Detailed PR review procedures
  • · Task-specific workflows
  • · Reference docs that rarely apply
  • · Procedures only one role uses
  • · Instructions that are only sometimes true

Skills — Task-Specific Expertise, Loaded Only When Needed

Skills are reusable instruction sets that Claude loads when they become relevant. The key word is when. A pull-request review checklist that covers security, breaking changes, missing validation, error handling, test coverage, and observability is genuinely valuable — but it has no business consuming context tokens while Claude is correcting a spelling error in a README.

A bloated context window makes Claude less focused on the task at hand. Skills let you keep detailed, expert-level procedures available without forcing Claude to carry them into unrelated work.

Put It in CLAUDE.md When… Create a Skill When…
The guidance applies to almost every task The guidance is relevant only for certain requests
The content is concise and foundational The content is a detailed, multi-step procedure
Claude should always know the rule Claude should load the expertise only when needed
You are documenting project standards You are defining a reusable workflow

Subagents — Delegated Work in a Separate Context Window

Skills and subagents are often confused because both can specialize Claude's behavior. The difference is architectural. A Skill adds instructions to the current task — Claude uses them as part of its active reasoning. A subagent performs work in a completely separate context window and returns only the result.

Consider updating an authentication flow in a large codebase. Before writing a single line, Claude may need to inspect existing guards, middleware, JWT utilities, user schemas, refresh-token logic, frontend interceptors, and related tests. Loading every file and log from that investigation into the main conversation consumes context that should be reserved for implementation decisions. A subagent investigates and returns a summary — the primary session stays clean.

When Subagents Deliver the Most Value

Codebase exploration Pull-request review Security audits Dependency analysis Test-failure investigation Log analysis Documentation research Focused refactoring Restricted-tool tasks

Skills and subagents also compose well. A security-review subagent can run independently while a security-audit Skill provides the checklist it should follow — returning only ranked findings to the primary session.

Hooks — Deterministic Automation That Does Not Require Prompting

Hooks are event-driven. Instead of waiting for a prompt, they fire automatically when a specific lifecycle event occurs — a file is edited, a tool runs, a session ends. This is an entirely different class of capability from the other four features.

The critical distinction: CLAUDE.md can tell Claude not to edit a protected file. A hook can actively prevent it. One is guidance; the other is enforcement. When consistency matters — formatting, security checks, pre-commit validation — use the feature that cannot be reasoned around.

Use a Skill When… Use a Hook When…
Claude needs knowledge to make better decisions An action should happen automatically on an event
Behavior depends on what the user requested Behavior depends on what lifecycle event fired
Claude should follow a procedure A script, validator, or endpoint should run
Reasoning and judgment are required Enforcement or deterministic automation is required

MCP Servers — External Capabilities, Not Smarter Instructions

The Model Context Protocol lets Claude Code interact with tools and data sources that live outside the repository. An MCP server is not a more advanced Skill — it is a tool provider. It gives Claude the ability to act on external systems: query a database, create a Jira ticket, inspect a Sentry error, or open a browser.

Without MCP, debugging a production issue means manually assembling context from multiple systems. With the right integrations, Claude can query those systems directly — fetch the Sentry trace, find the related ticket, inspect the code path, and suggest a fix in a single request. The operational payoff is real, but it requires restraint: every connected server adds tools Claude must consider on every call.

Engineering & Code

  • GitHub pull requests & repos
  • Sentry errors & stack traces
  • Browser automation

Project Management

  • Jira / Linear issues
  • Slack messages
  • Figma design files

Data & Infrastructure

  • PostgreSQL / read replicas
  • Internal documentation search
  • Custom engineering tools

A Practical Decision Framework

When adding any Claude Code customization, start with the problem rather than the feature. These five questions route most decisions correctly.

1

Is this a project rule Claude should follow almost every time?

Use CLAUDE.md. Keep it focused on durable standards — framework choices, architecture rules, security constraints, commands.

2

Is this a reusable procedure needed only for certain requests?

Create a Skill. Detailed procedures — PR review checklists, release steps, test-writing guides — belong here, not in CLAUDE.md.

3

Would this task generate noisy intermediate context or benefit from isolation?

Use a Subagent. Let it do the messy exploration and return only the conclusion — keeping the primary session focused on decisions.

4

Should something run automatically when an event occurs?

Add a Hook. If the system should enforce it without prompting — format after edit, block a dangerous command, validate before commit — hooks are the right tool.

5

Does Claude need to communicate with an external system?

Connect an MCP Server. But connect it selectively — scope permissions carefully and only integrate systems your workflow genuinely requires.

A Production-Ready Setup: How the Layers Fit Together

A backend engineering team running Claude Code in production might layer the five features like this. Notice that no single layer carries the entire workflow — each one has a narrow, well-defined responsibility.

CLAUDE.md always loaded
  • NestJS module structure
  • PostgreSQL via repository layer
  • No prod infra changes without approval
  • Lint + relevant tests before done
Skills invoked on demand
  • /api-review
  • /release-checklist
  • /write-tests
  • /security-audit
Subagents isolated context
  • codebase-explorer
  • security-reviewer
  • test-failure-investigator
  • documentation-researcher
Hooks automatic triggers
  • Prettier after file edits
  • ESLint on TypeScript changes
  • Block edits to protected infra
  • Notify on approval required
MCP Servers external tools
  • GitHub
  • Jira
  • Sentry
  • PostgreSQL read replica

Risks & Guardrails

Five common mistakes that degrade the quality of every Claude Code session.

1.
Turning CLAUDE.md Into a Knowledge Dump
Every session pays the token cost of everything in CLAUDE.md. Keep it focused on durable standards — move procedures into Skills.
2.
Using Skills for Enforcement
A Skill can suggest running a formatter. Only a hook guarantees it actually runs. Use automation when consistency is non-negotiable.
3.
Creating Subagents for Simple Tasks
Delegation has overhead. A one-step lookup does not need a subagent — use one only when the isolation provides a clear benefit.
4.
Connecting Too Many MCP Servers
More tools do not mean better results. Each server adds tool-call overhead. Connect selectively and scope permissions to what is actually needed.
5.
Treating the Features as Mutually Exclusive
The best setups layer all five. CLAUDE.md sets the baseline; Skills add expertise; subagents isolate delegation; hooks automate; MCP connects your ecosystem.

Practical Rollout Plan

Adopting these features incrementally reduces risk and builds team confidence. Start with the highest-signal layer and add complexity only when the simpler option is not enough.

Start with CLAUDE.md. Capture the project standards Claude needs for every task — framework conventions, commands, files to avoid. Keep it under one page.
Extract repeated instructions into Skills. Identify the five to ten workflows where Claude needs specialist guidance and pull them out of CLAUDE.md.
Add hooks for the top three consistency requirements. Formatting, protected-file enforcement, and pre-commit validation deliver the clearest immediate return.
Introduce subagents for your noisiest workflows. Codebase exploration and PR review are typically the first candidates — they generate the most intermediate context the primary session does not need.
Connect MCP servers with clear use cases only. GitHub and Jira are high-value for most teams. Audit each server quarterly — remove integrations that aren't actively improving sessions.

Where DevFlares Helps

At DevFlares, we work with engineering teams to design and implement production-grade AI development workflows — including Claude Code setups that combine CLAUDE.md project standards, Skills, subagents, hooks, and MCP integrations into a coherent system with a clear division of responsibilities.

If your team is investing in AI-assisted development and wants to avoid context bloat, inconsistent automation, and unscoped external integrations, reach out — we can help you design a setup that fits your stack and delivery model.