Why Hermes Agent Skills deserve a dedicated deep dive
Unlike one-shot system prompts, Hermes treats skills as standardized, evolvable, cross-session procedural memory. For installation see the step-by-step install guide; for persistence layers see the three-layer memory article. This post goes straight into advanced territory.
Runaway token cost: Dumping every SOP into the system prompt loads everything every session. Progressive Disclosure costs zero tokens until a skill activates.
Fragmented workflows: Code review, TDD, and PR management each need a separate /skill-name. Skill Bundles load the full stack with one command.
Missing environment awareness: Paid web_search and free DuckDuckGo can both appear in the prompt. Conditional activation shows or hides skills based on tool availability.
Stagnant skill quality: Hand-written skills freeze after shipping. GEPA (Genetic-Pareto Prompt Evolution, ICLR 2026 Oral) improves SKILL.md text from execution traces—no model weight fine-tuning.
Hard team sharing: Skills scattered across laptops. Tap repos plus hermes skills tap add let a team subscribe to an entire skill library in one step.
| Dimension | Plain Prompt | Memory | Skills |
|---|---|---|---|
| Persistence | Current conversation | Cross-session, permanent | Cross-session, permanent |
| Load timing | Always in context | Injected every session | On demand |
| Token cost | Every turn | Small and stable | Zero before activation |
| Content type | Any intent | User prefs / facts | Procedural steps |
| Maintainer | User manual | Agent automatic | User and Agent |
| Shareability | Awkward | Private | Publishable as community Tap |
Rule of thumb: Prompt = sticky note; Memory = notebook; Skill = SOP manual—open when needed, absent from context when not.
agentskills.io SKILL.md format and Progressive Disclosure
Every Hermes Skill follows the agentskills.io open standard so the same file works across Hermes, Claude Code, and Cursor. Validate compliance with skills-ref validate ./my-skill.
---
name: my-skill
description: |
Use when the user needs to [...].
Handles [...] and [...].
version: 1.0.0
license: MIT
compatibility: Requires git, docker
allowed-tools: Bash(git:*) Read
metadata:
hermes:
tags: [devops, automation]
category: software-development
related_skills: [github-pr-workflow, test-driven-development]
requires_toolsets: [terminal]
fallback_for_toolsets: [web]
---
# My Skill Title
## Overview
## When to Use
## Procedure
## Common Pitfalls
## Verification Checklist
Recommended directory layout:
~/.hermes/skills/
└── my-category/
└── my-skill/
├── SKILL.md # core steps, target ≤500 lines
├── references/ # API docs, loaded on demand
├── templates/ # reusable templates
└── scripts/ # scripts the agent can execute
| Load level | Content | Trigger | Token cost |
|---|---|---|---|
| Level 0 | name + description | Session start, all skills | ~3K (all skills combined) |
| Level 1 | Full SKILL.md body | /skill-name or LLM decides needed | Depends on file length |
| Level 2 | references/ scripts/ files | LLM decides during execution | Per file, on demand |
Writing tip: description is the entire Level 0 payload—the LLM uses it to decide whether to load the full skill. Lead with when to use, not what it is; start with Use when..., keep under 1024 characters.
Skill Bundles and conditional activation: one-shot workflows
Skill Bundles are a 2026 Hermes feature: lightweight YAML files that pack multiple skills behind a single slash command. Running /bundle-name loads every listed skill at once. File location: ~/.hermes/skill-bundles/<slug>.yaml.
name: backend-dev description: | Full backend feature workflow — code review, TDD, and PR management. skills: - github-code-review - test-driven-development - github-pr-workflow instruction: | Always write failing tests first before implementation. Never push directly to main.
Bundle priority rules: when a Bundle and a single Skill share a name, the Bundle wins; missing skills are skipped silently; Bundles do not alter the system prompt, so Prompt Cache stays valid. Quick CLI creation:
hermes bundles create backend-dev \ --skills github-code-review,test-driven-development,github-pr-workflow \ --instruction "Always write failing tests first"
Conditional activation auto-shows or hides skills based on tools available in the current session. Configure under metadata.hermes:
| Field | Behavior |
|---|---|
requires_toolsets | Hide skill when listed toolsets are absent |
requires_tools | Hide skill when listed tools are absent |
fallback_for_toolsets | Hide skill when listed toolsets are present (fallback path) |
fallback_for_tools | Hide skill when listed tools are present (fallback path) |
Classic pattern: after setting FIRECRAWL_KEY or BRAVE_SEARCH_KEY, paid web_search activates and the DuckDuckGo skill disappears via fallback_for_tools: [web_search]. When the API is unavailable, the fallback resurfaces automatically. Platform-aware example: requires_toolsets: [messaging] with platforms: [telegram, discord]—the hermes skills TUI lets you toggle skills per platform independently.
Skills Hub, Tap publishing, GEPA evolution, and advanced authoring
Official install channels:
hermes skills install official/research/arxiv hermes skills install https://example.com/SKILL.md --name my-skill hermes skills install github:openai/skills/k8s hermes skills tap add github:my-org/my-skills hermes skills tap update hermes skills tap list
| Repository | Highlight | Stars |
|---|---|---|
| awesome-hermes-skills | Production-grade collection: Deep Research, MLOps, Apple integration | 67 |
| hermeshub | Community registry with prompt-injection security scans | 166 |
| ai-agent-skills | 191 skills, 28 categories, cross Hermes / Claude / Cursor | 10 |
| hermes-agent | Official source of truth with authoring guidelines | — |
Publishing a team Tap: Create a GitHub repo, control Hub categories with skills.sh.json, and have teammates run hermes skills tap add github:your-org/your-skills-tap; add --token $GH_TOKEN for private repos. Version-control ~/.hermes/skills/ in Git for cross-device sync.
GEPA + DSPy self-evolution (hermes-agent-self-evolution): no weight fine-tuning—analyze execution traces, generate variants, and run multi-objective Pareto optimization on skill text. Each optimization run costs roughly $2–10 in API fees with no GPU. Five stages: ① execution trace collection (SQLite); ② reflective failure analysis; ③ targeted mutation (10–20 SKILL.md variants); ④ multi-objective Pareto evaluation (success rate × token efficiency × speed); ⑤ human PR review.
export HERMES_AGENT_PATH=~/.hermes
python -m evolution.skills.evolve_skill \
--skill github-code-review \
--iterations 10 \
--eval-source sessiondb
python -m evolution.skills.evolve_skill \
--skill github-code-review \
--iterations 10 \
--eval-source mixed \
--trace-dirs ~/.claude/traces,~/.hermes/sessions
Four safety guardrails: full pytest suite must pass 100%; Skills ≤ 15KB; Prompt Cache compatibility; semantic preservation checks. Official evolution roadmap: Phase 1 Skill files (done) → Phase 2 tool descriptions → Phase 3 system prompt → Phase 4 tool implementation code → Phase 5 fully automated loop.
Plugin skills load under the plugin:skill namespace—they do not appear in default skills_list and activate only on explicit user call; plugin skills can reference each other. Advanced authoring: write trigger conditions in description; put concrete failure modes and fixes in Common Pitfalls; split large skills into references/ (>500 lines recommended split, >15KB exceeds GEPA limit); the skill_manage tool lets the agent maintain skills dynamically—set agent_writes_require_approval: true in config.yaml for a human approval gate.
Install and verify Hermes: hermes doctor passes, Gateway online 24/7 (see install guide).
Author your first SKILL.md: Follow agentskills.io; start description with Use when...; include Procedure and Pitfalls sections.
Create a Skill Bundle: hermes bundles create or hand-write YAML under ~/.hermes/skill-bundles/.
Configure conditional activation: Add requires_toolsets or fallback_for_tools under metadata.hermes.
Subscribe to community Taps: hermes skills tap add github:..., then tap update on a schedule.
Optional GEPA evolution: Clone the self-evolution repo, run evolve_skill against sessiondb traces, human-review the PR before merge.
Blog-workflow bundle case study and hard numbers
Build a blog-workflow Bundle packing seo-keyword-research, outline-generator, code-example-validator, bilingual-checker, and publish-to-platform. The bundle instruction requires SEO keyword research first, runnable code examples, and bilingual titles. A custom seo-keyword-research skill sets requires_toolsets: [web] in metadata.hermes; its Procedure covers English long-tail patterns (how to X, X vs Y) and cross-validates against platform trend data.
Level 0 overhead for all skills: roughly 3K tokens (every name + description combined)—an order of magnitude less than injecting full SOPs every session.
GEPA single-run cost: about $2–10 in API calls, no GPU; each run generates 10–20 variants filtered by Pareto front.
Hard size limits: GEPA guardrails cap Skills at 15KB, tool descriptions at 500 characters; target SKILL.md ≤500 lines, strongly split above 1000 lines.
Note: Skill edits do not apply in the current session—run /reset or install with --now (invalidates Prompt Cache). Keep description in English for sharper LLM matching.
Closing a laptop lid, running on an x86 VPS without native macOS paths, or keeping skills on unversioned local disk all interrupt skill compounding and GEPA trace accumulation. For production workloads that need a 24/7 Gateway, skill self-evolution, and cross-device sync, MESHLAUNCH Mac Mini M4 bare-metal cloud rental is the practical fit: dedicated Apple Silicon, native launchd daemons, flexible daily/weekly/monthly billing, and the closest match to Hermes official macOS paths. See pricing, help center, or order a cloud Mac. Further reading: Hermes docs, GEPA algorithm, DSPy framework.
Skills are procedural knowledge documents—they teach an agent how to do something. MCP is a tool interface that adds callable capabilities. They complement each other: MCP gives database access; a Skill teaches how to run a migration correctly. See the MCP Server developer guide.
Skill edits do not apply in the current session. Run /reset to start fresh, or install with --now to force a refresh (this invalidates Prompt Cache and uses more tokens).
Copy SKILL.md into ~/.claude/skills/ or the Cursor skills directory, or install from kevinnft/ai-agent-skills for cross-platform use. For production hosting see pricing and the help center.