Learning Loop
Skills & Self-Improvement
Hermes creates reusable skills from successful interactions, stores them locally, and improves them over time. This is the core differentiator.
The learning loop: When Hermes solves a problem well, it can extract the approach into a named skill with metadata. Next time a similar task appears, it finds and applies the skill—and refines it based on the outcome. Skills compound: the agent gets meaningfully better with use.
Why this exists
Pure language models are permanent amnesiacs.
A raw LLM doesn't remember anything between runs. Ask it to analyze a codebase on Monday, it'll do a perfectly fine job. Ask it to analyze the same codebase on Friday, it starts from zero — zero awareness of what worked, what it learned last time, what shortcuts you prefer. It's like hiring a brilliant consultant who gets brain-wiped after every meeting.
Skills are Hermes's way of writing notes that survive the amnesia. When Hermes figures out a good approach to something, it captures that approach as a small markdown file. Next time you ask a similar question, Hermes recognizes the pattern, loads the relevant skill, and applies what it learned before. No retraining, no fine-tuning, no GPUs — just text files that build up over time into a library of your working patterns.
This matters because the compounding is real. Month 1, you have an assistant. Month 6, you have an assistant who knows your repos, your conventions, your preferred error-handling style, your Slack tone. That difference isn't the model — it's the skills accumulated between then and now.
In plain terms
SKILL.md = a markdown file with a short description at the top (YAML frontmatter: name, tags, when to use) and the playbook body underneath. Nothing more magical than that — just structured notes.
Fuzzy matching = Hermes doesn't need exact keyword hits to recognize a skill applies. If you have a skill tagged
“pdf-summarize” and you ask “condense this research paper,” it still surfaces — because the meanings cluster close, even though the words don't match.
YAML frontmatter = the
----bracketed block at the top of a markdown file with key:value metadata. Lets Hermes parse the tags/name without running the whole file through the model.
Trust level = how much Hermes trusts a skill source before installing it. Official > Trusted > Community > Custom Tap, with increasing friction (scans, confirmations) at lower levels.
Dialectic user modeling (via Honcho) = Hermes builds a running profile of how
you work — tone, vocabulary, what you tend to ask for — by comparing what you say against what you reject. Over time, responses get tailored without you telling it to.
Skill Lifecycle
1. CreateAgent extracts approach into SKILL.md with YAML frontmatter
2. StoreSaved to ~/.hermes/skills/{category}/{name}/
3. DiscoverFuzzy matched by name, tags, and description when relevant
4. ApplyInjected into context when the agent recognizes a matching task
5. ImproveUpdated based on outcomes—better approaches replace old ones
Skills Hub
The Skills Hub is a multi-source registry for discovering and installing community-built skills. It supports four trust levels:
Official
Published by Nous Research. Highest trust, auto-approved installation.
Trusted
Verified partner skills. Installed with a trust badge indicator.
Community
User-contributed skills. Security scanned before installation.
Custom Taps
Your own GitHub repos as skill sources via hermes skills tap add.
Skill Commands
# Browse available skills
hermes skills browse
# Install a skill by short name
hermes skills install pptx
# List installed skills
hermes skills list
# Check for updates
hermes skills update
# Export/import skill configuration
hermes skills export > my-skills.json
hermes skills import my-skills.json
Security Model
Every skill goes through a security pipeline before installation:
QuarantineIsolated in temporary directory
ScanStatic analysis via skills_guard
Policy CheckVerdict: pass, warn, or block
ConfirmUser approval for warn-level findings
DeployInstalled to skills directory, cache invalidated
Blocked skills: If a skill receives a “dangerous” verdict from the scanner, installation is blocked entirely. Warnings require a --force flag. All actions are audit-logged.
Walk-through
A skill is born — from a Tuesday request to a Friday reuse
- tue 10:22 You ask Hermes to generate an onboarding doc for a new contractor — pull from README, CONTRIBUTING, the last quarter's merged PRs, and the team's Slack welcome channel.
- tue 10:35 After some back-and-forth, Hermes produces a doc you like. You say “save this as a skill so we can reuse it.”
- tue 10:35 Hermes extracts the winning sequence of steps (read these files → fetch these PRs → pull Slack archive → draft with this structure) into
~/.hermes/skills/workflow/onboarding-doc/SKILL.md. YAML frontmatter tags it: onboarding, documentation, new-hire.
- fri 14:08 A teammate sends you a DM: “can you do onboarding for the new designer?” You type into Hermes: “write onboarding for Maya, she's joining the design team.”
- fri 14:08 Hermes fuzzy-matches the request to
onboarding-doc. It loads the skill into context, silently.
- fri 14:09 The agent follows the skill's playbook exactly — but adapted for design context (pulling from design system docs instead of code READMEs).
- fri 14:12 The doc arrives in minutes, not 15+. You make a small tweak. Hermes asks: “should I update the skill with this refinement?” You say yes.
- fri 14:12 SKILL.md is updated. The next onboarding will be even sharper. This is the learning loop — not retraining a model, just accumulating markdown.
Common mistakes
- Installing a Community skill without reading SKILL.md first. Skills are just markdown files — read them. The description plus the playbook body tells you exactly what the agent will attempt.
- Using
--force to bypass warn-level scan findings. The scanner warns for a reason. Investigate before forcing; the audit log survives but your files might not.
- Accumulating hundreds of skills and never pruning. Every skill takes context budget whenever it's a candidate match. Run
hermes skills list quarterly and remove ones you don't use.
- Putting API keys or secrets inside SKILL.md bodies. Skill text gets injected into the model's context every time it's applied. Store secrets in
.env and reference them via tools.
- Trusting “Official” blindly on custom taps. Trust levels are enforced by the skill source, not by Hermes post-install. A Custom Tap pointing at an arbitrary GitHub repo can self-declare any trust level — the protection is that Custom Taps require you to explicitly add them.
- Forgetting to
/skills export before a reinstall. Skills live in ~/.hermes/skills/. If you nuke the folder or switch machines, export first — or back up ~/.hermes/ in its entirety.
Memory System
Alongside skills, Hermes maintains persistent memory across sessions:
- Agent-curated memory with periodic nudges for relevance
- FTS5 session search with LLM summarization for cross-session recall
- Honcho integration for dialectic user modeling—builds a profile of your preferences and working style
- SQLite-backed storage in
~/.hermes/state.db