mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-20 20:00:45 +02:00
implement six-skill gstack 2 runtime
This commit is contained in:
+10
-26
@@ -56,31 +56,14 @@ if [ ! -e "$AGENTS_LINK" ]; then
|
||||
ln -s "$REPO_ROOT" "$AGENTS_LINK"
|
||||
fi
|
||||
|
||||
# 6. Run setup via the symlink so it detects .claude/skills/ as its parent.
|
||||
# 6. Do not call the user runtime installer from a development worktree.
|
||||
#
|
||||
# Workspace/dev setup MUST be non-interactive: Conductor runs this under a
|
||||
# forwarded pty, so any `read` in setup (skill-prefix prompt, plan-tune hook
|
||||
# consent) would hang the workspace forever. Detaching stdin makes every setup
|
||||
# prompt take its smart non-interactive default (flat skill names, etc.).
|
||||
# GStack 2 delegates skill placement to the standard Agent Skills installer,
|
||||
# and root ./setup installs only the optional per-user runtime. Development can
|
||||
# execute the checked-out binaries directly, so invoking ./setup here would
|
||||
# mutate user state without adding any workspace capability.
|
||||
#
|
||||
# `--plan-tune-hooks=prompt` is load-bearing, not redundant: stdin alone only
|
||||
# suppresses the *prompt* branch. A saved `plan_tune_hooks: yes` or an exported
|
||||
# GSTACK_PLAN_TUNE_HOOKS=yes would still resolve to "install" and rewrite the
|
||||
# user's global ~/.claude/settings.json to point at THIS ephemeral worktree —
|
||||
# which breaks once the workspace is deleted. The flag has highest precedence,
|
||||
# so it pins resolution to "prompt", and closed stdin then makes prompt-mode a
|
||||
# no-op skip (no install, no decline marker). A dev workspace must never mutate
|
||||
# global settings.json. To install the hooks, run `./setup --plan-tune-hooks`
|
||||
# directly (outside dev-setup). Saved prefix/other config preferences still apply.
|
||||
#
|
||||
# GSTACK_SKIP_GBRAIN_REGEN=1 is passed INLINE (not exported) so it scopes to
|
||||
# exactly this nested setup call and can't leak into any other setup path. It
|
||||
# tells setup NOT to regenerate the gbrain :user variant into the tracked
|
||||
# worktree (that would dirty checked-in source). We render it into an untracked
|
||||
# per-workspace dir below instead.
|
||||
GSTACK_SKIP_GBRAIN_REGEN=1 "$GSTACK_LINK/setup" --plan-tune-hooks=prompt </dev/null
|
||||
|
||||
# 7. Brain-aware (gbrain) blocks — render into an untracked workspace dir.
|
||||
# Brain-aware (gbrain) blocks render into an untracked workspace dir.
|
||||
#
|
||||
# The worktree's SKILL.md files stay canonical (the guard above). If gbrain is
|
||||
# installed, render the :user variant (with GBRAIN_CONTEXT_LOAD +
|
||||
@@ -88,8 +71,8 @@ GSTACK_SKIP_GBRAIN_REGEN=1 "$GSTACK_LINK/setup" --plan-tune-hooks=prompt </dev/n
|
||||
# and repoint the workspace's SKILL.md symlinks at it. gen-skill-docs --out-dir
|
||||
# also rewrites the section-base path so section reads resolve to the render, not
|
||||
# the global install. Result: this workspace gets the full gbrain experience
|
||||
# while git stays clean. Other projects pick up blocks via `gstack-config
|
||||
# gbrain-refresh` (printed below).
|
||||
# while git stays clean. Production skill placement and updates remain owned by
|
||||
# the standard Agent Skills installer.
|
||||
GBRAIN_DETECT="$REPO_ROOT/bin/gstack-gbrain-detect"
|
||||
RENDER_DIR="$REPO_ROOT/.claude/gstack-rendered"
|
||||
if [ -x "$GBRAIN_DETECT" ] && "$GBRAIN_DETECT" --is-ok 2>/dev/null; then
|
||||
@@ -121,7 +104,8 @@ echo " .claude/skills/gstack → $REPO_ROOT"
|
||||
echo " .agents/skills/gstack → $REPO_ROOT"
|
||||
echo "Edit any SKILL.md and test immediately — no copy/deploy needed."
|
||||
echo ""
|
||||
echo "To make brain-aware blocks live across your OTHER projects too, run:"
|
||||
echo "To refresh managed gbrain detection state, run:"
|
||||
echo " gstack-config gbrain-refresh"
|
||||
echo "Then use the standard Agent Skills installer for production skill updates."
|
||||
echo ""
|
||||
echo "To tear down: bin/dev-teardown"
|
||||
|
||||
Reference in New Issue
Block a user