api-and-interface-desi…
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Author in-repo SKILL.md: frontmatter, validator, structure.
Claude Code
$ npx -y skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring --agent claude-code
Codex
$ npx skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring -a codex -y
Cursor
$ npx skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring -a cursor -y
Gemini CLI
$ npx skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring -a gemini-cli -y
GitHub Copilot
$ npx skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring -a github-copilot -y
OpenCode
$ npx skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring -a opencode -y
Windsurf
$ npx skills add kevinnft/ai-agent-skills --skill hermes-agent-skill-authoring -a windsurf -y
name: hermes-agent-skill-authoring
description: "Author in-repo SKILL.md: frontmatter, validator, structure."
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
hermes:
tags: [skills, authoring, hermes-agent, conventions, skill-md]
related_skills: [writing-plans, requesting-code-review]
origin: original
source_repo: kevinnft/ai-agent-skills
source_url: https://github.com/kevinnft/ai-agent-skills
source_license: MIT
language: enThere 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):** `/home/bb/hermes-agent/skills/<category>/<name>/SKILL.md` — committed, shipped with the package. Use `write_file` + `git add`. `skill_manage(action='create')` does NOT target this tree.
Source of truth: `tools/skill_manager_tool.py::_validate_frontmatter`. Hard requirements:
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 <trigger>. <one-line behavior>.
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.
Every in-repo skill follows roughly:
# <Title> ## Overview One or two paragraphs: what and why. ## When to Use - Bulleted triggers - "Don't use for:" counter-triggers ## <Topic sections specific to the skill> - Quick-reference tables are common - Code blocks with exact commands - Hermes-specific recipes (tests via scripts/run_tests.sh, 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.
skills/<category>/<skill-name>/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.
1. **Survey peers** in the target category:
ls skills/<category>/
Read 2-3 peer SKILL.md files to match tone and structure. 2. **Check validator constraints** in `tools/skill_manager_tool.py` if unsure. 3. **Draft** with `write_file` to `skills/<category>/<name>/SKILL.md`. 4. **Validate locally**:
import yaml, re, pathlib
content = pathlib.Path("skills/<category>/<name>/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"]) <= 1024
assert len(content) <= 100_0005. **Git add + commit** on the active branch. 6. **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.
`metadata.hermes.related_skills` unions both trees (`skills/` in-repo and `~/.hermes/skills/`) at load time. You CAN reference a user-local skill from an in-repo skill, but it won't resolve for other users who clone the repo fresh. Prefer referencing only in-repo skills from in-repo skills. If a frequently-referenced skill lives only in `~/.hermes/skills/`, consider promoting it to the repo.
1. **Using `skill_manage(action='create')` for an in-repo skill.** It writes to `~/.hermes/skills/`, not the repo tree. Use `write_file` for in-repo creation.
2. **Leading whitespace before `
191 attribution-first agent skills for Hermes Agent, Claude Code, Cursor — one installer, 28 categories, searchable catalog. See NOTICE for upstream attribution.
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Tests in real browsers. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM,…
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate…
Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a…
Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder…
Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.