Install
Install asks first: a plugin’s hooks, tool servers and language servers run commands on this machine as you.
What a plugin holds
${CLAUDE_PLUGIN_ROOT} in any of those files is the plugin’s own directory. A plugin’s skill or agent sits under your own: your file wins a name, the project’s wins both. A plugin’s tool server with the same name as one in your config is not mounted.
Where things live
A marketplace
A git repository or a directory with.claude-plugin/marketplace.json:
github or git repository with an optional path and ref.
Write one
Put the parts in the layout above and add the directory to[plugins] dirs while you work on it. When it is ready, put it in a marketplace repository and add an entry. See Skills, Sub-agents, Hooks, MCP servers, Language servers.