Claude Code Features/Extensions

Feature

Description

Key capabilities

When to use it

Example

Resources

CLAUDE.md

Persistent context file

Provides consistent instructions/context across every session.

Project conventions, “always do X” rules

“Use pnpm, not npm. Run tests before committing.”

Docs

Skills

Extensible workflows (SKILL.md)

Extends knowledge and workflows; can be invoked manually (/deploy) or automatically.

Reusable content, reference docs, repeatable tasks

/deploy runs your deployment checklist; API docs skill with endpoint patterns

Docs / AgentSkills

MCP

Model Context Protocol

Connects Claude to external services, tools, and data sources.

External data or actions

Query your database, post to Slack, control a browser

Docs

Hooks

Deterministic scripts

Runs OUTSIDE the main LLM loop as pre-defined, reliable scripts.

Automation that must run on every matching event

Run ESLint after every file edit

Docs

Subagents

Isolated execution loops

Runs own loops in isolated context, returning summaries to the main session.

Context isolation, parallel tasks, specialized workers

Research task that reads many files but returns only key findings

Docs

Agent teams

Coordinate multiple independent Claude Code sessions

Parallel research, new feature development, debugging with competing hypotheses

Spawn reviewers to check security, performance, and tests simultaneously

Plugins

Distribution packages

Bundles skills, hooks, subagents, and MCP servers for reuse across repositories (e.g. Claude in Chrome)

Docs, Marketplace

When to Use a Feature

Trigger

Add

Claude gets a convention or command wrong twice

Add it to CLAUDE.md

You keep typing the same prompt to start a task

Save it as a user-invocable skill

You paste the same playbook or multi-step procedure into chat for the third time

Capture it as a skill

You keep copying data from a browser tab Claude can’t see

Connect that system as an MCP server

A side task floods your conversation with output you won’t reference again

Route it through a subagent

You want something to happen every time without asking

Write a hook

A second repository needs the same setup

Package it as a plugin

Key Technical Distinctions

  • Invocation Control: Skills can run in the current session or be offloaded to subagents for modularity
  • Loading Behavior: Descriptions load at session start to minimize latency, while full content is injected only when the skill is triggered
  • Portability: Use Plugins when you need to share a specific set of tools or logic across multiple different project

When Features/Extensions Load into Context

Hooks Lifecycle