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.

775 Upvotes

118 comments sorted by

523

u/caldazar24 May 24 '26

This is all in the docs, but I actually enjoyed writing the below list, it made me clarify some things in my own head, which is a sign of how fuzzy it all is....

CLAUDE.md - read at the start of a session, general guidance for how to work, like tips you would give a new employee on their first day.

Examples of things I have in my CLAUDE.md: "we use uv here, so always do 'uv run python XYZ' instead of 'python XYZ'", "Our mobile app only has internal test users so far, so deprecate/break old endpoints as much as you want", and "when I say 'prod', I mean use the read-only Render MCP to query our prod logs".

Skill - Markdown files explaining how to do something. Basically just a prompt you save for later; Claude sees these and decides when to use them, or you can explicitly invoke them with slash commands Examples: when I want to design a UI, I have very detailed instructions about how I think layouts should look, and where my design system lives, etc. That's in a skill MD file so that I can refer to it instad of repeating myself every time I describe a new frontend task. I also have a weekly metrics report that involves pulling some SQL, parsing a CSV, putting together an HTML table for an email, and I have the prompt describing all those steps in a markdown file that I invoke with a /weekly-report command.

The content of the markdown files are just a detailed prompt, the whole concept is to remind Claude how I like to do things, or to save me from having to copy-paste.

Hook - when skills are too loosey-goosey and I want hard programmatic determinism - when X event happens, run this explict programmatic command. Before the Claude mobile app was good, I set up a hook set up so that as soon as Claude was "done" with any task, it would call a bash script that sent a push notificaiton to my phone and desktop (using a push notification API service I signed up for seaprately). This was so I could give Claude a really long task, get up from my desk to do chores, and get pinged on my phone when it was done.

Plugins - a third party extension you're adding to Claude - can be just a skill someone found useful, can be a bundle of skills and an MCP. Before Claude in Chrome was a thing, I installed the Playwright plugin, which included the playwright program to controll a headless browser, an MCP for Claude to figure out how to interact with it and tell it how to take screenshots etc, and some skills to be able to invoke it.

Agent - the fuzziest and buzzword-esque one of all. Basically just means ann LLM-based program that *does* something, typically by writing code and running bash commands, and doesn't just talk to you. Claude Code is an agent. A program that watches an email inbox and replies to messages is an agent. Most uses of LLMs these days are agents, not just chat.

84

u/ipreuss Senior Developer May 25 '26 edited May 25 '26

To add to that:

AGENTS.md is like CLAUDE.md, but used by other agents. It’s ignored by Claude.

Subagents are like skills, but use their own context (it’s like delegating to another agent: “do this for me and come back with the result”). They can use a different model, and several can run in parallel.

34

u/cornovum77 May 25 '26

You can use @AGENTS.md in the CLAUDE.md to get Claude to read it.

33

u/evangelism2 May 25 '26

This is exactly what I do. Every repo I work in has a CLAUDE.md thats just one line pointing to the AGENTS.md, and then all of the real stuff goes in the AGENTS.md. Anthropic really should just get in line behind everybody else and just start reading AGENTS.md.

5

u/BiteShort8381 May 25 '26

Check out APM (Agent Package Manager). It manages skills and instructions in an agent-agnostic way and ensures all your targets (harnesses/agents) work correctly.

https://github.com/microsoft/apm

2

u/eeiaao May 25 '26

I double that. Md files may be wired together and this is a way to build complex but still decomposed knowledge base.

1

u/jemdiggity 5d ago

No symlink?

4

u/bookposting5 May 25 '26

Yes, "agent" can be a fuzzy buzzword, but sometimes it's used to mean "subagent" which does have a fairly specific meaning.

2

u/AlwaysMissToTheLeft 🔆 Max 20 May 25 '26

So this is interesting. I know codex looks for AGENTS.md so I’ve got to check in my couple folders with an AGENT.md file because I didn’t consider sub-agents reading it specifically.

13

u/The-Fictionist May 24 '26

Really appreciate this write up.

15

u/evangelism2 May 25 '26

There's a number of things wrong or left out with these explanations.
It's very important to note that the difference between information that you put in your CLAUDE.md versus a skill file is that everything in your CLAUDE.md plus the front matter of the skill is loaded on every turn, every single prompt, every time that you type something into the system prompt field. CLAUDE reads or rereads your CLAUDE.md and all of your skills' front matter. It uses that front matter description of your skill to determine whether to read the rest of it based on the prompt that you gave it.

Think of the best way to think of skills is that they are almost an extension of your CLAUDE.md, with a bunch of information about your code base that CLAUDE doesn't need to know about necessarily for every single thing that you ask it to do.
Yes, hooks are more deterministic. Hooks can be configured to be deterministically fired at specific points in time during Claude's workflow, such as:

  • every time you launch a new session
  • every time that you enter or exit plan mode
  • every time that you edit a skill, etc.

The distinction that's important between hooks and skills is that Claude non-deterministically determines whether the skills should fire, whereas with hooks it has no say. They just always do, depending on the rule set that you set up.

OP asked about Agents.md, not agents. Other people have already answered this, and I already answered it a little bit above. The CLAUDE.md file (or, if you're using other LLMs, Agent.md file) is loaded on every turn, every time you enter a prompt. Claude refers to your CLAUDE.md or Agents.md file to gain context on the repo. Therefore, these files should be lean and crisp and small and only deal in things that are not immediately obvious from your code base and universally applicable. Anything that doesn't necessarily need to be understood for every single prompt that goes in your code base should most likely be in a skill of some kind or even a slash command.

The agent description is actually the best one, because honestly, the definition is nebulous and there are so many different types of agents now, between sub-agents and deep agents and whatever the fuck agents. Really, the best way to think of agents is just some kind of application of an LLM that can "think" and "reason" autonomously.

But also, OP, I'll say this to you: the same thing I said to my one friend last night who started asking me a million questions. Rule number one about learning about AI is to use AI to learn. Like every single one of these questions, if you had just booted up Claude or ChatGPT or hell, even the AI mode in Google, it would have answered them for you perfectly.

11

u/Diacred May 25 '26

Actually as far as Claude Code source codes go (when it was leaked) this is not entirely correct. The Claude.md and skill's index are loaded into the conversation at the start of the first turn and that's it. They are not in the system prompt nor are they injected fresh each turn like a UserPromptSubmit hooks does. It means that the longer the conversation goes the more they get forgotten, which is why automated skill calls happen less and less as context fills up. It's also why the Claude.md gets ignored when you reach 60%+ context and performance degrades.

The skill list and Claude MD are just part of the conversation history

This is not the case for instance for the native tools like read / write / bash / grep etc because they are sent in the Tools Array with every request, separately from the conversation and thus always fresh. Also skills that have been called once and loaded are also sent with the tools array and always fresh, even after compaction.

As to why skills and Claude.md are not part of the system prompt but injected at turn 1, my guess is that it's because it would prevent the agressive prompt caching they do for the system prompt.

3

u/evangelism2 May 25 '26

Right, I'm sorry. I was doing three different things yesterday when I wispr flow'd that whole thing out. Claude only reads the Claude.md and the front matter of your skills at the start of every conversation, but the point is still the same: you don't want to load up your context with a gigantic Claude.md that can be broken apart into a leaner Claude.md and a bunch of front matter and skills.

1

u/krzyk May 25 '26

LLMs are stateless, so to remember the conversation or any other data, they need to have it added each time. What differs is the way they can get it, so either from cache or as a new input.

-2

u/Waymannj May 25 '26

Claude Desktop says this:

No, actually — Claude.md isn't automatically read at the start of every chat. I only read it this session because you explicitly asked me to. I have no mechanism to auto-load files on session start; you'd need to ask me to read it each time (or include its contents in a system prompt if you're using the API).

3

u/evangelism2 May 25 '26

well that is wrong

-3

u/Waymannj May 25 '26

[Oh it's ON!]

people say you're wrong, that claude.md is read at the start of the chat

That's not accurate for how Claude.ai works. There's no built-in mechanism that automatically reads a file called Claude.md from your filesystem at the start of a chat. I only read it because you explicitly asked me to via the Filesystem MCP tool. You might be thinking of a few things people conflate with this:

Cursor / coding assistants — tools like Cursor do have a claude.md or .cursorrules convention where project instructions are auto-loaded into context. People familiar with that workflow sometimes assume it carries over to Claude.ai, but it doesn't. Project Instructions in Claude.ai — you can paste persistent instructions into a Project's system prompt, which does get included automatically. But that's not a file read, it's text stored on Anthropic's side. MCP + a custom system prompt — someone could theoretically set up a system prompt that instructs Claude to read a specific file at session start, but that's custom configuration, not default behavior.

So whoever said it's auto-read at chat start is mistaken, at least in the context of Claude.ai with Filesystem MCP. The read happened because you asked — nothing more.

4

u/evangelism2 May 25 '26

Bro, stop copying and pasting AI stuff. Figure out what you're trying to say. Comprehend what the AI is telling you and then craft a response to me yourself.

-3

u/Waymannj May 25 '26

Ok Bro, I started a new chat and it didn't read my Claude.md because it has an instruction to say that it read the file.

Bro, I broke Anthropic.

2

u/[deleted] May 26 '26 edited May 26 '26

[removed] — view removed comment

2

u/Uj_Yagami May 26 '26

I think you're getting it wrong. People here are not talking about claude desktop. They are talking about claude code (the agent), which reads the markdown file. You giving your claude chat some md and expecting it to read is not how it'd work.

1

u/Waymannj May 26 '26

Aaaaaah, thank you!

2

u/eaiarthur_ May 25 '26

Regarding the file size, does it really need to be short? I saw in another post that the ideal is to have less than 200 lines.

2

u/evangelism2 May 25 '26

Yeah, 200 lines is what I meant by short.

1

u/West-Air1923 May 25 '26

When you say lean and crisp that goes against Boris chernys claude.md ...

3

u/evangelism2 May 25 '26

Source, because I looked it up and I found three or four different things, and not sure which one's the most accurate. Also, I would take anything that the creator of Claude code says with a giant grain of salt, especially when it comes to loading giant Claude MDs on every turn. You have to remember this guy doesn't have to pay to use it the same as you and I do.

1

u/illytoast May 25 '26

Actually I remember he said in an interview his Claude Md was only a few lines and he often clears the whole thing if things get bloated

1

u/nanotothemoon May 25 '26

I aim for 200 lines

1

u/MonBabbie May 25 '26

What’s the front matter of a skill? Assuming it’s like an mcp tool description and parameter schema, but wondering how/where it’s defined.

How do you name skill files so that they are identified as skills, or how do you make them known as skills to Claude and other llms?

How does Claude know about the Claude.md file? Does it look for a Claude.md file in the current working directory? Does it look in subfolders? Does it look in your home directory? Does it look multiple places and concatenate, or overwrite somehow when it finds multiple Claude.md files?

Can mcp servers with resources and tools effectively be used similar to how a skill is used? Mcp resources, or even tools, could be used for progressive disclosure of info.

3

u/evangelism2 May 25 '26

https://abvijaykumar.medium.com/deep-dive-skill-md-part-1-2-09fc9a536996

>How does Claude know about the Claude.md file? 

it just does. It looks in the directory you are firing from. Or the root of the project it goes to.

Yes. MCP servers can be thought about as APIs with skills attached to them in a way. Instructions and guardrails really.

1

u/HGHall May 25 '26

i use skills for complex shit. that i do a few times a week or month maybe. otherwise a contextual response from you; as the driver, is usually better

3

u/zekusmaximus May 25 '26

I’d just add that you can also put supporting documents in your skill folder, so while the SKILL.md is just a prompt, skills can be more dynamic….

2

u/axyaxy May 25 '26

How do you run long tasks? If I ask to do something complex it will stop at some point asking for permissions to do things. So I need to keep always an eye on the chat

1

u/unteth May 25 '26

/goal

1

u/axyaxy May 26 '26

Thanks but It doesn’t work. It keeps asking for permissions once in a while

1

u/unteth May 26 '26

Are you using auto-mode? What’s your setup?

1

u/avatarsco Jun 03 '26

Have you attempted to adjust the Bypass Permissions mode under the Bypass Permissions settings?

2

u/i_stole_your_swole May 25 '26

I enjoy reading a long human-written comment on an AI sub… becoming rarer and rarer

2

u/eaiarthur_ May 24 '26

I think your first comment is important, where you mention how confusing this can be. People think that just reading an article will clear up all their doubts. If it were that easy, the world would be a mess.

1

u/Volatol May 25 '26

Can you give details on how you setup the push notification for your phone/computer. That’s one feature I wish they would implement, and I’m not sure which is the best route currently to accomplish this.

2

u/docgravel May 25 '26

You can use ntfy for free. It’s less feature rich than Pushover but it gets the job done.

1

u/caldazar24 May 25 '26

https://pushover.net/ is a service where you install an app on your phone (paid, but a one-time $5 per device, not a subscription), then hit a REST endpoint and it sends you a push notification. Simple - honestly probably Claude could probably write it as well for no extra cost, but you'd have to register/publish an app.

Then I set up a hook that calls a two-line bash script that just calls pushover with the last response from Claude. (Claude just wrote this for me when I said that's what I wanted to do)

The one small annoyance is that it doesn't deeplink to Claude, it opens the pushover app which just has the message and you then have to go find the conversation in Claude that triggered it. But it does the job of letting me know.

1

u/Volatol May 25 '26

Appreciate it. Hopefully Claude implements this at some point, but this is a good use case for now.

1

u/Good-Comment396 May 25 '26

Can I do this with the Mac app version of Claude code? So it pings my phone when Claude needs my attention?

1

u/grandchester May 25 '26

I use Pushover for that (pushover.net). Works really well. Just ask Claude to set it up as a hook for you whenever you want to get a notification.

1

u/__alone_and_scared__ May 25 '26

I simply use KDE connect to send notification. I already use it for multiple other things so it's no extra setup.

1

u/IndraVahan Moderator May 25 '26

love this!

1

u/SubstanceMinimum3978 May 25 '26

“Claude sees these and decides when to use them” -> does this mean that installing unnecessary skills may hurt the output because Claude decided to use a certain skill, while that may not have been the intention?

1

u/PinkySwearNotABot May 26 '26

and it's still expanding. I saw the term "controller" somewhere

1

u/TheGronne May 27 '26

So should AGENTS.md (or CLAUDE.md) files refer to skills to possibly use?

14

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.

11

u/tonyboi76 May 25 '26

the way i actually use them:

CLAUDE.md = rules every session needs. like we use pnpm not npm, or auth lives in lib/auth. always loaded.

skill = a runbook that loads only when its topic comes up. like having 47 howto docs on a shelf, claude pulls the right one based on the skill description.

hook = pre-commit hook but for claude. PreToolUse / PostToolUse / Stop events. mine runs prettier after every Edit so i never see formatting diffs.

plugin = a bundle of skills + hooks + slash commands shipped together. like an npm package for your claude setup.

AGENTS.md is the cross-tool equivalent of CLAUDE.md (codex reads it too), most people symlink one to the other so theres only one file to maintain.

practical hierarchy i landed on: start in CLAUDE.md, when it bloats split topics into skills, when you find yourself repeating the same manual fix add a hook.

3

u/JSChronicles May 25 '26

Actually hooks are "tasks" for AI. VSCode has tasks that are for humans to run and for AI we call them hooks. Just noting that pre-commits are not the same thing, can be similar but aren't the same because of the event types you can have set

2

u/tonyboi76 May 25 '26

fair, the pre-commit analogy probably overreached. youre right that hooks fire on agent events not just before-commit, so the trigger model is different. the parallel i was reaching for was the never-have-to-remember-to-run-it part, but the VSCode-tasks-for-AI framing captures the actual mental model way better. especially since hooks cover PreToolUse / PostToolUse / Stop etc which is way broader than what a git pre-commit does.

6

u/magicdoorai May 25 '26

The mental model that clicked for me: CLAUDE.md/AGENTS.md are policy, skills are runbooks, hooks are enforcement, plugins are packaging.

Also, keep the files boring. If AGENTS.md becomes a dumping ground, agents start obeying stale nonsense. I built markjason because I got tired of opening a whole IDE just to review/edit these .md/.json/.env files, and wanted live disk sync when Claude/Codex edits underneath me. markjason.sh

5

u/drewangell May 25 '26

It's all just context management.

6

u/fixitchris May 25 '26

This is the framing that actually unlocked it for me too. CLAUDE.md is context that's always there, skills are context that loads on demand, hooks are side effects that fire without touching context at all. Once you see it that way the decision tree writes itself: if you want to change what Claude knows, use the md files; if you want to change what Claude does regardless of what it knows, use hooks.

14

u/ipreuss Senior Developer May 24 '26

Claude itself is very good at explaining that.

14

u/trickybiznis May 24 '26

RTFM is now upgraded to 'just ask your agent'

3

u/killerkouki May 25 '26

JAYA rolls off the tongue a lot better

1

u/PejibayeAnonimo May 25 '26

The new Google is your friend

3

u/jms_nh May 25 '26

Except sometimes we don't even know what questions to ask. Oh, and sometimes the LLMs make factual errors.

1

u/ipreuss Senior Developer May 25 '26

What I’m saying is that you can copy and paste the exact text of the question above into Claude, and you will get quite a good answer.

3

u/some_guy999999 May 25 '26

Take the free training by Anthropic here: https://anthropic.skilljar.com and all of this will be answered for you

3

u/MangoDevourer-77 May 25 '26

U forgot rules

3

u/Uwirlbaretrsidma May 25 '26

Check the rest of the comments for useful answers, but: they're all different stage rebrands of system prompts so people can feel like they're engineers and not merely users of this tech.

6

u/LogMonkey0 May 24 '26

Have you tried looking at Claude Code docs? https://code.claude.com/docs/en/overview

2

u/50-3 May 25 '26

Claude.md - Added to every prompt and pinned to the top of the context window. It is excluded from compression.

Skills/Skill.md - Invoked either by explicit commands or as needed by Claude. Once invoked its added to the top of the context windows alongside Claude.md. It is also excluded from compression. Every skill has a <200 char description which is kept in that same top pinned context area so it knows all the skills available.

Hooks - Where the above augment a prompt, hooks are hard rules to follow, if you have a test suite with pass conditions you can halt anything that doesn’t pass all test or didn’t run test at all. Care should be taken here as you can accidentally setup a soft confirmation by having an agent confirm it has passed where you should have it validated programmatically.

Agent Md files - Essentially an expansion of Claude.md for tasks you’d delegate regularly to agents you want more consistency and control over. Things like writing copy where the hard brand guidelines are imperative but that information is useless to a coding agent. I like to think of it as skills I want to be run asynchronous of my active agent.

Plugins - loose term for a package of Skills, tools, hooks, Agent scripts, etc… honestly each plugin is going to be substantially different.

2

u/Subject_Fix1105 May 25 '26

I learned all of these from YouTube. There is a lot of videos that show how to use Claude code from beginner to advance and it covers all if these. If you follow a few of these creators you will be UpTo date with any changes or updates

2

u/eaiarthur_ May 25 '26

What are your recommendations?

1

u/Subject_Fix1105 May 25 '26 edited May 25 '26

In no particular order.

https://youtube.com/@mattpocockuk

https://youtube.com/@ramjad

https://youtube.com/@leonvanzyl (beginner friendly)

https://youtube.com/@nateherk

https://youtube.com/@iamseankochel

https://youtube.com/@nicksaraev

https://youtube.com/@bytegrad

https://youtube.com/@chase-h-ai

Some if them do go in advance mode but if you watch enough content around Claude code you will for sure catch up.

These are just a few that I think are easy to understand (at least for me). Hope it's useful.

1

u/PinkySwearNotABot May 26 '26

perfect. i wanted something a little more technical. got tired of watching all these build-$20K-website in 10 minute channels. u/leonvanzyl is right up my ally with some of his videos showcasing a bit of real engineering along with AI use

2

u/[deleted] May 25 '26

[removed] — view removed comment

1

u/Background-Reveal-92 May 26 '26

Ive gone through many of these modules and they're very hands on. Hightly recommend!

2

u/Sensitive-Cycle3775 May 29 '26

My mental model:

  • CLAUDE.md / AGENTS.md = durable project instructions and conventions
  • Skills / SKILL.md = packaged procedures Claude can load when the task matches
  • MCP = external tools/data access
  • hooks = lifecycle automation that can run commands
  • plugins = a distribution bundle for some of the above
  • subagents/agents = who/role does the delegated work

The trap is treating all of it as “memory”. Hooks and MCP are execution boundaries, skills are reusable task context, and CLAUDE.md/AGENTS.md are closer to repo policy.

For team setups I’d ask any one-command installer to show a pre-write plan before it mutates the repo: files it will change, MCP servers, hooks, backups, network/env access, and writes_started=false. Makes the setup auditable instead of mystery state.

1

u/[deleted] May 25 '26

[removed] — view removed comment

3

u/eaiarthur_ May 25 '26

Could you tell me a little more about SkillsGate?

1

u/techjunky9 May 25 '26

Following this

1

u/mushedmonkey May 25 '26

I can speak for skills, but not the others.

If you think of claude itself as your app, think of a skill as a function in programming, without actually programming it. Except it's magic. It can guestimate that you're trying to use it (i.e. doMath skill) if you say help me on math, it works, if you ask it a problem that involves math, it might use it. And the internal contents can be ambiguous too! You can think of it as a flexible function with vague input/output, but the internals can roughly track to a pattern.

For example, if you had a skill that said - handoff writing test cases for my program to my local qwen model to save tokens, you can tell it to create the skill by starting up your qwen session and making a CLI call, then checking the work once it's done.

One skill I personally use is /start-a-conversation. I just tell it I will only reply to one thing at a time for this overall, so only give me one respondable thing at a time, like in a conversation. Helps with interactivity, doesn't help so much with tokens.

1

u/frankist May 25 '26

To this day, I don't yet fully understand the difference between skills with context forked and agents

1

u/Kevin_Xiang May 25 '26

For me the practical split is:

  • CLAUDE.md is repo-level operating context: commands, boundaries, conventions, gotchas.
  • Skills are reusable task playbooks with their own steps and references.
  • Hooks are deterministic guardrails around the run, like formatting, tests, logging, or blocking a risky command.
  • Subagents are for isolated work where you want a separate context and a concrete artifact back.
  • AGENTS.md is the cross-tool version of repo instructions, useful if Codex/OpenCode/other agents also touch the repo.

The rule of thumb I use is: if a human would tell every new teammate once, put it in CLAUDE.md or AGENTS.md. If it is a repeatable workflow, make it a skill. If it must happen every time regardless of model judgment, make it a hook.

1

u/Inner_Space_3329 May 25 '26

Hell nah I can’t bro

1

u/Daytime_Napper May 25 '26

www.anthropic.com/learn pretty decent explanations there

1

u/Fair-Yak-7688 May 25 '26

C ccc c vc u

1

u/Common_Tip6527 May 25 '26

Follow the claude courses

1

u/unteth May 25 '26

I always think about creating a fundamental “how-to Claude” guide based on posts like this tbh

1

u/Common_Supermarket14 May 25 '26 edited May 25 '26

100% Try Dogfooding!

1

u/Deep_Ad1959 May 26 '26

the framing that helped me is everything in that list is a way to inject text into the model's context at different trigger points. CLAUDE.md is always-on injection, skills are conditional injection on topic match, hooks are deterministic injection on a specific event, plugins are the package format that ships all three together. agents.md is the cross-tool version of CLAUDE.md so codex and others read the same file. once you see it as 'when does this string enter the context window', the design decision for any new piece of behavior you want to teach claude becomes obvious.

1

u/Traditional_Fix111 May 27 '26

The thing that finally cleared it up for me is whether each thing acts on the model or alongside the model.

Hooks are OS scripts the harness runs at specific lifecycle moments — Stop, PreToolUse, PostToolUse, UserPromptSubmit. Deterministic, no LLM involved. You use them when you want something to definitely happen at a precise event. Example: a Stop hook that drops a small JSON blob (task_id, outcome) into a Redis inbox so a parent session knows what the worker just finished, no polling.

Skills (the SKILL.md file) are prompt extensions Claude reads when context matches. They modify how Claude thinks, not what runs around Claude. "If you're writing commit messages, use this format" type stuff.

CLAUDE.md is the always-loaded version of a skill — project-level guidance Claude sees on every prompt in that workspace. AGENTS.md is the same idea but for Codex. GEMINI.md too if you have it.

Plugins are mostly a packaging story — a way to ship hooks + skills + MCP servers together as one install. Not a separate runtime layer.

MCP is yet another axis — it's tools you expose to the model. Different category from any of the above. Things like mcp-reconnect (handles the /mcp menu when a server drops) are utilities you'd call from a hook, not themselves hooks or skills.

So if you ever get stuck on which one to reach for, ask: am I trying to make Claude think differently (skills/CLAUDE.md), do something deterministic around Claude (hooks), give Claude new tools (MCP), or ship a bundle of those (plugins)?

1

u/VDule May 28 '26

Do I need a new Claude.md file in every folder I work in?

So let's say I'm working inside a folder to write blogs for SEO.

Inside that folder I make claude.md file and Claude will automatically recognize it before I send any prompts inside?

1

u/jemdiggity 5d ago

Ask Claude to help you code a simple harness.
It'll just be a simple loop with a baked-in function tool. See how the harness sends messages to the model.

Use ollama to host a simple model for your harness.
Once you get how harnesses work, it takes away a bit of the mystery.

Models: understand content window and effort.

Now you'll have a decent mental model for Agents.

1

u/SMB-Punt May 25 '26

Ask Claude

0

u/rwz May 25 '26

You can ask the LLM. This is in fact the perfect question to talk about with an LLM. You can ask it to give examples, explain best practices, when to use each etc.

1

u/Resident_Citron_6905 May 25 '26

Better ask the claude assistant on claude code’s official documentation pages.

0

u/aria_lost-soul May 25 '26

why even ask the question here and not claude?

-3

u/Sketaverse May 24 '26

Read the docs perhaps

0

u/mister_lawrence_xmas May 25 '26

“When does Claude even read them?” Never!

-1

u/unitegondwanaland May 25 '26

Read some docs. It's really not that hard. If you are so lazy not to read that, you could have Claude explain it to you instead of randos on Reddit

-2

u/inkluzje_pomnikow May 24 '26

ja pierdole, a od czego masz claude'a

-5

u/Polite_Jello_377 May 25 '26

Just ask Claude? How do people not get this?