Installs into .claude/skills of the current project.
Are you the author of Hermes Skills Management?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/kairos-ai-agent-hermes-skills-management)
---
name: "hermes-skills-management"
description: "Find, install, and manage Hermes Agent skills from multiple sources — skills hub, ClawHub, GitHub, official source, and local/OpenClaw migration."
priority: 0.5
version: "1.0.0"
imported-from: "hermes"
source-path: "agents/skills/autonomous-ai-agents/hermes-skills-management/SKILL.md"
---
# Hermes Skills Management
Manage the Hermes Agent skill ecosystem — finding, installing, updating, and migrating skills from all available sources.
## Overview
Hermes Agent loads skills from `~/AppData/Local/hermes/skills/<category>/<name>/SKILL.md`. Skills can come from:
| Source | Command | Trust level |
|--------|---------|-------------|
| **Official** (shipped optional) | `hermes skills install official/<cat>/<name>` | official |
| **Builtin** (always active) | Pre-installed with Hermes | builtin |
| **skills.sh** (community registry) | `hermes skills install skills-sh/<org>/<repo>/<skill>` | community |
| **ClawHub** (ClawHub registry) | `hermes skills install clawhub:<skill-id>` | community |
| **Local copy** | Copy dir into `~/AppData/Local/hermes/skills/` | local |
| **Direct URL** | `hermes skills install https://.../SKILL.md` | varies |
## Finding Skills
### Search the skills hub
```bash
hermes skills search --source skills-sh <keyword>
hermes skills search --source clawhub <keyword>
hermes skills search --source official <keyword>
hermes skills browse # Interactive browser
```
### List installed
```bash
hermes skills list # See all + counts
hermes skills inspect <id> # Preview without installing
```
## Installing Skills
### From official source (trusted, no scan issues)
```bash
echo y | hermes skills install official/devops/watchers
echo y | hermes skills install official/research/scrapling
echo y | hermes skills install official/security/sherlock
```
### From skills.sh community (requires GitHub API)
```bash
echo y | hermes skills install skills-sh/obra/superpowers/brainstorming
```
**⚠️ GitHub API rate limit**: Unauthenticated = 60 requests/hour. Set `GITHUB_TOKEN` in `.env` to raise to 5,000/hr.
### From ClawHub
```bash
echo y | hermes skills install clawhub:douyin-video
```
### From local directory (OpenClaw migration)
```bash
cp -r ~/.openclaw-autoclaw/skills/* ~/AppData/Local/hermes/skills/
```
### With forced approval (bypass security caution)
```bash
echo y | hermes skills install --force skills-sh/epiral/bb-browser/bb-browser
```
**Note**: `--force` does NOT override a `DANGEROUS` verdict. Only `CAUTION` verdicts can be overridden.
## Security Scanning
Every community skill gets scanned before install:
| Verdict | Meaning | Can bypass? |
|---------|---------|-------------|
| `SAFE` | No issues | Auto-allows |
| `CAUTION` | Minor flags | `--force` (confirmed working) |
| `DANGEROUS` | Critical flags (exfiltration, supply chain, 79+ findings) | **BLOCKED permanently** — `--force` does NOT override |
| `BLOCKED` | Blocked by policy | Cannot install |
**Confirmed in practice**: DANGEROUS verdict is truly unbypassable. Example: `gstack` with 79 findings (CRITICAL exfiltration, HIGH exfiltration, MEDIUM supply_chain) was blocked even with `--force`. The `--force` flag only overrides CAUTION verdicts, not DANGEROUS.
When a skill is DANGEROUS-blocked:
- Check if an official alternative exists (`hermes skills search --source official <keyword>`)
- Check if ClawHub has the same skill (`hermes skills install clawhub:<name>`)
- Or install from local directory copy
## Workflow: Batch Install Many Skills
When installing 10+ skills:
1. **Check GitHub API rate limit first:**
```bash
curl -sH "Accept: application/vnd.github+json" https://api.github.com/rate_limit | \
python3 -c "import sys,json;d=json.load(sys.stdin);c=d['resources']['core'];print(f'{c[\\\"remaining\\\"]}/{c[\\\"limit\\\"]}')\"
```
2. **Prioritize official source** — no API calls, trusted, bypasses security scan
3. **Use background processes for parallel install** (speeds up batch ops significantly):
```bash
# Run in terminal(background=true)
echo y | hermes skills install skills-sh/<org>/<repo>/<name>
```
**Why parallel matters**: Sequential `execute_code` batch install times out at 300s because each install takes 30-60s (download + security scan). Background processes run concurrently and complete in the aggregate time.
4. **When rate-limited**: The real fix is GITHUB_TOKEN (5000/hr). Waiting 1 hour only helps if you need <60 more installs. The skills.sh proxy consumes one GitHub API call per install attempt, so a batch of 15+ will exhaust the limit regardless of timing.
5. **Resume interrupted batch across sessions**: When the user returns asking "did the installs finish?" or "continue installing":
- Use `session_search` to find the previous batch-install session
- Call `hermes skills list` to see what's already installed vs pending
- Check GitHub API rate limit first
- Cross-reference: if a skill shows up in `hermes skills list` (even via search), it doesn't mean the install identifier works — the truncated display name in the search table differs from the actual install ID
- Prioritize ClawHub/official sources first (no API calls), then community skills
## Workflow: Finding Exact Install Identifiers
`hermes skills search` output truncates identifiers in its table display. This can cause "Could not fetch" errors when you copy the truncated ID. Workarounds:
1. **Try multiple formats** when the displayed identifier fails:
```bash
# If search shows "skills-sh/muku..." for anthropic-cybersecurity:
hermes skills install skills-sh/mukul975/Anthropic-Cybersecurity-Skills/analyzing-kubernetes
hermes skills install mukul975/Anthropic-Cybersecurity-Skills
```
2. **Use `hermes skills inspect` on partial names** to discover the real GitHub repo:
```bash
hermes skills inspect garrytan/gstack/autoplan # May work even if full ID unknown
```
3. **Search GitHub directly** for the author's repos:
```bash
curl -s "https://api.github.com/search/repositories?q=keyword+user:author"
```
4. **Be aware of timeout risk**: skills.sh installs from large repos can timeout at 30s. Retry with a longer timeout or use `terminal(background=true)` for non-blocking install:
```bash
# In terminal(background=true, timeout=120)
echo y | hermes skills install skills-sh/<org>/<repo>/<name>
```
## Rate Limit Consumption Patterns
Understanding how fast the 60/hr limit burns:
| Operation | Approximate API calls | Notes |
|-----------|----------------------|-------|
| `hermes skills search <keyword>` | 1-2 | Usually 1 call per search |
| `hermes skills install skills-sh/<id>` | 1-3 | Depends on registry resolution |
| `curl -s https://api.github.com/rate_limit` | 1 | Always costs 1 call |
| `curl -s https://api.github.com/search/repositories?q=...` | 1 | Counts against search limit (separate pool: 10/min) |
**Practical limits**: With 60/hr, you can afford roughly:
- ~20 search+install attempts before exhausting
- Or ~10 installs + ~10 searches
- **Best strategy**: Decide what to install first, batch attempts, minimize searches
## Migration from OpenClaw (clawhub / .openclaw-autoclaw)
OpenClaw skills and agents can be transferred to Hermes:
### Skills
```bash
# Copy all OpenClaw skills to Hermes
cp -r ~/.openclaw-autoclaw/skills/* ~/AppData/Local/hermes/skills/
# Then reload: /reload-skills in session
```
### Agents (profiles, sessions, memory)
```bash
# Copy agent directory
cp -r ~/.openclaw-autoclaw/agents ~/AppData/Local/hermes/agents-from-openclaw/
```
- `workspace/memory/*.md` — daily memory notes, can be imported via memory tool
- `sessions/*.jsonl` — session history in JSONL format
- `agent/auth-profiles.json` — API keys (export to `.env`)
- `agent/models.json` — model/provider configs (manual migration to `config.yaml`)
## Common Pitfalls
1. **GitHub API rate limit**: The skills.sh registry uses GitHub API. Without GITHUB_TOKEN, you get 60 requests/hour. This blocks community skill installs for the rest of the hour once exhausted. Fix: Set `GITHUB_TOKEN` in `~/.hermes/.env`.
2. **Security scan blocking**: Community skills with DANGEROUS verdict (exfiltration patterns, env var access) are blocked even with --force. Official builtin sources bypass this. If a skill is blocked, check if an official alternative exists.
3. **Timeout on large installs**: Skills from skills.sh can take 30-60s to download and scan. Use parallel background processes for batch installs. Sequential batch installs in execute_code will timeout at 300s.
4. **Nested directory on copy**: When copying a directory into Hermes skills, ensure you don't create nested duplicates (e.g., `agents/agents/agent-name/`). Use `cp -r source/* dest/` to copy contents, not the parent dir.
5. **Timeout on skills.sh fetch (large repos)**: Some skills.sh installs from repos with large directory trees (e.g., `mukul975/Anthropic-Cybersecurity-Skills` with multiple sub-skills) can exceed the default 30s terminal timeout. The fetch succeeds eventually -- it just needs more time for the security scan pass. Use `terminal(background=true, timeout=120)` or increase foreground timeout to 120s+.
6. **Case sensitivity in skills.sh identifiers**: GitHub repo names can be case-sensitive in skills.sh paths. If `mukul975/anthropic-cybersecurity-skills` fails, try `mukul975/Anthropic-Cybersecurity-Skills` (matching the actual repo casing on GitHub). The full path format is `skills-sh/<org>/<RepoName>/<sub-skill-name>`.
7. **Search-and-install gap**: Finding a skill in `hermes skills search` output does NOT guarantee the install identifier works. The search table truncates IDs, and the install command requires the full exact identifier. Verify with `hermes skills inspect` before attempting install of a truncated ID.
8. **Cross-session install tracking**: When the user returns to ask about unfinished installs, use `session_search` + `hermes skills list` to reconstruct what's pending. See `references/batch-install-resume.md` for the full resume workflow.
9. **Search identifier truncation**: `hermes skills search` truncates identifiers in its table output. When "Could not fetch" happens, try the identifier with full org/repo name or inspect GitHub directly to find the real repo.
10. **Rate limit drains faster than expected**: Each search/inspect/install cycle costs 2-5 API calls. With 60/hr anonymous limit, searching 10+ skills and trying 3-5 installs can exhaust the budget before any install succeeds. Strategy: avoid re-searching skills already confirmed dead ends in `references/batch-install-resume.md`; install directly without intermediate search calls to conserve quota.
## Post-Installation Verification
After any skill install, run this checklist to ensure the skill is fully operational:
### 1. Basic Install Check
- [ ] `hermes skills list` shows the skill
- [ ] Skill status is `enabled`
### 2. Environment Variable Scan
Scan the skill's SKILL.md for `requires.env` (OpenClaw) or `required_environment_variables` (Hermes metadata):
```bash
grep -i "XYQ_ACCESS_KEY\|OPENAI_API_KEY\|ANTHROPIC_API_KEY\|env\|api_key\|token" ~/AppData/Local/hermes/skills/<category>/<name>/SKILL.md
```
If the skill requires env vars that are not set, the install is **incomplete**. Tell the user what's missing and ask them to provide it. Common patterns:
- `XYQ_ACCESS_KEY` — 小云雀 custom API key
- `GITHUB_TOKEN` — GitHub API (for skills.sh registry)
- `OPENAI_API_KEY` — OpenAI protocol skills
### 3. Cross-Platform Sync Check
If the user has both OpenClaw and Hermes, verify the skill exists in both:
```bash
ls ~/.agents/skills/<name>/SKILL.md 2>/dev/null && echo "OpenClaw ✅" || echo "OpenClaw ❌"
ls ~/AppData/Local/hermes/skills/**/<name>/SKILL.md 2>/dev/null && echo "Hermes ✅" || echo "Hermes ❌"
```
If it's only in one platform, the user needs to install or copy it to the other.
### 4. API Protocol Compatibility Check
Read the skill's SKILL.md to determine what API protocol it uses. Not all skills use OpenAI-compatible endpoints:
| Protocol | Characteristic | Compatible With |
|----------|---------------|-----------------|
| **OpenAI-compatible** | Uses `/v1/chat/completions`, `Authorization: Bearer <key>` | Most tools (Open WebUI, ChatGPT Next, etc.) |
| **Custom REST** | Custom paths (e.g., `/api/biz/v1/skill/submit_run`) | Only the skill's own scripts |
| **agent-im OpenAPI** | 小云雀's proprietary protocol | Only `submit_run.py`/`get_thread.py` scripts |
**Known non-OpenAI skills:**
- `xyq-nest-skill` (小云雀): Custom `agent-im OpenAPI` at `https://xyq.jianying.com`. Requires `XYQ_ACCESS_KEY`. Cannot be used as an OpenAI base URL.
If the skill uses a custom protocol, flag this to the user so they don't try to use it as an OpenAI drop-in.
### 5. Script Availability
- [ ] Check the skill directory has working scripts (`ls scripts/`)
- [ ] Try `python3 scripts/<entrypoint>.py --help` to verify dependencies
- [ ] Check file size limits (小云雀: 200MB per file)
## Common Pitfalls (Post-Install Specific)
11. **Installed but not usable**: A skill may install successfully but require an env var the user hasn't set. Always scan for `requires.env` in SKILL.md and report missing vars to the user with exact instructions: `export XYQ_ACCESS_KEY="your-key-here"`.
12. **Custom API protocol confusion**: Skills like `xyq-nest-skill` (小云雀) use their own API protocol — they cannot be used as OpenAI-compatible base URLs in tools like Open WebUI or ChatGPT Next. The user may think they can, so proactively clarify.
13. **OpenClaw-only install**: Some install methods (like `npx skills add`) install to OpenClaw only, not Hermes. Check both if the user has both platforms. If missing from one, copy the skill directory.
## Verification Checklist
- [ ] Skills listed with `hermes skills list` after install
- [ ] Skill status shows `enabled`
- [ ] For community skills: security scan passed (SAFE) or allowed (CAUTION + --force)
- [ ] For OpenClaw copy: no nested directories, SKILL.md present in each skill folder
- [ ] GitHub rate limit checked before batch operations
- [ ] Memory files from agent migration imported via memory tool (if applicable)
- [ ] Required env vars checked and reported to user
- [ ] Cross-platform sync verified (OpenClaw + Hermes)
- [ ] API protocol compatibility checked (OpenAI vs custom)
- [ ] Script dependencies verified