Add Hermes Agent plugin support#1861
Conversation
|
I will complete adversarial pressure testing first, hold on a minute. |
Add a root Hermes plugin manifest and entrypoint so Hermes can install the Superpowers repository directly and register the bundled skills as plugin-scoped skills. Inject the using-superpowers bootstrap through Hermes' pre_llm_call hook on the first model call for each session, including a compact skill index, Hermes-specific tool mapping, and a startup guard that keeps pressure prompts from skipping brainstorming before edits. Document Hermes install/update/testing flow and add focused unit coverage for registration, one-shot bootstrap injection, fail-open behavior, neutral-prompt acceptance parsing, and adversarial pressure prompts.
|
Alright, complete adversarial pressure testing is finished! Please review the code! :) |
|
Thanks for building a real — Claude Fable 5 (AI assistant), Claude Code 2.1.218, doing PR triage for this repo. Direction from @obra. |
Who is submitting this PR? (required)
What problem are you trying to solve?
Hermes Agent can install and expose skills, but Superpowers did not have a native Hermes plugin entrypoint that starts the
using-superpowersbootstrap automatically when a new Hermes coding session begins. That meant Hermes could behave like a generic coding agent unless the user manually opted into Superpowers behavior.The concrete acceptance case from this repository is the new-harness test:
A working integration must trigger
superpowers:brainstormingbefore writing code. This PR adds that native Hermes bootstrap path and verifies that a neutral prompt, with no mention of Superpowers, causes Hermes to invoke brainstorming first.What does this PR change?
Adds a root Hermes plugin manifest and plugin entrypoint so Hermes can install this repository directly, register the bundled Superpowers skills, and inject the
using-superpowersbootstrap on the first model call in each session. It also documents Hermes install/update/testing flow and adds focused unit coverage for registration, one-shot bootstrap injection, fail-open behavior, and neutral-prompt acceptance parsing.Is this change appropriate for the core library?
Yes. This adds support for Hermes Agent as a new agent harness, which is specifically called out as an acceptable core-library contribution category. It does not add a domain-specific skill, project-specific workflow, or optional dependency for ordinary Superpowers users.
The Hermes integration is harness infrastructure: it makes the existing general-purpose Superpowers skills available in Hermes with the same startup behavior expected from other supported harnesses.
What alternatives did you consider?
I considered a docs-only installation guide that tells users to copy or symlink skills into Hermes, but that would not satisfy the new-harness requirement because it does not load the
using-superpowersbootstrap at session start.I also considered only adding a Hermes tool-mapping reference under
skills/using-superpowers/references/, but that still leaves Hermes without an automatic startup hook. This PR instead adds a native plugin entrypoint that registers skills and injects the bootstrap through Hermes'pre_llm_callhook.Does this PR contain multiple unrelated changes?
No. The manifest, plugin entrypoint, docs, README update, version metadata, and tests are all part of the same Hermes Agent harness-support change.
Existing PRs
Related upstream PRs reviewed:
feat: add Hermes Agent installation guidefeat: add Hermes Agent tool mappingfeat(tests): cross-harness portability lintThis PR differs by adding the actual Hermes plugin support path and verifying the startup behavior required for a real new-harness integration.
Environment tested
stepfun/step-3.7-flash:freeNew harness support (required if this PR adds a new harness)
Clean-session transcript for "Let's make a react todo list"
Evaluation
The implementation request was to add Hermes Agent support that starts from the moment the coding agent starts, so Hermes does not behave like ordinary opt-in skills. The acceptance prompt used for live validation was exactly:
One live Hermes acceptance session, plus focused local unit tests.
Before this change, this repository did not provide a native Hermes plugin entrypoint that could inject the Superpowers bootstrap automatically. After the change, installing the repository as a Hermes plugin registered the Superpowers skills and caused a neutral coding prompt to invoke
superpowers:brainstormingbefore code-writing behavior.Additional verification run locally:
Also verified:
The plugin installed and appeared enabled at version
6.0.3.Rigor
superpowers:writing-skillsand completed adversarial pressure testing (paste results below)I used
superpowers:writing-skillsto guide the pressure-test approach. This PR does not editskills/**/SKILL.md, but because it changes startup behavior for skill invocation, I still ran adversarial pressure testing against Hermes.Pressure prompts tested, without mentioning Superpowers, skills, or brainstorming:
Initial adversarial result:
skill_viewand wrote files as the first action.Fix:
skill_view(name="superpowers:brainstorming")before writing, editing, scaffolding, dependency setup, or project inspection, even when the user asks to skip questions/planning or start immediately.Retest result from exported live Hermes sessions:
Local verification:
Human review