Hermes Skin Maintenance
Use this skill to audit, extend, or repair an existing Hermes skin while preserving its visual character across the CLI, TUI, and desktop app.
Authority and scope
- The canonical cross-surface color contract is
SKIN_COLOR_TOKENSinapps/shared/src/skin.tsin the Hermes Agent repository. Fetch the raw file from the branch requested by the user, ormainwhen no revision is specified. - A skin can contain legacy or niche keys, but token coverage must be measured only against the canonical list. Do not delete compatible extras merely because they are absent from that list.
- Resolve the active Hermes home from
$HERMES_HOME; if unset, use~/.hermes. Never hand-editconfig.yaml.
Procedure
- Load the Hermes theming guidance if available and inspect the target skin YAML.
- Fetch and parse
SKIN_COLOR_TOKENS; do not infer the list from an old template. - Compute the missing keys programmatically from the skin's
colorsmapping. - Add only missing canonical keys. Preserve existing values and assign new colors by semantic family rather than inventing unrelated hues:
background: a dark or light base that fits the established skin.- primary/text/border: reuse the existing heading, body, and structural palette.
- tool/thinking: inherit the skin's accent and secondary-label colors unless an intentional contrast distinction exists.
- diff/status/syntax: map positive→ok, warning/number→warn, negative→error; use a slightly stronger shade for word-level diffs and critical status.
- terminal chrome: reuse prompt/accent/text hierarchy consistently.
- Keep all values as quoted six-digit
#rrggbbcolors. - Validate the YAML and verify that every canonical token is now present.
- Apply the edited skin with
hermes config set display.skin <name>and read backhermes config get display.skinbefore reporting success.
Verification checklist
Report these exact checks:
- Target file path and embedded skin
nameagree. - YAML parses successfully.
missing_tokens=noneagainst the fetched canonicalSKIN_COLOR_TOKENS.- The active skin resolves to the target name after applying it.
Pitfalls
- The skin's existing palette may intentionally omit
background; adding it is still necessary for reliable desktop/TUI base-surface rendering. status_bar_badandstatus_bar_criticalare distinct. Do not stop at the older, smaller template palette.- When changing the configured model provider in the same session, remove an inherited custom
model.base_urlafter selecting an OAuth provider; otherwise an old local endpoint may remain in the configuration. Verify the selected provider's auth status before declaring the migration complete. - Do not modify bundled or user-owned Hermes skills. Create or update a curator-managed companion skill instead.