Claude Code commands

Claude Code Skills and Plugins

4 min read

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.

Open the full interactive version (with copy buttons) ↗

← All guides