Skip to main content
Skill Capability Gates allow you to declare tool, server, and environment variable requirements in your skills and enforce them at runtime with configurable strictness levels.
MCP-server discovery for the gate landed in the SDK on 2026-07-27. Before that, skills with requires_servers under STRICT enforcement were always hidden because the live server set was empty. If you hit that regression, upgrade praisonaiagents.
The user invokes a skill with declared requirements; gates enforce tools, MCP servers, and env vars at runtime.

Quick Start

1

Simple Agent with Skill Requirements

2

Skill with Capability Requirements

Create a SKILL.md with requirements:

How It Works


Frontmatter Reference

All frontmatter keys are optional and backward-compatible. Existing skills without requirements are unaffected. String forms are normalized — both requires_tools: "pdf_read, ocr_extract" and requires_tools: "pdf_read ocr_extract" work. The same normalization applies to fallback_for_tools and fallback_for_servers.

Graceful Fallback Skills

fallback_for_tools / fallback_for_servers let a skill stay hidden until the agent is missing the capability it covers.
The matching SKILL.md frontmatter:

Behaviour

A fallback skill’s own requires_* gates are always enforced, regardless of the enforcement level. An unusable fallback is never injected into the agent’s context.

When to Use fallback vs. requires

Skill Discovery Sequence

The validator evaluates both available_tools / available_servers for the keep-or-hide decision and the fallback skill’s own requires_* gates before injecting it.

Skill States


How MCP-Server Names Are Matched

The validator asks MCP.list_active_server_names() for the set of connected MCP servers, then checks each requires_servers entry against it.
Server names are registered when an MCP(...) client calls with_tool_prefix(), using the sanitised server name (e.g. filesystem for @anthropic/mcp-server-filesystem). Inspect the live set at any time:
A skill’s requires_servers entry must match a name from this set exactly.

Enforcement Levels


Configuration

Environment Variable

Programmatic Configuration


Diagnostics from Code

Basic Validation

Full Diagnostics

Filter Skills by State


CLI Diagnostics

Basic Skills Check

Detailed Requirements Check

Sample output structure:

Common Patterns

Terminal-based Web Fallback

Local-file Fallback for Absent MCP Server

Soft-warn in Dev, Strict in Prod

Add Tool Requirement to Existing Skill

Filter to Active-Only Skills for System Prompt


Best Practices

Use the new requires_tools frontmatter key for better validation:
Minimize environment variable dependencies:
Configure appropriate enforcement levels:
Fallback skills disappear automatically when the real capability is present; they are not a runtime toggle. If you need a user-controlled switch, gate the skill with requires_env on a feature-flag env var instead.
Validation results are automatically cached for performance:

Inverse: Graceful Fallback

fallback_for_tools and fallback_for_servers are the inverse of requires_* — a skill with these keys is offered only when the listed tool or server is absent.
See Skill Fallback for the full reference.

Skill Fallback

The inverse — offer a skill only when a tool or server is absent

Agent Skills

Learn about the Agent Skills system and how to create skills

Graceful Skill Fallback

Offer fallback skills only when a preferred capability is absent

Hermes/OpenClaw Import

Import skills from Hermes and OpenClaw with capability requirements

Skill Management

Manage skills programmatically with the SkillManager API

Doctor CLI

Use the doctor command to diagnose skill capability issues