fix(setup): register root gstack slash alias

This commit is contained in:
Jayesh Betala
2026-05-18 12:14:30 +05:30
committed by Garry Tan
parent 873799c90a
commit 78d30524fd
4 changed files with 78 additions and 0 deletions
+22
View File
@@ -483,6 +483,26 @@ link_claude_skill_dirs() {
fi
}
# Claude Code skips the repo-shaped ~/.claude/skills/gstack directory when
# building the user-facing slash-command list. Keep the repo path for runtime
# assets, and add a separate thin wrapper whose frontmatter name remains
# `gstack` so `/gstack` can autocomplete.
link_claude_root_skill_alias() {
local gstack_dir="$1"
local skills_dir="$2"
local target="$skills_dir/_gstack-command"
[ -f "$gstack_dir/SKILL.md" ] || return 0
if [ -L "$target" ]; then
rm -f "$target"
fi
mkdir -p "$target"
if [ -L "$target/SKILL.md" ]; then rm "$target/SKILL.md"; fi
_link_or_copy "$gstack_dir/SKILL.md" "$target/SKILL.md"
echo " linked root skill alias: gstack"
_print_windows_copy_note_once
}
# ─── Helper: remove old unprefixed Claude skill entries ───────────────────────
# Migration: when switching from flat names to gstack- prefixed names,
# clean up stale symlinks or directories that point into the gstack directory.
@@ -869,6 +889,7 @@ if [ "$INSTALL_CLAUDE" -eq 1 ]; then
# reads the correct (patched) name: values for symlink naming
"$SOURCE_GSTACK_DIR/bin/gstack-patch-names" "$SOURCE_GSTACK_DIR" "$SKILL_PREFIX"
link_claude_skill_dirs "$SOURCE_GSTACK_DIR" "$INSTALL_SKILLS_DIR"
link_claude_root_skill_alias "$SOURCE_GSTACK_DIR" "$INSTALL_SKILLS_DIR"
# Self-healing: re-run gstack-relink to ensure name: fields and directory
# names are consistent with the config. This catches cases where an interrupted
# setup, stale git state, or gen:skill-docs left name: fields out of sync.
@@ -940,6 +961,7 @@ if [ "$INSTALL_CLAUDE" -eq 1 ]; then
fi
"$SOURCE_GSTACK_DIR/bin/gstack-patch-names" "$SOURCE_GSTACK_DIR" "$SKILL_PREFIX"
link_claude_skill_dirs "$SOURCE_GSTACK_DIR" "$INSTALL_SKILLS_DIR"
link_claude_root_skill_alias "$SOURCE_GSTACK_DIR" "$INSTALL_SKILLS_DIR"
GSTACK_RELINK="$SOURCE_GSTACK_DIR/bin/gstack-relink"
if [ -x "$GSTACK_RELINK" ]; then
GSTACK_SKILLS_DIR="$INSTALL_SKILLS_DIR" GSTACK_INSTALL_DIR="$SOURCE_GSTACK_DIR" "$GSTACK_RELINK" >/dev/null 2>&1 || true