Claude can be extended four ways and they look confusingly similar. Here's the plain-English map: a command is a saved prompt, a skill is real know-how, a subagent is isolated work, and a hook is an enforced rule.
A slash command is just a prompt template you've saved so you can reuse it. No logic, no files — only words you'd otherwise retype. If you find yourself pasting the same instructions over and over, that's a command waiting to happen.
It's the simplest of the four, so it should be your first reach. Most 'I wish Claude remembered to do X' moments are solved here.
A skill steps up from words to a way of working. Use one when there's actual domain logic involved — a process, a format, helper files — that Claude should follow whenever the situation comes up. Unlike a command you trigger by name, a skill triggers itself when it recognizes a relevant task.
If a command is 'say these words,' a skill is 'here's how we do this kind of job, including the templates.'
A subagent is a helper Claude spins up with its own context window to handle a chunk of work without cluttering the main conversation. It's ideal for isolated side-quests — go research this, audit that — or for running several pieces of work in parallel.
The big win is a clean context: the subagent's verbose digging stays in its own space and you just get the summary back.
Main agent: "Research the three options, each in its own subagent, then give me one comparison."
A hook is code that runs automatically at specific moments — before a tool runs, when a session ends, after a subagent finishes. Use it when you need a guarantee, not a polite request: 'always run tests before stopping,' 'never edit generated files.'
This is the most technical of the four. Most non-developers won't need hooks often — but it's worth knowing they exist for the day 'please remember' stops being enough.
A one-page map for picking command vs skill vs subagent vs hook — with a quick question to ask yourself for each.