Install any skill in seconds. Free to start, no credit card required.
Get Started Free →nousresearch/hermes-agent-skill-authoring
Author in-repo SKILL.md files: frontmatter and structure.
Passed 16 of 20 test cases with the skill, and 12 of 20 without it.
and 7 more in the full report
6 fixed12 passed either way3 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
I want to create a new committed skill at `skills/development/git-workflow/SKILL.md` in the current branch using automated agent commands. Should I call `skill_manage(action='create', name='git-workflow')` or write the file using `write_file`?
| Checked | Without skill | With skill |
|---|---|---|
| Recommends using write_file instead of skill_manage(action='create') for in-repo skills. | Passed | Passed |
| Explains that skill_manage(action='create') writes to the user-local ~/.hermes/skills/ directory. | Missed | Passed |
The instructions your model reads when the skill loads.
There are two places a SKILL.md can live:
~/.hermes/skills/<maybe-category>/<name>/SKILL.md — personal, not shared. Created via skill_manage(action='create').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.
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)~/.hermes/skills/ (just use skill_manage)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-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.
Validator source of truth: tools/skill_manager_tool.py::_validate_frontmatter. Validator hard requirements:
--- as the first bytes (no leading blank line).\n---\n before the body.name field present.description field present (validator ceiling 1024 chars — but see the repo hardline below, which is much stricter).---.test cases passed, vs 12 / 20 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.