mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-03-18 10:53:09 +00:00
docs(plugin-dev): deprecate commands/ in favor of skills/<name>/SKILL.md (#717)
P0 follow-up for EA-471. Updates plugin-dev teaching materials to stop recommending the commands/ directory layout for new plugins: - command-development/SKILL.md: add legacy banner at top pointing to skills/ format - create-plugin.md: update scaffolding to create skills/<name>/SKILL.md instead of commands/; mark commands/ as acceptable legacy alternative; update all examples, tables, and testing instructions - example-plugin: migrate example-command to skills/example-command/SKILL.md; keep commands/example-command.md with a legacy-format note; update README to reflect new preferred structure Both formats remain loaded identically — this is a documentation change only. Refs: anthropics/apps#26827 Co-authored-by: Henry Shi <henrys@anthropic.com>
This commit is contained in:
@@ -7,32 +7,24 @@ A comprehensive example plugin demonstrating Claude Code extension options.
|
||||
```
|
||||
example-plugin/
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # Plugin metadata
|
||||
├── .mcp.json # MCP server configuration
|
||||
├── commands/
|
||||
│ └── example-command.md # Slash command definition
|
||||
└── skills/
|
||||
└── example-skill/
|
||||
└── SKILL.md # Skill definition
|
||||
│ └── plugin.json # Plugin metadata
|
||||
├── .mcp.json # MCP server configuration
|
||||
├── skills/
|
||||
│ ├── example-skill/
|
||||
│ │ └── SKILL.md # Model-invoked skill (contextual guidance)
|
||||
│ └── example-command/
|
||||
│ └── SKILL.md # User-invoked skill (slash command)
|
||||
└── commands/
|
||||
└── example-command.md # Legacy slash command format (see note below)
|
||||
```
|
||||
|
||||
## Extension Options
|
||||
|
||||
### Commands (`commands/`)
|
||||
|
||||
Slash commands are user-invoked via `/command-name`. Define them as markdown files with frontmatter:
|
||||
|
||||
```yaml
|
||||
---
|
||||
description: Short description for /help
|
||||
argument-hint: <arg1> [optional-arg]
|
||||
allowed-tools: [Read, Glob, Grep]
|
||||
---
|
||||
```
|
||||
|
||||
### Skills (`skills/`)
|
||||
|
||||
Skills are model-invoked capabilities. Create a `SKILL.md` in a subdirectory:
|
||||
Skills are the preferred format for both model-invoked capabilities and user-invoked slash commands. Create a `SKILL.md` in a subdirectory:
|
||||
|
||||
**Model-invoked skill** (activated by task context):
|
||||
|
||||
```yaml
|
||||
---
|
||||
@@ -42,6 +34,21 @@ version: 1.0.0
|
||||
---
|
||||
```
|
||||
|
||||
**User-invoked skill** (slash command — `/skill-name`):
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: skill-name
|
||||
description: Short description for /help
|
||||
argument-hint: <arg1> [optional-arg]
|
||||
allowed-tools: [Read, Glob, Grep]
|
||||
---
|
||||
```
|
||||
|
||||
### Commands (`commands/`) — legacy
|
||||
|
||||
> **Note:** The `commands/*.md` layout is a legacy format. It is loaded identically to `skills/<name>/SKILL.md` — the only difference is file layout. For new plugins, prefer the `skills/` directory format. This plugin keeps `commands/example-command.md` as a reference for the legacy layout.
|
||||
|
||||
### MCP Servers (`.mcp.json`)
|
||||
|
||||
Configure external tool integration via Model Context Protocol:
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
---
|
||||
description: An example slash command that demonstrates command frontmatter options
|
||||
description: An example slash command that demonstrates command frontmatter options (legacy format)
|
||||
argument-hint: <required-arg> [optional-arg]
|
||||
allowed-tools: [Read, Glob, Grep, Bash]
|
||||
---
|
||||
|
||||
# Example Command
|
||||
# Example Command (Legacy `commands/` Format)
|
||||
|
||||
> **Note:** This demonstrates the legacy `commands/*.md` layout. For new plugins, prefer the `skills/<name>/SKILL.md` directory format (see `skills/example-command/SKILL.md` in this plugin). Both are loaded identically — the only difference is file layout.
|
||||
|
||||
This command demonstrates slash command structure and frontmatter options.
|
||||
|
||||
|
||||
39
plugins/example-plugin/skills/example-command/SKILL.md
Normal file
39
plugins/example-plugin/skills/example-command/SKILL.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
name: example-command
|
||||
description: An example user-invoked skill that demonstrates frontmatter options and the skills/<name>/SKILL.md layout
|
||||
argument-hint: <required-arg> [optional-arg]
|
||||
allowed-tools: [Read, Glob, Grep, Bash]
|
||||
---
|
||||
|
||||
# Example Command (Skill Format)
|
||||
|
||||
This demonstrates the `skills/<name>/SKILL.md` layout for user-invoked slash commands. It is functionally identical to the legacy `commands/example-command.md` format — both are loaded the same way; only the file layout differs.
|
||||
|
||||
## Arguments
|
||||
|
||||
The user invoked this with: $ARGUMENTS
|
||||
|
||||
## Instructions
|
||||
|
||||
When this skill is invoked:
|
||||
|
||||
1. Parse the arguments provided by the user
|
||||
2. Perform the requested action using allowed tools
|
||||
3. Report results back to the user
|
||||
|
||||
## Frontmatter Options Reference
|
||||
|
||||
Skills in this layout support these frontmatter fields:
|
||||
|
||||
- **name**: Skill identifier (matches directory name)
|
||||
- **description**: Short description shown in /help
|
||||
- **argument-hint**: Hints for command arguments shown to user
|
||||
- **allowed-tools**: Pre-approved tools for this skill (reduces permission prompts)
|
||||
- **model**: Override the model (e.g., "haiku", "sonnet", "opus")
|
||||
|
||||
## Example Usage
|
||||
|
||||
```
|
||||
/example-command my-argument
|
||||
/example-command arg1 arg2
|
||||
```
|
||||
Reference in New Issue
Block a user