26 Hermes Skills. Not OMP. Not other systems. Just Hermes. These are the skills loaded via
skill_view(). Mention trigger phrase → auto-loaded. Idiot-proof.
1. 🚀 Quick Start
# 1. See what skills exist
hermes skills list
# 2. Load a skill (agent does this automatically)
skill_view(name='cs2docs') # Read full skill
skill_manage(action='create', name='my-skill', content='...') # Create new
# 3. Invoke in chat: "Use cs2docs on this session" → auto-loaded2. 📊 Invocation Patterns
| 🎯 Goal | 💬 Say This | 🧠 Gets You |
|---|---|---|
| Condense session → cheat sheet | ”Condense this into PLAN.md” | cs2docs |
| Research a tool/topic | ”Research svelte-flexiboards” | docskurby |
| Disk cleanup | ”What’s taking up space?“ | server-disk-ops |
| Code quality audit | ”Run thermo-nuclear review” | thermo-nuclear-code-quality-review |
| Extract YouTube transcript | ”Extract this video” | transcript-extract |
| Discord dashboard | ”Send embed to Discord” | discord-send-embed |
| Plugin development | ”Create dashboard plugin” | hermes-dashboard-plugins |
| ACP + kanban tasks | ”Use omp suite” | omp-suite |
| Agent profile design | ”Design agents for this task” | skill-xray |
3. 🧠 Commands
| 🔧 Command | Purpose | Example |
|---|---|---|
hermes skills list | List all skills | — |
hermes config set key value | Set config (protected file) | hermes config set model.default "nvidia/nemotron-3-ultra-550b-a55b:free" |
hermes config show | Show current config | — |
skill_view(name='X') | Read skill X | skill_view(name='hermes-essentials') |
skill_manage(action='create', ...) | Create skill | See template below |
skill_manage(action='patch', ...) | Fix skill in place | — |
skill_manage(action='delete', ...) | Delete skill | skill_manage(action='delete', name='old-skill') |
4. 🏗️ YAML Template
---
name: my-skill
description: "One-liner what it does"
condition: "Trigger phrase 1 OR phrase 2 OR phrase 3"
---
# 🏷️ Skill Title
> Core directive one-liner.
## 🎯 When to Use
- Trigger phrase 1
- Trigger phrase 2
## ⚡ Workflow
1. Step one (exact command)
2. Step two (with verification)
3. Step three (output required)
## 🚨 Pitfalls
- **Trap:** What breaks → **Fix:** How to fix
## ✅ Verification
- [ ] Check one
- [ ] Check two5. 📋 Categories
| 📂 Category | 🎯 Use For | 🚀 Go-To Skills |
|---|---|---|
| Core | Setup, config, debugging | hermes-essentials |
| Design | Multi-agent orchestration | skill-xray, skillforge |
| Research | Deep research, scraping | docskurby, superpower-pipeline |
| Synthesis | Condense output | cs2docs, transcript-extract |
| Review | Code quality | thermo-nuclear-code-quality-review |
| DevOps | Plugins, cron, disk, Discord | omp-suite, discord-*, nightly-sentinel, server-disk-ops |
| Docs | Hugo sites | hugo-fixit, hugo-llm-wiki |
| Frontend | Svelte dashboards | svelte-flexiboards-dashboard |
| Kanban | OMP task lanes (Hermes skill templates) | routas-* (6 skills, loaded via omp-suite) |
6. 🚨 Top Gotchas
| #: | Gotcha | Fix |
|---|---|---|
| 1 | config.yaml is PROTECTED | Use hermes config set ..., NOT write_file |
| 2 | Cron jobs DON’T inherit .env | set -a; source ~/.hermes/.env; set +a before commands |
| 3 | await res.text() on HTTP error HANGS | Throw HTTP ${status} without consuming body |
| 4 | YouTube blocks ALL server-side extraction | Max 2 attempts → browser → user paste |
| 5 | DuckDuckGo blocks automated search | Check result count → 0 = skip file, preserve content |
| 6 | Dual registries = silent bugs | Single shared process_registry.py only |
| 7 | ctx.log doesn’t exist | log = logging.getLogger(__name__) |
| 8 | Double route prefixes (/acp/acp/sessions) | Bare paths in routes, no prefix in include_router |
| 9 | "" for SQLite FK = constraint fail | ws_id = val if val else None |
| 10 | view modules need absolute imports | from db import not from .db import |
| 11 | Vite dev caches stale files | Kill + restart dev server |
| 12 | node_modules in fdupes = slow | fdupes -G 102400 (min 100KB) or skip |
| 13 | Gateway caches PATH at startup | systemctl --user restart hermes-gateway after binaries |
| 14 | Hugo shortcode syntax in backticks still parses | Use {{%/* shortcode */%}} not {{< >}} for Mermaid |
| 15 | Routa skills in ~/.hermes/skills/routas-rs/ but invoked via omp-suite hook | Skills are templates; omp-suite loads them on lane transitions |
7. 🔑 Universal Rules
| 🎨 Rule | ✅ Do This | ❌ Not This |
|---|---|---|
| Fluff | Max 2 sentences/paragraph | Long-winded explanations |
| Emojis | Every header has one | Plain text headers |
| Tables | First choice for data | Paragraphs when table fits |
| Gotchas | BEFORE solutions | Afterthought warnings |
| Links | Clickable URLs | Plain text references |
| Verification | Checklist exists | Trust without checking |
8. 🔗 Essential Paths
~/.hermes/skills/ # All skills live here
~/.hermes/plugins/omp-suite/ # OMP plugin + routas-rs skills
~/.hermes/config.yaml # Protected - use CLI
~/.hermes/.env # API keys - source in cron
~/.hermes/dreams/ # Nightly sentinel outputIdiot-proof ✅ | 100% perfection ✅ | Ready to copy-paste ✅