home / skills / melodic-software / claude-code-plugins / command-development

command-development skill

/plugins/claude-ecosystem/skills/command-development

npx playbooks add skill melodic-software/claude-code-plugins --skill command-development

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
17.0 KB
---
name: command-development
description: Central authority for Claude Code slash commands. Covers built-in commands, custom slash commands (project and personal), plugin commands, MCP slash commands, Skill tool (unified for commands and skills), frontmatter configuration, arguments ($ARGUMENTS, $1, $2), bash execution, file references, namespacing, and skills vs slash commands comparison. Assists with creating custom commands, configuring command behavior, understanding command types, and troubleshooting command issues. Delegates 100% to docs-management skill for official documentation.
user-invocable: false
allowed-tools: Read, Glob, Grep, Skill
---

# Slash Commands Meta Skill

> ## 🚨 MANDATORY: Invoke docs-management First
>
> **STOP - Before providing ANY response about slash commands:**
>
> 1. **INVOKE** `docs-management` skill
> 2. **QUERY** for the user's specific topic
> 3. **BASE** all responses EXCLUSIVELY on official documentation loaded
>
> **Skipping this step results in outdated or incorrect information.**
>
> ### Verification Checkpoint
>
> Before responding, verify:
>
> - [ ] Did I invoke docs-management skill?
> - [ ] Did official documentation load?
> - [ ] Is my response based EXCLUSIVELY on official docs?
>
> If ANY checkbox is unchecked, STOP and invoke docs-management first.

## Overview

Central authority for Claude Code slash commands. This skill uses **100% delegation to docs-management** - it contains NO duplicated official documentation.

**Architecture:** Pure delegation with keyword registry. All official documentation is accessed via docs-management skill queries.

## When to Use This Skill

**Keywords:** slash commands, custom commands, built-in commands, project commands, personal commands, plugin commands, MCP commands, Skill tool, command frontmatter, allowed-tools, argument-hint, $ARGUMENTS, bash execution, file references, namespacing, skills vs commands

**Use this skill when:**

- Creating custom slash commands
- Understanding built-in commands (/init, /compact, /memory, etc.)
- Configuring command frontmatter (allowed-tools, description, model)
- Using arguments in commands ($ARGUMENTS, $1, $2)
- Executing bash commands in slash commands
- Referencing files in commands (@file syntax)
- Understanding namespacing and organization
- Working with plugin commands
- Using MCP prompts as slash commands
- Configuring Skill tool permissions for commands
- Deciding between skills vs slash commands
- Troubleshooting command issues

## Keyword Registry for docs-management Queries

Use these keywords when querying docs-management skill for official documentation:

### Core Concepts

| Topic | Keywords |
| --- | --- |
| Overview | "slash commands", "command overview" |
| Built-in Commands | "built-in slash commands", "built-in commands table" |
| Custom Commands | "custom slash commands", "command creation" |

### Command Types

| Topic | Keywords |
| --- | --- |
| Project Commands | "project commands", ".claude/commands" |
| Personal Commands | "personal commands", "~/.claude/commands" |
| Plugin Commands | "plugin commands", "plugin slash commands" |
| MCP Commands | "MCP slash commands", "mcp__server__prompt" |
| MCP Permissions | "MCP permissions wildcards", "mcp__servername", "approve all tools" |

### Configuration

| Topic | Keywords |
| --- | --- |
| Frontmatter | "command frontmatter", "allowed-tools", "argument-hint", "description" |
| Model Selection | "command model", "model frontmatter" |
| Tool Restrictions | "allowed-tools commands", "command permissions" |

### Features

| Topic | Keywords |
| --- | --- |
| Arguments | "$ARGUMENTS", "command arguments", "$1 $2 positional" |
| Bash Execution | "bash command execution", "! prefix commands" |
| File References | "file references commands", "@ prefix files" |
| Namespacing | "command namespacing", "subdirectory commands" |
| Thinking Mode | "thinking mode commands", "extended thinking slash" |

### Skill Tool (Unified)

> **Note:** The `SlashCommand` tool has been unified into the `Skill` tool. Both slash commands and agent skills are now invoked via the single `Skill` tool. Update any existing permission rules from `SlashCommand` to `Skill`.

| Topic | Keywords |
| --- | --- |
| Tool Overview | "Skill tool", "programmatic command execution", "unified Skill tool" |
| Permissions | "Skill tool permission rules", "disable Skill tool" |
| Character Budget | "character budget limit", "SLASH_COMMAND_TOOL_CHAR_BUDGET", "15000 characters" |
| Disable Commands | "disable-model-invocation", "disable specific commands" |

### Comparisons

| Topic | Keywords |
| --- | --- |
| Skills vs Commands | "skills vs slash commands", "when to use commands vs skills" |

## Quick Decision Tree

**What do you want to do?**

1. **Create a custom command** -> Query docs-management: "custom slash commands", "command creation"
2. **Configure command frontmatter** -> Query docs-management: "command frontmatter", "allowed-tools"
3. **Use arguments in commands** -> Query docs-management: "$ARGUMENTS", "command arguments"
4. **Execute bash in commands** -> Query docs-management: "bash command execution", "! prefix"
5. **Reference files in commands** -> Query docs-management: "file references commands", "@ prefix"
6. **Understand namespacing** -> Query docs-management: "command namespacing", "subdirectory commands"
7. **Work with plugin commands** -> Query docs-management: "plugin commands", "plugin slash commands"
8. **Use MCP as commands** -> Query docs-management: "MCP slash commands", "mcp__server__prompt"
9. **Configure Skill tool for commands** -> Query docs-management: "Skill tool", "Skill tool permissions"
10. **Choose skills vs commands** -> Query docs-management: "skills vs slash commands"
11. **View built-in commands** -> Query docs-management: "built-in slash commands table"
12. **Troubleshoot command issues** -> Query docs-management: "slash commands troubleshooting" + specific issue
13. **Configure MCP command permissions** -> Query docs-management: "MCP permissions wildcards", "mcp__servername"

## Topic Coverage

### Built-in Commands

- Complete command reference table
- Common commands (/init, /compact, /memory, /clear, /cost)
- Session management (/resume, /exit, /rewind)
- Configuration (/config, /permissions, /model)
- MCP and plugins (/mcp, /plugin, /agents)

### Custom Commands

- Project commands (.claude/commands/)
- Personal commands (~/.claude/commands/)
- Command file format (markdown)
- Naming conventions (filename = command name)

### Command Frontmatter

- allowed-tools: Tool restrictions
- argument-hint: Argument display hints
- description: Command description
- model: Model selection
- disable-model-invocation: Prevent Skill tool access

> **⚠️ YAML Parsing Warning (argument-hint):**
>
> If your `argument-hint` contains colons inside brackets (e.g., `[optional: text]`), you MUST quote the value:
>
> ```yaml
> # WRONG - crashes with React error #31
> argument-hint: [optional: target files]
>
> # CORRECT - quoted to force string interpretation
> argument-hint: "[optional: target files]"
> ```
>
> YAML interprets `[key: value]` as an array containing an object, which crashes Claude Code's React UI.
> Known issue: GitHub #16990, #16910. **Always quote argument-hint if it contains `:`**
>
> **Length Guidelines (argument-hint):**
>
> Keep argument-hints concise for readability in the Claude Code UI:
>
> | Length | Status | Action |
> | --- | --- | --- |
> | ≤60 chars | Ideal | No action needed |
> | 61-80 chars | Acceptable | Consider shortening |
> | 81-120 chars | Long | Review for clarity |
> | >120 chars | Too long | Must shorten |
>
> **Shortening Strategies:**
>
> - Use `[flags]` or `[options]` for many boolean flags
> - Use `<type>` placeholder instead of listing all `a|b|c|d` values
> - Omit rarely-used optional arguments
> - Group related options: `[scope]` instead of `files|staged|pr`
>
> **Examples:**
>
> ```yaml
> # Too long (150+ chars) - lists every option
> argument-hint: [files or 'staged' or 'pr' or '--parallel' or '--sequential' or '--batched']
>
> # Ideal (55 chars) - uses groupings
> argument-hint: "[scope] [--profile <name>] [flags]"
> ```

### Arguments

- $ARGUMENTS: All arguments as single string
- $1, $2, $3...: Positional arguments
- Combining argument patterns
- Default values and handling

### Bash Execution

- ! prefix for inline bash
- Including command output in context
- Required allowed-tools configuration
- Git commit example patterns

### File References

- @ prefix for file inclusion
- Single and multiple file references
- Path resolution behavior

### Namespacing

- Subdirectory organization
- (project) vs (user) indicators
- Conflict resolution rules
- Namespace display in /help

### Plugin Commands

- Plugin command structure
- Namespaced invocation (/plugin-name:command)
- Plugin marketplace integration
- Command distribution

### MCP Commands

- MCP prompt to command mapping
- /mcp__server__prompt pattern
- Dynamic discovery
- Authentication and permissions

### Skill Tool Configuration (for Commands)

- Programmatic command execution via unified Skill tool
- Supported command requirements
- Permission rules (exact match, prefix match)
- Character budget limits
- Disabling tool access

### Skills vs Slash Commands

- Complexity comparison
- Structure differences
- Discovery patterns (explicit vs automatic)
- When to use each approach

## Delegation Patterns

### Standard Query Pattern

```text
User asks: "How do I create a custom command?"

1. Invoke docs-management skill
2. Use keywords: "custom slash commands", "command creation"
3. Load official documentation
4. Provide guidance based EXCLUSIVELY on official docs
```

### Multi-Topic Query Pattern

```text
User asks: "I want a command that runs git status and uses arguments"

1. Invoke docs-management skill with multiple queries:
   - "bash command execution", "! prefix commands"
   - "$ARGUMENTS", "command arguments"
   - "allowed-tools commands"
2. Synthesize guidance from official documentation
```

### Comparison Query Pattern

```text
User asks: "Should I use a skill or slash command for code review?"

1. Invoke docs-management skill
2. Use keywords: "skills vs slash commands", "when to use commands vs skills"
3. Guide user through decision criteria from official docs
```

## Troubleshooting Quick Reference

| Issue | Keywords for docs-management |
| --- | --- |
| Command not found | "custom slash commands", ".claude/commands" |
| Arguments not working | "$ARGUMENTS", "positional arguments" |
| Bash not executing | "bash command execution", "allowed-tools" |
| Files not included | "file references commands", "@ prefix" |
| Skill tool not invoking command | "Skill tool", "disable-model-invocation" |
| Namespace conflicts | "command namespacing", "conflict resolution" |
| MCP command missing | "MCP slash commands", "dynamic discovery" |
| MCP permission denied | "MCP permissions wildcards", "mcp__servername" |
| React error #31 on command | Quote `argument-hint` if it contains `:` inside brackets |

## Plugin Commands (claude-ecosystem)

This plugin provides slash commands in `plugins/claude-ecosystem/commands/`:

- `/claude-ecosystem:scrape-docs` - Scrape Claude documentation from official sources
- `/claude-ecosystem:refresh-docs` - Refresh local index without network scraping
- `/claude-ecosystem:validate-docs` - Validate index integrity and detect drift

**Discovery:**

- Use `/help` to see all available commands (built-in + plugin)
- Plugin commands can be invoked with or without the `claude-ecosystem:` prefix (when no conflicts)

## Naming Conventions

### Official Patterns (from Built-in Commands)

Claude Code's built-in commands use these patterns:

| Pattern | Use Case | Examples |
| --- | --- | --- |
| **Verb-noun kebab-case** | Action commands | `/add-dir`, `/release-notes`, `/security-review` |
| **Single noun** | State/display commands | `/status`, `/permissions`, `/config`, `/cost` |
| **Single verb** | Simple actions | `/clear`, `/exit`, `/login`, `/resume` |

**Key insight:** Built-in commands do NOT use dot-namespacing or noun-first grouping.

### Recommended Approach

**For action commands (scrape, refresh, validate, create, etc.):**

Use **verb-noun kebab-case**: `/scrape-docs`, `/refresh-docs`, `/validate-docs`

**For display/status commands (built-in examples):**

Use **single noun**: `/status`, `/config`, `/todos`

**For simple utilities (built-in examples):**

Use **single verb or short descriptive name**: `/clear`, `/compact`, `/review`

### Plugin Command Namespacing

Plugin commands get automatic namespacing via `/plugin-name:command`:

- `/claude-ecosystem:scrape-docs` (fully qualified)
- `/scrape-docs` (short form when no conflicts)

This means you don't need to embed the domain in the command name—the plugin prefix handles disambiguation.

### File Naming

Command files use the exact command name with `.md` extension:

- `/scrape-docs` -> `commands/scrape-docs.md`
- `/refresh-docs` -> `commands/refresh-docs.md`
- `/validate-docs` -> `commands/validate-docs.md`

## Auditing Commands

This skill provides the validation criteria used by the `command-auditor` agent for formal audits.

### Audit Resources

| Resource | Location | Purpose |
| --- | --- | --- |
| Validation Checklist | `references/validation-checklist.md` | Pre-creation verification checklist |
| Scoring Rubric | `references/validation-checklist.md#audit-scoring-rubric` | Formal audit scoring criteria |

### Scoring Categories

| Category | Points | Key Criteria |
| --- | --- | --- |
| File Structure | 20 | Correct location, .md extension, kebab-case naming |
| YAML Frontmatter | 25 | Description, allowed-tools, argument-hint present |
| Description Quality | 20 | Clear, concise, action-oriented, when-to-use guidance |
| Tool Configuration | 15 | Not over/under restricted for purpose |
| Content Quality | 20 | Well-structured, proper argument handling, file references |

**Thresholds:** 85+ = PASS, 70-84 = PASS WITH WARNINGS, <70 = FAIL

### Related Agent

The `command-auditor` agent (Haiku model) performs formal audits using this skill:

- Auto-loads this skill via `skills: command-development`
- Uses validation checklist and scoring rubric
- Generates structured audit reports
- Invoked by `/audit-commands` command

### External Technology Validation

When auditing commands that use external technologies (scripts, packages, runtimes), the auditor MUST validate claims using MCP servers before flagging findings.

**Technologies Requiring MCP Validation:**

- .NET/C# scripts: Validate with microsoft-learn + perplexity
- Node.js/npm packages: Validate with context7 + perplexity
- Python scripts/packages: Validate with context7 + perplexity
- Shell scripts: Validate with perplexity
- Any version-specific claims: ALWAYS validate with perplexity

**Validation Rule:**

Never flag a technology usage as incorrect without first:

1. Querying appropriate MCP server(s) for current documentation
2. Verifying with perplexity for recent changes (especially .NET 10+)
3. Documenting MCP sources in the finding

**Stale Data Warning:**

- microsoft-learn can return cached/outdated documentation
- ALWAYS pair microsoft-learn with perplexity for version verification
- Trust perplexity for version numbers and recently-released features

## References

**Official Documentation (via docs-management skill):**

- Primary: "slash-commands" documentation
- Related: "skills", "plugins", "MCP", "interactive-mode"

**This Plugin:**

- Plugin commands: `plugins/claude-ecosystem/commands/`
- Plugin skills: `plugins/claude-ecosystem/skills/`

## Version History

- **v1.0.5** (2026-01-10): Added YAML parsing warning for argument-hint
  - Documented React error #31 caused by unquoted `[key: value]` in argument-hint
  - Added troubleshooting entry for React error #31
  - Known issue: GitHub #16990, #16910
- **v1.0.4** (2026-01-09): Updated for Claude Code v2.1.x SlashCommand → Skill tool unification
  - Replaced all SlashCommand tool references with unified Skill tool
  - Added migration note explaining the unification
  - Updated keyword registry for new tool naming
- **v1.0.3** (2025-11-30): Revised naming conventions based on official docs analysis
  - Updated naming conventions to align with built-in command patterns
  - Recommended verb-noun kebab-case for action commands
  - Removed dot-namespacing recommendation (not used by built-in commands)
  - Documented plugin command automatic namespacing
- **v1.0.2** (2025-11-27): Added Repository Naming Convention
  - Added comprehensive naming convention section
  - Documented dot-namespacing for command families
  - Documented flat kebab-case for standalone commands
  - Added rationale and decision guidance
  - Added file naming examples
- **v1.0.1** (2025-11-27): Audit and enhancement
  - Added MCP permissions wildcards keywords
  - Added character budget keywords
  - Added MCP permissions decision path to quick decision tree
  - Added MCP permission denied troubleshooting entry
- **v1.0.0** (2025-11-26): Initial release
  - Pure delegation architecture
  - Comprehensive keyword registry
  - Quick decision tree
  - Topic coverage for all slash command features
  - Troubleshooting quick reference

---

## Last Updated

**Date:** 2026-01-10
**Model:** claude-opus-4-5-20251101