hermes-plugin-dev

Port pi TypeScript extensions to Hermes Python plugins with hooks and slash commands.

2|Updated Jan 2, 2026
One-click install
npx skills add https://github.com/ShineBreaker/Guix-configs --skill hermes-plugin-dev-shinebreaker
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hermes-plugin-dev
Source: https://github.com/ShineBreaker/Guix-configs/tree/main/dotfiles/mutable/agents/hermes/.local/share/hermes/skills/hermes-agent-ops/hermes-plugin-dev
Command: npx skills add https://github.com/ShineBreaker/Guix-configs --skill hermes-plugin-dev-shinebreaker

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Porting pi/omp TypeScript extensions to the Hermes agent platform requires understanding a different plugin contract, hook model, and registration API, and this Skill captures the minimal directory layout, registration surface, and migration pitfalls so plugins work on the first attempt. ## Core Features & Use Cases - Plugin scaffolding contract: Defines the minimal plugin.yaml manifest plus __init__.py with a register(ctx) entry point, including hook and command declarations. - Hook and command registration guide: Documents register_hook for pre_llm_call, pre_gateway_dispatch, on_session_start and register_command handlers with ctx.inject_message support. - agenote migration pitfalls: Covers completion-signal detection, self-trigger blocking, subagent noise filtering, 5-minute debounce, CLI path fallback, and skills reuse via skills.external_dirs. - Use Case: You maintain a pi extension like agenote and need it running under Hermes; follow the mapping tables and verification commands to port hooks and slash commands without re-deriving the platform differences. ## Quick Start Ask the agent to port the agenote pi extension to a Hermes plugin using the hermes-plugin-dev skill and verify it with the plugin discovery test.

Frequently Asked Questions about hermes-plugin-dev

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a Hermes plugin in Python?▼

Create a directory under ~/.local/share/hermes/plugins/<name>/ containing a plugin.yaml manifest and an __init__.py exposing register(ctx). Inside register, call ctx.register_hook for hooks like pre_llm_call and ctx.register_command for slash commands, then add the plugin name to the plugins.enabled allowlist.

How do I port a pi TypeScript extension to Hermes?▼

Map pi lifecycle events to Hermes hooks: agent_end completion detection becomes a pre_llm_call hook inspecting user_message, and slash commands become register_command handlers. Resident timers have no Hermes equivalent, so use gateway or cron scheduling instead.

What hooks are available in Hermes plugins?▼

Valid hooks are defined in hermes_cli/plugins.py as VALID_HOOKS and include pre_llm_call, pre_gateway_dispatch, and on_session_start. The hooks you register must match the provides_hooks list in plugin.yaml or validation fails.

Why is my Hermes plugin not loading or enabled?▼

Hermes uses an allowlist: when plugins.enabled is non-empty, any plugin not listed is disabled. Run hermes config set plugins.enabled with your plugin name included, and restart the gateway after adding hooks or commands.

How do I prevent a pre_llm_call hook from triggering on its own output?▼

Check for a marker string such as <agenote-hook> in user_message and skip processing when present. Also skip subagent and cron platforms and apply a time-based debounce, for example ignoring triggers within five minutes of the last one.