Skip to content
Go back

How to Install a Custom Hermes Skill from GitHub

Edit page

hermes-skill

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.

Prerequisites

Background

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.

Conversation Context (Why This Guide Exists)

Original ask to the assistant:

i’ve written a custom SKILL.md that 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


1. Obtain the Custom SKILL.md from GitHub

You need two things before copying into ~/.hermes/skills:

  1. Raw URL for SKILL.md. Easiest: on GitHub open SKILL.md, click Raw, copy the address bar. Alternatively build
    https://raw.githubusercontent.com/<owner>/<repo>/<ref>/<path-to-SKILL.md>
    (<ref> is usually main or master; use a tag or commit SHA if you pin a version).

  2. Local skill slug — lowercase identifier (hyphens or underscores) for ~/.hermes/skills/<slug>/SKILL.md. The slug is your choice and need not match the repo folder name; this walkthrough uses repo path hermes/ai-newsletter-prompt/ but installs as ai-newsletter-daily.

The example below uses one of my own custom SKILL.md files.

ItemExample (this guide)
Owner / repoj3ffyang/ai-custom-skills
Path to SKILL.md in repohermes/ai-newsletter-prompt/SKILL.md
Branch / tag / commitmain (implicit default)
Local slugai-newsletter-daily

Download to a staging directory, then install (§2):

mkdir -p /tmp/hermes-skill
curl -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.

2. Install the Skill Locally

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.

3. Verify the Installation

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

4. Environment Variables (Example: ai-newsletter-daily)

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:

VariablePurposeHow to set
BRAVE_API_KEYWeb search via Braveexport BRAVE_API_KEY=your_brave_key
FIRECRAWL_API_KEYPage fetching via Firecrawlexport FIRECRAWL_API_KEY=your_firecrawl_key

Persist these in your shell profile (~/.bashrc, ~/.zshrc, etc.) or export them in the session where Hermes runs.

export BRAVE_API_KEY=xxxxxxxxxxxxxxxxxxxx
export FIRECRAWL_API_KEY=yyyyyyyyyyyyyyyyyyyy

5. Using the Skill

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

6. Automate with a Cron Job (Optional)

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.

7. Updating the Skill Later

Re-fetch the raw SKILL.md (§1), replace the file under ~/.hermes/skills/<skill-name>/SKILL.md, then confirm with hermes skills list.

8. Quick Reference Cheat Sheet

StepAction
1Raw URL (GitHub Raw or raw.githubusercontent.com…) + pick local <slug>; mkdir + curl or copy from git clone
2Copy into ~/.hermes/skills/<slug>/SKILL.md
3hermes skills list to verify
4Export env vars the skill needs (from SKILL.md / docs; not via inspect for local copies)
5Invoke via TUI or channel; align text with triggers
6Optional: cron or scheduler
7Updates: repeat §1 download + replace file

Edit page
Share this post on:

Next Post
Hermes connects Nvidia Nemotron Model via OpenRouter for Free