fix(gstack): one helper-link tree for every hardcoded path, honest doctor stats

gstack skills hardcode ~/.claude/skills/gstack/<path> for 83 shared assets
(bin, scripts/jargon-list.json, ETHOS.md, */sections, review/specialists,
make-pdf/dist, lib/diagram-render/dist, freeze/bin...) but only bin and
browse/dist were linked: make-pdf and diagram failed on every run, cso and
plan-*-review could not read their sections, the freeze hook exited 127.
lib/gstack-links.sh links every top-level entry except SKILL.md, skips
non-skill dirs holding a nested SKILL.md (browser-skills, openclaw,
node_modules), removes the global symlink gstack ./setup plants and refuses
a destination inside the submodule. link.sh, install-plugins.sh and
update-all.sh all call it (three hand-copied blocks gone).

doctor.sh counted 34 skills (find without -L) and zero chars for block
scalar descriptions; lib/doctor-skills.sh reuses the census parser and
counts through the symlinks. Plugin constants re-based on measured values;
install-plugins.sh notes why frontend-design@claude-plugins-official and
brightdata-plugin@synced stay off and describes security-guidance truthfully.
This commit is contained in:
bastien
2026-09-28 11:48:45 +02:00
parent f83f8f755b
commit 02b62f787e
8 changed files with 463 additions and 68 deletions
+6 -8
View File
@@ -19,6 +19,8 @@ VERSION=$(cat "$REPO/version.txt" 2>/dev/null || echo "unknown")
source "$REPO/lib/detect-plugins.sh"
# shellcheck source=lib/gstack-playwright.sh disable=SC1091
source "$REPO/lib/gstack-playwright.sh"
# shellcheck source=lib/gstack-links.sh disable=SC1091
source "$REPO/lib/gstack-links.sh"
echo ""
echo "═══ claude-config update (v${VERSION}) ═══"
@@ -103,16 +105,12 @@ if [[ "$_gstack_confirm" =~ ^[Yy]$ ]]; then
warn "GStack submodule update failed — run: git submodule update --init"
fi
# Refresh gstack shared infrastructure symlinks (bin/ + browse/dist/)
# Refresh the gstack shared helper tree (bin/, browse/dist/, ETHOS.md,
# …) — see lib/gstack-links.sh.
GSTACK_DIR="$REPO/skills-external/gstack"
GSTACK_DST="$HOME/.claude/skills/gstack"
if [ -d "$GSTACK_DIR/bin" ]; then
mkdir -p "$GSTACK_DST"
ln -sf "$GSTACK_DIR/bin" "$GSTACK_DST/bin"
fi
if [ -d "$GSTACK_DIR/browse/dist" ]; then
mkdir -p "$GSTACK_DST/browse"
ln -sf "$GSTACK_DIR/browse/dist" "$GSTACK_DST/browse/dist"
if [ -d "$GSTACK_DIR" ]; then
link_gstack_helpers "$GSTACK_DIR" "$GSTACK_DST" >/dev/null
fi
# Restore prior enabled/disabled state