A full repo checkout at ~/.claude/skills/gstack sits inside Claude Code's (and
Cursor's) recursive skill-discovery root, so every generated host-mirror and
source SKILL.md inside it gets indexed — hundreds of phantom skills. Claude Code
drops descriptions ("N skill descriptions dropped"); Cursor's cursor-agent CLI
hard-freezes (NGHTTP2_ENHANCE_YOUR_CALM).
Mirror migrate_direct_codex_install for Claude: move the checkout to
~/.gstack/repos/gstack and leave a runtime-only sidecar at ~/.claude/skills/gstack
(bin/, browse/dist, review assets, ETHOS.md, …) with ZERO nested SKILL.md, while
top-level skill aliases stay in ~/.claude/skills. gstack-relink already honors the
GSTACK_SKILLS_DIR/GSTACK_INSTALL_DIR overrides, and /gstack-upgrade already detects
~/.gstack/repos/gstack, so upgrades keep working with no extra changes.
- migrate_direct_claude_install: relocate global direct installs; idempotent
re-run from the relocated path; skips --local and worktree/vendored installs
- create_claude_runtime_root: curated sidecar with zero nested SKILL.md
- README: canonical path + install/team/troubleshooting commands
- test: sources both functions against an isolated fake HOME (fresh / re-run / --local)
Fixes#1202. Addresses #1694.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>