This lesson is being recorded
Every video of this course is being uploaded to my YouTube channel. Subscribe so you do not miss it.
Module 13 · Lesson 13.2 · 14 min
Plugins: Packaging Company Know-How
Package your company skills, agents and hooks into an internal plugin the team installs with one command.
Use ← → to move. The marker highlights text and the pencil draws on the slide; navigation locks while you annotate. Undo removes the last mark, Esc exits.
1Understand the plugin layout
A plugin is a folder with a manifest at .claude-plugin/plugin.json that gives it a name, description and version. Next to that folder sit the components: skills/ with one folder per skill containing SKILL.md, agents/ with one file per subagent, hooks/hooks.json for hooks, and .mcp.json for tool connections. Only plugin.json goes inside .claude-plugin/.
acme-ops/
.claude-plugin/
plugin.json
skills/
weekly-report/SKILL.md
quote-builder/SKILL.md
agents/
finance-analyst.md
hooks/
hooks.json2Let Claude convert your setup
You do not need to move files by hand. Ask Claude to build the plugin from your existing .claude folder. Plugin skills and agents get the plugin name as a prefix, so the weekly report skill becomes /acme-ops:weekly-report, which avoids clashes with personal skills.
Create an internal Claude Code plugin called acme-ops from the proven skills and subagents in this project's .claude folder: weekly-report, quote-builder and the finance-analyst agent. Put the manifest at acme-ops/.claude-plugin/plugin.json with name, description, version 1.0.0 and author. Copy skills into acme-ops/skills and agents into acme-ops/agents. Remove anything personal to me (my email, file paths, accounts). Do not delete the originals. Show me the final folder tree.3Validate and test it locally
Run the validator, then start a session with the plugin loaded for that session only. Try each skill under its new prefixed name before anyone else sees it.
claude plugin validate ./acme-ops
claude --plugin-dir ./acme-ops4Create your private marketplace
A marketplace is a folder or repository with a .claude-plugin/marketplace.json file that lists your plugins and where each one lives. It needs a name, an owner and a plugins list. Keep the entry name identical to the plugin's own name. Push it to a private repository your team can access (ask whoever manages your company GitHub or Git host).
{
"name": "acme-tools",
"owner": { "name": "Acme Operations" },
"plugins": [
{
"name": "acme-ops",
"source": "./plugins/acme-ops",
"description": "Acme company skills: reports, quotes, finance"
}
]
}5Install it on each teammate's machine
Each person adds the marketplace once and installs the plugin by name, in the format plugin@marketplace. Inside a session they can also type /plugin to browse, install, disable or update. When you release a new version, they get your update instead of keeping stale copies.
claude plugin marketplace add your-company/acme-tools
claude plugin install acme-ops@acme-toolsCopying files between laptops works for one person. At five people it breaks: someone has last month's version of the quote skill, someone else edited it, and nobody knows which is right.
Claude Code plugins solve this. A plugin is one folder that bundles skills, subagents, hooks and connector settings. You list it in your own private marketplace, your team adds that marketplace once, and everyone installs the same version and receives your updates.
Key points
- A plugin bundles skills, subagents, hooks and connectors into one installable unit.
- Plugin skills are prefixed with the plugin name, for example /acme-ops:weekly-report.
- Validate with claude plugin validate and test with --plugin-dir before sharing.
- A private marketplace gives the team one source of truth and updates.
Avoid
- Putting skills inside the .claude-plugin folder, where they will not load.
- Shipping personal file paths, emails or credentials inside the plugin.
- Using a different name in marketplace.json and plugin.json, which breaks installs.
- Installing third-party plugins without reviewing them: a plugin runs with the user's permissions.
A 10 person agency had three account managers each running their own copy of the client report skill, with different tone and different sections. The operations lead packaged the best version, plus a brand voice skill and a pre-send checking hook, into one plugin in a private marketplace. Every report now follows the same structure, and when the agency changed its reporting template, one plugin update reached everyone the same day.