§03.09

Claude Code Skills and Plugins

Skills are folders with a SKILL.md. Plugins bundle skills, agents and hooks for sharing. Install one from a marketplace, then write your own.

published 06 Sept 2026 checked against docs 06 Sept 2026 4 min in Claude Code commands Markdown

On this page4 sections
  1. 1. Install a plugin
  2. 2. See what you have
  3. 3. Write a skill
  4. 4. Wrap it as a plugin

Two related features, often confused. A Skill is a folder with a SKILL.md file that Claude loads when the task matches its description. A Plugin is a shareable bundle of skills, agents, hooks, MCP servers and LSP servers, distributed through a marketplace.

1. Install a plugin

Claude Code registers the official Anthropic marketplace on first interactive launch:

/plugin install github@claude-plugins-official

What it does: installs a plugin by name@marketplace, then asks for a scope — user (all your projects), project (added to .claude/settings.json for collaborators), or local.

To browse or add another catalog:

/plugin marketplace add anthropics/claude-code

What it does: registers a marketplace from a GitHub owner/repo, a git URL, or a local path. /plugin on its own opens the manager with Discover, Installed, Marketplaces and Errors tabs.

2. See what you have

/skills

What it does: lists every skill available, from your own folders and from plugins. Plugin skills are namespaced, so commit-commands gives you /commit-commands:commit.

3. Write a skill

Skills live in ~/.claude/skills/<name>/SKILL.md (personal) or .claude/skills/<name>/SKILL.md (project). The folder name becomes the command.

---
name: changelog
description: Draft a changelog entry from the staged diff. Use when preparing a release.
disable-model-invocation: true
allowed-tools: Bash(git diff *) Bash(git log *)
---

## Staged changes

!`git diff --cached --stat`

Write one Keep a Changelog entry for the changes above. Group by Added, Changed, Fixed.

What it does: description is what Claude reads to decide when to auto-invoke; disable-model-invocation: true restricts it to manual /changelog; allowed-tools pre-approves those tools for that turn only. The !`command` syntax runs a shell command before Claude sees the file and inserts the output.

4. Wrap it as a plugin

Add a manifest at the plugin root — only plugin.json goes inside .claude-plugin/; skills/, agents/ and hooks/ sit beside it.

{
  "name": "release-tools",
  "description": "Changelog and release helpers",
  "version": "1.0.0"
}

What it does: names the plugin and its skill namespace, so the skill above becomes /release-tools:changelog.

claude --plugin-dir ./release-tools

What it does: loads the plugin for one session without installing it — the development loop. On Windows use the same flag with a Windows path. After editing, run /reload-plugins instead of restarting.


Next: create a slash command or define a subagent.

← All Claude Code commands plates · Search all guides

↑↓ move↵ openalt+↵ copy first command

Keyboard

⌘/ctrl+K or /
Search all guides
alt+↵
In search: copy the guide's first command
j / k
Move through a list of guides
c
On a guide: copy its first command
t
Toggle light / dark
?
This list