Update: add Hermes Agent harness support - #51
Merged
Conversation
_excluded_skill_names_for_harness lost its last caller when the Hermes scan moved to _hermes_scan_policy. MatrixRow.tsx changes belonged to the withdrawn per-harness cell-hiding design; the backend now always returns a cell for every harness column, so the mainline graceful fallback is the correct behavior.
execsumo
added a commit
to execsumo/skill-manager
that referenced
this pull request
Jul 14, 2026
…with fork Adopts the product-accurate Hermes Agent implementation from upstream mode-io/skill-manager PR mode-io#51 (commit 4f085f8), replacing our earlier speculative one whose formats were unverified guesses: - MCP: ~/.hermes/config.yaml (YAML) under `mcp_servers`, standalone HermesMapper with no `type` field (stdio=command/args/env, http/sse=url/transport/headers). Adds ruamel.yaml for round-trip-safe YAML I/O and refactors FileBackedMcpAdapter to mutate the document in place (_ensure_subtree) so YAML comments/quoting survive — this changes the write path for every config-subtree MCP harness. - Skills: categorized layout ~/.hermes/skills/<category>/<skill>/; shared skills link under the `skill-manager` category. - Hub-awareness: reads Hermes' .hub/lock.json + .bundled_manifest to exclude official/builtin/optional and self-learned skills, adopting only external-hub skills; threads `origin_harness` provenance through the skill store manifest. - Home override: SKILL_MANAGER_HERMES_HOME → HERMES_HOME → ~/.hermes. Reconciled with fork-only work that upstream lacks: kept our Hermes slash-command binding (still provisional — upstream deliberately omits it) and its SlashTargetId/TARGET_ORDER allowlist entries, the `agy` harness, and our theme-neutral hermes-logo.svg (dropped upstream's png). Independently verified: backend 309+133, typecheck, npm 269, build, openapi (no drift) all green; CommentedMap read-back path confirmed against a live YAML config. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
execsumo
added a commit
to execsumo/skill-manager
that referenced
this pull request
Jul 14, 2026
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
execsumo
added a commit
to execsumo/skill-manager
that referenced
this pull request
Jul 14, 2026
The PR mode-io#51 cherry-pick merge left two Hermes Agent cells in the harness logo table: upstream's (referenced the dropped hermes-logo.png — a now broken image link) and ours (hermes-logo.svg). Collapse to one cell using the existing svg and upstream's real product docs link (hermes-agent.nousresearch.com), placed last to match the frontend HarnessLogoKey order. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Original issue
Skill Manager had no support for the Hermes Agent harness: no harness definition, no scanning of the categorized
~/.hermes/skills/<category>/<skill>/SKILL.mdlayout, and no YAML handling for MCP servers in~/.hermes/config.yaml.Fix
hermesas a first-class harness with skills and MCP bindings (slash commands intentionally deferred; Hermes models reusable workflows as skills). Home resolution honorsSKILL_MANAGER_HERMES_HOME, thenHERMES_HOME, then~/.hermes; the skills root supportsSKILL_MANAGER_HERMES_ROOT..hub/lock.json) are importable; bundled skills (.bundled_manifest), official optional skills, and Hermes self-learned/local skills are excluded and never symlinked, deleted, or replaced, sohermes updatekeeps normal ownership. Shared-store skills enable into askill-managercategory symlink.HermesMapper(stdiocommand/args/env; http/sseurl/headers,transport: sse) and YAML support inFileBackedMcpAdapterusingruamel.yamlround-trip mode with in-place subtree mutation, so user comments, key order, and formatting inconfig.yamlsurvive enable/disable writes (regression-tested).originHarnessas provenance only; managed skills stay enableable on every supported harness.MatrixRow.tsxto the mainline graceful fallback (the backend always returns a cell per harness column), and restored the PR Update: clarify release artifact platform coverage #49 release-artifact README lines dropped during rebase.tests/support/app_harness.pyhandlesIncompleteReadwhen reading HTTP error payloads.Validation
tsc --noEmitOK;vitest run --maxWorkers=158 files / 244 tests OK;npm run buildOK.hermes skills list/hermes mcp listrecognize Skill Manager writes; isolatedHERMES_HOMEE2E).Changed files
README.md
README.zh-CN.md
assets/harness-logos/hermes-logo.png
frontend/src/assets/harness-logos/hermes-logo.png
frontend/src/components/harness/harnessPresentation.ts
pyproject.toml
requirements.txt
skill_manager/application/mcp/adapters.py
skill_manager/application/mcp/mappers.py
skill_manager/application/skills/adapters.py
skill_manager/application/skills/inventory.py
skill_manager/application/skills/manifest.py
skill_manager/application/skills/mutations.py
skill_manager/application/skills/observations.py
skill_manager/application/skills/store.py
skill_manager/harness/init.py
skill_manager/harness/catalog.py
skill_manager/harness/contracts.py
tests/integration/test_http_api.py
tests/integration/test_mcp_routes.py
tests/integration/test_skills_mutations.py
tests/support/app_harness.py
tests/support/fake_home.py
tests/unit/test_backend_container.py
tests/unit/test_mcp_adapters.py
tests/unit/test_skill_manifest.py
tests/unit/test_skills_adapters.py
Reviewer: @SI-RUI-ZHANG