Files
claude_mac/lib/gstack-removed.sh
T
bastien f83f8f755b feat(profiles): prune the gstack catalog, add max, honor a removed denylist
Nine gstack skills leave every profile (ship is trunk-based on Gitea,
land-and-deploy auto-merges and deploys, setup-deploy, autoplan reads
paths that do not exist here, context-save has no restore, learn is an
unused parallel store, careful and guard hooks never fired, design-shotgun
needs an absent OpenAI key). lib/gstack-removed.sh is the single denylist;
profile.sh gstack on and toggle-external.sh enable gstack skip it.

full now carries everything every other profile carries (user rule), minus
the parked make-pdf, diagram and 21st-ai/ui-explore/ui-review, which live
in the new max profile together with pr-review-toolkit. The 21st trio also
leaves web, web-full and design (redundant with impeccable + ui-ux-pro-max).

lib/tests/profile-census.test.sh asserts the invariants live and on a
baseline fixture plus one mutant per invariant; gstack-removed.test.sh
covers both restore paths.
2026-09-28 11:48:44 +02:00

36 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# ============================================================
# lib/gstack-removed.sh — the gstack skills this config never exposes
#
# Single source for the denylist. Sourced by lib/profile.sh
# (enable_all_gstack, enable_skill) and lib/toggle-external.sh
# (`enable gstack`), read by lib/tests/profile-census.test.sh. A name
# listed here is in no profile, `max` included, and every "bring gstack
# back" path skips it. Decided 2026-09-28 (skill-catalog prune, user go):
#
# ship base = origin/HEAD = main on Gitea, skips develop
# land-and-deploy `gh pr merge --squash --delete-branch` then deploys
# setup-deploy companion of land-and-deploy (Claude never deploys)
# autoplan reads ~/.claude/skills/gstack/plan-*/ paths that do
# not exist in this install
# context-save its pair context-restore is not linked; never used
# learn parallel JSONL store outside .claude/memory, unused
# careful, guard hooks exit 127 (missing bin path) — vacuous; the
# house permissions.deny is stricter (BDR-095)
# design-shotgun mockups need OPENAI_API_KEY, absent
#
# No `set -euo pipefail` here (sourced lib, mirrors lib/detect-plugins.sh).
# ============================================================
GSTACK_REMOVED=(ship land-and-deploy setup-deploy autoplan context-save
learn careful guard design-shotgun)
# gstack_is_removed <name> — exit 0 when <name> is on the denylist.
gstack_is_removed() {
local name="$1" entry
for entry in "${GSTACK_REMOVED[@]}"; do
[ "$entry" = "$name" ] && return 0
done
return 1
}