Skip to content

Chapter 6: Skill System

Skills are the cuttlefish's specialties. Hermes Agent comes with 100+ built-in skills covering programming, writing, DevOps, creative work, and more. You can also teach it new skills — it will remember and use them next time.

What is a Skill?

A Skill is a lazily-loaded knowledge document. It's not a plugin, not a code package — it's a set of instructions telling the Agent how to behave in specific scenarios.

Key characteristics:

  • Lazy loading: Only read when relevant, doesn't waste tokens
  • Progressive expansion: Shows summary first, loads full content when needed
  • Auto-evolution: After completing complex tasks, the Agent can automatically save them as Skills
  • Open standard: Compatible with agentskills.io standard

All Skills are stored in the ~/.hermes/skills/ directory.

Three Ways to Use Skills

1. Slash Commands

Each installed Skill automatically becomes a slash command:

/plan Implement a user registration feature
/review Check recent code changes

2. Natural Language Trigger

Just talk normally — the Agent automatically matches relevant Skills:

You: Help me write a Python script to process CSV files
Hermes: [Auto-loads python-related skill...] Sure, let me help...

3. Manual Loading

/skill-load skill-name

Built-in Skill Categories

Hermes Agent includes 100+ built-in skills, organized by category:

CategoryRepresentative SkillsDescription
Software Developmentplan, test-driven-development, systematic-debuggingPlanning, TDD, debugging
GitHubgithub-pr-workflow, github-code-review, github-issuesPR, review, issue management
Creativeascii-art, excalidraw, p5js, songwritingASCII art, diagrams, music
Mediayoutube-content, gif-search, heartmulaYouTube, GIF, music generation
Researcharxiv, llm-wiki, web-content-fetchPapers, knowledge base, web scraping
Productivitynotion, google-workspace, powerpoint, nano-pdfNotion, Google, PPT, PDF
DevOpswebhook-subscriptionsWebhook management
Data Sciencejupyter-live-kernelJupyter interactive analysis
MLOpsgguf, llama-cpp, vllm, unsloth, trl-fine-tuningModel training, inference, quantization
Appleapple-notes, apple-reminders, imessagemacOS/iOS automation
EmailhimalayaEmail management
Gamingminecraft-modpack-server, pokemon-playerMinecraft, Pokemon

Platform Limitations

Some Skills have platform restrictions. For example, the apple-* series is only available on macOS. If the current platform is incompatible, the Skill is automatically hidden.


SKILL.md Format

Each Skill is a directory with a SKILL.md file at its core:

~/.hermes/skills/my-skill/
├── SKILL.md          # Skill definition (required)
├── references/       # Reference documents
├── templates/        # Template files
├── scripts/          # Scripts
└── assets/           # Asset files

Basic structure of SKILL.md:

markdown
---
name: my-skill
description: One-sentence description of what this skill does
platforms: [macos, linux]        # Optional: restrict platform
fallback_for_toolsets: [web]     # Optional: fallback condition
env:                             # Optional: required environment variables
  - MY_API_KEY
settings:                        # Optional: configuration items
  - key: output_dir
    description: Output directory
    default: ~/output
---

# Skill Title

Detailed instructions...

Key Field Descriptions

FieldRequiredDescription
nameSkill identifier, lowercase + hyphens
descriptionOne-sentence description
platformsRestrict to specific OS
fallback_for_toolsetsOnly show when specified toolset is unavailable
envRequired environment variables (keys, etc.)
settingsNon-secret configuration items, stored in config.yaml

Managing Skills

View Installed Skills

/skills

Or ask in conversation:

You: What skills do you have?
Hermes: [Lists all available skills...]

Install Skills

From Skills Hub:

bash
hermes skills install <skill-name>

Agent-Created Skills

When you complete a complex task, the Agent can automatically save it as a Skill:

You: Save this workflow as a skill
Hermes: [Automatically calls skill_manage to create SKILL.md]

The Agent automatically creates Skills in these scenarios:

  • Completed a complex task with 5+ tool invocations
  • Resolved a tricky bug
  • User corrected the Agent's approach

External Skill Directories

If you have a shared skill directory used by multiple AI tools (e.g., ~/.agents/skills/), you can have Hermes scan it too:

yaml
# ~/.hermes/config.yaml
skills:
  external_dirs:
    - ~/.agents/skills
    - ~/my-custom-skills

Paths support ~ expansion and ${VAR} environment variable substitution.

TIP

If both local and external directories have a Skill with the same name, the local version takes priority (shadow mechanism).


Skill Configuration (Settings)

Skills can declare non-secret configuration items, stored under skills.config in config.yaml:

yaml
# ~/.hermes/config.yaml
skills:
  config:
    my-skill:
      output_dir: ~/output
      language: zh-CN

Configuration values are automatically injected into the Agent's context when the Skill is loaded.


Conditional Activation (Fallback Mechanism)

A Skill can be set as a fallback for a specific toolset:

yaml
# Example: built-in duckduckgo-search skill
fallback_for_toolsets: [web]

This means:

  • If you set FIRECRAWL_API_KEY, the web toolset is available → use web_search, DuckDuckGo skill is hidden
  • If you don't set an API Key → DuckDuckGo skill automatically appears as an alternative

Hands-On: Installing a Custom Skill

Let's install defuddle (web content extraction) as an example:

bash
# Method 1: Via Skills Hub
hermes skills install defuddle

# Method 2: Manual creation
mkdir -p ~/.hermes/skills/defuddle
# Write SKILL.md...

After installation, you can use it:

You: Help me extract the content from this webpage https://example.com/article
Hermes: [Auto-loads defuddle skill] [Runs defuddle parse...] Done!

Further Reading


Released under CC BY-NC-SA 4.0 | GitHub