materialize: first-class hermes harness (global ~/.hermes/skills/spindle target)#1
Open
lavallee wants to merge 3 commits into
Open
materialize: first-class hermes harness (global ~/.hermes/skills/spindle target)#1lavallee wants to merge 3 commits into
lavallee wants to merge 3 commits into
Conversation
Hermes discovers skills only by recursively walking ~/.hermes/skills
(followlinks=True) — it never reads repo-local .hermes/skills, so the
generic ".{harness}/skills" fallback produced a directory hermes would
never see. Bindings for --harness hermes now materialize into a
dedicated, spindle-owned category dir ~/.hermes/skills/spindle/
(overridable via SPINDLE_HERMES_SKILLS_DIR) so hand-curated hermes
categories are never touched. The repo argument still names the binding
surface; only the target dir is global. Symlink + reconcile-against-
previous-binding semantics are unchanged, so bind/unbind/dry-run flow
through identically.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Covers: links created under the dedicated category dir (and nothing inside the repo), re-bind keeps, unbind removes only spindle-owned symlinks while foreign dirs in the category survive, dry-run writes nothing, SPINDLE_HERMES_SKILLS_DIR override honored, and a binder-level end-to-end bind→record→unbind cycle for a hermes surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Documents the per-harness materialization targets, the global hermes target with its env override, the shared-namespace caveat, and that skills land in claude-reference dialect for now — hermes dialect rendering/profile transforms are future work. Co-Authored-By: Claude Fable 5 <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.
What
spindle bind <repo> --harness hermesnow materializes into the global Hermes skills tree instead of a repo-local directory hermes never reads.Why
Hermes discovers skills exclusively by recursively walking
~/.hermes/skills/(os.walk(..., followlinks=True)overSKILL.mdindex files, pruning only VCS/venv/cache dirs — no hardcoded category list). It does not look at repo-local.hermes/skills, so the generic.{harness}/skillsfallback inmaterialize.target_dirproduced dead symlinks from hermes's point of view.How
paths.hermes_skills_dir()—~/.hermes/skills/spindle/by default, overridable viaSPINDLE_HERMES_SKILLS_DIR. A dedicated category dir so spindle never touches hand-curated hermes categories.materialize.GLOBAL_HARNESS_DIR— explicit mapping (not the fallback) for harnesses whose discovery is global-only;target_dirconsults it first. The repo argument still names the binding surface; only the materialization target is global.Verified
keptat the same coordinate, unbind → all removed, dir left empty.Caveats
🤖 Generated with Claude Code