Hermes Agent Skills

If the memory system allows Hermes to rememberwho are you, then the Skills system allows Hermes to rememberHow to Do Things。

Skills are Hermes Agent's procedural memory.

Skills allow the agent to create reusable workflows from experience and reuse them in future sessions.

The Skills system is Hermes Agent's core differentiating feature—it is the only agent with a built-in learning loop, capable of creating skills, improving skills through use, and maintaining knowledge across sessions.


What is a skill?

Skills are a set of instructions and tools that define agent behavior. They can:

  • Automated workflow— Encapsulating common task patterns
  • Cross-session learning— Saving and reusing successful solutions
  • Share with the community— Publishing and installing skills created by others
  • Self-Improvement— Continuously improving through use

For more information, refer to the Skills tutorial:https://www.example.com/ai-agent/skills-agent.html。

Skills vs. Memory

Comparison DimensionSkillsMemory
Content TypeOperation procedures, working methodsEnvironmental facts, user preferences
Load TimingOn demand, loaded only when neededAutomatically injected into every session
File SizeCan be large (hundreds of lines)Should remain concise (key facts)
Token ConsumptionZero consumption when not loadedFixed cost per session
creatorYou, Agent, or install from HubAutomatically created by the Agent based on the conversation
Typical exampleHow to deploy to KubernetesThe user lives in Shanghai and prefers concise replies

Rule of thumb: if you would write it into a reference document, it's a skill; if you would put it on a sticky note, it's a memory.


Skill directory structure

All skills are stored in~/.hermes/skills/Directory — this is the only data source.

On initial installation, built-in skills are copied from the repository to this directory. Skills installed via the Hub and skills automatically created by the Agent are also saved here.

~/.hermes/skills/
├── mlops/                     # 分类目录
│   ├── axolotl/
│   │   ├── SKILL.md           # 主指令文件(必须)
│   │   ├── references/        # 补充文档(按需加载)
│   │   ├── templates/         # 输出模板
│   │   ├── scripts/           # 辅助脚本
│   │   └── assets/            # 附属资源
│   └── vllm/
│       └── SKILL.md
├── devops/
│   └── deploy-k8s/            # Agent 自动创建的技能
│       ├── SKILL.md
│       └── references/
├── .hub/                      # Skills Hub 状态
│   ├── lock.json
│   ├── quarantine/            # 安全隔离区
│   └── audit.log
└── .bundled_manifest          # 记录内置技能版本

The only required files for each skill directory areSKILL.mdThe rest of the subdirectories are optional.

The agent can modify or delete any skill—whether built-in, installed from the Hub, or self-created.


Progressive disclosure: a token-efficient loading mechanism

One of the smartest designs in the skill system isProgressive disclosure—The agent does not stuff all skill content into context at once, but loads it in three layers on demand.

Level 0: skills_list()              → [{name, description, category}, ...]
                                       会话启动时加载,约 3,000 tokens
                                       ↓ 只有需要用某个技能时,才继续
Level 1: skill_view(name)           → 完整 SKILL.md 内容 + 元数据
                                       ↓ 只有需要参考文档时,才继续
Level 2: skill_view(name, path)     → 技能内的特定 references/ 文件

The practical significance of this design is very direct:

  • You have 50 skills installed, but only 1 was used this session—only the full content of that one consumes tokens.
  • The Level 0 skill list (~3,000 tokens) is always loaded at session startup, letting the agent know which skills are available.
  • The rest is loaded only when the agent determines it's needed—no usage, no cost.

Progressive disclosure is what distinguishes the skill system fromStuffing all documentation into the system promptThis is the key design. It ensures the skill count can grow indefinitely while the per-session token cost remains essentially constant.


List of built-in skills

Hermes comes with a large set of built-in skills that can be used directly.

Launch hermes from the command line:

hermes

Use the following command to view skill-related commands:

/skills

The following command can view all skills in a session:

/skills browse

View directly in the command line with hermes:

hermes skills list

In the desktop version, click the Skills & Tools menu on the left to view:

Skill Categories

Built-in skills are stored in subdirectories categorized by function:

Category DirectoryIncludes skill types
software-development/GitHub PR, code review, test-driven development
research/arXiv paper search, web research
productivity/OCR documents, ASCII art, plan generation
mlops/Axolotl fine-tuning, vLLM deployment, Flash Attention
creative/Writing, diagrams (Excalidraw)
devops/Kubernetes, cloud deployment

Optional skills (not installed by default)

Optional skills are released together with hermes-agent, stored inoptional-skills/but are not activated by default and require explicit installation.

These skills typically require additional dependencies or serve niche purposes:

Example

# Install Optional Skills
hermes skills install official/blockchain/solana
hermes skills install official/mlops/flash-attention

# Browse all optional skills
hermes skills browse

Use skills

Skills have two trigger methods: direct invocation via slash commands and automatic triggering via natural language.

Slash commands for direct invocation

Every installed skill automatically becomes a slash command.

Use directly on any platform (CLI, Telegram, Discord, etc.):

Example

# Load Skills and Assign Tasks
/ascii-art generate one that says"Hello World"banner
/plan: Design a REST API for a todo list application
/github-pr-workflow: Create a PR for the authentication module refactoring

# Only enter the skill name (without attaching a task) — let the Agent ask you what you need
/excalidraw

built-inplanA skill is a good example: run/plan [请求]Afterwards, the skill instruction tells Hermes to first check the context, then generate a Markdown-format implementation plan and save it to.hermes/plans/, rather than executing the task directly.

Natural language triggering

Skills can also be triggered through natural conversation; Hermes will useskill_viewAutomatic tool loading:

Example

# User describes requirements in natural language
Help me search on arXiv for the latest papers about diffusion models.

The Agent will recognize the need for aarxivskill, automatically load it, and then execute.

Search skills by keyword

Example

# Search in session
/skills search docker
/skills search music

# Command-line search
hermes skills search deployment

Installing skills from the Hub

Besides built-in skills, you can also install third-party skills from the agentskills.io community Hub.

Command-line installation

Example

# Install official optional skills (using the official/ prefix)
hermes skills install official/research/arxiv
hermes skills install official/creative/songwriting-and-ai-music

# Install in Session
/skills install official/creative/songwriting-and-ai-music

# Install directly from URL (any public SKILL.md file)
hermes skills install https://sharethis.chat/SKILL.md

# Install and customize the name
hermes skills install https://example.com/SKILL.md --name my-skill

What happens after installation:

  1. The skill directory is copied to~/.hermes/skills/
  2. appears inskills_listin the output
  3. Can be used as a slash command

Installed skills are innew conversationtake effect. To use it immediately in the current session, use /reset to start a new session, or add the --now parameter to immediately refresh the prompt cache (which consumes some extra tokens).

Verify Installation

Example

# Command-line verification
hermes skills list | grep arxiv

# Or verify in session
/skills search arxiv

Add a skill source from a GitHub repository

Example

# Add a GitHub repository as a skill source
hermes skills tap add github.com/username/my-skills-repo

# Afterwards, you can install skills from the repository.
hermes skills install username/my-workflow

/learn command: generate a skill from a source with one click

/learnIt's a shortcut to quickly turn what you already know—or a pile of reference materials—into reusable skills, without hand-writing SKILL.md.

It is open-ended: point to anything you can describe, and the agent uses its existing tools to gather material, then generates the skill following standard authoring conventions.

Example

# Learn from the local SDK or documentation directory (read using read_file / search_files)
/learn ~/projects/REST client in acme-sdk, focusing on authentication and pagination

# Learn from online documentation pages (using web_extract)
/learn https://docs.example.com/api/quickstart

# Learn from the workflow you just completed
/learn the steps I just took to deploy the staging server

# Learn from pasted notes or described processes
/learn reimbursement process: open the portal, create a new expense report, attach receipts, and submit

How /learn works

The entire process is divided into three steps:

  1. The agent uses existing tools to collect source material (reading files, scraping web pages, analyzing the current conversation)
  2. Drafts SKILL.md following the official Skill authoring standards (including ≤60-character description, standard section order, Hermes tool framework, no fabricated commands)
  3. Throughskill_manageTool saving — if enabledwrite_approval, approval is requested first

/learn is available in CLI, message gateway, TUI, and Dashboard with identical behavior. The Dashboard's Skills page also provides a graphicalLearn a skillpanel, containing three input fields: directory, URL, and free text.


Agent automatically creates skills

This is the most distinctive part of Hermes's skill system: Hermes learns from experience by saving reusable processes as skills.

When it solves a complex problem, discovers a workflow, or is corrected, it can persist this knowledge as skill documents to be loaded in future sessions.

Skills accumulate over time, making the agent increasingly adept at handling your specific tasks and environment.

Trigger timing

After completing a complex task (typically involving more than 5 tool calls), Hermes may proactively propose:

我注意到我们刚才走完了一个完整的 Docker 多阶段构建流程。
要不要我把这个工作流程保存为技能,下次可以直接复用?

Manually ask the agent to create a skill

You can also proactively request it at any time:

Example

# Save the workflow you just created as a skill
Save the K8s deployment process we just did as a skill

# Learn project specification and save as skill.
Learn our project's Git commit conventions and save them as a skill

Controlling skill write permissions

By default, the agent is free to create and modify skills.

After enabling approval mode, the agent will first request your confirmation every time it wants to create or modify a skill:

Example

# File path: ~/.hermes/config.yaml
# Enable skill write approval
skills
:
  write_approval
: true   # default false

With write_approval enabled, you can preview the skill content the agent intends to write before deciding whether to approve. This is an important security boundary—skill files have no signed provenance information and cannot distinguishWritten by the Agent itselfandManually placed in the directory。


SKILL.md format explained in detail

Skills are Markdown files with YAML frontmatter metadata.

The following is the complete format specification, including all optional and required fields:

Example

---
name: my-skill-name # lowercase letters and hyphens, ≤64 characters (required)
description: Use when the user needs <trigger condition>. <one-line behavior description>.
≤1024 characters (required)
version: 1.0.0
author: Your Name
license: MIT
platforms: [macos, linux] # Optional — restrict operating systems
metadata:
  hermes:
    tags: [python, automation, devops]
    category: devops
    related_skills: [other-skill, another-skill]
fallback_for_toolsets: [web] # Optional - conditional activation
requires_toolsets: [terminal] # Optional - conditional activation
config: # Optional — Declare required configuration items
      - key: myskill.api_key
description: "API Key description"
        default: ""
prompt: "Please enter API Key"
required_environment_variables: # Optional - declare required environment variables
  - name: TENOR_API_KEY
    prompt: Tenor API Key
help: get from https://developers.google.com/tenor
required_for: GIF search functionality
---

# Skill Title

## When to Use
Trigger condition list
- Reverse condition (when not to use this skill)

## Procedure
1. First step
2. Second step
3. If needed API Documentation,addloadReferences:skill_view("my-skill", "references/api-docs.md")

## Pitfalls
Known failure mode: [description]. Solution: [solution]
- Note edge cases: [description]

## Verification
Run check-command to verify whether the result is correct.

Field Limits

FieldsLimitDescription
name≤64 charactersLowercase letters and hyphens
description≤1024 charactersThe key basis for skill selection; the agent uses this to determine whether to load
The entire SKILL.md≤100,000 characters (approximately 36k tokens)Over 20k, split into references/ recommended

Conditional activation: intelligent show/hide mechanism

Skills can be filtered based on tools available in the current sessionAutomatically show or hide, no manual management needed.

This is very useful in multi-environment deployments—the same skill list automatically adapts across different environments.

Example

# Conditional activation configuration in SKILL.md frontmatter metadata
metadata
:
  hermes
:
    fallback_for_toolsets
: [web]      # Only display when web toolset is unavailable
    requires_toolsets
: [terminal]     # Only display when the terminal toolset is available
    fallback_for_tools
: [web_search]  # Only display when the web_search tool is unavailable
    requires_tools
: [terminal]        # Only show when the terminal tool is available
FieldsBehavior
fallback_for_toolsetsThe listed toolsetavailableWhen hidden,unavailableshown when
requires_toolsetsThe listed toolsetavailableWhen shown,unavailablehidden when
fallback_for_toolsSame as above, but for specific tools rather than tool sets
requires_toolsSame as above, but for specific tools

Practical Examples: Built-induckduckgo-searchSkill usedfallback_for_toolsets: [web]。

When you have configured a Firecrawl API Key (web tool set available), this skill is automatically hidden and the agent directly usesweb_search。

When the API Key is missing (web tool set unavailable), the DuckDuckGo skill automatically appears as a fallback.


Skill Bundle: combined loading

A skill pack is a YAML file that combines multiple skills under a single slash command.

Run/<bundle-name>When triggered, all skills listed in the pack load simultaneously—suitable for scenarios where a task always requires the same set of skills.

Create a skill package

Example

# Create backend development skill pack, combining three skills
hermes bundles create backend-dev \
  --skill github-code-review \
  --skill test-driven-development \
  --skill github-pr-workflow \
  -d "Backend feature development — code review, testing, PR workflow"

When using:

Example

# Load three skills simultaneously with one command.
/backend-dev refactor authentication middleware

The agent loads all three skills simultaneously and willRefactor authentication middlewareAppended as user instructions.

Skill package file format

Skill packages are stored in~/.hermes/skill-bundles/<slug>.yaml:

Example

# File path: ~/.hermes/skill-bundles/backend-dev.yaml
name
: backend-dev
description
: Backend feature development — code review, testing, PR workflow
skills
:
 - github-code-review
  - test-driven-development
  - github-pr-workflow

Platform-level skill management

Different platforms can enable different skill subsets.

For example, development-related skills don't need to appear on Telegram:

Example

# Open interactive TUI, enable or disable skills by platform
hermes skills config

This opens an interactive TUI that lets you enable or disable skills per platform (CLI, Telegram, Discord, etc.).


Manually creating skills: getting started in five minutes

Skills are just Markdown files with YAML frontmatter metadata.

Creating a skill takes less than five minutes, no registration required, just put it in~/.hermes/skills/You can use it.

Step 1: Create a directory

Example

# Create skill directory (category/skill name)
mkdir -p ~/.hermes/skills/my-category/my-skill

Step 2: Write SKILL.md

Example

---
name: fly-deploy
description: Deploy the Python application to Fly.io, including environment variables and persistent volume configuration.
version: 1.0.0
metadata:
  hermes:
    tags: [python, deployment, fly.io]
    category: devops
    requires_toolsets: [terminal]
---

# Deploy Python application to Fly.io

## When to Use
- Users need to deploy Python applications (Flask/FastAPI/Django) to Fly.io
- Need to configure environment variables or Volume persistent storage
- Not for: non-Python applications, or using other cloud platforms

## Procedure
1. Check whether fly CLI is installed: fly version
2. Log in to Fly: fly auth login
3. Initialize in the project root directory: fly launch
4. Configure fly.toml (check the [build] and [http_service] sections)
5. Set the necessary secret: fly secrets set KEY=VALUE
6. Deploy: fly deploy
7. Check logs: fly logs

## Pitfalls
- fly launch will automatically detect Python apps and generate a Dockerfile,
In most cases, no need to write manually
Environment variables are set via fly secrets set rather than through a .env file
(.env will not be uploaded)
- Free plan has a monthly machine runtime limit; long-running applications are recommended to upgrade

## Verification
fly status # Check application status
fly open # Open the app in the browser

Step 3 (optional): Add reference files

Example

Create the references subdirectory
mkdir -p ~/.hermes/skills/my-category/my-skill/references

# Put API docs, examples, etc. into references/
# Reference it in SKILL.md like this:
# For detailed API parameters, load the reference documentation:
# skill_view("fly-deploy", "references/fly-toml-reference.md")

Step 4: Test

Example

# Start a New Session to Test Skills
hermes chat -q "/fly-deploy help me deploy this FastAPI application"

Security considerations for skills

Write approval gating

Skill files have no signed provenance information—cannot distinguishWritten by the Agent itselfandManually placed in the directory。

Write approval mechanism andpending/Directory management is a key security boundary.

After approval is enabled,write_approval: truecauses all skill write operations (including automatic creation initiated by the agent) to be staged as pending approval; you review before deciding whether to allow the write.

Security scan

Skill content is threat-scanned before loading, detecting malicious patterns such as prompt injection, backdoor installation instructions, etc.

Content matching threat patterns is replaced with[BLOCKED: ...]placeholder, preventing it from reaching the model—the file itself is not deleted, only the threatening content is blocked.

Considerations when installing from the Hub

Source TypeRisk LevelSuggestions
Official built-in skills (official/ prefix)LowFrom the Hermes repository, reviewed, can be installed directly
Community skills (URL or third-party registries)MediumUse `hermes skills inspect` to preview contents before installation.
Skills in .hub/quarantine/HighQuarantined suspicious skills, not recommended for installation

Example

# Preview skill content before installation, do not execute installation
hermes skills inspect https://example.com/SKILL.md

Skill updates and maintenance

Check and update

Example

# Check for Updates to All Skills
hermes skills check

# Update All Updatable Skills
hermes skills update

# Update specific skill
hermes skills update arxiv

Reset built-in skills

If you modified a built-in skill and want to restore the original:

Example

# Safe Reset: Clear modification history, preserve current file contents
hermes skills reset google-workspace

# Full Restore: Delete the current file and re-copy the built-in version
hermes skills reset google-workspace --restore

Uninstalling Hub skills

Example

# Uninstall skills installed via Hub
hermes skills uninstall my-hub-skill

Uninstalling can only remove skills installed via the Hub; built-in skills cannot be uninstalled (but you can stop receiving updates via `hermes skills opt-out`).


Publish skills to the Skills Hub

If you created a valuable skill, you can publish it to agentskills.io to share with the community:

Example

# Publish to registry
hermes skills publish ~/.hermes/skills/devops/fly-deploy

# View your published skills in Hub
hermes skills list --mine

Blueprint: skills + scheduled tasks

Skills can declare a schedule, turning into a shareable automation blueprint:

Example

# Declare the blueprint scheduling plan in SKILL.md
metadata
:
  hermes
:
    tags
: [blueprint, email]
    blueprint
:
      schedule
: "0 8 * * *"     # Every day at 8 AM (Cron expression)
      description
: "Daily email digest"

After installing this skill, run/suggestionsYou can see Hermes automatically propose creating the corresponding scheduled task:

Example

# View pending automation suggestions
/suggestions

# Accept suggestion and create a Cron task
/suggestions accept 1

# Ignore suggestions (no more repeated prompts).
/suggestions dismiss 1

# View official curated automation templates
/suggestions catalog

External skill directory

If you maintain skills outside of Hermes—for example, one shared by multiple AI tools~/.agents/skills/Directories — lets Hermes scan these directories simultaneously.

Example

# File path: ~/.hermes/config.yaml
# Configure external skill directory
skills
:
  external_dirs
:
   - ~/.agents/skills
    - /home/shared/team-skills
    - ${SKILLS_REPO}/skills

Path Support~expand and${VAR}Environment variable substitution.

Important Rules:

  • Local directory (~/.hermes/skills/) takes priority—when skills share the same name, the local version overrides the external version
  • External directories are not write-protection boundaries: if the Hermes process has write permissions, the Agent can modify skills in external directories.

Common command quick reference

Example

# ─── Searchskill ───────────────────────────────────────────────
hermes skills list                    # List all skills
hermes skills search <keyword>          # Search local and Hub skills.
hermes skills browse                  # Browse official optional skills

# ─── Installing Skills ───────────────────────────────────────────────
hermes skills install official/<Category>/<Name>    # Install official optional skills
hermes skills install https://...SKILL.md       # Install from URL
hermes skills tap add github.com/user/repo      # Add GitHub skill source

# ─── Skill Information ───────────────────────────────────────────────
hermes skills inspect <id>            # Preview (Pre-installation Check)
hermes skills check                   # Check for Updates
hermes skills config                  # Per-platform enable/disable configuration (TUI)

# ─── Update and Maintenance ─────────────────────────────────────────────
hermes skills update                  # Update all skills
hermes skills update <name>           # Update specific skill
hermes skills reset <name>            # Reset to initial state
hermes skills reset <name> --restore  # Fully restore built-in version
hermes skills uninstall <name>        # Uninstall Hub Skills

# ─── publish ────────────────────────────────────────────────────
hermes skills publish <path>          # Publish to registry

# ─── skillPackage ──────────────────────────────────────────────────
hermes bundles create <name> --skill <s1> --skill <s2> -d "Description"
hermes bundles list
hermes bundles delete <name>

# ─── SessioninsideSlash Commands ──────────────────────────────────────────
/skills                               # List all skills
/skills search <keyword>               # Search Skills
/skills browse                        # Browse optional skills
/skills install <id>                  # Installation Skills
/<skill-name> [Task Description]              # Use skill directly
/learn <Source description or URL>               # Generate skill from source
/suggestions                          # View the Agent's automation suggestions # View the Agent's automation suggestions

Create custom skills

Skills are stored in~/.hermes/skills/in the directory. Each skill is one that includesskill.mdDirectory of:

~/.hermes/skills/
└── my-custom-skill/
    └── skill.md

Skill Format

---
name: my-custom-skill
description: 一个有用的技能描述
version: 1.0.0
author: your-username
tags: [utility, example]
---

# 技能指令

您是一个专业的[角色],擅长[领域]...

## 核心能力

1. 能力 A
2. 能力 B
3. 能力 C

## 使用示例

### 示例 1
[描述]

### 示例 2
[描述]

Skill metadata

Fields Description Required
name Skill name (unique identifier) Yes
description Skill Description Yes
version Semantic Version no
author Skill Author no
tags classification tag array no

Skill command reference

Command Description
hermes skills list List all installed skills
hermes skills search <query> Search for available skills
hermes skills install <skill> Install Skills
hermes skills uninstall <skill> Uninstall Skill
hermes skills create <name> Create a new skill
hermes skills update <skill> Update Skill
other extensions