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 Dimension | Skills | Memory |
|---|---|---|
| Content Type | Operation procedures, working methods | Environmental facts, user preferences |
| Load Timing | On demand, loaded only when needed | Automatically injected into every session |
| File Size | Can be large (hundreds of lines) | Should remain concise (key facts) |
| Token Consumption | Zero consumption when not loaded | Fixed cost per session |
| creator | You, Agent, or install from Hub | Automatically created by the Agent based on the conversation |
| Typical example | How to deploy to Kubernetes | The 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 Directory | Includes 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
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
/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
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
/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
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:
- The skill directory is copied to
~/.hermes/skills/ - appears in
skills_listin the output - 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
hermes skills list | grep arxiv
# Or verify in session
/skills search arxiv
Add a skill source from a GitHub repository
Example
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 ~/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:
- The agent uses existing tools to collect source material (reading files, scraping web pages, analyzing the current conversation)
- Drafts SKILL.md following the official Skill authoring standards (including ≤60-character description, standard section order, Hermes tool framework, no fabricated commands)
- Through
skill_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 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
# 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
| Fields | Limit | Description |
|---|---|---|
| name | ≤64 characters | Lowercase letters and hyphens |
| description | ≤1024 characters | The 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
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
| Fields | Behavior |
|---|---|
| fallback_for_toolsets | The listed toolsetavailableWhen hidden,unavailableshown when |
| requires_toolsets | The listed toolsetavailableWhen shown,unavailablehidden when |
| fallback_for_tools | Same as above, but for specific tools rather than tool sets |
| requires_tools | Same 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
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
/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
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
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
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
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
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 Type | Risk Level | Suggestions |
|---|---|---|
| Official built-in skills (official/ prefix) | Low | From the Hermes repository, reviewed, can be installed directly |
| Community skills (URL or third-party registries) | Medium | Use `hermes skills inspect` to preview contents before installation. |
| Skills in .hub/quarantine/ | High | Quarantined suspicious skills, not recommended for installation |
Example
hermes skills inspect https://example.com/SKILL.md
Skill updates and maintenance
Check and update
Example
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
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
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
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
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
/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
# 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
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 |