mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-03 07:18:03 +01:00
* feat(harness): opt-in start hook for OpenClaw and Hermes (GST-718) gstack-harness register openclaw|hermes --start-hook (or GSTACK_HARNESS_START_HOOK, or gstack-config harness_start_hook) adds a gstack-start plugin that puts a one-line note on every user turn to run a gstack skill's start command as written. Activation goes through each harness's own CLI and is read back; a run that turns it on and ends inactive exits 4. Off by default. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): retry an inactive start hook without failing refresh, and never re-enable a user disable (GST-718) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): an env or config start-hook opt-in with an unsafe plugin folder turns the hook off instead of failing refresh (GST-718) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): normalize the hook profile, retry an interrupted activation, re-enable after kept edits Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): a non-folder or empty plugin path is never taken as kept edits Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): teardown keeps kept copies and refuses symlinked plugin paths; a failed opt-out can rerun; a saved hook survives OPENCLAW_CONFIG_PATH Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): any saved plugin root is checked for symlinks before an opt-out deletes through it Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(harness): tolerant JSON read-back, short read-back timeout, retry an interrupted explicit activation, symlink checks on every hook opt-out and folder cleanup Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(harness): start hook unchecked state and uninstall notes Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
93 lines
3.9 KiB
Markdown
93 lines
3.9 KiB
Markdown
# Uninstall
|
|
|
|
## Option 1: Run the uninstall script
|
|
|
|
If gstack is installed on your machine:
|
|
|
|
```bash
|
|
~/.claude/skills/gstack/bin/gstack-uninstall
|
|
```
|
|
|
|
This handles skills, symlinks, harness registrations (the files `gstack-harness` wrote into OpenClaw, Hermes, a Dot or another harness, from their ledgers, plus the opt-in [start hook](hosts.md#start-hook), which it turns off through the harness's own CLI), global state (`~/.gstack/`), project-local state, browse daemons, and temp files. Use `--keep-state` to preserve config and analytics. Use `--force` to skip confirmation.
|
|
|
|
## Option 2: Manual removal (no local repo)
|
|
|
|
If you don't have the repo cloned (e.g. you installed via a Claude Code paste and later deleted the clone):
|
|
|
|
```bash
|
|
# 1. Stop browse daemons
|
|
pkill -f "gstack.*browse" 2>/dev/null || true
|
|
|
|
# 2. Remove per-skill directories whose SKILL.md points into gstack/
|
|
# (rm -rf, not rmdir — installed dirs also contain runtime-asset links)
|
|
find ~/.claude/skills -mindepth 1 -maxdepth 1 -type d ! -name gstack 2>/dev/null |
|
|
while IFS= read -r dir; do
|
|
link="$dir/SKILL.md"
|
|
[ -L "$link" ] || continue
|
|
target=$(readlink "$link" 2>/dev/null) || continue
|
|
case "$target" in
|
|
gstack/*|*/gstack/*)
|
|
rm -rf "$dir"
|
|
;;
|
|
esac
|
|
done
|
|
# Directories gstack created carry a .gstack-owned marker (the only signal on
|
|
# Windows, where installs are file copies with no symlink to read)
|
|
for marker in ~/.claude/skills/*/.gstack-owned; do
|
|
[ -f "$marker" ] && rm -rf "$(dirname "$marker")"
|
|
done
|
|
# Alias skills install as copies (no symlink to detect) — remove by name
|
|
rm -rf ~/.claude/skills/_gstack-command ~/.claude/skills/connect-chrome 2>/dev/null
|
|
|
|
# 3. Remove gstack
|
|
rm -rf ~/.claude/skills/gstack
|
|
|
|
# 4. Remove global state
|
|
rm -rf ~/.gstack
|
|
|
|
# 5. Remove integrations (skip any you never installed)
|
|
rm -rf "${CODEX_HOME:-$HOME/.codex}/skills/gstack"* 2>/dev/null
|
|
rm -rf ~/.factory/skills/gstack* 2>/dev/null
|
|
rm -rf ~/.kiro/skills/gstack* 2>/dev/null
|
|
rm -rf "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/skills/gstack"* "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/skills/.gstack-skills" 2>/dev/null
|
|
rm -rf "${HERMES_HOME:-$HOME/.hermes}/skills/gstack" 2>/dev/null
|
|
rm -rf ~/.cursor/skills/gstack* 2>/dev/null
|
|
rm -rf ~/.config/opencode/skills/gstack* 2>/dev/null
|
|
rm -rf ~/.gemini/antigravity-cli/skills/gstack* 2>/dev/null
|
|
rm -rf ~/.gemini/skills/gstack* 2>/dev/null
|
|
|
|
# 6. Remove temp files
|
|
rm -f /tmp/gstack-* 2>/dev/null
|
|
|
|
# 7. Per-project cleanup (run from each project root)
|
|
rm -rf .gstack .gstack-worktrees .claude/skills/gstack 2>/dev/null
|
|
rm -rf .agents/skills/gstack* .factory/skills/gstack* 2>/dev/null
|
|
```
|
|
|
|
Manual removal leaves gstack's hook entries behind in `~/.claude/settings.json`
|
|
(the uninstall script removes all of them for you, including entries whose
|
|
`_gstack_source` tag was stripped). Edit that file and delete every hook whose
|
|
command path points into `.claude/skills/gstack/`: the SessionStart auto-update
|
|
hook, the AskUserQuestion PreToolUse/PostToolUse hooks, and the Stop hooks
|
|
(session timeline, plus verify-gate if you opted in). Left in place, they error
|
|
on every matching event once the install directory is gone.
|
|
|
|
If you turned on the OpenClaw or Hermes [start hook](hosts.md#start-hook),
|
|
manual removal also leaves its `gstack-start` plugin turned on. Turn it off
|
|
with `openclaw config unset plugins.entries.gstack-start` or `hermes plugins
|
|
disable gstack-start`, then delete
|
|
`${OPENCLAW_STATE_DIR:-~/.openclaw}/extensions/gstack-start` or
|
|
`${HERMES_HOME:-~/.hermes}/plugins/gstack-start`.
|
|
|
|
## Clean up CLAUDE.md
|
|
|
|
The uninstall script does not edit CLAUDE.md. In each project where gstack was added, remove the `## gstack` and `## Skill routing` sections.
|
|
|
|
## Playwright
|
|
|
|
`~/Library/Caches/ms-playwright/` (macOS) is left in place because other tools may share it. Remove it if nothing else needs it.
|
|
|
|
## Aside
|
|
|
|
gstack never installed Aside, so it never uninstalls it. Keep it or remove it like any other app.
|