hermes-desktop

Create Hermes skins and desktop plugins that theme surfaces and add UI panes.

1|Updated Mar 15, 2025
One-click install
npx skills add https://github.com/adikpb/dotfiles --skill hermes-desktop-adikpb
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hermes-desktop
Source: https://github.com/adikpb/dotfiles/tree/main/.hermes/skills/productivity/hermes-desktop
Command: npx skills add https://github.com/adikpb/dotfiles --skill hermes-desktop-adikpb

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Customizing the Hermes CLI, TUI, and desktop app normally requires modifying the application itself. This Skill lets you author a single YAML skin that themes every surface at once and write plain-JavaScript desktop plugins that add panes, statusbar items, commands, keybinds, and routes without rebuilding the app. ## Core Features & Use Cases - Skin authoring: Copy the skin template, fill in a semantic hex palette, write it to <hermes-home>/skins/<name>.yaml, and activate it with hermes config set display.skin <name> — every surface repaints live. - Desktop plugins: Create <hermes-home>/desktop-plugins/<id>/plugin.js from the template to register layout panes, statusbar chips, command-palette commands, keybinds, routes, and sidebar navigation; the app hot-reloads on save. - Use Case: A user asks for a synthwave theme matching their brand colors plus a statusbar widget showing gateway status. You write the skin YAML, activate it, and scaffold a plugin that registers a chip and a pane using the @hermes/plugin-sdk host APIs. ## Quick Start Ask the agent to create a new Hermes skin named synthwave and activate it, or to scaffold a desktop plugin that adds a statusbar chip and a right-side pane.

Frequently Asked Questions about hermes-desktop

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a custom Hermes theme?▼

Copy the skin template, fill in every color key with #rrggbb hex values, and write it to <hermes-home>/skins/<name>.yaml. Then activate it with hermes config set display.skin <name>; the gateway repaints the CLI, TUI, and desktop within about a second.

How do I write a Hermes desktop plugin?▼

Create <hermes-home>/desktop-plugins/<id>/plugin.js from the template, keeping the folder name equal to the plugin id. The default export registers panes, statusbar chips, commands, and routes via ctx.register; the desktop app loads the file within seconds and hot-reloads on save.

Can I use JSX syntax in Hermes desktop plugins?▼

No. The plugin file loads uncompiled, so JSX syntax will not parse. Use jsx() calls from react/jsx-runtime, and import only from @hermes/plugin-sdk, react, and react/jsx-runtime — other specifiers fail to resolve.

Why does my Hermes skin not override a built-in theme?▼

A skin named like a desktop built-in (mono, slate, cyberpunk, nous, midnight, ember) will not override that built-in on the GUI. Pick a fresh lowercase hyphenated name and confirm activation with hermes config get display.skin.

Do Hermes desktop plugins work with the CLI or gateway alone?▼

No. Desktop plugins require the Hermes desktop app, which watches the desktop-plugins directory and loads plugin.js. The CLI and gateway alone will not load them, and they are separate from the Python plugin system in ~/.hermes/plugins/.

How do I change one color in the active Hermes theme?▼

Run hermes skin set <key> <hex>, for example hermes skin set ui_tool "#00FFFF". It edits the active skin's file in place so the rest of the palette survives, and the watcher repaints every surface live.