Guides / Mental model
Mods vs plugins vs skills vs hooks
Four words the Claude Code ecosystem uses interchangeably. They aren't interchangeable. Thirty seconds and you'll never confuse them again.
01 /
The table
| What it is | Runs code? | You install it with | |
|---|---|---|---|
| Mod | A TypeScript function that hooks into Claude Code's engine. Rewrites prompts, approves tool calls, draws UI. | Yes — unsandboxed | /plugin install |
| Plugin | The package. Bundles skills, commands, agents, hooks, MCP servers — and mods. | If it ships a mod | /plugin install |
| Skill | A markdown file Claude reads on demand. A procedure, not a program. | No | Copy the file |
| Hook | Lifecycle automation: a shell command, HTTP request, or prompt fired on events | Shell / HTTP | settings.json |
02 /
One by one
Mod — the engine hook
A mod is code that runs inside Claude Code. It subscribes to engine events — a prompt is submitted, a tool is about to run, a turn ends — and your TypeScript function gets to react: rewrite the prompt, approve or deny the tool call, draw a panel above the transcript. Because it runs unsandboxed with Claude Code’s own permissions, a mod is the most powerful and the most trust-sensitive of the four.
This site exists to review mods.
Plugin — the box
A plugin is the shipping container. One plugin can bundle skills, slash commands, agents, hooks, MCP servers, and mods together. When you run /plugin install, you’re installing a plugin. Every mod ships inside a plugin — but not every plugin contains a mod.
Skill — the markdown file
A skill is a markdown procedure Claude reads when it’s relevant. No code runs. If a skill tells Claude "how to write a commit message", that’s just text being read. Safe by construction — the risk surface is a badly written instruction, not a rogue program.
Hook — the lifecycle automation
A hook is a small automation Claude Code runs at a lifecycle moment: before a tool call, after a response, on session start. It can be a shell command, an HTTP request, or a prompt. The classic form is a shell script — JSON in on stdin, JSON out on stdout. Stateless, short-lived, and limited to whatever your shell can do — which is still plenty, so check what the script contains.
03 /
Which one do you need?
- Change how Claude Code behaves (block risky commands, rewrite prompts, custom UI) → you need a mod. Check its safety badge here first.
- Get a bundle of features (from one author) → you need a plugin. Then check whether it ships any mods.
- Teach Claude a procedure (your commit style, your review checklist) → you need a skill.
- React to an event with a script (log every tool call, format on save) → you need a hook.
04 /
FAQ
Q1 Is a mod the same as a plugin?
No. A plugin is the package you install; a mod is a TypeScript function inside a plugin that hooks into Claude Code’s engine. Every mod ships as a plugin, but most plugins don’t ship mods.
Q2 Which one can steal my data?
A mod or a hook could — both run code with your permissions. A skill can’t; it’s just markdown. That’s why this site reviews mods.
Q3 Do I need to know TypeScript to use a mod?
No. You install it; the author wrote the code. You just need to decide whether to trust it.