6.5 KiB
Skills Invocations
How each tool activates and invokes skills.
Invocation Patterns Overview
| Tool | Pattern | Description |
|---|---|---|
| Claude Code | Model-invoked | Agent autonomously decides based on request + description |
| Claude (claude.ai) | Auto + Model | Pre-built skills auto-activate; custom skills when relevant |
| GitHub Copilot | Model-invoked | Based on prompt + skill description |
| VS Code (Copilot) | Model-invoked | Auto-activates, follows progressive disclosure |
| OpenAI Codex | Explicit + Implicit | /skills command or $skill mentions, or model decides |
| Cursor | Model-invoked | Agent determines relevance automatically |
| Amp | Lazy-loaded | On-demand loading when relevant |
| Letta | Tool-based | Agent calls Skill tool to load into memory |
| Goose | Model-invoked | Loads skills, accesses files via file tools |
| OpenCode | Tool-based | Skills registered as dynamic tools via plugin |
Detailed Invocation Methods
Claude Code
Type: Model-invoked (autonomous)
Claude autonomously decides to use skills based on:
- Current request context
- Skill
nameanddescriptionfrom frontmatter
Contrast with slash commands:
- Skills = model-invoked (agent decides)
- Slash commands = user-invoked (explicit)
Claude (claude.ai)
Type: Automatic + Model-invoked
- Pre-built skills (document actions): Activate automatically
- Custom skills: Load when model determines relevance
GitHub Copilot
Type: Model-invoked
Copilot decides activation based on:
- User's prompt content
- Skill
descriptionfield
When activated:
SKILL.mdcontent injected into agent context
VS Code (Copilot)
Type: Model-invoked (auto-activation)
- No manual skill selection required
- Follows progressive disclosure pattern
- Model determines when skills are relevant
OpenAI Codex
Type: Explicit + Implicit
Explicit invocation:
/skillsslash command — Opens skill selector$<skill-name>mention — Reference specific skill in prompt (e.g.,$plan,$skill-creator)
Implicit invocation:
- Codex decides based on skill descriptions
- Automatic activation when task matches skill description
Surface support:
- CLI and IDE extensions support explicit invocation
- Web and iOS don't support explicit invocation yet (but can prompt Codex to use repo skills)
Built-in skills:
$plan— Research and create implementation plans$skill-creator— Bootstrap new skills$skill-installer— Download skills from GitHub
Cursor
Type: Model-invoked ("agent-decided rules")
- Agent determines relevance automatically
- No manual intervention required
- Skills applied without user selection
Constraint: Skills cannot be configured as "always apply" or manually invoked — agent-decided only.
Amp
Type: Lazy-loaded
- Skills loaded on-demand when relevant
- Described as "lazy-loaded instructions"
- No explicit invocation required
Letta (Letta Code)
Type: Tool-based
Model invocation:
- Agent calls the
Skilltool to load skills into memory - Agent decides when to load based on context
- Skill tool commands:
load,unload,refresh
Explicit invocation:
- Prompt: "Use the testing skill..." to force specific skill
/skillcommand: Extract new skill from recent work
Memory integration (Two Blocks):
skillsblock: Always visible — list of available skills (names + descriptions)loaded_skillsblock: Session state — full content of currently loaded skills- Both blocks are read-only (modified only via Skill tool)
Alternative access:
- Can read
.skills/<name>/SKILL.mddirectly for one-time preview (without loading)
Goose
Type: Model-invoked
- Loads skills when relevant
- Accesses supporting files via file tools
- Treats skills as filesystem resources
OpenCode
Type: Tool-based
opencode-skillsplugin registers skills as dynamic tools- Skills become tool-like affordances
- Agent invokes skills as it would any other tool
Invocation Pattern Comparison
Model-Invoked (Autonomous)
The agent decides when to use skills without explicit user action.
Pros:
- Seamless user experience
- Agent can combine skills as needed
- No learning curve for users
Cons:
- Less predictable
- May miss relevant skills
- User has less control
Tools: Claude Code, Claude, GitHub Copilot, VS Code, Cursor, Amp, Goose
Explicit Invocation
User directly requests skill usage via commands or mentions.
Pros:
- Predictable behavior
- User maintains control
- Clear audit trail
Cons:
- Requires user to know available skills
- More friction
- May miss opportunities
Tools: OpenAI Codex ($skill, /skills)
Tool-Based
Skills are exposed as tools the agent can call programmatically.
Pros:
- Fits existing tool-use patterns
- Clear invocation semantics
- Integrates with agent memory
Cons:
- Requires tool infrastructure
- More complex implementation
Tools: Letta, OpenCode
Progressive Disclosure in Invocation
Most tools follow a staged loading pattern:
┌─────────────────────────────────────────────────────────────┐
│ Stage 1: Index │
│ Load: name, description │
│ When: Startup / cache refresh │
├─────────────────────────────────────────────────────────────┤
│ Stage 2: Activate │
│ Load: Full SKILL.md body │
│ When: Agent decides skill is relevant │
├─────────────────────────────────────────────────────────────┤
│ Stage 3: Execute │
│ Load: scripts/, references/, assets/ │
│ When: Skill instructions reference them │
└─────────────────────────────────────────────────────────────┘
This minimizes context usage while maintaining full capability access.