* 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>
4.3 KiB
4.3 KiB
Skill Structure Reference
Skills have three structural components: YAML frontmatter (metadata), standard markdown body (content), and progressive disclosure (file organization).
Body Format
Use standard markdown headings for structure. Keep markdown formatting within content (bold, italic, lists, code blocks, links).
---
name: my-skill
description: What it does and when to use it
---
# Skill Name
## Quick Start
Immediate actionable guidance...
## Instructions
Step-by-step procedures...
## Examples
Concrete usage examples...
## Guidelines
Rules and constraints...
Recommended Sections
Every skill should have:
- Quick Start - Immediate, actionable guidance (minimal working example)
- Instructions - Core step-by-step guidance
- Success Criteria - How to know it worked
Add based on complexity:
- Context - Background/situational information
- Workflow - Multi-step procedures
- Examples - Concrete input/output pairs
- Advanced Features - Deep-dive topics (link to reference files)
- Anti-Patterns - Common mistakes to avoid
- Guidelines - Rules and constraints
YAML Frontmatter
Required/Recommended Fields
---
name: skill-name-here
description: What it does and when to use it (specific triggers included)
---
Name Field
Validation rules:
- Maximum 64 characters
- Lowercase letters, numbers, hyphens only
- Must match directory name
- No reserved words: "anthropic", "claude"
Examples:
triage-prsdeploy-productionreview-codesetup-stripe-payments
Avoid: helper, utils, tools, generic names
Description Field
Validation rules:
- Maximum 1024 characters
- Include what it does AND when to use it
- Third person voice
Good:
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
Bad:
description: Helps with documents
Optional Fields
| Field | Description |
|---|---|
argument-hint |
Usage hints. Example: [issue-number] |
disable-model-invocation |
true to prevent auto-loading. Use for side-effect workflows. |
user-invocable |
false to hide from / menu. Use for background knowledge. |
allowed-tools |
Tools without permission prompts. Example: Read, Bash(git *) |
model |
haiku, sonnet, or opus |
context |
fork for isolated subagent execution |
agent |
Subagent type: Explore, Plan, general-purpose, or custom |
Naming Conventions
Use descriptive names that indicate purpose:
| Pattern | Examples |
|---|---|
| Action-oriented | triage-prs, deploy-production, review-code |
| Domain-specific | setup-stripe-payments, manage-facebook-ads |
| Descriptive | git-worktree, frontend-design, dhh-rails-style |
Progressive Disclosure
Keep SKILL.md under 500 lines. Split into reference files:
my-skill/
├── SKILL.md # Entry point (required, overview + navigation)
├── reference.md # Detailed docs (loaded when needed)
├── examples.md # Usage examples (loaded when needed)
└── scripts/
└── helper.py # Utility script (executed, not loaded)
Rules:
- Keep references one level deep from SKILL.md
- Add table of contents to reference files over 100 lines
- Use forward slashes in paths:
scripts/helper.py - Name files descriptively:
form_validation_rules.mdnotdoc2.md
Validation Checklist
Before finalizing:
- YAML frontmatter valid (name matches directory, description specific)
- Uses standard markdown headings (not XML tags)
- Has Quick Start, Instructions, and Success Criteria sections
disable-model-invocation: trueif skill has side effects- SKILL.md under 500 lines
- Reference files linked properly from SKILL.md
- File paths use forward slashes
- Tested with real usage
Anti-Patterns
- XML tags in body - Use standard markdown headings
- Vague descriptions - Be specific with trigger keywords
- Deep nesting - Keep references one level from SKILL.md
- Missing invocation control - Side-effect workflows need
disable-model-invocation: true - Inconsistent naming - Directory name must match
namefield - Windows paths - Always use forward slashes