Quick Start
Add fallback_for_tools to your SKILL.md
Create a The skill becomes visible only when
SKILL.md file with the fallback declaration:web_search and web are both absent, and the terminal tool is present.How It Works
The filter runs in every enforcement mode — an unusable fallback is never injected into the prompt regardless of enforcement level.Decision Table
| Real tool present? | Fallback’s own requires_* met? | Skill offered? |
|---|---|---|
| ✅ Yes | ✅ Yes | ❌ Hidden — capable agent doesn’t need the fallback |
| ✅ Yes | ❌ No | ❌ Hidden |
| ❌ No | ✅ Yes | ✅ Offered — this is the graceful fallback case |
| ❌ No | ❌ No | ❌ Hidden — don’t inject an unusable skill |
Frontmatter Reference
| Frontmatter key | Type | Default | Behaviour |
|---|---|---|---|
fallback_for_tools | list of tool names (or single string) | [] | Skill is hidden when any listed tool is present in the registry. |
fallback_for_servers | list of MCP server names (or single string) | [] | Skill is hidden when any listed server is present. |
fallback-for-tools | hyphenated alias | — | Identical to fallback_for_tools. |
fallback-for-servers | hyphenated alias | — | Identical to fallback_for_servers. |
requires_tools | list | [] | Composes with fallback — the fallback skill must still satisfy its own gates. |
requires_servers | list | [] | Same. |
Both underscored (
fallback_for_tools) and hyphenated (fallback-for-tools) forms are accepted and treated identically.Common Patterns
Web-via-terminal fallback
When no native web tool is available, offer a terminal-based alternative:Filesystem-via-shell fallback
When no MCP filesystem server is connected, fall back to shell commands:LLM-only summarise when no scraper
When no scraping tool is available, summarise from context only:Best Practices
Keep fallback instructions tight
Keep fallback instructions tight
Fallback skills are injected when a real tool is missing. Shorter, focused instructions reduce token usage and avoid confusing the agent.
Always pair fallback_for_tools with requires_tools
Always pair fallback_for_tools with requires_tools
A fallback that can’t run is worse than no fallback. Use Without
requires_tools to ensure the fallback’s own dependencies are met before it’s offered.requires_tools: [terminal], the skill would be offered even when the terminal tool is also absent — and the agent would try to use instructions it can’t execute.One fallback per real tool, not chains
One fallback per real tool, not chains
Avoid creating a chain of fallbacks-of-fallbacks. Pick the simplest fallback and stop there.
Test by toggling tools in your agent
Test by toggling tools in your agent
The fastest way to verify your fallback works is to construct an agent with and without the primary tool and check which skills are offered:
Related
Skill Capability Gates
The inverse concept — declare what a skill requires to be active
Agent Skills
Learn about the Agent Skills system and how to create SKILL.md files
Skill Management
Manage skills programmatically with the SkillManager API
Doctor CLI
Diagnose skill issues with the doctor command

