Skip to main content

What are Skills?

Skills are modular, self-contained packages that extend DeerFlow’s capabilities by providing specialized knowledge, workflows, and tools. Think of them as “onboarding guides” for specific domains or tasks.

What Skills Provide

Specialized Workflows

Multi-step procedures for specific domains

Tool Integrations

Instructions for working with specific file formats or APIs

Domain Expertise

Company-specific knowledge, schemas, business logic

Bundled Resources

Scripts, references, and assets for complex tasks

Skill Structure

Every skill consists of a required SKILL.md file and optional bundled resources:

SKILL.md Format

Every SKILL.md consists of:
1

Frontmatter (YAML)

Contains name and description fields - the only fields DeerFlow reads to determine when to use the skill.
The description is critical - it’s the primary triggering mechanism. Include both what the skill does and when to use it.
2

Body (Markdown)

Instructions and guidance loaded AFTER the skill triggers.

Creating a Skill

1

Initialize the Skill

Use the initialization script to create a template:
This creates:
2

Edit the Frontmatter

Update SKILL.md with your skill’s metadata:
Include all “when to use” information in the description - not in the body. The body is only loaded after triggering.
3

Write Instructions

Add your skill instructions in the Markdown body:

Creating Visualizations

Ask DeerFlow a question that should trigger your skill:
  • “Analyze this dataset for me”
  • “Can you help with data analysis?”

Best Practices

Keep Skills Concise

Skills share the context window with everything else. Only include information the agent doesn’t already know.Good: Concise examples and specific procedures ❌ Bad: Verbose explanations of basic concepts

Progressive Disclosure

Keep SKILL.md under 500 lines. Split content into separate files: Keep your main SKILL.md file concise and reference detailed documentation:
The agent loads specific reference files only when they’re needed. The agent loads specific reference files only when needed.

Write Effective Descriptions

The description determines when your skill is used:
✅ Includes what it does ✅ Lists specific triggers ✅ Covers multiple use cases

Avoid Unnecessary Files

Do NOT create:
  • README.md
  • INSTALLATION_GUIDE.md
  • CHANGELOG.md
  • CONTRIBUTING.md
Skills should only contain information needed for the AI agent to do the job. No auxiliary documentation or setup procedures.

Real-World Examples

Learn from existing skills in the DeerFlow repository:

Deep Research

skills/public/deep-research/SKILL.mdSystematic web research methodology

Skill Creator

skills/public/skill-creator/SKILL.mdMeta-skill for creating new skills

PPT Generation

skills/public/ppt-generation/SKILL.mdCreate PowerPoint presentations

Frontend Design

skills/public/frontend-design/SKILL.mdBuild web applications and UIs

Packaging Skills

Once your skill is complete, package it for distribution:
This:
  1. Validates the skill structure
  2. Checks frontmatter and naming conventions
  3. Creates a .skill file (zip with .skill extension)
The packaging script automatically validates your skill. Fix any errors before the package is created.

Installing Custom Skills

Place custom skills in the skills/custom/ directory:
Skills are automatically discovered on startup.

Managing Skills via API

Enable/disable skills dynamically:
Skill state is stored in extensions_config.json.

Troubleshooting

Check the description in frontmatter:
  • Is it specific enough?
  • Does it include trigger keywords?
  • Does it match the user’s query?
Test by explicitly asking for the skill:
  • “Use the [skill-name] skill to…”
Verify:
  • Script has correct shebang (#!/usr/bin/env python3)
  • File has execute permissions: chmod +x scripts/script.py
  • Script path is correct in SKILL.md
  • Script is using sandbox virtual paths (/mnt/skills/...)
Ensure:
  • Reference files exist in references/ directory
  • Links in SKILL.md use relative paths
  • File names match exactly (case-sensitive)
Check packaging script output:
Common issues:
  • Missing required frontmatter fields
  • Invalid YAML syntax
  • Incorrect directory structure

Next Steps

Custom Tools

Add custom tools to complement your skills

MCP Servers

Integrate external tools via MCP protocol

Configuration

Learn about skill configuration options

Examples

Browse built-in skills for inspiration