92 lines
3.5 KiB
Markdown
92 lines
3.5 KiB
Markdown
|
|
---
|
||
|
|
name: hermes-profile-maintenance
|
||
|
|
description: "Maintain and optimize Hermes profiles — cleanup unused skills, audit configuration, and streamline profiles for specific use cases."
|
||
|
|
version: 1.0.0
|
||
|
|
author: Hermes Agent
|
||
|
|
license: MIT
|
||
|
|
platforms: [linux, macos]
|
||
|
|
metadata:
|
||
|
|
hermes:
|
||
|
|
tags: [hermes, profiles, maintenance, cleanup, optimization]
|
||
|
|
related_skills: [hermes-agent]
|
||
|
|
---
|
||
|
|
|
||
|
|
# Hermes Profile Maintenance
|
||
|
|
|
||
|
|
Maintain and optimize Hermes profiles. Covers cleaning up unused skills, auditing profile configuration, and streamlining profiles for specific use cases (e.g., Open WebUI-only profiles).
|
||
|
|
|
||
|
|
## Quick Reference
|
||
|
|
|
||
|
|
- **Curator** only touches agent-created skills (`created_by: "agent"`). Bundled and hub-installed skills are off-limits.
|
||
|
|
- **Bundled placeholder skills** (only a `DESCRIPTION.md`, no `SKILL.md`) are safe to remove at the filesystem level.
|
||
|
|
- **Always take a curator backup** before removing skills: `hermes curator backup`
|
||
|
|
- **Stale caches** (`.usage.json`, `.bundled_manifest`) regenerate automatically after removal.
|
||
|
|
|
||
|
|
## Identifying Safe-to-Remove Skills
|
||
|
|
|
||
|
|
### Step 1: List all skills in the profile
|
||
|
|
|
||
|
|
```bash
|
||
|
|
ls -1 ~/.hermes/profiles/<profile>/skills/ | grep -v '^\.'
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 2: Check which have real content vs placeholders
|
||
|
|
|
||
|
|
A skill with real content has a `SKILL.md` file. A placeholder only has a `DESCRIPTION.md`:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
for s in $(ls -1 ~/.hermes/profiles/<profile>/skills/ | grep -v '^\.'); do
|
||
|
|
if [ -f ~/.hermes/profiles/<profile>/skills/$s/SKILL.md ]; then
|
||
|
|
echo "REAL: $s"
|
||
|
|
else
|
||
|
|
echo "PLACEHOLDER: $s"
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 3: Check usage data
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cat ~/.hermes/profiles/<profile>/skills/.usage.json | python3 -m json.tool | grep -E '"name"|"last_used_at"|"use_count"'
|
||
|
|
```
|
||
|
|
|
||
|
|
Skills with `use_count: 0` and no `last_used_at` are candidates for removal.
|
||
|
|
|
||
|
|
### Step 4: Verify sub-skills
|
||
|
|
|
||
|
|
Some umbrella skills contain real sub-skills even if the parent is a placeholder. Check:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
find ~/.hermes/profiles/<profile>/skills/<skill-name> -name "SKILL.md"
|
||
|
|
```
|
||
|
|
|
||
|
|
If sub-directories contain `SKILL.md` files, the umbrella should be kept.
|
||
|
|
|
||
|
|
## Removing Bundled Placeholder Skills
|
||
|
|
|
||
|
|
When the curator won't touch bundled skills and `hermes skills uninstall` only works for hub-installed skills, remove placeholder-only bundled skills at the filesystem level:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 1. Take a backup
|
||
|
|
hermes curator backup
|
||
|
|
|
||
|
|
# 2. Remove placeholder skills (verify each is DESCRIPTION.md only first)
|
||
|
|
cd ~/.hermes/profiles/<profile>/skills
|
||
|
|
rm -rf apple smart-home social-media # etc.
|
||
|
|
|
||
|
|
# 3. Verify remaining skills
|
||
|
|
ls -1 | grep -v '^\.'
|
||
|
|
```
|
||
|
|
|
||
|
|
### Pitfalls
|
||
|
|
|
||
|
|
- **Don't remove umbrellas with real sub-skills.** Check for `SKILL.md` in subdirectories before removing the parent.
|
||
|
|
- **Don't remove skills with `created_by: "agent"` provenance via filesystem.** Use `hermes curator archive` for those — it logs the action and makes recovery possible.
|
||
|
|
- **The `.bundled_manifest` and `.usage.json` become stale** after filesystem removal. These are auto-regenerated caches — no manual cleanup needed.
|
||
|
|
- **Future `hermes update` may re-seed bundled placeholders.** If they come back, they're still harmless (no SKILL.md = no prompt injection).
|
||
|
|
- **The curator's `.curator_state` may point to the wrong profile's logs** if the profile was cloned. Check `last_report_path` in `.curator_state` — if it references another profile's log directory, the curator has never actually run against this profile.
|
||
|
|
|
||
|
|
## Support Files
|
||
|
|
|
||
|
|
- `references/placeholder-skill-removal-example.md` — Session example: identifying and removing 9 placeholder skills from the open1 profile.
|