Skip to content
Back to skills

Hermes Skills Management

BSecurity

Find, install, and manage Hermes Agent skills from multiple sources — skills hub, ClawHub, GitHub, official source, and local/OpenClaw migration.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentspythonrustgobashkubernetesgitapidevopssecurity

Works with

  • terminal
  • api

Security analysis

B80/100
  • mediumUses curl or wget to download content
  • criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study

Pro shows the line behind each finding and how to fix it

Scanned October 6, 2026

npx -y skills add Kairos-ai-agent/kairos-code --skill hermes-skills-management --agent claude-code

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.

Security grade badge for Hermes Skills Management
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/kairos-ai-agent-hermes-skills-management/badge)](https://www.skillsdirectory.com/skills/kairos-ai-agent-hermes-skills-management)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…