Skills extend the MCP model by providing workflow guidance. They’re discovered via
searchSkills and loaded via loadSkill tools that FrontMCP automatically registers.Why Skills?
In the Model Context Protocol ecosystem, skills serve a distinct purpose from tools, resources, and prompts:| Aspect | Skill | Tool | Resource | Prompt |
|---|---|---|---|---|
| Purpose | Multi-step workflows | Execute actions | Provide data | Provide templated instructions |
| Contains | Instructions + tool references | Execution logic | Read-only data | Message templates |
| Direction | Model loads on demand | Model triggers execution | Model pulls data | Model uses messages |
| Side effects | No (guidance only) | Yes (mutations, API calls) | No (read-only) | No (message generation) |
| Use case | Complex procedures, workflows | Actions, integrations | Context loading | Conversation templates |
- Complex workflows — multi-step procedures like PR reviews, deployments, migrations
- Domain expertise — codified knowledge from experts (security audits, code reviews)
- Orchestration guides — coordinating multiple tools in sequence
- Reusable playbooks — standardized procedures across teams
How Skills Work
Creating Skills
Class Style
Use class decorators for skills that need dependency injection or lifecycle hooks:Function Style
For simpler skills, use the functional builder:Registering Skills
Add skills to your app via theskills array:
- Indexed for search via
searchSkills - Loadable via
loadSkillwith tool availability info
Skill Metadata
| Field | Description |
|---|---|
name | Unique identifier, must be kebab-case (max 64 chars, no consecutive hyphens) |
description | Short text for discovery (max 1024 chars, no XML/HTML tags) |
instructions | Detailed step-by-step guidance (inline, file, or URL) |
tools | Tools this skill uses, with optional purpose descriptions |
tags | Categorization for filtering and organization |
parameters | Input values that customize skill behavior |
examples | Scenarios demonstrating when and how to use the skill |
priority | Higher values appear earlier in search results |
hideFromDiscovery | When true, skill is loadable but not listed in search |
visibility | Where this skill is discoverable: mcp, http, or both |
toolValidation | How to handle missing tool references: strict, warn, ignore |
license | License name or reference (per Agent Skills spec) |
compatibility | Environment requirements (max 500 chars, per Agent Skills spec) |
specMetadata | Arbitrary key-value metadata (maps to spec metadata field) |
allowedTools | Space-delimited pre-approved tools (maps to spec allowed-tools) |
resources | Bundled resource directories (scripts/, references/, assets/) |
Name Validation
Skill names follow strict kebab-case rules per the Anthropic Agent Skills specification:- Lowercase letters, numbers, and hyphens only
- Must start and end with a letter or number
- No consecutive hyphens (
--) - Maximum 64 characters
Description Validation
- Maximum 1024 characters
- Must not contain XML/HTML tags (per Agent Skills spec)
Instruction Sources
Skills support three instruction sources:Inline String (Recommended)
Best for dependency tracking and version control:File Path
Load from a markdown file at runtime:URL
Fetch from a remote source at load time:Tool References
Reference tools with simple names or detailed objects:Simple References
Detailed References
Include purpose and required flag for better LLM understanding:| Property | Description |
|---|---|
name | The tool’s identifier |
purpose | Explains why/how the tool is used in this skill |
required | If true, skill may not work without this tool |
Parameters
Define input parameters that customize skill behavior:| Property | Description |
|---|---|
name | Parameter identifier |
description | Human-readable description |
required | Whether the parameter must be provided |
type | Type hint: string, number, boolean, object, array |
default | Default value if not provided |
Examples
Provide usage examples to help LLMs understand when to use the skill:Real-World Examples
PR Review Skill
Deploy Application Skill
Code Refactoring Skill
MCP Protocol Integration
FrontMCP automatically registers two flows for skill discovery and loading:| Flow | Description |
|---|---|
skills/search | Search for relevant skills by query, tags, or required tools |
skills/load | Load a skill’s full content including instructions and tool info |
searchSkills
Search for skills matching a query:loadSkill
Load a skill’s full content:Tool Validation
When loading a skill, FrontMCP validates tool availability:- Available tools: Tools registered in the current scope
- Missing tools: Referenced tools that don’t exist
- Hidden tools: Tools that exist but are hidden from discovery
Handling Missing Tools
Skills are still loadable even when some tools are missing:- Proceed with available tools only
- Inform the user about limitations
- Suggest alternative approaches
Setting
required: true on a tool reference indicates the skill cannot function without it. Missing required tools are highlighted in the warning message.Search Algorithm
Skills are searched using TF-IDF with weighted terms:| Field | Weight |
|---|---|
| description | 3x |
| tags | 2x |
| tools | 1x |
| name | 1x |
- Relevance score
- Priority field (higher = earlier)
- Tool availability (complete skills rank higher)
Agent Skills Specification Alignment
FrontMCP skills are aligned with the Anthropic Agent Skills specification. This means you can use standard SKILL.md files and skill directories with FrontMCP.New Spec Fields
Fields from the Agent Skills spec are available as first-class properties:SKILL.md Frontmatter
FrontMCP can parse SKILL.md files with YAML frontmatter, the standard format from the Agent Skills specification:metadata→specMetadataallowed-tools→allowedTools- All other fields map directly
instructions content.
Loading Skill Directories
Load complete skill directories following the Agent Skills spec structure:Using skillDir()
Using loadSkillDirectory()
For more control:
Allowed Tools
TheallowedTools field lists tools that are pre-approved for the skill. This is useful for skill sessions where tool access is restricted:
allowedTools don’t require additional user confirmation during skill sessions.
Best Practices
Do:- Write clear, step-by-step instructions that guide the LLM through the workflow
- Reference specific tools with purpose descriptions
- Include examples for common scenarios
- Use tags for categorization and discovery
- Keep skills focused on a single workflow or domain
- Create overly broad skills that try to do everything
- Skip tool purposes (hurts discoverability and understanding)
- Hardcode values that should be parameters
- Forget to list required tools
- Create skills for simple, single-tool operations (just use the tool directly)