COMMAND-SKILL-PATTERN.md 4.1 KB

Command-Skill Pattern

Overview

Claude Code has two extension concepts:

Concept Structure Invocation Metadata
Command Single .md file /command Minimal (description)
Skill Directory with SKILL.md /skillname or keywords Rich (allowed-tools, depends-on, triggers)

Skills get slash-hint discovery via trigger keywords in their description and load on-demand, making them more efficient for complex functionality.

Architecture: Skills First

Most functionality lives in skills, not commands. Only session management and experimental features remain as commands.

commands/           # Minimal (3 files)
  sync.md           # Session bootstrap
  save.md           # Session persistence
  canvas.md         # Experimental TUI

skills/             # Everything else (38 directories)
  explain/
    SKILL.md        # Core logic + expert routing
  testgen/
    SKILL.md        # Core logic
    frameworks.md   # Language-specific examples
  review/
    SKILL.md        # Core logic
  spawn/
    SKILL.md        # Agent generation
  atomise/
    SKILL.md        # AoT reasoning
  setperms/
    SKILL.md        # Tool permissions
  introspect/
    SKILL.md        # Session log analysis
  ...

Skill Structure

SKILL.md

---
name: explain
description: "Deep explanation of complex code. Triggers on: explain, deep dive, how does X work, architecture."
allowed-tools: "Read Glob Grep Bash Task"
compatibility: "Uses ast-grep, tokei if available."
depends-on: []
related-skills: ["structural-search", "code-stats"]
---

# Skill Name

[Core logic, execution steps, patterns]

Optional Reference Files

skills/testgen/
  SKILL.md              # Core logic
  frameworks.md         # Go, Rust, Python, TS examples (loaded on demand)
  visual-testing.md     # Chrome DevTools integration (loaded on demand)

Benefits

  1. Context efficiency - Skills load on-demand via trigger keywords
  2. Rich metadata - allowed-tools, depends-on, related-skills
  3. Slash discovery - Trigger keywords enable /skillname hints
  4. Scalability - Add reference files without bloating core
  5. Maintainability - Focused files, clear structure

When to Use Commands

Scenario Use
Session management Command (sync, save)
Experimental/WIP Command (canvas)
Everything else Skill

When to Use Skills

Scenario Use
Needs trigger-based discovery Skill
Needs explicit tool permissions Skill
Needs reference files Skill
Needs dependency tracking Skill
Complex multi-step workflow Skill

Skill Invocation

Skills can be invoked multiple ways:

  1. Direct slash: /explain, /testgen, /review
  2. Trigger keywords: "explain this code", "generate tests", "review changes"
  3. Skill tool: Explicit Skill tool invocation with args

Current Skills (Converted from Commands)

Skill Purpose Trigger Keywords
explain Deep code explanation explain, deep dive, how does X work
spawn Agent generation spawn agent, create agent, new expert
atomise AoT reasoning atomise, complex reasoning, decompose
setperms Tool permissions setperms, init tools, setup project
introspect Session log analysis introspect, session history, what did we do
review Code review code review, review changes, check code
testgen Test generation generate tests, write tests, add coverage

Creating New Skills

  1. Create skills/{name}/ directory
  2. Create SKILL.md with proper frontmatter:
    • name: kebab-case, matches directory
    • description: Include trigger keywords
    • allowed-tools: Space-separated list
  3. Add optional reference files as needed
  4. Add to plugin.json under components.skills

Migration from Commands

If you have a command that should be a skill:

  1. Create skills/{name}/SKILL.md
  2. Move content, add frontmatter with triggers
  3. Delete commands/{name}.md
  4. Update plugin.json:
    • Remove from components.commands
    • Add to components.skills