Plugins: packaging a setup
By now this project has a CLAUDE.md, a command, a skill, a hook and a subagent. A plugin is that pile in one directory, installable by somebody else.
A plugin is a directory holding skills, agents, hooks or MCP servers, with a manifest that gives it a name.
{
"name": "link-shortener-kit",
"description": "Conventions, review skill and protected-file hook for this project",
"version": "0.1.0"
}Around that manifest sit the same files you have already written, in the same shapes: skills/, agents/, hooks/. Nothing is rewritten to become a plugin. That is why the documentation suggests starting in .claude/ and converting once it works.
Why bother
- A team gets the same setup. One install instead of a folder of files copied by hand.
- It is versioned. An improvement to the review skill reaches everybody.
- It travels. The same kit works in every repository that installs it.
claude plugin listNo plugins installed. Use `claude plugin install` to install a plugin.
That is a machine with nothing installed. With plugins present each one is listed with its version, its scope, and whether it is enabled.
Plugins are distributed through marketplaces, which are just repositories listing plugins. Your team's marketplace can be a private repository, and installing from it is the same command as installing anything else.
- Turn the skill from lesson 13 and the hook from lesson 19 into a plugin directory.
- Install it in a different repository and see what carries over.
Little by little, you're building something great.