hermes-skins-customization

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Hermes Skins Customization

Hermes皮肤自定义

Skill by ara.so — Hermes Skills collection.
Custom visual themes for the Hermes CLI agent. Skins control banner colors, ASCII art, spinner text, response labels, and branding — not behavior or personality.
ara.so提供的技能——Hermes技能合集。
Hermes CLI agent打造的自定义视觉主题。皮肤可控制横幅颜色、ASCII艺术、加载动画文本、响应标签和品牌标识——影响功能或个性。

Installation

安装

bash
undefined
bash
undefined

Clone the repository

Clone the repository

Copy skins to your Hermes config directory

Copy skins to your Hermes config directory

mkdir -p ~/.hermes/skins cp skins/*.yaml ~/.hermes/skins/
undefined
mkdir -p ~/.hermes/skins cp skins/*.yaml ~/.hermes/skins/
undefined

Quick Start

快速开始

Apply a Skin

应用皮肤

bash
undefined
bash
undefined

Session-only (via Hermes command)

仅当前会话生效(通过Hermes命令)

/skin pirate
/skin pirate

Permanent (edit ~/.hermes/config.yaml)

永久生效(编辑~/.hermes/config.yaml)

echo "display: skin: pirate" >> ~/.hermes/config.yaml
undefined
echo "display: skin: pirate" >> ~/.hermes/config.yaml
undefined

Browse Available Skins

浏览可用皮肤

Check
~/.hermes/skins/
or the repository's
skins/
directory:
  • pirate — Jolly Roger skull-and-crossbones
  • vault-tec — Fallout green CRT terminal
  • bubblegum-80s — Neon pastels and radical vibes
  • skynet — Cyberdyne red military AI
  • lain — Serial Experiments Lain NAVI aesthetic
  • neonwave — Synthwave grid horizon
  • sakura — Cherry blossom tree
  • netrunner — Cyberpunk neural interface
  • mythos — Eye of Providence Greek mythology
  • nous — Nous Research amber and gold
  • mother — Weyland-Yutani MU-TH-UR 6000
  • dos — Norton Commander dual-pane
  • telemate — DOS BBS terminal
  • empire — Death Star targeting console
  • catppuccin — Mocha pastels with ASCII cat
Built-in skins:
default
,
ares
,
mono
,
slate
,
poseidon
,
sisyphus
,
charizard
查看
~/.hermes/skins/
或仓库的
skins/
目录:
  • pirate — 海盗旗骷髅交叉骨
  • vault-tec — 《辐射》绿色CRT终端风格
  • bubblegum-80s — 霓虹马卡龙色调与复古潮流风格
  • skynet — 天网红色军事AI风格
  • lain — 《玲音》NAVI界面美学
  • neonwave — 合成波网格地平线风格
  • sakura — 樱花树风格
  • netrunner — 赛博朋克神经接口风格
  • mythos — 普罗维登斯之眼希腊神话风格
  • nous — Nous Research琥珀金色风格
  • mother — 维兰德-汤谷MU-TH-UR 6000风格
  • dos — Norton Commander双面板风格
  • telemate — DOS BBS终端风格
  • empire — 死星瞄准控制台风格
  • catppuccin — Mocha马卡龙色调搭配ASCII猫
内置皮肤:
default
,
ares
,
mono
,
slate
,
poseidon
,
sisyphus
,
charizard

Creating a Custom Skin

创建自定义皮肤

Minimal Skin Example

极简皮肤示例

Create
~/.hermes/skins/cyberpunk.yaml
:
yaml
name: cyberpunk
description: Neon terminal theme with magenta and cyan accents

colors:
  # Banner colors
  banner_border: "#FF00FF"
  banner_title: "#00FFFF"
  banner_accent: "#FF1493"
  
  # Text colors
  prompt: "#FF00FF"
  user_input: "#00FFFF"
  
  # Response colors
  response_box_border: "#FF00FF"
  response_label_text: "#000000"
  response_label_bg: "#00FFFF"
  
spinner:
  thinking_verbs: ["jacking in", "decrypting", "uploading", "syncing neural net"]
  
branding:
  agent_name: "CYBERDECK AI"
  response_label: " ⚡ NETRUN "
  prompt_symbol: "▶ "
Note: Undefined keys inherit from the
default
skin.
创建
~/.hermes/skins/cyberpunk.yaml
yaml
name: cyberpunk
description: Neon terminal theme with magenta and cyan accents

colors:
  # Banner colors
  banner_border: "#FF00FF"
  banner_title: "#00FFFF"
  banner_accent: "#FF1493"
  
  # Text colors
  prompt: "#FF00FF"
  user_input: "#00FFFF"
  
  # Response colors
  response_box_border: "#FF00FF"
  response_label_text: "#000000"
  response_label_bg: "#00FFFF"
  
spinner:
  thinking_verbs: ["jacking in", "decrypting", "uploading", "syncing neural net"]
  
branding:
  agent_name: "CYBERDECK AI"
  response_label: " ⚡ NETRUN "
  prompt_symbol: "▶ "
注意: 未定义的配置项将继承自
default
皮肤。

Full Skin Example

完整皮肤示例

For production skins, define all 28 color keys to avoid mismatched defaults:
yaml
name: neon-city
description: Full cyberpunk theme with neon blues and hot pinks

colors:
  # Banner section
  banner_border: "#FF006E"
  banner_title: "#00F5FF"
  banner_accent: "#FFBE0B"
  banner_subtitle: "#8338EC"
  banner_meta: "#FB5607"
  
  # Prompt section
  prompt: "#FF006E"
  user_input: "#00F5FF"
  
  # Response section
  response_box_border: "#FF006E"
  response_label_text: "#000000"
  response_label_bg: "#00F5FF"
  response_text: "#FFFFFF"
  
  # Tool activity
  tool_prefix: "#FFBE0B"
  tool_name: "#8338EC"
  tool_details: "#FB5607"
  
  # System messages
  info: "#00F5FF"
  warning: "#FFBE0B"
  error: "#FF006E"
  success: "#3A86FF"
  
  # Interactive UI
  status_bar_bg: "#1A1A2E"
  status_bar_text: "#00F5FF"
  status_bar_highlight: "#FF006E"
  
  completion_menu_bg: "#16213E"
  completion_menu_text: "#FFFFFF"
  completion_menu_selected_bg: "#FF006E"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#00F5FF"

banner:
  art: |
    ⠀⣠⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣄⡀
    ⢸⣿⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⣿⡟⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⠀⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⣿⠀⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⠀NEON⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⠀CITY⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⠀⠉⠉⠉⠉⠉⠉⠉⠀⠀⣿⠀⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠀⠀⠀⠀⠀⣿⡇
    ⠀⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠀

spinner:
  faces: ["◢", "◣", "◤", "◥"]
  thinking_verbs:
    - "interfacing"
    - "decrypting datastream"
    - "compiling neural pathways"
    - "syncing wetware"
    - "routing through ICE"
    - "jacking in"

branding:
  agent_name: "NEON CITY AI"
  welcome_message: "◆ NEURAL LINK ESTABLISHED ◆"
  goodbye_message: "◇ CONNECTION TERMINATED ◇"
  prompt_symbol: "▶ "
  response_label: " ⬢ UPLINK "
  tool_activity_prefix: "◈ SYS:"
生产环境皮肤需定义全部28个颜色配置项,避免默认值不匹配:
yaml
name: neon-city
description: Full cyberpunk theme with neon blues and hot pinks

colors:
  # Banner section
  banner_border: "#FF006E"
  banner_title: "#00F5FF"
  banner_accent: "#FFBE0B"
  banner_subtitle: "#8338EC"
  banner_meta: "#FB5607"
  
  # Prompt section
  prompt: "#FF006E"
  user_input: "#00F5FF"
  
  # Response section
  response_box_border: "#FF006E"
  response_label_text: "#000000"
  response_label_bg: "#00F5FF"
  response_text: "#FFFFFF"
  
  # Tool activity
  tool_prefix: "#FFBE0B"
  tool_name: "#8338EC"
  tool_details: "#FB5607"
  
  # System messages
  info: "#00F5FF"
  warning: "#FFBE0B"
  error: "#FF006E"
  success: "#3A86FF"
  
  # Interactive UI
  status_bar_bg: "#1A1A2E"
  status_bar_text: "#00F5FF"
  status_bar_highlight: "#FF006E"
  
  completion_menu_bg: "#16213E"
  completion_menu_text: "#FFFFFF"
  completion_menu_selected_bg: "#FF006E"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#00F5FF"

banner:
  art: |
    ⠀⣠⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣄⡀
    ⢸⣿⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⣿⡟⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⣿⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⠀NEON⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⠀CITY⠀⣿⡇
    ⢸⣿⠀⠀⣿⡇⠀⠉⠉⠉⠉⠉⠉⠉⠀⠀⣿⠀⠀⠀⠀⣿⡇
    ⢸⣿⠀⠀⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠀⠀⠀⠀⣿⡇
    ⠀⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠀

spinner:
  faces: ["◢", "◣", "◤", "◥"]
  thinking_verbs:
    - "interfacing"
    - "decrypting datastream"
    - "compiling neural pathways"
    - "syncing wetware"
    - "routing through ICE"
    - "jacking in"

branding:
  agent_name: "NEON CITY AI"
  welcome_message: "◆ NEURAL LINK ESTABLISHED ◆"
  goodbye_message: "◇ CONNECTION TERMINATED ◇"
  prompt_symbol: "▶ "
  response_label: " ⬢ UPLINK "
  tool_activity_prefix: "◈ SYS:"

Configuration Reference

配置参考

Color Keys (All 28)

颜色配置项(共28个)

Banner Section

横幅区域

  • banner_border
    — Border characters
  • banner_title
    — Main title text
  • banner_accent
    — Accent elements
  • banner_subtitle
    — Subtitle text
  • banner_meta
    — Version/meta info
  • banner_border
    — 边框字符颜色
  • banner_title
    — 主标题文本颜色
  • banner_accent
    — 强调元素颜色
  • banner_subtitle
    — 副标题文本颜色
  • banner_meta
    — 版本/元信息颜色

Prompt Section

提示区域

  • prompt
    — Prompt symbol color
  • user_input
    — User-typed text
  • prompt
    — 提示符号颜色
  • user_input
    — 用户输入文本颜色

Response Section

响应区域

  • response_box_border
    — Response box border
  • response_label_text
    — Label text color
  • response_label_bg
    — Label background
  • response_text
    — Response content
  • response_box_border
    — 响应框边框颜色
  • response_label_text
    — 标签文本颜色
  • response_label_bg
    — 标签背景颜色
  • response_text
    — 响应内容颜色

Tool Activity

工具活动

  • tool_prefix
    — Tool prefix icon
  • tool_name
    — Tool name
  • tool_details
    — Tool details/args
  • tool_prefix
    — 工具前缀图标颜色
  • tool_name
    — 工具名称颜色
  • tool_details
    — 工具详情/参数颜色

System Messages

系统消息

  • info
    — Info messages
  • warning
    — Warning messages
  • error
    — Error messages
  • success
    — Success messages
  • info
    — 信息消息颜色
  • warning
    — 警告消息颜色
  • error
    — 错误消息颜色
  • success
    — 成功消息颜色

Interactive UI

交互界面

  • status_bar_bg
    — Status bar background
  • status_bar_text
    — Status bar text
  • status_bar_highlight
    — Status bar highlights
  • completion_menu_bg
    — Autocomplete menu background
  • completion_menu_text
    — Menu text
  • completion_menu_selected_bg
    — Selected item background
  • completion_menu_selected_text
    — Selected item text
  • completion_menu_border
    — Menu border
  • status_bar_bg
    — 状态栏背景颜色
  • status_bar_text
    — 状态栏文本颜色
  • status_bar_highlight
    — 状态栏高亮颜色
  • completion_menu_bg
    — 自动补全菜单背景颜色
  • completion_menu_text
    — 菜单文本颜色
  • completion_menu_selected_bg
    — 选中项背景颜色
  • completion_menu_selected_text
    — 选中项文本颜色
  • completion_menu_border
    — 菜单边框颜色

Banner Art

横幅艺术

Use multiline strings with braille Unicode (
⠀⠁⠂...⣿
) or ASCII art:
yaml
banner:
  art: |
    ╔════════════════════════════════╗
    ║   █████╗ ██╗                  ║
    ║  ██╔══██╗██║                  ║
    ║  ███████║██║                  ║
    ║  ██╔══██║██║                  ║
    ║  ██║  ██║██║                  ║
    ║  ╚═╝  ╚═╝╚═╝                  ║
    ╚════════════════════════════════╝
使用盲文Unicode(
⠀⠁⠂...⣿
)或ASCII艺术的多行字符串:
yaml
banner:
  art: |
    ╔════════════════════════════════╗
    ║   █████╗ ██╗                  ║
    ║  ██╔══██╗██║                  ║
    ║  ███████║██║                  ║
    ║  ██╔══██║██║                  ║
    ║  ██║  ██║██║                  ║
    ║  ╚═╝  ╚═╝╚═╝                  ║
    ╚════════════════════════════════╝

Spinner Configuration

加载动画配置

yaml
spinner:
  faces: ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
  thinking_verbs:
    - "processing"
    - "analyzing"
    - "computing"
    - "calculating"
    - "synthesizing"
yaml
spinner:
  faces: ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
  thinking_verbs:
    - "processing"
    - "analyzing"
    - "computing"
    - "calculating"
    - "synthesizing"

Branding Text

品牌文本配置

yaml
branding:
  agent_name: "MY AI ASSISTANT"
  welcome_message: "System initialized. Ready for input."
  goodbye_message: "Shutting down. Goodbye."
  prompt_symbol: "➜ "
  response_label: " RESPONSE "
  tool_activity_prefix: "→ Tool:"
yaml
branding:
  agent_name: "MY AI ASSISTANT"
  welcome_message: "System initialized. Ready for input."
  goodbye_message: "Shutting down. Goodbye."
  prompt_symbol: "➜ "
  response_label: " RESPONSE "
  tool_activity_prefix: "→ Tool:"

Common Patterns

常见模板

Dark Theme Template

深色主题模板

yaml
name: my-dark-theme
description: High-contrast dark theme

colors:
  banner_border: "#00FF00"
  banner_title: "#FFFFFF"
  banner_accent: "#00FF00"
  banner_subtitle: "#AAAAAA"
  banner_meta: "#666666"
  
  prompt: "#00FF00"
  user_input: "#FFFFFF"
  
  response_box_border: "#00FF00"
  response_label_text: "#000000"
  response_label_bg: "#00FF00"
  response_text: "#E0E0E0"
  
  tool_prefix: "#00FF00"
  tool_name: "#FFFF00"
  tool_details: "#CCCCCC"
  
  info: "#00AAFF"
  warning: "#FFAA00"
  error: "#FF0000"
  success: "#00FF00"
  
  status_bar_bg: "#1A1A1A"
  status_bar_text: "#00FF00"
  status_bar_highlight: "#FFFFFF"
  
  completion_menu_bg: "#2A2A2A"
  completion_menu_text: "#E0E0E0"
  completion_menu_selected_bg: "#00FF00"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#00FF00"
yaml
name: my-dark-theme
description: High-contrast dark theme

colors:
  banner_border: "#00FF00"
  banner_title: "#FFFFFF"
  banner_accent: "#00FF00"
  banner_subtitle: "#AAAAAA"
  banner_meta: "#666666"
  
  prompt: "#00FF00"
  user_input: "#FFFFFF"
  
  response_box_border: "#00FF00"
  response_label_text: "#000000"
  response_label_bg: "#00FF00"
  response_text: "#E0E0E0"
  
  tool_prefix: "#00FF00"
  tool_name: "#FFFF00"
  tool_details: "#CCCCCC"
  
  info: "#00AAFF"
  warning: "#FFAA00"
  error: "#FF0000"
  success: "#00FF00"
  
  status_bar_bg: "#1A1A1A"
  status_bar_text: "#00FF00"
  status_bar_highlight: "#FFFFFF"
  
  completion_menu_bg: "#2A2A2A"
  completion_menu_text: "#E0E0E0"
  completion_menu_selected_bg: "#00FF00"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#00FF00"

Retro CRT Terminal

复古CRT终端主题

yaml
name: retro-crt
description: Amber phosphor CRT terminal

colors:
  banner_border: "#FFAA00"
  banner_title: "#FFCC44"
  banner_accent: "#FFAA00"
  banner_subtitle: "#CC8800"
  banner_meta: "#AA6600"
  
  prompt: "#FFAA00"
  user_input: "#FFCC44"
  
  response_box_border: "#FFAA00"
  response_label_text: "#000000"
  response_label_bg: "#FFAA00"
  response_text: "#FFCC44"
  
  tool_prefix: "#FFAA00"
  tool_name: "#FFCC44"
  tool_details: "#CC8800"
  
  info: "#FFCC44"
  warning: "#FFAA00"
  error: "#FF6600"
  success: "#FFDD66"
  
  status_bar_bg: "#000000"
  status_bar_text: "#FFAA00"
  status_bar_highlight: "#FFCC44"
  
  completion_menu_bg: "#1A0A00"
  completion_menu_text: "#FFCC44"
  completion_menu_selected_bg: "#FFAA00"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#FFAA00"

spinner:
  faces: ["▖", "▘", "▝", "▗"]
  thinking_verbs: ["PROCESSING", "COMPUTING", "ANALYZING"]

branding:
  agent_name: "TERMINAL-6000"
  prompt_symbol: "C:\\> "
  response_label: " OUTPUT "
yaml
name: retro-crt
description: Amber phosphor CRT terminal

colors:
  banner_border: "#FFAA00"
  banner_title: "#FFCC44"
  banner_accent: "#FFAA00"
  banner_subtitle: "#CC8800"
  banner_meta: "#AA6600"
  
  prompt: "#FFAA00"
  user_input: "#FFCC44"
  
  response_box_border: "#FFAA00"
  response_label_text: "#000000"
  response_label_bg: "#FFAA00"
  response_text: "#FFCC44"
  
  tool_prefix: "#FFAA00"
  tool_name: "#FFCC44"
  tool_details: "#CC8800"
  
  info: "#FFCC44"
  warning: "#FFAA00"
  error: "#FF6600"
  success: "#FFDD66"
  
  status_bar_bg: "#000000"
  status_bar_text: "#FFAA00"
  status_bar_highlight: "#FFCC44"
  
  completion_menu_bg: "#1A0A00"
  completion_menu_text: "#FFCC44"
  completion_menu_selected_bg: "#FFAA00"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#FFAA00"

spinner:
  faces: ["▖", "▘", "▝", "▗"]
  thinking_verbs: ["PROCESSING", "COMPUTING", "ANALYZING"]

branding:
  agent_name: "TERMINAL-6000"
  prompt_symbol: "C:\\> "
  response_label: " OUTPUT "

Minimal Monochrome

极简单色主题

yaml
name: minimal-mono
description: Clean grayscale aesthetic

colors:
  banner_border: "#FFFFFF"
  banner_title: "#FFFFFF"
  banner_accent: "#CCCCCC"
  banner_subtitle: "#AAAAAA"
  banner_meta: "#888888"
  
  prompt: "#FFFFFF"
  user_input: "#EEEEEE"
  
  response_box_border: "#CCCCCC"
  response_label_text: "#000000"
  response_label_bg: "#FFFFFF"
  response_text: "#DDDDDD"
  
  tool_prefix: "#CCCCCC"
  tool_name: "#FFFFFF"
  tool_details: "#AAAAAA"
  
  info: "#BBBBBB"
  warning: "#CCCCCC"
  error: "#FFFFFF"
  success: "#AAAAAA"
  
  status_bar_bg: "#1A1A1A"
  status_bar_text: "#CCCCCC"
  status_bar_highlight: "#FFFFFF"
  
  completion_menu_bg: "#2A2A2A"
  completion_menu_text: "#CCCCCC"
  completion_menu_selected_bg: "#FFFFFF"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#888888"

spinner:
  faces: ["—", "\\", "|", "/"]
  thinking_verbs: ["thinking", "working", "processing"]

branding:
  agent_name: "Assistant"
  prompt_symbol: "> "
  response_label: " Reply "
yaml
name: minimal-mono
description: Clean grayscale aesthetic

colors:
  banner_border: "#FFFFFF"
  banner_title: "#FFFFFF"
  banner_accent: "#CCCCCC"
  banner_subtitle: "#AAAAAA"
  banner_meta: "#888888"
  
  prompt: "#FFFFFF"
  user_input: "#EEEEEE"
  
  response_box_border: "#CCCCCC"
  response_label_text: "#000000"
  response_label_bg: "#FFFFFF"
  response_text: "#DDDDDD"
  
  tool_prefix: "#CCCCCC"
  tool_name: "#FFFFFF"
  tool_details: "#AAAAAA"
  
  info: "#BBBBBB"
  warning: "#CCCCCC"
  error: "#FFFFFF"
  success: "#AAAAAA"
  
  status_bar_bg: "#1A1A1A"
  status_bar_text: "#CCCCCC"
  status_bar_highlight: "#FFFFFF"
  
  completion_menu_bg: "#2A2A2A"
  completion_menu_text: "#CCCCCC"
  completion_menu_selected_bg: "#FFFFFF"
  completion_menu_selected_text: "#000000"
  completion_menu_border: "#888888"

spinner:
  faces: ["—", "\\", "|", "/"]
  thinking_verbs: ["thinking", "working", "processing"]

branding:
  agent_name: "Assistant"
  prompt_symbol: "> "
  response_label: " Reply "

Skin Loading Order

皮肤加载优先级

Hermes loads skins with this priority:
  1. ~/.hermes/skins/<name>.yaml
    (user custom)
  2. Built-in skins in
    skin_engine.py
  3. default
    skin (fallback)
Missing values inherit from
default
. Unknown skin names silently fall back to
default
.
Hermes按以下优先级加载皮肤:
  1. ~/.hermes/skins/<name>.yaml
    (用户自定义)
  2. skin_engine.py
    中的内置皮肤
  3. default
    皮肤( fallback)
缺失的配置项将继承自
default
。未知的皮肤名称会自动 fallback 到
default

Troubleshooting

故障排查

Skin Not Loading

皮肤未加载

bash
undefined
bash
undefined

Check file exists

检查文件是否存在

ls -la ~/.hermes/skins/
ls -la ~/.hermes/skins/

Verify filename matches name field

验证文件名与name字段匹配

cat ~/.hermes/skins/myskin.yaml | grep "^name:"
cat ~/.hermes/skins/myskin.yaml | grep "^name:"

Should output: name: myskin

应输出:name: myskin

Check for YAML syntax errors

检查YAML语法错误

python3 -c "import yaml; yaml.safe_load(open('~/.hermes/skins/myskin.yaml'))"
undefined
python3 -c "import yaml; yaml.safe_load(open('~/.hermes/skins/myskin.yaml'))"
undefined

Colors Not Applying

颜色未生效

  • Define all 28 color keys — partial definitions inherit mismatched defaults
  • Use hex format
    #RRGGBB
    (6 digits)
  • Test in a terminal with true color support
  • 定义全部28个颜色配置项——部分定义会继承不匹配的默认值
  • 使用十六进制格式
    #RRGGBB
    (6位)
  • 在支持真彩色的终端中测试

ASCII Art Rendering Issues

ASCII艺术渲染问题

yaml
undefined
yaml
undefined

Use multiline string with | or >

使用|或>定义多行字符串

banner: art: | Line 1 Line 2 Line 3
banner: art: | Line 1 Line 2 Line 3

NOT this:

不要这样写:

banner: art: "Line 1\nLine 2" # May not render correctly
undefined
banner: art: "Line 1\nLine 2" # 可能无法正确渲染
undefined

Spinner Not Changing

加载动画未变化

bash
undefined
bash
undefined

Restart Hermes after editing skins

编辑皮肤后重启Hermes

Session-only skin changes require:

仅当前会话的皮肤变更需要执行:

/skin reload # If supported
/skin reload # 如果支持

Or restart the agent

或重启Agent

undefined
undefined

Testing Your Skin

测试你的皮肤

bash
undefined
bash
undefined

Apply temporarily

临时应用

hermes --skin myskin
hermes --skin myskin

Or use the /skin command during session

或在会话中使用/skin命令

/skin myskin
/skin myskin

Test all elements by triggering:

通过触发以下场景测试所有元素:

- Banner (startup)

- 横幅(启动时)

- Prompt (type a message)

- 提示(输入消息)

- Response (get a reply)

- 响应(获取回复)

- Tool activity (trigger a tool call)

- 工具活动(触发工具调用)

- Errors (type invalid command)

- 错误(输入无效命令)

- Spinner (long-running task)

- 加载动画(长时间任务)

undefined
undefined

Generate Screenshots

生成截图

If contributing to the repository:
bash
cd hermes-skins
python3 generate_screenshots.py
如果要贡献到仓库:
bash
cd hermes-skins
python3 generate_screenshots.py

Creates screenshots/<skinname>.png for each skin

为每个皮肤创建screenshots/<skinname>.png

undefined
undefined

Best Practices

最佳实践

  1. Always define all 28 colors for production skins
  2. Test ASCII art with different terminal widths
  3. Use descriptive thinking verbs that match the theme
  4. Keep branding text concise — long labels break layouts
  5. Validate YAML syntax before submitting PRs
  6. Include a description in the YAML and README
  1. 生产皮肤务必定义全部28个颜色配置项
  2. 在不同终端宽度下测试ASCII艺术
  3. 使用与主题匹配的描述性thinking verbs
  4. 品牌文本保持简洁——过长的标签会破坏布局
  5. 提交PR前验证YAML语法
  6. 在YAML和README中包含描述信息

Resources

资源