Contributing
For repository setup and PRs, see the Contributing Guide; for shared methodology changes, follow the Canonical Source Workflow.
Package Boundary
Section titled “Package Boundary”@maestria/hermes is a Python plugin with hand-authored adapter code and methodology skills generated from packages/core/agent-directives/.
Design Rules
Section titled “Design Rules”- Keep reusable methodology in
packages/core/agent-directives/, not in Hermes-only prompts. - Use Hermes-native APIs for commands, delegation, LLM calls, goals, and memory.
- Keep trust decisions in the native topology and permission boundary; specialist names do not grant child capabilities.
- Keep optional integrations (memory providers, mode-footer output) outside the core plugin path.
See ADR-HM-001 for the long-lived goal boundary.
Test Local Changes
Section titled “Test Local Changes”hermes plugins install /path/to/maestria/packages/hermes --enablepytest packages/hermes/ruff check packages/hermes/src/Extend the Plugin
Section titled “Extend the Plugin”Register commands, hooks, middleware, and tools through their registration functions (register_command, register_hook, register_middleware, register_tool) and keep the matching provides_* entries in plugin.yaml. Hermes-only skills go under src/maestria_hermes/skills/ and register under the bare skill name; everything else comes from the canonical source. The tests compare plugin.yaml and register() in src/maestria_hermes/__init__.py; update both when adding or removing a resource.
Use the Hermes commands and installation guide for user-facing behavior.