Hermes Agent June 18, 2026 28 min read Skills GEPA

Hermes Agent Skills
Advanced Guide: From Setup to Self-Evolution

SKILL.md · Skill Bundles · Conditional activation · Tap publishing · GEPA + DSPy · Remote Mac validation

Diagram of Hermes Agent Skills system and GEPA self-evolution workflow

Who is this for? You finished the Hermes install guide but still paste deploy, PR, and audit instructions into every conversation—burning tokens while the agent forgets how to work. Bottom line: Nous Research's Hermes Agent crossed 160,000 GitHub stars in roughly two months, not because of a bigger model, but because of "the agent that grows with you"—powered by a standardized, evolvable, cross-session Skills system. What follows: concept comparison → SKILL.md and progressive loading → Skill Bundles → conditional activation → open ecosystem and Tap publishing → GEPA five-stage self-evolution → Plugin skills and authoring tips → blog workflow case study → FAQ. For macOS script validation, pair this with a VNCMac remote Mac VNC session.

01

Why Hermes Agent's Skills system deserves a deep dive

In early 2026, Nous Research shipped Hermes Agent—one of the fastest-growing open-source AI agent projects. Unlike one-shot prompts, Hermes Skills are a standardized, evolvable, cross-session layer of procedural memory: they teach the agent how to do something, not what fact to remember.

This guide skips beginner setup and goes straight to advanced territory:

  1. 1

    Progressive Disclosure: How do you spend zero tokens before activation and expand the full SKILL.md only when needed?

  2. 2

    Conditional Activation: Automatically show or hide skills based on tool availability—smart switching between free and paid APIs.

  3. 3

    Skill Bundles: One slash command loads multiple related skills and triggers a complete workflow.

  4. 4

    DSPy + GEPA: Evolve skill text without touching model weights—each run costs roughly $2–10 in API fees, no GPU required.

  5. 5

    Open ecosystem: awesome-hermes-skills, hermeshub, kevinnft/ai-agent-skills, and more—subscribe directly via Tap.

02

Core concepts: Skills ≠ Prompts, Skills ≠ Memory

Confusing these three is the most common beginner mistake. A simple mnemonic: Prompt = sticky note (valid for this turn only); Memory = notebook (permanent notes, always within reach); Skill = SOP manual (step-by-step procedure, opened when needed).

DimensionPlain PromptMemorySkills
PersistenceCurrent conversationCross-session, permanentCross-session, permanent
Load timingAlways in contextAuto-injected each sessionOn demand
Token costEvery turnSmall and stableZero before activation
Content typeAny intent descriptionUser preferences / factsProcedural steps
MaintenanceManual by userAutomatic by agentUser + agent
ShareabilityAwkwardPrivatePublishable as community Tap
03

SKILL.md format deep dive and progressive loading

All Hermes Skills follow the open agentskills.io standard, portable across Hermes, Claude Code, and Cursor.

SKILL.md frontmatter example
---
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

Skill directory layout (modular design)

Recommended layout under ~/.hermes/skills/
my-category/my-skill/
├── SKILL.md              # Core steps; keep ≤500 lines
├── references/           # API docs, loaded on demand
├── templates/            # Reusable templates
└── scripts/              # Scripts the agent can execute directly

Progressive Disclosure: three loading levels (token control core)

LevelContentTriggerToken cost
Level 0name + descriptionEvery session start, all skills~3K (all skills combined)
Level 1Full SKILL.md body/skill-name or LLM decides neededDepends on file length
Level 2references/ scripts/LLM decides at execution timeOn demand, per file

Writing tip: description is the only Level 0 signal—the LLM uses it to decide whether to load the full skill. State when to use more clearly than what it is; start with Use when... and stay under 1024 characters.

04

Skill Bundles: one command triggers a complete workflow

Skill Bundles are a 2026 Hermes addition and one of the most underrated features. A Bundle is a lightweight YAML file that packs multiple related skills into a single slash command; running /bundle-name loads all listed skills at once.

File location: ~/.hermes/skill-bundles/<slug>.yaml

backend-dev bundle example
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.

Advanced scenarios: An AI research workflow might bundle arxiv + deep-research + plan + excalidraw; an MLOps deploy might bundle vllm + llama-cpp + github-pr-workflow + systematic-debugging.

RuleBehavior
Name collisionBundle takes priority over a single Skill
Missing skillSkipped without error; warning shown at load time
Prompt CacheBundle does not modify system prompt—token friendly
CLI quick create
hermes bundles create backend-dev \
  --skills github-code-review,test-driven-development,github-pr-workflow \
  --instruction "Always write failing tests first"
05

Conditional activation: environment-aware skills

Under metadata.hermes, configure four activation rules so skills automatically show or hide based on tool availability in the current session:

FieldLogic
requires_toolsetsHide this skill when listed toolsets are absent
requires_toolsHide this skill when listed tools are absent
fallback_for_toolsetsHide when listed toolsets exist (fallback role)
fallback_for_toolsHide when listed tools exist (fallback role)

Classic scenario—free vs paid tool switching: When the user configures FIRECRAWL_KEY or BRAVE_SEARCH_KEY, the paid web_search skill activates and the DuckDuckGo fallback disappears from the prompt—saving tokens. When the API is unavailable, the fallback resurfaces automatically.

duckduckgo-search fallback
metadata:
  hermes:
    fallback_for_tools: [web_search]   # auto-hide when paid web_search exists

Through the hermes skills TUI, you can also toggle individual skills on or off per platform—CLI, Telegram, Discord, and others.

06

Skills Hub and the open-source ecosystem

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
RepositoryHighlightsStars
awesome-hermes-skillsProduction-grade collection: Deep Research, MLOps, Apple integration67
hermeshubCommunity registry with security scanning166
ai-agent-skills191 skills, 28 categories, cross Hermes/Claude/Cursor10
hermes-agentOfficial repo—authoritative source and authoring spec

The agentskills.io open standard means skill assets are not locked to one platform. Validate format compliance with skills-ref validate ./my-skill.

07

Publishing your own Skill Tap: team and community sharing

Create a GitHub repository as a Tap so your team—or the wider community—can subscribe to your skill set:

Tap repo layout and skills.sh.json
my-skills-tap/
├── skills.sh.json
├── mlops/vllm-deploy/SKILL.md
└── research/paper-summarizer/SKILL.md

# One-command team subscription
hermes skills tap add github:your-org/your-skills-tap
hermes skills tap add github:your-org/private-skills --token $GH_TOKEN
hermes skills tap update
hermes skills tap list

Version control tip: Put ~/.hermes/skills/ under Git. After git pull && hermes skills reset on another device, rebuild built-in skills to stay in sync.

08

Self-Evolving Skills: GEPA + DSPy automatic skill improvement

GEPA (Genetic-Pareto Prompt Evolution) is a 2026 ICLR Oral result, integrated in hermes-agent-self-evolution. The core idea: without fine-tuning model weights, analyze execution traces, generate variants, and apply multi-objective Pareto optimization to improve the skill text itself. Each optimization run costs roughly $2–10 in API fees—no GPU required.

GEPA five-stage evolution pipeline

  1. 1

    Execution trace collection: Read full reasoning traces from SQLite—tool calls, branches, errors.

  2. 2

    Reflective failure analysis: LLM produces actionable side information—not just "it failed," but why it failed.

  3. 3

    Targeted mutation: Generate 10–20 SKILL.md variants aimed at the failure root cause.

  4. 4

    Multi-objective Pareto evaluation: Optimize success rate × token efficiency × speed simultaneously.

  5. 5

    Human PR review: Best variant → PR generated → merge after human approval.

Quick start
git clone https://github.com/NousResearch/hermes-agent-self-evolution
cd hermes-agent-self-evolution && pip install -r requirements.txt
export HERMES_AGENT_PATH=~/.hermes

# Synthetic data entry point
python -m evolution.skills.evolve_skill \
    --skill github-code-review --iterations 10 --eval-source synthetic

# Real session data (better results)
python -m evolution.skills.evolve_skill \
    --skill github-code-review --iterations 10 --eval-source sessiondb

Four safety guardrails

  1. 1

    Full test suite pytest tests/ -q must pass 100%

  2. 2

    Size limits: Skills ≤ 15KB, tool descriptions ≤ 500 characters

  3. 3

    Prompt cache compatibility: no mid-session edits that invalidate cache

  4. 4

    Semantic preservation check: must not drift from the skill's original purpose

PhaseOptimization targetEngineStatus
Phase 1Skill files (SKILL.md)DSPy + GEPA✅ Shipped
Phase 2Tool descriptionsDSPy + GEPA🔲 Planned
Phase 3System prompt fragmentsDSPy + GEPA🔲 Planned
Phase 4Tool implementation codeDarwinian Evolver🔲 Planned
Phase 5Continuous improvement loopAutomated pipeline🔲 Planned

Because Skills follow the agentskills.io standard, you can feed Claude Code or Gemini CLI execution traces into GEPA too: --eval-source mixed --trace-dirs ~/.claude/traces,~/.hermes/sessions

09

Plugin skills: extending Hermes boundaries

Plugins package skills into a namespace (plugin:skill): they do not appear in the default skills_list (reducing noise); they activate only on explicit user invocation (opt-in); and skills inside a plugin can reference each other.

plugin.yaml declaration
name: my-hermes-plugin
skills:
  - name: writing-plans
    path: skills/writing-plans/SKILL.md
  - name: editing
    path: skills/editing/SKILL.md

# Load: skill_view("superpowers:writing-plans")
10

Advanced skill authoring tips (engineer's perspective)

description drives activation precision: Avoid vague lines like Helps with code. State trigger conditions, scope, and explicit exclusions (Do NOT use for...).

Pitfalls separate good skills from great ones: Each failure mode needs root-cause analysis and an actionable fix—not generic advice.

Skill sizeRecommendation
< 500 linesKeep everything in SKILL.md
500–1000 linesMove detailed material to references/
> 1000 linesSplit strongly; consider whether this is two skills
> 15KBExceeds GEPA size limit—must split

skill_manage lets the agent maintain its own skills: Supports patch and create actions. Set skills.agent_writes_require_approval: true in config.yaml to require human approval before writes land on disk.

11

Case study: tech blog workflow Skills

Build a blog-workflow Bundle that packages SEO research, outline generation, code validation, bilingual checks, and publishing skills:

~/.hermes/skill-bundles/blog-workflow.yaml
name: blog-workflow
description: Full tech blog writing workflow.
skills:
  - seo-keyword-research
  - outline-generator
  - code-example-validator
  - bilingual-checker
  - publish-to-platform
instruction: |
  Always research SEO keywords before writing.
  Ensure all code examples are tested and runnable.
  Generate both Chinese and English title options.

A custom seo-keyword-research skill might specify in Procedure: Chinese long-tail patterns like "X 怎么用" and "X 教程"; English patterns like "X tutorial," "how to X," and "X vs Y"; cross-reference Juejin trending and Dev.to hot posts; output 3–5 primary keywords plus a 10–15 long-tail matrix.

12

Decision matrix: running Hermes Skills on a remote Mac

Hermes Agent needs 24/7 uptime and local trace accumulation for GEPA evolution to work (see our three-layer memory architecture guide). You can write Skills on a Windows or Linux primary machine, but macOS-specific scripts/ and Telegram Gateway validation belong on a remote Mac.

ScenarioSSH onlySSH + VNCRecommendation
Edit SKILL.md / Bundle YAMLSSH is enough
Run bash script validationSSH is enough
Telegram / Discord QR pairingVNC required
GEPA evolution + manual PR reviewOptionalSSH + local diff review
macOS Keychain / TCC permissionsVNC required
  1. 1

    Rent a Mac Mini M4 monthly node and install Hermes over SSH (see the install guide).

  2. 2

    Create your first SKILL.md under ~/.hermes/skills/; validate with skills-ref validate.

  3. 3

    Create a Skill Bundle and verify multi-skill loading with /bundle-name.

  4. 4

    Complete Telegram Gateway QR pairing and hermes doctor health checks in a VNC session.

  5. 5

    After session traces accumulate, run GEPA evolve_skill on the remote node and review the generated PR.

Further reading

Official resources and community links

FAQ

Frequently asked questions

Skills are procedural knowledge documents that teach an agent how to perform a task. MCP is a tool interface that gives the agent additional tool-calling capabilities. They complement each other: MCP provides database access; a Skill teaches the agent how to run a migration correctly.

Skill edits do not take effect in the current session. Run /reset to start fresh, or install with the --now flag to force a refresh (this invalidates Prompt Cache and costs more tokens).

Four guardrails constrain output: full test suite, size limits, semantic preservation, and human PR review. Semantic drift detection ensures skills do not wander from their original purpose. Still review every PR diff manually before merging.

Copy SKILL.md to ~/.claude/skills/, or use multi-agent install scripts such as kevinnft/ai-agent-skills for one install across Hermes, Claude Code, and Cursor.

CJK characters in most tokenizers cost roughly 1–1.5 tokens per character—comparable to English. Keep the description field in English (or bilingual), because underlying LLMs match English descriptions more precisely.

Closing thoughts

Hermes Agent Skills turn "gets better with use" from a slogan into an engineering path: the agentskills.io standard guarantees cross-platform portability, Progressive Disclosure controls token spend, Bundles and conditional activation orchestrate complex workflows, and GEPA lets skill text evolve continuously—all of which require a 24/7 host that accumulates session traces.

Writing Skills on Windows or Linux is fine, but Telegram QR pairing, macOS permission dialogs, and long-term trace accumulation often stall on "no always-on Mac." Buying a Mac mini means depreciation and power bills; a VPS cannot run the full native Hermes Gateway toolchain. By contrast, renting a Mac Mini M4 from VNCMac hands uptime and base image to a provider—you focus on skill authoring and GEPA evolution, and use VNC for graphical validation.

If you are ready to move Hermes from "installed" to "skill-systemized," open a remote Mac node via the button below, then follow Section 12's five-step checklist alongside our architecture guide and install tutorial.