hermes-opencode-plugin

Develop, verify, and debug the Hermes-to-opencode bridge plugin against a live opencode server.

1|Updated Mar 15, 2025
One-click install
npx skills add https://github.com/adikpb/dotfiles --skill hermes-opencode-plugin-adikpb
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hermes-opencode-plugin
Source: https://github.com/adikpb/dotfiles/tree/main/.hermes/skills/software-development/hermes-opencode-plugin
Command: npx skills add https://github.com/adikpb/dotfiles --skill hermes-opencode-plugin-adikpb

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Developing and verifying the hermes-opencode plugin (the bridge between Hermes and a headless opencode server) is error-prone: the plugin tools live in Hermes' deferred tool catalog, the opencode v1 HTTP/SSE surface has directory-scoping and version-drift traps, and event-driven behaviors (turn-complete injection, question asks, permission routing) fail silently in non-interactive harnesses. This Skill encodes the verified contracts, live-probe recipes, and known failure shapes so you can build, upgrade, and e2e-test the plugin without rediscovering each pitfall. ## Core Features & Use Cases - End-to-end plugin driving: Invoke opencode_prompt, opencode_session_tail, opencode_session_read, opencode_question_reply, and opencode_command through the deferred catalog (tool_search → tool_describe → tool_call) against a live opencode serve on 127.0.0.1:4096. - Build-to-standard recipes: Fail-soft register(), manifest v2 with config_schema, minimum-version discipline, and hermes plugins doctor . --ci as the authoritative build check. - Failure-shape diagnostics: Distinguish paraphrased question asks, tool{} stalls, wedged que_ ids, SSE location-filter starvation, and inject silent no-ops, with REST curl probes to verify each independently. - Use Case: A delegated opencode turn is stuck busy — use the Skill's tail-reading and GET /question / GET /permission recipes (with the exact x-opencode-directory header) to determine whether a permission ask was denied or a question ask is pending, then reply or abort accordingly. ## Quick Start Ask the agent to smoke test the hermes-opencode plugin by sending a prompt through opencode_prompt, reading the session tail, and confirming completion via the live server status endpoint.

Frequently Asked Questions about hermes-opencode-plugin

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

FAQPage Schema
How do I call opencode_prompt from Hermes?▼

The opencode tools live in Hermes' deferred plugin catalog, so bare-name calls fail with 'Tool does not exist'. Use tool_search to find the tool, tool_describe to get its parameter schema, then tool_call with the name and arguments to invoke it.

How do I verify the hermes-opencode plugin end to end?▼

Send a prompt with opencode_prompt and capture the returned session_id, then poll opencode_session_tail and opencode_session_read. Confirm completion with GET /session/status returning an empty map, and probe GET /question and GET /permission with the exact x-opencode-directory header for pending asks.

Why does opencode_question_reply return HTTP 404 with a valid que_ id?▼

The reply route is directory-exact: the x-opencode-directory header must byte-match the opencode project directory with no trailing slash. The plugin's question_reply originally forwarded no directory; the fix mirrors permission_reply by forwarding the canonical realpath.

Why do event-driven injections not appear during tool-driven verification?▼

Calling the plugin through tool_call runs outside an interactive TUI, so no live cli_ref or session_key is bound and inject_message returns False. This is a harness limitation, not a regression; verify behavior with direct tail reads and REST probes instead.

Does the plugin work without OPENCODE_SERVER_PASSWORD set?▼

Yes. With a 127.0.0.1 bind and no password set, opencode auth is disabled and no credentials are needed. Do not gate the plugin's tools with requires_env on that variable, since it disables the whole plugin when the variable is absent.

Why is there no opencode_sessions list tool?▼

GET /session/list returns HTTP 500 on live opencode v1.18.18 because the server-side handler is broken, so the plugin removed the wrapper. Track sessions by the session_id returned from opencode_prompt and confirm idle state via GET /session/status.