This guide walks through a tested end-to-end workflow: copy a custom SKILL.md from GitHub into ~/.hermes/skills, confirm it shows up, run it, and optionally automate it. Hermes does not require a separate register or install command for that layout.
I published a custom SKILL.md on GitHub and wanted a dependable installation path for Hermes. After reading several docs without finding a single operational narrative, I ran through the procedure with an AI assistant and captured the result here.
This article is the cleaned-up version of that session so you can repeat the same steps with less trial and error.
Shell examples below were validated in a real environment; substitute your repo, path, branch, and local skill slug where indicated.
Original ask to the assistant:
iβve written a customSKILL.mdthat has been published at my Github account. Please guide me how to install it either through chat here or in command line
What the session covered:
The source repo: https://github.com/j3ffyang/ai-custom-skills
You need two things before copying into ~/.hermes/skills:
The example below uses one of my own custom SKILL.md files.
Download to a staging directory, then install (Β§2):
mkdir -p /tmp/hermes-skillcurl -sL -o /tmp/hermes-skill/SKILL.md \ "https://raw.githubusercontent.com/j3ffyang/ai-custom-skills/main/hermes/ai-newsletter-prompt/SKILL.md"
Clone alternative: If you use git clone, copy SKILL.md from the working tree with cp instead of curl β handy for private repos or when you want sibling files next to the skill.
Copy SKILL.md into ~/.hermes/skills/<skill-name>/SKILL.md. That is the whole install: Hermes loads skills from this directory and does not need an extra CLI step to register a local custom skill. In this example the slug is ai-newsletter-daily, so the path is ~/.hermes/skills/ai-newsletter-daily/SKILL.md.
Run:
hermes skills list
The custom skill should appear in the output.
hermes skills list Installed Skills βββββββββββββββββββββββββ³βββββββββββββ³ββββββββββ³ββββββββββ³βββββββββββ Name β Category β Source β Trust β Status ββ‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©β ai-newsletter-daily β β local β local β enabled β
If you install a skill only by copying it under ~/.hermes/skills, hermes skills inspect does not cover that local skill, so you cannot use inspect to verify required_environment_variables or related metadata.
The example SKILL.md used here does not define required_environment_variables in the file. Runtime keys still depend on what the skill actually calls; set them from the prose in SKILL.md, your README, or your own notes.
For ai-newsletter-daily you need:
Persist these in your shell profile (~/.bashrc, ~/.zshrc, etc.) or export them in the session where Hermes runs.
export BRAVE_API_KEY=xxxxxxxxxxxxxxxxxxxxexport FIRECRAWL_API_KEY=yyyyyyyyyyyyyyyyyyyy
Hermes routes user intent to skills from both the terminal UI and bridged chat apps. You do not need a special syntax unless your deployment or bridge defines one.
Hermes TUI
Messaging channels (e.g. WhatsApp, Telegram)
If the skill does not run
To generate and deliver output on a schedule (for example a daily newsletter), wire a Hermes cron job or an external scheduler that invokes the same workflow you use interactively. Exact flags depend on your Hermes version and channel setup; use hermes β help and your install docs for cron-specific syntax.
Re-fetch the raw SKILL.md (Β§1), replace the file under ~/.hermes/skills/<skill-name>/SKILL.md, then confirm with hermes skills list.
How to Install a Custom Hermes Skill from GitHub was originally published in Dev Genius on Medium, where people are continuing the conversation by highlighting and responding to this story.