plugin-authoring
Skill6 starsChanged 8 days agoMITView on GitHub
Author Hermes plugins (plugin.yaml + register(ctx)) and skills (SKILL.md) — scaffolding, registration, hooks, commands, capabilities, versioning, provenance, and the read-only contract.
- Installs packages
6 other projects use a version of this.
Adopted by
Most recently taken up by
- selamy-labs/agent-skillstheir own version, first seen Nov 8, 2026
- virajp/claude-pluginstheir own version, first seen Nov 4, 2026
- NazmusSayad/skillstheir own version, first seen Oct 13, 2026
- eehrich/ScarabHivetheir own version, first seen Oct 9, 2026
- nafeeur/MaskShifttheir own version, first seen Sep 12, 2026
- polyant-ai/polyanttheir own version, first seen Sep 11, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- polyant-ai/polyant★ 10same name
- eehrich/ScarabHive★ 2same name
- nafeeur/MaskShift★ 2same name
- NazmusSayad/skills★ 2same name
- virajp/claude-plugins★ 1same name
- selamy-labs/agent-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- diagnosing-authSkill
- diagnosing-backupSkill
- diagnosing-bot-modeSkill
- diagnosing-browserSkill
- diagnosing-cli-tuiSkill
- diagnosing-commandsSkill
- diagnosing-configSkill
- diagnosing-cronSkill
- diagnosing-desktopSkill
- diagnosing-gatewaySkill
- diagnosing-hooksSkill
- diagnosing-host-pressureSkill
- diagnosing-mcpSkill
- diagnosing-memoriesSkill
- diagnosing-memorySkill
- diagnosing-pathSkill
- diagnosing-pluginsSkill
- diagnosing-profilesSkill
- diagnosing-providersSkill
- diagnosing-runtimeSkill
- diagnosing-secretsSkill
- diagnosing-sessionsSkill
- diagnosing-skillsSkill
- diagnosing-storageSkill
- diagnosing-triageSkill
- diagnosing-updateSkill
- diagnosing-voiceSkill
- hermes-configuration-guideSkill
- hermes-post-updateSkill
- installing-hermesSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 82
README table + issue template parity: Every shipped skill must appear in the README skill table AND the .github/ISSUE_TEMPLATE/ …
- Very specific: line 95
Hardcoded venv paths: Use project_venv_dir() / committed_venv() / project_python() — never hardcode venv/ or .venv/.
- Very specific: line 97
CLI commands in skills are validated: Every backtick command in a SKILL.md is checked by tools/check_cli_surface.py against the installed …
- Very specific: line 101
Secure file permissions in recommendations: Never recommend chmod 644 on sensitive files like state.db — use chmod 600 to preserve …
- Distinctive: line 119
After authoring a plugin or skill, confirm it is valid:
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Authoring Hermes Plugins and Skills
Hermes extensions come in two shapes: plugins (Python packages with a
plugin.yaml manifest and a register(ctx) entry point) and skills
(Markdown files with YAML frontmatter, loaded by the skills engine). This
skill covers both — scaffolding, registration, hooks, commands, capabilities,
versioning, and the read-only contract.
Plugin authoring (summary)
Detailed reference: references/plugin-authoring.md
A plugin is a directory with at minimum plugin.yaml + __init__.py (with
register(ctx)). See the reference for full field documentation, examples,
and the read-only contract.
Key points:
plugin.yaml:name,version(quoted),manifest_version/api_version(both1),requires_hermes, optionalpython_dependencies(validated and surfaced only — never auto-installed),config_schema(mismatch reporting only — no default merge on install).register(ctx):register_command,register_cli_command,register_hook.- Slash command handler: at
cedf4a3d(baseline), handlers receive onlyraw_args: str. Context keywords (source,session_id,session_key,platform) were introduced later in06e8c5bc— use**contextto opt in, but only on Hermes versions that include that commit. ctx.get_config(key, default)requires a key. Usehermes_constants.get_hermes_home()for the home path.- Capabilities: omit
capabilities:for read-only. Enforced by CI. - Hooks: valid events in
VALID_HOOKS(hermes_cli/plugins.py). Timeouts (30s default, 600s cap) apply only to bounded allowlist;on_session_finalizeruns synchronously without timeout. - Verification checklist:
references/plugin-authoring.mdcontains a 26-item checklist to verify a plugin meets official Hermes standards (manifest, registration, read-only contract, activation).
Skill authoring (summary)
Detailed reference: references/skill-authoring.md
A skill is a directory with a single SKILL.md. See the reference for
frontmatter, naming, content rules, provenance, versioning, and routing.
Key points:
- Frontmatter:
name(must match dir),description,version(quoted),metadata.hermes.tags+related_skills. - Provenance footer: final non-empty line dated and upstream-anchored.
- Version bumps: typo → patch, new content → minor, rewrite → major.
- Routing (for
diagnosing-*): config guide bullet, README table, issue template dropdown. render_docs.py --writerefreshes generated inventory blocks.
Common pitfalls
- Untracked skill directory breaks pre-commit.
git add skills/<name>/before committing — the gates read the working tree and an untracked directory fails the count and routing gates. - Handler signature drift.
register_command's docstring summarizes the handler asfn(raw_args: str), but the real contract lives inhermes_cli/plugin_command_dispatch.py::invoke_plugin_command(introduced in06e8c5bc) — it passesraw_argsplus opt-in context keywords (source,session_id,session_key,platform). Atcedf4a3d, onlyraw_argsis passed. A handler that declaresctxas a positional parameter raisesTypeErrorat invocation. Always read the dispatch module for the target Hermes revision. - render_docs word-list ceiling.
_word_num()inrender_docs.pyspells numbers up to twenty-eight. Adding a twenty-ninth skill deliberately requires extending_WORDS. The guard exists so a new skill count forces someone to look at the prose rather than silently producing a number. - README table + issue template parity. Every shipped skill must
appear in the README skill table AND the
.github/ISSUE_TEMPLATE/ skill-drift.ymldropdown.tools/test_skill_counts.py(CI-tier) enforces this — run it after adding a skill. - Repository-only checks.
python tools/check_gates.py,tools/render_docs.py, andtools/test_skill_counts.pyare for contributions to hermes-guide. External projects use their own CI. - Bot review threads. Qodo runs automatically; CodeRabbit requires
@coderabbitai full review. Resolve every thread with file:line evidence before merge — never auto-resolve to unblock. A silent or empty CodeRabbit run counts as "not heard", not "clean". - Hardcoded hook event names. The valid set is
VALID_HOOKSinhermes_cli/plugins.pyand grows across releases. Read the installed source. - Hardcoded venv paths. Use
project_venv_dir()/committed_venv()/project_python()— never hardcodevenv/or.venv/. - CLI commands in skills are validated. Every backtick command in a
SKILL.md is checked by
tools/check_cli_surface.pyagainst the installed Hermes CLI. Verify commands withhermes <cmd> --helpbefore writing them — hermes sessions show does not exist (use hermes sessions list). - Secure file permissions in recommendations. Never recommend
chmod 644on sensitive files likestate.db— usechmod 600to preserve owner-only access. Conversation/tool history must not be world-readable. - Manual update commands must reinstall deps.
git pullalone leaves the runtime environment out of sync. Always includepip install -e .or preferhermes update. - Confusing Hermes with Claude Code. Hermes has no standalone command files
(commands come from built-ins, skills-as-slash, bundles, and plugins); hooks
span four separate systems; plugins are
plugin.yaml+register(ctx), notplugin.json. plugin + skills tap that only inspects Hermes. Never edit Hermes source to fix a guide finding. - Hermes config is YAML, never JSON.
- Every diagnosis should end in a concrete action followed by a
/reload-*or restart.
Verification
After authoring a plugin or skill, confirm it is valid:
python tools/verify_plugin.py .
hermes plugins list
hermes skills listPass: verify_plugin.py reports 0 failures; plugin appears in hermes plugins list; skill appears in hermes skills list.
Fail: Verification errors — fix the reported issues and re-run; plugin missing — check plugin.yaml manifest and register(ctx) signature; skill missing — check SKILL.md frontmatter and directory name.
Facts verified 2026-10-31 against upstream source: hermes_cli/plugins.py at cedf4a3d (VALID_HOOKS, register_hook, register_command — documents fn(raw_args: str) only); hermes_cli/plugin_command_dispatch.py introduced in 06e8c5bc (context-keyword contract); hermes_cli/plugins_manifest.py at cedf4a3d (requires_hermes, python_dependencies, config_schema); hermes_cli/skills_hub.py at cedf4a3d (tap install); tools/render_docs.py (_word_num ceiling, selftest guard); tools/test_skill_counts.py (README table + issue template parity); and the official docs (hermes-agent.nousresearch.com/docs). Plugin manifest fields and skill frontmatter verified against this repo's own plugin.yaml and skills/*/SKILL.md. Re-verify before reuse.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

