Skip to main content
Skills are modular knowledge packages that teach AI how to perform multi-step tasks using tools. Unlike tools (which are individual actions), skills are recipes/playbooks that combine tools into coherent workflows.
Skills extend the MCP model by providing workflow guidance. They’re discovered via searchSkills and loaded via loadSkill tools that FrontMCP automatically registers.
Nx users: Scaffold with nx g @frontmcp/nx:skill my-skill --project my-app. See Skill Generator.

Why Skills?

In the Model Context Protocol ecosystem, skills serve a distinct purpose from tools, resources, and prompts: Skills are ideal for:
  • 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 the skills array:
Skills are automatically:
  • Indexed for search via searchSkills
  • Loadable via loadSkill with tool availability info

Loading from npm or Remote Servers

Mix local skills with those loaded from npm or proxied from remote servers:
Skill.esm() and Skill.remote() load individual skills. For loading entire apps, use App.esm() or App.remote().

Skill Metadata

Field descriptions:

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

  • Non-empty
  • Maximum 1024 characters

Instruction Sources

Skills support three instruction sources: 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:
Inline instructions are recommended because they enable static analysis, type checking, and ensure the skill definition is complete and self-contained.

Tool References

Reference tools with simple names or detailed objects:

Simple References

Detailed References

Include purpose and required flag for better LLM understanding:

Parameters

Define input parameters that customize skill behavior:

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:

searchSkills

Search for skills matching a query:
Response:

loadSkill

Load a skill’s full content:
Response:

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:
The LLM receives this information and can:
  • 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: Results are ranked by:
  1. Relevance score
  2. Priority field (higher = earlier)
  3. 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:
The frontmatter fields are mapped to FrontMCP metadata:
  • metadataspecMetadata
  • allowed-toolsallowedTools
  • All other fields map directly
The markdown body becomes the instructions content.
When loading instructions from a file, FrontMCP automatically strips YAML frontmatter so you get clean instruction content.

Loading Skill Directories

Load complete skill directories following the Agent Skills spec structure:

Using skillDir()

Using loadSkillDirectory()

For more control:

Allowed Tools

The allowedTools field lists tools that are pre-approved for the skill. This is useful for skill sessions where tool access is restricted:
Tools in allowedTools don’t require additional user confirmation during skill sessions.

CLI commands

The frontmcp skills command tree ships six subcommands: install works on two sources:
  • Framework catalog (default) — copies one of the catalog router skills (frontmcp-development, frontmcp-deployment, …) into .claude/skills/ or .codex/skills/.
  • Project-defined @Skill entries — pass --from-entry <path> to enumerate skills registered in a local entry file, or --from-package <pkg> to do the same against an installed package’s main entry. The CLI bundles the entry, boots the SDK in-memory, and writes a Claude-Code-loadable SKILL.md per skill (synthesizing frontmatter from the @Skill decorator metadata when the source markdown has none).
Skill names are validated against the same allowlist as plugin names (^[a-zA-Z0-9][a-zA-Z0-9._-]*$) before any filesystem write, so a malicious @Skill({ name: '../escape' }) cannot land outside the target directory. Names that fail the check are skipped with a warning and the rest of the install continues. For the full flag tables, bulk-install patterns, and IDE-target output mapping, see the canonical reference shipped with the frontmcp-setup router skill. Run frontmcp skills <command> --help for the authoritative live surface.

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
Don’t:
  • 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)