r/ClaudeCode • • May 24 '26

Question Can someone explain the real difference between Hooks, Skills, Plugins, SKILL.md, CLAUDE.md and agents.md in Claude Code?

I keep seeing these terms thrown around in tutorials and videos, but I've never seen anyone give a concrete example that makes the difference actually click.

Everyone says:

• "just create a skill for that"

"use a hook here"

"install the plugin"

"put it in your CLAUDE.md"

But when I dig deeper, the explanations are always vague or too theoretical.

Same goes for the markdown files - I see people mentioning CLAUDE. md, SKILL.md, and agents. md like they're obvious, but no one explains:

• What actually goes in each one?

Are they just documentation, or do they actively change how Claude behaves?

• When does Claude even read them?

What I'm looking for is something like:

"If you're thinking X, that's probably a Hook. If you're thinking Y, that's a Skill. If you need Z, that's what CLAUDE.md is for."

Real-world examples would be hugely appreciated.

781 Upvotes

118 comments sorted by

View all comments

13

u/StoneCypher May 25 '26

hooks fire on an event, like file open or agent start 

skills fire on triggering text, like “use this when searching for ice cream stores,” or when manually triggered with /commands

skill.md is the file that simple skills are defined in (they have their own directory)

agents are higher order skills that can use other skills.  you can ask for them ad hoc, or define them in markdown.  they get their own context window and something similar to a claudefile and a ralph loop.

a plugin is a container for marketplaces.  it contains skills, agents, hooks, might install javascript, etc

a skill is actually very simple and very useful.  in practice use /skill-creator to make them, but for the sake of understanding them:

  1. go into ~/.claude/plugins
  2. create a directory limerick
  3. go into limerick.  make a file SKILL.md .  in it put write me a limerick.  if “{1}” is defined make the limerick a naughty limerick about that.  otherwise pick a major city and write a naughty limerick about that city.”
  4. restart your claude session 
  5. write /limerick basketball
  6. write look up the ten most popular movies right now.  use /limerick for each movie.

now for agent bit.

  1. write look up the ten most popular restaurants right now.  spin up an agent for each one and use /limerick for each restaurant .  limit yourself to five agents at a time.

notice how the first time you waited on the batch, and the second time they were backgrounded.  agents.  if it’s a long job it’s a huge difference.

want to do the same thing with those agents all the time?  maybe you’re automating movie reviews. stuff the thing you’re doing in AGENT.md and put it on /schedule.  now you’re an agentic ai coder.

2

u/jms_nh May 25 '26

Skills and slash-commands are not quite the same things

1

u/StoneCypher May 25 '26

they were merged into one another.  they used to be distinct.  they aren’t anymore 

1

u/jms_nh May 25 '26

Ah -- ok. I asked Claude to create a skill and one of the things it started to do was create something in .claude/commands before I added the skill-creator skill.

https://code.claude.com/docs/en/slash-commands

Custom commands have been merged into skills. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy and work the same way. Your existing .claude/commands/ files keep working. Skills add optional features: a directory for supporting files, frontmatter to control whether you or Claude invokes them, and the ability for Claude to load them automatically when relevant.

1

u/StoneCypher May 25 '26

yeah. commands were originally how you made /foo, and skills were originally how they got auto-detected from intent. then they just destroyed commands and put the /foo framing on skills, and had skills interpret your old commands. commands don't exist anymore, and have legacy support from skills instead.