claudecodemods.dev

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.

Deep dive: what are mods? →