Install
$ agentstack add skill-atlasomnia-hermes-custom-pack-hermes-agent-skill-authoring ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ● Filesystem access Used
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Authoring Hermes-Agent Skills (in-repo)
Overview
There are two places a SKILL.md can live:
- User-local:
~/.hermes/skills///SKILL.md— personal, not shared. Created viaskill_manage(action='create'). - In-repo (this skill is about this case):
/skills///SKILL.md— committed, shipped with the package. Usewrite_file+git add.skill_manage(action='create')does NOT target this tree.
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/(usepatchfor small edits,write_filefor rewrites;skill_managestill works for patch on in-repo skills, but not forcreate)
Required Frontmatter
Source of truth: tools/skill_manager_tool.py::_validate_frontmatter. Hard requirements:
- Starts with
---as the first bytes (no leading blank line). - Closes with
\n---\nbefore the body. - Parses as a YAML mapping.
namefield present.descriptionfield present, ≤ 1024 chars (MAX_DESCRIPTION_LENGTH).- Non-empty body after the closing
---.
Peer-matched shape used by every skill under skills/software-development/:
---
name: my-skill-name # lowercase, hyphens, ≤64 chars (MAX_NAME_LENGTH)
description: Use when . .
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
hermes:
tags: [short, descriptive, tags]
related_skills: [other-skill, another-skill]
---
version / author / license / metadata are NOT enforced by the validator, but every peer has them — omit and your skill sticks out.
Size Limits
- Description: ≤ 1024 chars (enforced).
- Full SKILL.md: ≤ 100,000 chars (enforced as
MAX_SKILL_CONTENT_CHARS, ~36k tokens). - Peer skills in
software-development/sit at 8-14k chars. Aim for that range. If you're pushing past 20k, split intoreferences/*.mdand reference them from SKILL.md.
Peer-Matched Structure
Every in-repo skill follows roughly:
#
## Overview
One or two paragraphs: what and why.
## When to Use
- Bulleted triggers
- "Don't use for:" counter-triggers
##
- Quick-reference tables are common
- Code blocks with exact commands
- Hermes-specific recipes (tests via scripts/run_tests.sh (user-local — verify it exists), ui-tui paths, etc.)
## Common Pitfalls
Numbered list of mistakes and their fixes.
## Verification Checklist
- [ ] Checkbox list of post-action verifications
## One-Shot Recipes (optional)
Named scenarios → concrete command sequences.
Not every section is mandatory, but Overview + When to Use + actionable body + pitfalls are the minimum for the skill to feel like a peer.
Directory Placement
skills///SKILL.md
Categories currently in repo (confirm with ls skills/): autonomous-ai-agents, creative, data-science, devops, dogfood, email, gaming, github, leisure, mcp, media, mlops/*, note-taking, productivity, red-teaming, research, smart-home, social-media, software-development.
Pick the closest existing category. Don't invent new top-level categories casually.
Workflow
- Survey peers in the target category:
`` ls skills// `` Read 2-3 peer SKILL.md files to match tone and structure.
- Check validator constraints in
tools/skill_manager_tool.pyif unsure. - Draft with
write_filetoskills///SKILL.md. - Validate locally:
``python import yaml, re, pathlib content = pathlib.Path("skills///SKILL.md").read_text() assert content.startswith("---") m = re.search(r'\n---\s*\n', content[3:]) fm = yaml.safe_load(content[3:m.start()+3]) assert "name" in fm and "description" in fm assert len(fm["description"]) //references/.md, templates/, or scripts/. skill_manage(action='write_file') also works and enforces the references/templates/scripts/assets subdir allowlist.
- Always commit the edit — in-repo skills are source, not runtime state.
Common Pitfalls
- Using
skill_manage(action='create')for an in-repo skill. It writes to~/.hermes/skills/, not the repo tree. Usewrite_filefor in-repo creation.
- Leading whitespace before
---. The validator checkscontent.startswith("---"); any leading blank line or BOM fails validation.
- Description too generic. Peer descriptions start with "Use when ..." and describe the trigger class, not the one task. "Use when debugging X" > "Debug X".
- Forgetting the author/license/metadata block. Not validator-enforced, but every peer has it; omitting makes the skill look half-finished.
- Writing a skill that duplicates a peer. Before creating,
ls skills//and open 2-3 peers. Prefer extending an existing skill to creating a narrow sibling.
- Expecting the current session to see the new skill. It won't. The skill loader is initialized at session start. Verify in a fresh session or via
skill_viewusing the exact path.
- Linking to skills that don't exist in-repo.
related_skills: [some-user-local-skill]works for you but breaks for other clones. Prefer only in-repo links.
Verification Checklist
- [ ] File is at
skills///SKILL.md(not in~/.hermes/skills/) - [ ] Frontmatter starts at byte 0 with
---, closes with\n---\n - [ ]
name,description,version,author,license,metadata.hermes.{tags, related_skills}all present - [ ] Name ≤ 64 chars, lowercase + hyphens
- [ ] Description ≤ 1024 chars and starts with "Use when ..."
- [ ] Total file ≤ 100,000 chars (aim for 8-15k)
- [ ] Structure:
# Title→## Overview→## When to Use→ body →## Common Pitfalls→## Verification Checklist - [ ]
related_skillsreferences resolve in-repo (or are explicitly OK to be user-local) - [ ]
git add skills/// && git commitcompleted on the intended branch
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: AtlasOmnia
- Source: AtlasOmnia/hermes-custom-pack
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.