SIGN IN SIGN UP

feat: add Hermes Agent install target

Adds `--platform hermes`, the first YAML-configured platform. Hermes Agent
reads `<HERMES_HOME>/config.yaml` (default `~/.hermes/config.yaml`) under
`mcp_servers`, so the installer gains a `yaml` format alongside `object`,
`array`, and `toml`.

That config is hand-edited and full of comments, ordering, and settings CRG
knows nothing about, so both install and uninstall edit it as text rather
than round-tripping it through a YAML dumper, which would reformat the whole
file. The parsed document is used only to decide whether an edit is needed
and to validate the result before writing; uninstall additionally diffs the
reparsed document against the expected one and refuses to write if any
unrelated setting moved.

Hermes' `mcp_servers` schema has no `cwd`, so the repo root is passed to the
server as `--repo <root>` in `args`, as is already done for OpenCode.

Skills are installed to `<HERMES_HOME>/skills/code-review-graph/<name>/SKILL.md`,
reusing `generate_skills` since Hermes uses the same frontmatter as Claude
Code. Hooks are not wired up: Hermes' hook model differs from the
settings.json shape used by Claude and Qoder, and MCP plus skills already
cover proactive graph use.

`_scope_for_config` now recognises a relocated `HERMES_HOME` as its own
user-scope boundary. Without this, install honoured the variable while
uninstall refused the resulting path as outside home/repo, writing a file it
could not clean up.

The `PLATFORMS`-driven uninstall test reaches whatever path each spec
resolves to. For every other platform that lands under a patched
`Path.home()`, but Hermes resolves an absolute path from the environment, so
conftest pins `HERMES_HOME` to a temp directory for the whole suite. Pinning
rather than clearing is deliberate: cleared, any test that forgets to patch
the home would silently rewrite the developer's real config.

Verified end to end against a real Hermes Agent install: `hermes mcp test`
connects and discovers 30 tools, `get_minimal_context_tool` returns graph
data through Hermes, and install followed by uninstall restores a 763-line
config byte for byte.
S
SYKuang committed
6ad6323490e88f00ed414cbdedfd302922859961
Parent: 90d760a