Files
claude-engineering-plugin/plugins/compound-engineering/skills/create-agent-skills/references/official-spec.md
Kieran Klaassen f744b797ef Reduce context token usage by 79% — fix silent component exclusion (#161)
* Update create-agent-skills to match 2026 official docs, add /triage-prs command

- Rewrite SKILL.md to document that commands and skills are now merged
- Add new frontmatter fields: disable-model-invocation, user-invocable, context, agent
- Add invocation control table and dynamic context injection docs
- Fix skill-structure.md: was incorrectly recommending XML tags over markdown headings
- Update official-spec.md with complete 2026 specification
- Add local /triage-prs command for PR triage workflow
- Add PR triage plan document

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* [2.31.0] Reduce context token usage by 79%, include recent community contributions

The plugin was consuming 316% of Claude Code's description character budget
(~50,500 chars vs 16,000 limit), causing components to be silently excluded.
Now at 65% (~10,400 chars) with all components visible.

Changes:
- Trim all 29 agent descriptions (move examples to body)
- Add disable-model-invocation to 18 manual commands
- Add disable-model-invocation to 6 manual skills
- Include recent community contributions in changelog
- Fix component counts (29 agents, 24 commands, 18 skills)

Contributors: @trevin, @terryli, @robertomello, @zacwilliams,
@aarnikoskela, @samxie, @davidalley

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix: keep disable-model-invocation off commands called by /lfg, rename xcode-test

- Remove disable-model-invocation from test-browser, feature-video,
  resolve_todo_parallel — these are called programmatically by /lfg and /slfg
- Rename xcode-test to test-xcode to match test-browser naming convention

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix: keep git-worktree skill auto-invocable (used by /workflows:work)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(converter): support disable-model-invocation frontmatter

Parse disable-model-invocation from command and skill frontmatter.
Commands/skills with this flag are excluded from OpenCode command maps
and Codex prompt/skill generation, matching Claude Code behavior where
these components are user-only invocable.

Bump converter version to 0.3.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 22:28:51 -06:00

4.9 KiB

Official Skill Specification (2026)

Source: code.claude.com/docs/en/skills

Commands and Skills Are Merged

Custom slash commands have been merged into skills. A file at .claude/commands/review.md and a skill at .claude/skills/review/SKILL.md both create /review and work the same way. Existing .claude/commands/ files keep working. Skills add optional features: a directory for supporting files, frontmatter to control invocation, and automatic context loading.

If a skill and a command share the same name, the skill takes precedence.

SKILL.md File Structure

Every skill requires a SKILL.md file with YAML frontmatter followed by standard markdown instructions.

---
name: your-skill-name
description: What it does and when to use it
---

# Your Skill Name

## Instructions
Clear, step-by-step guidance.

## Examples
Concrete examples of using this skill.

Complete Frontmatter Reference

All fields are optional. Only description is recommended.

Field Required Description
name No Display name. Lowercase letters, numbers, hyphens only (max 64 chars). Defaults to directory name if omitted.
description Recommended What it does AND when to use it (max 1024 chars). Claude uses this to decide when to apply the skill.
argument-hint No Hint shown during autocomplete. Example: [issue-number] or [filename] [format]
disable-model-invocation No Set true to prevent Claude from auto-loading. Use for manual workflows. Default: false
user-invocable No Set false to hide from / menu. Use for background knowledge. Default: true
allowed-tools No Tools Claude can use without permission prompts. Example: Read, Bash(git *)
model No Model to use: haiku, sonnet, or opus
context No Set fork to run in isolated subagent context
agent No Subagent type when context: fork. Options: Explore, Plan, general-purpose, or custom agent name
hooks No Hooks scoped to this skill's lifecycle

Invocation Control

Frontmatter User can invoke Claude can invoke When loaded into context
(default) Yes Yes Description always in context, full skill loads when invoked
disable-model-invocation: true Yes No Description not in context, full skill loads when you invoke
user-invocable: false No Yes Description always in context, full skill loads when invoked

Skill Locations & Priority

Enterprise (highest priority) → Personal → Project → Plugin (lowest priority)
Type Path Applies to
Enterprise See managed settings All users in organization
Personal ~/.claude/skills/<name>/SKILL.md You, across all projects
Project .claude/skills/<name>/SKILL.md Anyone working in repository
Plugin <plugin>/skills/<name>/SKILL.md Where plugin is enabled

Plugin skills use a plugin-name:skill-name namespace, so they cannot conflict with other levels.

How Skills Work

  1. Discovery: Claude loads only name and description at startup (2% of context window budget)
  2. Activation: When your request matches a skill's description, Claude loads the full content
  3. Execution: Claude follows the skill's instructions

String Substitutions

Variable Description
$ARGUMENTS All arguments passed when invoking
$ARGUMENTS[N] Specific argument by 0-based index
$N Shorthand for $ARGUMENTS[N]
${CLAUDE_SESSION_ID} Current session ID

Dynamic Context Injection

The !`command` syntax runs shell commands before content is sent to Claude:

## Context
- Current branch: !`git branch --show-current`
- PR diff: !`gh pr diff`

Commands execute immediately and their output replaces the placeholder. Claude only sees the final result.

Progressive Disclosure

my-skill/
├── SKILL.md           # Entry point (required)
├── reference.md       # Detailed docs (loaded when needed)
├── examples.md        # Usage examples (loaded when needed)
└── scripts/
    └── helper.py      # Utility script (executed, not loaded)

Keep SKILL.md under 500 lines. Link to supporting files:

For API details, see [reference.md](reference.md).

Running in a Subagent

Add context: fork to run in isolation:

---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---

Research $ARGUMENTS thoroughly...

The skill content becomes the subagent's prompt. It won't have access to conversation history.

Distribution

  • Project skills: Commit .claude/skills/ to version control
  • Plugins: Add skills/ directory to plugin
  • Enterprise: Deploy organization-wide through managed settings