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 — reusable capabilities the agent can call on demand. What separates them from every other plugin system is that Hermes writes skills for itself. When it solves a problem it will face again, it packages the solution into a skill and improves it over subsequent uses. This guide covers 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. No compiled code required to write a basic skill.

The agent reads skills into context when they are relevant. It decides which skills to load based on the description field in the frontmatter. A skill for 'deploy a Next.js app to Vercel' loads when you ask about Vercel deployments and stays out of context for unrelated tasks. Skills can also include executable code (Python, JavaScript, bash) that runs inside the agent's Docker sandbox — functioning as mini-programs the agent can invoke when the natural language instructions call for it.

The skill file format

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

yaml
--- 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 loader gets triggered for unrelated tasks and wastes context tokens. A description that is too narrow means the skill gets missed when it should apply. Specific trigger language is worth the extra time to write.

Key fields: name (internal identifier used in CLI commands), description (natural language trigger, critical), version (used for updates and rollback), author (shown on Skills Hub if published), tags (for hermes skills list filtering), platforms (which gateways can use this skill — defaults to all if omitted).

How Hermes self-creates and improves skills

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 runs better or differently, update the skill file. This is the feature that distinguishes Hermes from most AI agents — no other mainstream agent framework in 2026 has a working equivalent.

In practice: ask Hermes to set up a new Python project with a specific structure — a venv, pytest, linting config. It works through the steps, succeeds, and writes a create-python-project.md skill. Next time you ask for the same setup, it loads the skill and executes faster. If you later change your preferred structure, update the skill to match.

This does not happen automatically for every task — the agent decides when a procedure is worth codifying. You can also 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 update that broke something.

The Skills Hub — agentskills.io

The Skills Hub at agentskills.io is Hermes's community skill marketplace. Skills are submitted by community members and installable directly from the CLI:

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

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

Not all skills undergo security review. 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 calling a remote URL on your behalf, running shell commands with elevated permissions, or reading sensitive files deserves scrutiny before you install it. Check the author's publish history, read the implementation, and do not install anything touching your data from an author with no track record.

Hermes skills vs OpenClaw plugins

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

FeatureHermes SkillsOpenClaw Plugins
FormatMarkdown + YAMLTypeScript/JavaScript module
Self-creationYesNo
Self-improvementYesNo
Marketplaceagentskills.ioclawhub.io
Security recordNo public CVEs400+ malicious plugins reported
Installationhermes skills installopenclaw plugins install

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 code. The self-creation feature has no OpenClaw equivalent. The 400+ malicious plugin figure comes from OpenClaw's own ClawHub community disclosures. The Hermes Skills Hub has not had a comparable public incident, partly because it is newer and smaller.

Writing your first skill

Create a skill file directly:

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

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

markdown
--- 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:

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

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

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

python
# 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)

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

Managing and sharing skills

Useful skills commands:

bash
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 profile exports (hermes profile export <name>), making them portable between machines. When migrating from OpenClaw with hermes claw migrate, Hermes-compatible OpenClaw plugins convert to the skill format automatically where possible. Plugin types requiring TypeScript compilation fall back to stubs that describe what the original plugin did — those need manual rewriting.

On Hermes OS, skills work identically to self-hosted — stored in the instance's persistent volume, surviving container restarts. The self-creation loop is particularly useful here: an instance you have been using for six months accumulates a skill library tuned to your exact working patterns. 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. Code is only needed if you want the skill to execute programs directly. Most useful skills (workflow guides, deployment checklists, formatting rules) are pure text.

Can Hermes Agent write skills for itself?

Yes. When it solves a repeatable problem, it packages the procedure as a skill in ~/.hermes/skills/ and improves it over subsequent uses. You can also 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, smaller, and has not had a comparable incident.

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. 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>.

How many skills can Hermes have installed?

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. Well-scoped trigger descriptions keep loading efficient because irrelevant skills do not get loaded.

Deploy in 5 minutes.

7-day money-back guarantee. BYO AI key. From $9.99/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