From f9bf1663efc820ecd9ff0f07753c7a12fad4e4b1 Mon Sep 17 00:00:00 2001 From: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Date: Wed, 22 Apr 2026 06:55:47 -0700 Subject: [PATCH] fix(docs): match README manual-uninstall snippet to install layout The manual-removal step 2 used `find -maxdepth 1 -type l` which only matches top-level symlinks. But setup creates real directories per skill with SKILL.md symlinked into gstack/, so nothing ever matched and the per-skill directories survived uninstall. Switches to iterating real directories and checking each nested SKILL.md target. Matches the real install topology and aligns with the fix to bin/gstack-uninstall in #902. Fixes #1130 --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 05001dce21..b2d6959252 100644 --- a/README.md +++ b/README.md @@ -316,9 +316,13 @@ If you don't have the repo cloned (e.g. you installed via a Claude Code paste an # 1. Stop browse daemons pkill -f "gstack.*browse" 2>/dev/null || true -# 2. Remove per-skill symlinks pointing into gstack/ -find ~/.claude/skills -maxdepth 1 -type l 2>/dev/null | while read -r link; do - case "$(readlink "$link" 2>/dev/null)" in gstack/*|*/gstack/*) rm -f "$link" ;; esac +# 2. Remove per-skill directories created by setup +# setup creates a real directory per skill, with SKILL.md symlinked into gstack/ +find ~/.claude/skills -mindepth 1 -maxdepth 1 -type d 2>/dev/null | while IFS= read -r dir; do + [ "$(basename "$dir")" = "gstack" ] && continue + link="$dir/SKILL.md" + [ -L "$link" ] || continue + case "$(readlink "$link" 2>/dev/null)" in gstack/*|*/gstack/*) rm -rf "$dir" ;; esac done # 3. Remove gstack