cc421cb697
tools/skills_sync.py bound HERMES_HOME / SKILLS_DIR / MANIFEST_FILE at import time — the third module in the same lineage as skills_tool (f8723c478) and skill_manager_tool (c6a3d412d). In a long-lived dashboard/TUI process, console skills commands (reset, diff, list-modified, opt-in/out, repair-official) dispatched in-process under _profile_scope's set_hermes_home_override(), but skills_sync's frozen constants kept resolving against whichever profile was live at import. Sharpest edge: reset_bundled_skill()'s #48200 rmtree strict-child guard was computed against the WRONG skills root. Fix: same call-time accessor pattern as the two prior fixes — _hermes_home()/_skills_dir()/_manifest_file() honor an explicitly patched module global (tests, retargeting) and otherwise re-resolve from the live profile-scoped get_hermes_home() on every call. All 37 call sites migrated; module constants kept for compat. Also documents in _profile_scope() that skills_sync needs no module retargeting since the contextvar override now reaches it. Regression tests (sabotage-verified: all 3 fail on the old binding): - accessors follow set_hermes_home_override at call time - explicit module patch still wins over the override - rmtree guard anchors on the overridden profile's skills root Fixes #65828