Skip to content
cccskills
FreePublished on GitHubEnglish overview

hermes-agent-skill-authoring

Create or revise skills shipped within the Hermes Agent repository. The guidance covers file placement, required metadata, clear procedures, platform checks, tests, and documentation updates so contributions follow the repository’s authoring standards.

OriginalShow the original description

Author in-repo SKILL.md files: frontmatter and structure.

AI rating90/ 100See how to install

Good for

  • Add a reusable skill to the Hermes Agent repository
  • Revise an existing in-repository SKILL.md
  • Choose bundled or optional placement
  • Check metadata, tests, and documentation before a pull request

Overview

What it does

Create and revise skills distributed within the Hermes Agent repository using its shared authoring conventions. The guidance walks through choosing bundled or optional installation, selecting a category, writing the YAML configuration at the start of SKILL.md, and organizing the body. It also covers checking supported operating systems and related skills, running tests, generating documentation, and preparing a PR.

When it helps

Use it when you want to add a reusable workflow to Hermes Agent or prepare changes to an existing skill for review. It helps check easily missed requirements, including description length, author credits, and procedures with clear completion checks.

Example requests

  • “Turn this workflow into a repository skill and choose its location and document structure.”
  • “Review this existing SKILL.md against the authoring conventions, then update its tests and documentation.”

Notes

This applies to skills/ and optional-skills/. Personal skills in ~/.hermes/skills/ use a different creation process. The repository’s AGENTS.md is the authoritative source for conventions. Verification uses tools such as pytest. A newly created skill will not appear in the current session’s list of loaded skills.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Objective evaluation

AI rated this skill on four points using only the contents of its SKILL.md. Stars and popularity are not taken into account.

Clear instructionsIs it clear when to use it and what it does?
AGoodIt explicitly covers creating and editing repository skills and distinguishes them from personal skills.
Concrete stepsAre steps, inputs, outputs, and examples spelled out?
AGoodIt specifies placement choices, required YAML fields, character limits, and the document’s section structure.
SafetyAre sending data, deleting files, and running commands disclosed?
BPartly lackingIt uses write_file and git add but provides no confirmation procedure before overwriting existing content.
Easy setupDoes it need few tools or API keys, and are they documented?
AGoodIt identifies the target repository and Hermes tools without requiring an additional API key.

The total counts each point as A = 25, B = 15, C = 5. Rated by AI (OpenAI Codex) as of Oct 20, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md14.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Authoring Hermes-Agent Skills (in-repo)

Overview

There are two places a SKILL.md can live:

  1. User-local: ~/.hermes/skills/<maybe-category>/<name>/SKILL.md — personal, not shared. Created via skill_manage(action='create').
  2. In-repo (this skill is about this case): skills/<category>/<name>/SKILL.md or optional-skills/<category>/<name>/SKILL.md inside the hermes-agent repo — committed, shipped with the package. Use write_file + git add. skill_manage(action='create') does NOT target this tree.

In-repo skills must meet the repo's hardline authoring standards (see AGENTS.md, "Skill authoring standards (HARDLINE)" — that section is the source of truth; this skill is the operational walkthrough). Reviewers reject PRs that violate them, so meeting them up front is cheaper than a salvage pass later.

When to Use

  • User asks you to add a skill "in this branch / repo / commit"
  • You're committing a reusable workflow that should ship with hermes-agent
  • You're editing an existing skill under skills/ or optional-skills/ (use patch for small edits, write_file for rewrites; skill_manage still works for patch on in-repo skills, but not for create)
  • Don't use for: personal skills in ~/.hermes/skills/ (just use skill_manage)

Decide the Tier First: Bundled vs Optional

  • Bundled (skills/<category>/) — daily-driver behavior, broadly useful across many user types, low footprint. Hard bar: you can say "a user will load this in 5+ sessions per month" with a straight face.
  • Optional (optional-skills/<category>/) — niche, vertical-specific (blockchain, gaming, finance, one app), recurring-job/task skills, or anything heavy. Installed via hermes skills install official/<category>/<skill>.

When in doubt, optional. Promoting later is easy; demoting is churn. "Would be useful to anyone who ever needs this" is an optional-tier argument, not a bundled one.

Pick the category by what the tool IS, not what it feels like (an AI-agent CLI goes in autonomous-ai-agents/ even if it "feels productivity"). Confirm existing categories with search_files(pattern='*', target='files', path='skills') and don't invent new top-level categories casually.

No router / index / hub skills. A skill whose core content is a routing table pointing at sibling skills adds an indirection hop and duplicates the siblings' own When to Use triggers. If the skill would be empty without "load skill X instead" pointers, don't write it — the catalog and each sibling's triggers already do that job.

Required Frontmatter

Validator source of truth: tools/skill_manager_tool.py::_validate_frontmatter. Validator hard requirements:

  • Starts with --- as the first bytes (no leading blank line).
  • Closes with \n---\n before the body.
  • Parses as a YAML mapping.
  • name field present.
  • description field present (validator ceiling 1024 chars — but see the repo hardline below, which is much stricter).
  • Non-empty body after the closing ---.

Repo-standard shape (all fields expected, even where the validator doesn't enforce them):

---
name: my-skill-name               # lowercase, hyphens, ≤64 chars (MAX_NAME_LENGTH)
description: Concise capability statement, under sixty chars.
version: 0.1.0                    # semver; new skills start at 0.1.0
author: Real Name (github-handle), Hermes Agent
license: MIT
platforms: [linux, macos, windows]   # audit, don't guess — see Platform Gating
metadata:
  hermes:
    tags: [Short, Descriptive, Tags]
    related_skills: [other-in-repo-skill]
---

description rules (HARDLINE — the validator's 1024 is NOT the standard)

  • ≤ 60 characters. One sentence. Ends with a period.
  • State the capability, not the implementation, and don't repeat the skill name.
  • No marketing words ("powerful", "comprehensive", "seamless", "advanced").
  • The system prompt skill index truncates at 57 chars + "..." — the trigger/capability must be self-contained in that window.
  • If the description contains a :, wrap it in double quotes or YAML parses it as a mapping and the docs generator crashes. Quotes don't count toward the 60.

Good: Track named companies for material news with cited digests. Bad: Use when a user asks to monitor named competitors or companies for product launches, pricing changes, funding, ... (240 chars — rejected in review)

author rules

  • Credit the human first, then "Hermes Agent" as secondary collaborator: Ben Barclay (benbarclay), Hermes Agent.
  • Never author: Hermes Agent alone for contributed skills — credit the human, not the tool, even (especially) when an agent drafted the text.
  • Maintainer-authored skills: Teknium (teknium1), Hermes Agent.

related_skills rules

  • Every entry must resolve to an existing in-repo skill in the same tree state as your PR. Do not reference skills that were only planned, live in another PR, or exist only in ~/.hermes/skills/.
  • Verify each entry: search_files(pattern='<name>', target='files', path='skills') (and optional-skills/).

Platform Gating: audit, don't trust

platforms: gates loading by host OS. Set it from what the skill's prose and scripts actually invoke:

Skill uses only…platforms:
Hermes tools + stdlib Python + cross-platform CLIs[linux, macos, windows]
bash pipelines, grep/awk/sed chains, heredocs[linux, macos]
osascript, defaults, pmset[macos]
apt/systemctl//proc[linux]
<!-- no-tmp: ok — names the anti-pattern skill authors must avoid -->

POSIX-only signals to search for in scripts/: fcntl, termios, pty, os.fork, os.killpg, signal.SIGKILL, os.kill(pid, 0) liveness checks, hardcoded /tmp /proc /etc. Default posture: fix cross-platform first (tempfile.gettempdir(), pathlib.Path, psutil.pid_exists); gate narrower only when the dependency is genuinely platform-bound, and say why in ## Pitfalls.

Size Limits

  • Full SKILL.md: ≤ 100,000 chars enforced (MAX_SKILL_CONTENT_CHARS), but target ~100 lines for a simple skill, ~200 for a complex one. Peer skills sit at 8-14k chars.
  • Bulky or branch-specific material goes in references/*.md, templates/, or scripts/ — pointed to from SKILL.md, not inlined.
  • Don't expect the model to inline-write parsers or non-trivial logic every call — ship a helper script in scripts/ and reference it by path.

Body Structure (modern section order)

# <Skill> Skill
2-3 sentence intro: what it does, what it doesn't do, dependency stance.

## When to Use          — bulleted triggers (+ "Don't use for:" counter-triggers)
## Prerequisites        — exact env vars, installs, API key sourcing
## How to Run           — canonical invocation through the `terminal` tool
## Quick Reference      — flat command list, no narration
## Procedure            — numbered steps, each with a checkable completion criterion
## Pitfalls             — known limits, things that look broken but aren't
## Verification         — how to prove the skill worked

Not every section applies to every skill (a pure-procedure task skill may have no Quick Reference), but When to Use + actionable body + Pitfalls + Verification are the minimum. Cut marketing intros, "Setup Check" no-ops, and re-explanations of env vars already in Prerequisites.

Reference Hermes tools, not raw shell

When the skill needs a capability, name the proper Hermes tool in backticks: terminal, read_file, write_file, patch, search_files, web_search, web_extract, browser_navigate, vision_analyze, delegate_task, cronjob. Do NOT name shell utilities the agent already has wrapped (grep → search_files, cat → read_file, sed/awk → patch, find/ls → search_files target='files'). A CLI-wrapper skill should frame invocations as terminal(command="{tool} ...", timeout=...) — bare shell prose ("run foo --version") is a review-blocking non-conformance. If the skill depends on an MCP server, name it and document setup in Prerequisites.

Never use machine-local paths

Write repo-relative paths (skills/..., tools/skill_manager_tool.py). A /home/<you>/... path baked into a committed skill breaks for every other user and is an instant review flag.

Writing Quality Principles

A skill exists to make the agent's process more predictable — the agent reliably follows the same useful discipline.

  1. Optimize for process predictability. If a line does not change behavior, cut it.
  2. Choose the right context load. The description is paid for every turn; details go in the body or linked references.
  3. End steps with completion criteria. Checkable and, when it matters, exhaustive: "every modified file accounted for" beats "summarize changes."
  4. Co-locate rules with the concept they govern.
  5. Use strong leading words ("tight loop," "root cause," "regression test") over long repeated explanations.
  6. Prune duplication and no-ops. "Be careful" and "use best practices" don't change model behavior — replace with a checkable criterion or delete.

Tests and Docs (required for repo skills)

  1. Tests live at tests/skills/test_<skill>_skill.py — stdlib + pytest + unittest.mock only, no live network. Run via scripts/run_tests.sh tests/skills/test_<skill>_skill.py -q. (The generic tests/tools/test_skill_manager_tool.py passing proves nothing about YOUR skill.)
  2. Docs regen: run python website/scripts/generate-skill-docs.py, then apply scope discipline — the generator rewrites EVERY auto-gen page. git checkout -- everything that isn't yours; the final diff must show only your SKILL.md, your one per-skill docs page, a one-line catalog row, and a one-line website/sidebars.ts insertion (verify with search_files(pattern='<your-slug>', path='website/sidebars.ts') — exactly one hit, or the page is an orphan).
  3. .env.example (only if the skill needs new env vars): one clearly delimited commented block; touch nothing else in the file.

Workflow

  1. Survey peers in the target category with search_files(target='files') and read 2-3 peer SKILL.md files to match tone and structure. Prefer extending an existing skill over creating a narrow sibling.
  2. Decide tier and category (see above). When in doubt, optional — and ask before pushing rather than defaulting.
  3. Draft with write_file to skills/<category>/<name>/SKILL.md (or optional-skills/...).
  4. Validate locally:
    import re, pathlib
    from ruamel.yaml import YAML
    content = pathlib.Path("skills/<category>/<name>/SKILL.md").read_text()
    assert content.startswith("---")
    m = re.search(r'\n---\s*\n', content[3:])
    fm = YAML(typ="safe").load(content[3:m.start()+3])
    assert "name" in fm and "description" in fm
    assert len(fm["description"]) <= 60, f"description {len(fm['description'])} chars — hardline is 60"
    assert fm["description"].endswith(".")
    assert "platforms" in fm
    assert len(content) <= 100_000
    
    Also verify every related_skills entry exists in-repo.
  5. Add tests + regen docs (previous section).
  6. Git add + commit on the active branch; open a PR.
  7. Note: the CURRENT session's skill loader is cached — skill_view / skills_list will not see the new skill until a new session. This is expected, not a bug.

Editing Existing In-Repo Skills

  • Small fix: skill_manage(action='patch', ...) works on in-repo skills, as does patch.
  • Major rewrite: write_file the whole SKILL.md.
  • Supporting files: write_file to references/, templates/, or scripts/ under the skill dir.
  • Always commit — in-repo skills are source, not runtime state. Re-run the docs generator when frontmatter changed.

Common Pitfalls

  1. Using skill_manage(action='create') for an in-repo skill. It writes to ~/.hermes/skills/, not the repo tree. Use write_file.
  2. Trusting the validator's limits as the standard. The validator allows 1024-char descriptions; review rejects anything over 60. The validator doesn't check platforms:, author format, tests, or docs — review does.
  3. author: Hermes Agent on a contributed skill. Credit the human first.
  4. Leading whitespace before ---. Validation fails on any leading blank line or BOM.
  5. Description too generic or trigger buried past char 57.
  6. related_skills pointing at skills that don't exist in-repo (user-local, planned, or in a sibling PR).
  7. Duplicating a peer. Survey the category first; extend rather than sibling.
  8. Skipping the docs generator or pushing its unrelated drift. Both directions are wrong: no regen = orphan skill with no docs page; blind regen = a ballooned diff full of other skills' drift.
  9. Expecting the current session to see the new skill. The loader is initialized at session start.
  10. Letting skills accumulate sediment. When adding a rule, remove the old wording it replaces.

Verification Checklist

  • Tier decided deliberately (bundled bar: 5+ sessions/month; else optional-skills/)
  • File at skills/<category>/<name>/SKILL.md or optional-skills/<category>/<name>/SKILL.md
  • Frontmatter starts at byte 0 with ---, closes with \n---\n
  • name, description, version, author, license, platforms, metadata.hermes.{tags, related_skills} all present
  • Description ≤ 60 chars, one sentence, ends with a period, no marketing words
  • author credits the human contributor first
  • platforms: audited against actual prose/scripts, not copied from a sibling
  • Every related_skills entry resolves in-repo
  • Body follows the modern section order; commands framed through Hermes tools
  • No machine-local paths anywhere in the file
  • Each ordered step has a checkable completion criterion
  • Tests at tests/skills/test_<skill>_skill.py pass under scripts/run_tests.sh
  • Docs regenerated with scope discipline; sidebar has exactly one entry for the slug
  • git add + commit on the intended branch; PR opened

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

1password

FreeSummaryAI rating 100

Set up the 1Password CLI and use stored passwords or API keys in commands and configuration templates. Choose an authentication method, retrieve secret references, and pass credentials to processes through environment variables.

  • Installing and configuring the 1Password CLI
  • Running commands with stored API keys
  • Filling configuration templates with stored secrets
NousResearch/hermes-agent256.2KUpdated Oct 22, 2026

3-statement-model

FreeSummaryAI rating 90

Build an Excel workbook linking the income statement, balance sheet, and cash flow statement. Populate historical figures, create formula-based forecasts, compare scenarios, and check that balances and cash totals agree across all three statements.

  • Populating a financial model template with historical data
  • Building linked forecasts across three financial statements
  • Comparing base, upside, and downside scenarios
NousResearch/hermes-agent256.2KUpdated Oct 22, 2026

accelerate

FreeSummaryAI rating 80

Adapt existing PyTorch training scripts to use multiple GPUs or machines with limited code changes. The skill guides configuration, launch commands, mixed precision, which uses lower-precision numbers, and DeepSpeed or FSDP settings for distributing training work and memory.

  • Move a single-GPU training script to multiple GPUs
  • Configure mixed precision training
  • Set up DeepSpeed or FSDP to reduce memory use
NousResearch/hermes-agent256.2KUpdated Oct 22, 2026

actual-setup

FreeSummaryAI rating 100

Configure Hermes to run AI models through Actual Computer on your own hardware. Set up either the hosted relay or a local connection, select models, verify responses, and troubleshoot request errors or empty output.

  • Connecting Hermes with an Actual inference key
  • Running models through a local Actual daemon
  • Downloading and loading local models
NousResearch/hermes-agent256.2KUpdated Oct 22, 2026

adversarial-ux-test

FreeSummaryAI rating 80

Test an app from the perspective of a frustrated, less technical user. Find confusing steps and barriers, separate actionable usability problems from personal complaints, and produce screenshots, suggested fixes, and prioritized tickets.

  • Reviewing usability before a launch or demo
  • Checking the experience of a new user
  • Finding friction in signup and subscription flows
NousResearch/hermes-agent256.2KUpdated Oct 22, 2026

agent-merge-conflict-arbiter

FreeSummaryAI rating 100

Resolve Git merge conflicts between two agents by comparing both changes and their stated goals. Combine compatible work, explain choices where designs differ, and verify the merged result with project builds or tests.

  • Resolving conflicts between branches edited by two agents
  • Integrating changes from parallel worktrees
  • Reviewing reasons for conflicting design choices
NousResearch/hermes-agent256.2KUpdated Oct 22, 2026

See all skills by NousResearch

Report a problem with this skill