Back to skills
extension
Category: AI Agent CapabilitiesNo API key required

invocable-development

Create, validate, and audit portable invocable components (commands and skills) for reusable capabilities. Use when building, auditing, or reviewing component quality. Not for agents, hooks, or MCP servers.

personAuthor: jakexiaohubgithub

Invocable Development

<mission_control> <objective>Create portable, self-contained invocable components that work in isolation without external dependencies</objective> <success_criteria>Component created with valid frontmatter, clear description, and appropriate organization for complexity level</success_criteria> <standards_gate> MANDATORY: Read skills documentation BEFORE creating components:

  • Frontmatter fields → https://code.claude.com/docs/en/skills.md
  • Frontmatter patterns → references/frontmatter-reference.md
  • Progressive disclosure → references/progressive-disclosure.md
  • Quality framework → references/quality-framework.md </standards_gate> </mission_control>

<trigger>When creating commands or skills. Not for: agents, hooks, or MCP servers (use agent-development, hook-development, mcp-development).</trigger>

The Fundamental Truth

Commands and Skills are the same system.

Both use:

  • Same frontmatter format
  • Same invocation mechanism
  • Same auto-invoke behavior
  • Same portability requirements
  • Same quality standards

The only difference is organizational choice.


Command vs Skill: Organizational Choice

Both commands and skills are auto-invocable tools - AI and users can invoke either based on description and context.

The difference is structural and organizational:

| Aspect | Commands | Skills | | -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------- | | Structure | Single .md file | Folder with SKILL.md + optional workflows/ + references/ | | Naming | Folder nesting creates /category:command or /category:subgroup:command | Flat: skills/engineering-lifecycle/SKILL.md | | File count | One file | Multiple files (main + optional workflows/references) | | Use case | Simple operations, categorization, or router patterns | Domain knowledge, progressive disclosure, complex workflows |

Choose Command When

  • Single file is sufficient
  • Folder nesting provides useful categorization
  • Content fits in one file (~500-1500 words)
  • Quick access via /category:command naming is valuable
  • Router pattern: Grouping related operations under a namespace

Choose Skill When

  • Content benefits from multiple files
  • SKILL.md contains full philosophy (~500 lines flexible for context)
  • Ultra-situational content needs references/ (API specs, code snippets, troubleshooting)
  • Multiple workflow files provide better organization
  • Examples or scripts should be bundled
  • Domain expertise that warrants structured documentation

Command Structure

Commands are single .md files. Folder depth determines the invocation name:

Standard Category Pattern (2 levels)

commands/
├── build/
│   └── fix.md         → /build:fix
├── analysis/
│   └── diagnose.md    → /analysis:diagnose
└── planning/
    └── create.md      → /planning:create

Router Pattern (3 levels)

Use deeper nesting when you need a namespace that groups related operations:

commands/
└── toolkit/
    ├── build/
    │   ├── command.md    → /toolkit:build:command
    │   ├── skill.md      → /toolkit:build:skill
    │   └── package.md    → /toolkit:build:package
    ├── audit/
    │   ├── command.md    → /toolkit:audit:command
    │   └── skill.md      → /toolkit:audit:skill
    └── critique/
        ├── command.md    → /toolkit:critique:command
        └── skill.md      → /toolkit:critique:skill

Router Pattern Characteristics:

  • 3-level structure: commands/namespace/action/component.md
  • Invokes as: /namespace:action:component
  • Purpose: Group related operations by action type
  • Each command: Still a single file with self-contained logic
  • Not a skill: No SKILL.md, workflows/, or references/ folders

When to use Router Pattern:

  • Multiple related operations that share a common namespace
  • Toolkit-style organization (e.g., /toolkit:build:*, /toolkit:audit:*)
  • Action-based categorization provides value
  • You want to group operations without creating a skill

Key distinction: Router commands are still single-file commands. The folder structure is purely organizational - no "router skill" coordinates them.


Skill Structure

skill-name/
├── SKILL.md           # Full philosophy, patterns, workflows (~400-600 lines)
├── workflows/         # Optional: separate workflow files
│   ├── workflow-1.md
│   └── workflow-2.md
├── references/        # Optional: ultra-situational lookup (2-3 files)
│   ├── api-spec.md    # API endpoints, field definitions
│   ├── examples.md     # Ready-to-copy code snippets
│   └── troubleshooting.md  # Edge cases, debugging
├── templates/         # Optional: reusable output structures
│   └── template.md
├── scripts/           # Optional: executable automation scripts
│   └── script.sh
└── examples/          # Optional: working demonstrations
    └── example.md

Folder structure enables progressive disclosure - SKILL.md contains full philosophy and patterns, references/ contains ultra-situational lookup material only.


Both Are Auto-Invocable

Commands and skills work the same way:

  • AI invokes based on description keywords
  • Users invoke via /name or /category:name
  • Same frontmatter format
  • Same portability requirements
  • Same quality standards

The choice is about organization, not capability.


Universal Frontmatter

Both commands and skills use the same frontmatter:

---
name: component-name
description: "What it does. Use when [trigger condition]."
argument-hint: "[arg1] [arg2]"
---

Field Reference

| Field | Required | Description | | --------------- | ----------- | ------------------------------------------------------------------- | | name | Yes | Unique identifier (max 64 chars, lowercase letters/numbers/hyphens) | | description | Recommended | What the component does and when to use it (What-When-Not format) | | argument-hint | No | Hint shown during autocomplete indicating expected arguments |

Description Guidelines

  • Third person (never "I can" or "You can")
  • What-When-Not format
  • No references to other commands/skills by name
  • Clear and actionable

Argument Hint Guidelines

Purpose: Show users what arguments are expected during autocomplete / invocation.

Format: Use bracket notation for placeholders: [arg1] [arg2]

Examples:

# Single required argument
argument-hint: "[issue-number]"

# Multiple arguments
argument-hint: "[filename] [format]"

# Optional arguments (use ? suffix)
argument-hint: "[filename] [format?]"

# Variadic arguments (use ...)
argument-hint: "[files...]"

# Combined patterns
argument-hint: "[pattern] [path?]"

Best Practices:

  • Keep hints concise (use short, descriptive placeholder names)
  • Use ? suffix for optional arguments
  • Use ... suffix for variadic arguments (accepts multiple values)
  • Align hint with actual $ARGUMENTS usage in skill body
  • Order hints to match argument position: $0, $1, $2...

When to Use:

  • Skills/commands that accept specific arguments
  • Workflow components with clear expected inputs
  • When argument structure isn't obvious from description alone
  • Skip for simple boolean flags or context-only operations

Name Validation Rules

  • Maximum 64 characters
  • Lowercase letters, numbers, hyphens only
  • No XML tags
  • Reserved words: "anthropic", "claude" are forbidden
  • Must match directory name exactly

Naming Conventions

Use verb-noun convention:

| Pattern | Purpose | Examples | | ----------- | -------------------------- | -------------------------------------- | | create-* | Building/authoring tools | create-agent-skills, create-hooks | | manage-* | Managing external services | manage-facebook-ads, manage-stripe | | setup-* | Configuration/integration | setup-stripe-payments, setup-meta | | analyze-* | Analysis and inspection | analyze-diagnose, analyze-security |

Avoid: Vague names (helper, utils), generic (documents, data), reserved words (anthropic-helper, claude-tools).


Universal UHP Structure

For complex components (especially skills), use UHP structure:

Header (MANDATORY for skills, recommended for complex commands)

# Component Name

<mission_control>
<objective>[What this achieves]</objective>
<success_criteria>[How to verify success]</success_criteria>
</mission_control>

<trigger>When [specific condition]. Not for: [exclusion cases].</trigger>

<interaction_schema>
[State flow for reasoning tasks]
</interaction_schema>

Footer (MANDATORY for skills, recommended for commands)

---

<trigger>When [specific condition]</trigger>

<critical_constraint>
MANDATORY: [Non-negotiable rule 1]
MANDATORY: [Non-negotiable rule 2]
No exceptions.
</critical_constraint>

Universal Best Practices

Portability

  • Self-contained (no external dependencies)
  • Work in isolation
  • Carry own philosophy

Autonomy

  • 80-95% autonomy (0-5 AskUserQuestion rounds per session)
  • Clear triggering conditions
  • Concrete patterns and examples

Quality

  • Imperative form (no "you/your")
  • Clear examples (working, not pseudo-code)
  • Single source of truth

Templates Folder

Templates are reusable output structures in templates/ that Claude copies and fills:

skill-name/
└── templates/
    ├── plan-template.md
    ├── spec-template.md
    └── report-template.md

Use templates when output should have consistent structure. Template syntax uses {{placeholder}}:

# {{PROJECT_NAME}} Implementation Plan

## Overview

{{1-2 sentence summary}}

## Goals

- {{Primary goal}}

Scripts Folder

Scripts are executable code in scripts/ that Claude runs as-is:

skill-name/
└── scripts/
    ├── deploy.sh
    └── validate.py

Well-structured scripts include:

  • Clear purpose comment at top
  • Input validation
  • Error handling
  • Idempotent operations
  • set -euo pipefail for bash

Security: Never embed secrets; use environment variables.


Command Orchestration Pattern (Optional)

This is an optional orchestration archetype, not a requirement.

One component can orchestrate another for workflow automation.

Pattern: Component A orchestrates → Component B

  • Component A (typically command): Orchestrates workflow, manages interaction flow, coordinates multiple steps
  • Component B (typically skill): Contains detailed knowledge, patterns, or procedures to execute

Why this works: Both are auto-invocable. A command can invoke a skill, which can invoke other components, creating flexible workflows.

Critical constraint: Component B MUST NOT reference Component A. This ensures portability - Component B works independently.

See references/command-orchestration.md for complete pattern documentation.



Dynamic Sourcing Protocol

<fetch_protocol> MANDATORY FETCH: Before creating commands or skills, fetch the content from:

  • https://code.claude.com/docs/en/skills.md (frontmatter reference)
  • https://agentskills.io/specification.md (Agent Skills specification)

This skill builds on these standards with Seed System-specific patterns and philosophy. </fetch_protocol>


Navigation

Official Documentation:

  • Frontmatter reference → https://code.claude.com/docs/en/skills.md
  • Agent Skills specification → https://agentskills.io/specification.md

Toolkit Commands

| If you need... | Command | | ------------------ | --------------------------- | | Create a command | /toolkit:build:command | | Create a skill | /toolkit:build:skill | | Create a package | /toolkit:build:package | | Audit a command | /toolkit:audit:command | | Audit a skill | /toolkit:audit:skill | | Critique (command) | /toolkit:critique:command | | Critique (skill) | /toolkit:critique:skill |


Absolute Constraints

<critical_constraint> MANDATORY: All components MUST be self-contained and work in isolation (zero .claude/rules dependency)

MANDATORY: Skills MUST include UHP header (mission_control, trigger, interaction_schema) and footer (critical_constraint)

MANDATORY: Components MUST achieve 80-95% autonomy (0-5 AskUserQuestion rounds per session)

MANDATORY: Description MUST use What-When-Not format in third person

MANDATORY: No component references another component by name in description (portability violation)

MANDATORY: If using Command Orchestration Pattern, skill MUST NOT reference invoking command

MANDATORY: Skills with context: fork MUST include <philosophy_bundle> section carrying essential behavioral rules

Philosophy Bundle Requirement (context: fork only):

Forked skills run in isolation and lose access to .claude/rules/. To maintain quality standards:

  • Identify critical behavioral rules the skill needs
  • Include <philosophy_bundle> section after main content
  • Bundle only BEHAVIORAL rules (not style, not tutorials)
  • Ensure skill works correctly in project with ZERO .claude/rules

See references/advanced-execution.md - "Philosophy Bundles" section for implementation.


<philosophy_bundle> <portability_invariant> <mandatory_rule>Every component MUST work with zero .claude/rules dependencies</mandatory_rule> <recognition_question>Would this work in a project with no .claude/rules?</recognition_question> </portability_invariant>

<quality_invariant> <iron_law>NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE</iron_law> <verification_protocol> <claims>Mark every factual claim with VERIFIED/INFERRED/UNCERTAIN</claims> <files>Read actual file before asserting "X exists"</files> <logic>Trace behavior by reading code, not just grep</logic> </verification_protocol> </quality_invariant>

<architecture_invariant> <uhp>XML for control, Markdown for data</uhp> <recency_bias>Place critical constraints at bottom of files</recency_bias> <progressive_disclosure>Tier 2 lean, Tier 3 deep</progressive_disclosure> </architecture_invariant>

<principles_invariant> <map_not_script>Provide boundaries and invariants; trust the Pilot</map_not_script> <delta_standard>Good Component = Expert Knowledge − What Claude Already Knows</delta_standard> <positive_delta>Only document knowledge Claude wouldn't already have</positive_delta> </principles_invariant> </philosophy_bundle>

No exceptions. Portability invariant must be maintained. </critical_constraint>