Home / Blog / Hermes Agent skills: how they work, how to create them, and what's on the Skills Hub
Skills are Hermes's extension system. The agent writes them for itself — but you can write them too.

Hermes Agent skills: how they work, how to create them, and what's on the Skills Hub

Skills are Hermes Agent's equivalent of plugins or extensions — reusable capabilities the agent can call on demand. What makes them different from every other plugin system is that Hermes writes skills for itself. When it solves a problem it will face again, it can package the solution into a skill and improve that skill over subsequent uses. This guide explains the format, the self-improvement loop, the community marketplace, and when to write your own.

Hermes OS team17 April 202612 min read

What a skill actually is

A Hermes skill is a Markdown file with YAML frontmatter stored in ~/.hermes/skills/. The frontmatter describes the skill (name, description, when to use it). The body contains instructions in natural language — what to do, what tools to use, what output to produce. There is no compiled code required to write a basic skill.

The agent reads skills into context when they are relevant to the current task. It decides which skills to load based on the description field in the frontmatter — this is how it knows whether a skill applies. A skill for 'deploy a Next.js app to Vercel' will be loaded when you ask about Vercel deployments; it won't load for unrelated tasks.

Skills can also include executable code in multiple languages (Python, JavaScript, bash) that runs inside the agent's Docker sandbox. A skill can fetch data, process it, and return structured results — functioning like a mini-program the agent can invoke.

The skill file format

Skills live in ~/.hermes/skills/ with a .md extension. The YAML frontmatter fields:

---
name: deploy-vercel
description: Deploy a Next.js or React application to Vercel. Use when user asks to deploy, push to Vercel, or set up Vercel hosting.
version: 1.2
author: your-handle
tags: [deployment, vercel, nextjs]
platforms: [telegram, discord, cli]
---

# Deploy to Vercel

When deploying to Vercel:
1. Check that vercel CLI is installed: `vercel --version`
   - If missing, install: `npm i -g vercel`
2. Run `vercel login` if not authenticated
3. From the project root, run: `vercel --prod`
4. Copy the deployment URL and confirm with the user

The description field is the most important — it determines when the agent loads this skill. Write it as a trigger condition: 'Use when...' or 'When the user asks about...'. A vague description means the skill gets loaded for unrelated tasks (costs tokens) or missed when it should apply.

Key frontmatter fields:

  • name — internal identifier, used in hermes skills commands
  • description — natural language trigger condition (critical)
  • version — semantic version, used for updates and rollback
  • author — used on the Skills Hub if published
  • tags — for filtering in hermes skills list
  • platforms — which gateways can use this skill (optional, defaults to all)

How Hermes self-creates and improves skills

This is the feature that distinguishes Hermes from most AI agents. When the agent successfully completes a complex task it is likely to face again, it can write the procedure as a new skill in ~/.hermes/skills/. On the next occurrence: load the skill, follow the documented procedure, and if the procedure works better or differently, update the skill file.

The improvement loop in practice: say you ask Hermes to set up a new Python project with a specific structure (venv, pytest, linting config). It works through the steps, succeeds, and writes a create-python-project.md skill capturing those steps. Next time you ask for the same thing, it loads the skill and executes faster. If you change your preferred structure, it updates the skill to match.

This doesn't happen automatically for every task — the agent decides when a procedure is worth codifying. You can prompt it explicitly: 'Package what you just did as a skill so you can do it faster next time.'

Skill versioning means the agent can roll back an improvement that broke something. hermes skills list shows versions. Skills on the Hub show version history so you can see how a skill evolved.

The Skills Hub — agentskills.io

The Skills Hub at agentskills.io is Hermes's community skill marketplace. Skills are submitted by community members, reviewed (though not all skills undergo security review), and installable directly from the CLI:

hermes skills list              # browse installed skills
hermes skills search vercel     # search the Hub for skills by keyword
hermes skills install deploy-vercel  # install by name
hermes skills update            # update all installed skills
hermes skills update deploy-vercel   # update specific skill

Skill categories on the Hub include: development tools (deployment, testing, CI), productivity (email management, calendar, task tracking), data processing (web scraping, file conversion), system administration, API integrations (Stripe, GitHub, Notion), and lifestyle (personal finance, health tracking).

Skills on the Hub come from a range of authors. Not all skills are security reviewed. The same caution applies as installing any third-party package: read the skill file before running it in an environment with credentials or shell access. A skill that calls a remote URL on your behalf, runs shell commands with elevated permissions, or reads sensitive files deserves scrutiny before installation. Check the author's publish history and read the skill's implementation before installing anything that touches your data.

Hermes skills vs OpenClaw plugins

OpenClaw uses a plugin system hosted on ClawHub. The structural differences from Hermes skills:

FeatureHermes SkillsOpenClaw Plugins
FormatMarkdown + YAMLTypeScript/JavaScript module
Self-creationYes — agent writes own skillsNo
Self-improvementYes — agent updates skillsNo
LanguageNatural language + optional codeCode-first
Marketplaceagentskills.ioclawhub.io
Security recordNo public CVEs400+ malicious plugins reported
Installationhermes skills installopenclaw plugins install
Version rollbackYesYes

The OpenClaw plugin system is more powerful for developers who want to write full TypeScript modules with complex logic. Hermes skills are more accessible — most users can write a working skill in 5 minutes without writing any code. The self-creation feature has no OpenClaw equivalent.

The 400+ malicious plugin figure comes from OpenClaw's own community disclosures on ClawHub. The Hermes Skills Hub has not had a comparable public incident, though it is also smaller and newer.

Writing your first skill

Create a skill file directly:

mkdir -p ~/.hermes/skills
nano ~/.hermes/skills/my-first-skill.md

Minimal working example — a skill that formats a Git commit message:

---
name: git-commit-format
description: Format a Git commit message following conventional commits spec. Use when user asks to commit changes or write a commit message.
version: 1.0
author: your-handle
tags: [git, development]
---

# Git Commit Format

When writing a commit message:
1. Use conventional commits format: `type(scope): description`
2. Types: feat, fix, docs, style, refactor, test, chore
3. Keep the first line under 72 characters
4. Add a blank line before the body if explanation is needed
5. Body explains WHY, not what (code shows what)

Examples:
- `feat(auth): add OAuth2 Google login`
- `fix(api): handle null response from upstream provider`
- `docs(readme): add self-hosting section`

Test it:

hermes -m 'Help me write a commit message for the changes I made to the authentication flow'

The agent will load the skill because 'commit message' matches the trigger description.

For skills with code execution, add a code block with a language tag:

# This runs in the Docker sandbox when the agent invokes it
import subprocess
result = subprocess.run(['git', 'log', '--oneline', '-10'], capture_output=True, text=True)
print(result.stdout)

The agent decides when to execute code blocks vs when to use them as reference. Make the intent explicit in your prose instructions.

Managing and sharing skills

Useful skills commands:

hermes skills list                     # list all installed skills with versions
hermes skills list --tag development   # filter by tag
hermes skills info git-commit-format   # show skill metadata
hermes skills edit git-commit-format   # open skill in $EDITOR
hermes skills remove git-commit-format # uninstall
hermes skills export git-commit-format # export as .tar.gz for sharing
hermes skills import skill.tar.gz      # import from file

Skills are included in the Hermes profile export (hermes profile export <name>), making them portable between machines. When migrating from OpenClaw with hermes claw migrate, Hermes-compatible OpenClaw plugins are converted to the skill format automatically where possible. Plugin types that require TypeScript compilation fall back to stubs that explain what the original plugin did — these need manual rewriting.

To publish a skill to the Skills Hub: create a pull request to the agentskills.io GitHub repository with your skill file. Skills are reviewed by the maintainers before listing. Community contribution increases the Hub's coverage and means your skill benefits from community improvements over time.

Skills on Hermes OS

All Skills Hub installations work on Hermes OS instances identically to self-hosted. Skills are stored in the instance's persistent volume and survive container restarts. The hermes skills commands are available from the web terminal in the Hermes OS dashboard.

Self-created skills are particularly useful on Hermes OS because the agent's learning loop builds up a library of procedures specific to your workflows over time. A Hermes OS instance you have been using for six months will have a skill library tailored to your exact working patterns — deployments you run regularly, report formats you prefer, APIs you use. That library is backed up automatically and included in profile exports.

Common questions

Do I need to know programming to write Hermes skills?

No. Basic skills are plain Markdown with YAML frontmatter — natural language instructions the agent follows. You only need code if you want the skill to execute programs directly. Most useful skills (workflow guides, formatting rules, deployment checklists) are pure text.

Can Hermes Agent write skills for itself?

Yes. This is one of its core differentiators. When it solves a repeatable problem, it can package the procedure as a skill in ~/.hermes/skills/ and improve the skill over subsequent uses. You can prompt it explicitly: 'Package what you just did as a skill.'

How is the Hermes Skills Hub different from ClawHub?

The Skills Hub (agentskills.io) hosts Hermes Agent skills in Markdown format. ClawHub hosts OpenClaw plugins in TypeScript/JavaScript. Hermes skills are more accessible to non-developers. ClawHub has reported 400+ malicious plugins in its history; the Skills Hub is newer and smaller. Neither guarantees comprehensive security review of community submissions.

How do I know which skill the agent is using?

Run Hermes with the debug flag: hermes --debug -m 'your question'. The output shows which skills were loaded for the context. You can also check the skill's trigger hit by reviewing the description field — if the agent loaded a skill you didn't expect, the description is probably too broad.

What happens to my skills if I move to a different server?

Skills are stored in ~/.hermes/skills/ and included in profile exports: hermes profile export <name>. Import on the new server with hermes profile import <file>. Skills are also preserved in the Hermes profile backup tar.gz.

How many skills can Hermes have installed?

There's no hard limit. But skills loaded per context have a soft ceiling based on your model's context window — more installed skills means more potential tokens consumed by skill loading. In practice, well-scoped skill descriptions (specific trigger conditions) keep loading efficient because irrelevant skills aren't loaded.

Deploy in 5 minutes.

7-day money-back guarantee. BYO AI key. From $19/mo.

Start Now
Related reading
How to self-host Hermes Agent on a VPSHermes Agent memory explained: SOUL.md, MEMORY.md, sessions, and HonchoHermes Agent gateway setup: Telegram, Discord, and 13 moreHermes Agent vs OpenClaw: a direct comparison