Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/atlasomnia/hermes-custom-pack/hermes-plugin-developmentnpx skills add AtlasOmnia/hermes-custom-pack --skill hermes-plugin-developmentgit clone --depth 1 https://github.com/AtlasOmnia/hermes-custom-packWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/atlasomnia/hermes-custom-pack/hermes-plugin-development)<a href="https://agentmods.dev/skills/atlasomnia/hermes-custom-pack/hermes-plugin-development"><img src="https://agentmods.dev/badge/skills/atlasomnia/hermes-custom-pack/hermes-plugin-development.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00031 | $0.07002 |
| Opus 5 | $0.00015 | $0.03501 |
| Sonnet 5 | $0.00006 | $0.01400 |
| Haiku 4.5 | $0.00003 | $0.00700 |
Grade A, and why
hermes-plugin-development scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to hermes-plugin-development — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 389 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Hermes Plugin Development
Use when: creating, debugging, or integrating Hermes Agent plugins, including Python backend plugins (tools, hooks, routers, middleware) and JavaScript Hermes Desktop runtime plugins.
Core patterns
- Choose the extension surface first:
- Backend plugins live under
~/.hermes/plugins/<name>/and add tools, hooks, commands, providers, or middleware. - Desktop runtime plugins live under
$HERMES_HOME/desktop-plugins/<name>/plugin.jsand add native UI contributions through@hermes/plugin-sdk. For model-picker specifics, including a Desktop-local/switchcommand plus backend command-inventory bridge, usereferences/desktop-model-picker-plugin.md. - Resolve the requested interaction surface before building anything. “TUI,” “terminal,” “over SSH,” or “from Windows over SSH” means the prompt_toolkit CLI, not Hermes Desktop. Never substitute a Desktop popover or a backend text-response command.
- Backend plugin slash handlers return text; they cannot open a prompt_toolkit modal. For a TUI command that opens an existing picker, prefer a central command alias or an update-safe
quick_commandsalias. If the user requires an explicit Session/Global step, aliasing to bare/modelis insufficient because the standard picker follows its persistence default; extend the TUI picker state with a scope stage and verify that scope reaches the final switch call. For live verification, use a fresh CLI under tmux, synchronize on the visible composer, capture each modal stage, then repeat through the user's real SSH path; do not mistake raw PTY repaint fragments for a product failure. Seereferences/tui-model-picker-slash-command.md. - Desktop-only slash-like UI commands may use a two-surface integration: composer middleware opens/cancels locally, while an enabled Python backend plugin registers inventory/autocomplete and a non-Desktop fallback. Middleware receives a
{ text, attachments }draft object—never test it with raw strings. This pattern does not satisfy TUI/SSH requests. - Backend plugins use:
__init__.py: Python code + hook implementationsplugin.yaml: metadata + hook declarations- Optional
config.yaml: per-profile settings (e.g., router_model, floor_toolsets)
What ships with it
18 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/api-server-live-plugin-contract.md 5.0 KB
- references/cross-platform-prefetch-publication.md 4.7 KB
- references/desktop-model-picker-plugin.md 7.0 KB
- references/external-model-gateway-affinity.md 3.4 KB
- references/fail-closed-policy-plugin-deployment.md 5.7 KB
- references/gmail-oauth-handoff.md 2.2 KB
- references/hook-contextvar-lifecycle.md 2.4 KB
- references/least-privilege-workspace-oauth.md 2.7 KB
- references/long-goal-public-prep-handoff.md 2.1 KB
- references/modelx-branch-drift-triage.md 1.8 KB
- references/multiplex-profile-guarded-prefetch.md 3.7 KB
- references/public-plugin-distribution-checklist.md 4.2 KB
- references/public-plugin-repo-replacement.md 3.0 KB
- references/router-model-latency.md 2.2 KB
- references/runtime-hook-composition-regression.md 2.5 KB
- references/self-gated-policy-plugin-deployment.md 5.4 KB
- references/tool-router-production-hardening.md 7.0 KB
- references/tui-model-picker-slash-command.md 6.0 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 389 lines · 31 tokens per session scan A d2c6c397994e
hermes-plugin-development is a skill published in the GitHub repository AtlasOmnia/hermes-custom-pack (55 stars, last pushed 21d ago), licensed MIT. It adds 31 tokens to every session and 7,002 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to hermes-plugin-development, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
config
Use when configuring obshare-cli credentials, checking saved settings, testing connectivity, clearing local config, or setting optional Obsidian bridge values used by the V0.2.0 direct-share stack.
obshare-cli
Use when setting up obshare-cli 0.2.0, reviewing available commands, or choosing the right command for config, upload, permission, history, delete, and the plugin-first direct-share workflow.
upload
Use when uploading a Markdown note to Feishu, optionally applying public or copy/download permissions, or requesting JSON upload results for automation or the Obsidian plugin direct-share flow.
permission
Use when changing Feishu document visibility, copy permissions, or download permissions for an uploaded document token.
list
Use when checking obshare-cli upload history, finding document tokens, or reviewing previous upload URLs and permission snapshots.
delete
Use when removing a Feishu document by token and cleaning the matching entry from local obshare-cli upload history.