Automated summary
Upgrades gstack to the latest version by detecting the install type (global or vendored), then summarizes what changed from the CHANGELOG.
Strengths
- Automatically detects four different install locations (global git, local git, vendored, vendored global)
- Handles local modifications with git stash and warns the user about them
- Compares old and new versions so only relevant CHANGELOG entries are shown
- Hooks into other skills through a shared preamble that surfaces the upgrade at the right moment
Limitations
- Assumes a specific GitHub repo (garrytan/gstack) and a ./setup script at the root
- For vendored installs the old directory is moved then deleted, with no automatic rollback if ./setup fails
- The what's-new summary depends entirely on the quality of CHANGELOG.md
Use it when a newer gstack release is detected, or to manually force an update to the latest version.
Don't use it for a first-time gstack install or for managing dependencies in some other project.
Security analysis
CautionThe skill performs a legitimate self-upgrade but relies on powerful Bash operations, destructive git commands, and execution of remote `./setup` code. Paths appear scoped and there is no secret exfiltration or obfuscation, so it is caution rather than risky.
- •Executes `./setup` from a freshly fetched/cloned remote repository, which is arbitrary code execution from upstream during upgrade.
- •Uses `git reset --hard origin/main`, which can discard local modifications; it attempts a stash first but does not robustly handle stash/setup failures.
- •Uses `rm -rf` on install backup and temp directories; scoped, but still destructive if variables are unexpected.
- •Clones and trusts `https://github.com/garrytan/gstack.git` directly without checksum or signature verification.
Examples
/gstack-upgradeUpgrade gstack to the latest version and tell me what changed.Am I on the latest gstack version? If not, upgrade it and summarize the new features.name: gstack-upgrade version: 1.0.0 description: | Upgrade gstack to the latest version. Detects global vs vendored install, runs the upgrade, and shows what's new. allowed-tools:
- Bash
- Read
- AskUserQuestion
/gstack-upgrade
Upgrade gstack to the latest version and show what's new.
Inline upgrade flow
This section is referenced by all skill preambles when they detect UPGRADE_AVAILABLE.
Step 1: Ask the user
Use AskUserQuestion:
- Question: "gstack v{new} is available (you're on v{old}). Upgrade now? Takes ~10 seconds."
- Options: ["Yes, upgrade now", "Later (ask again tomorrow)"]
If "Later": Run touch ~/.gstack/last-update-check to reset the 24h timer and continue with the current skill. Do not mention the upgrade again.
Step 2: Detect install type
if [ -d "$HOME/.claude/skills/gstack/.git" ]; then
INSTALL_TYPE="global-git"
INSTALL_DIR="$HOME/.claude/skills/gstack"
elif [ -d ".claude/skills/gstack/.git" ]; then
INSTALL_TYPE="local-git"
INSTALL_DIR=".claude/skills/gstack"
elif [ -d ".claude/skills/gstack" ]; then
INSTALL_TYPE="vendored"
INSTALL_DIR=".claude/skills/gstack"
elif [ -d "$HOME/.claude/skills/gstack" ]; then
INSTALL_TYPE="vendored-global"
INSTALL_DIR="$HOME/.claude/skills/gstack"
else
echo "ERROR: gstack not found"
exit 1
fi
echo "Install type: $INSTALL_TYPE at $INSTALL_DIR"
Step 3: Save old version
OLD_VERSION=$(cat "$INSTALL_DIR/VERSION" 2>/dev/null || echo "unknown")
Step 4: Upgrade
For git installs (global-git, local-git):
cd "$INSTALL_DIR"
STASH_OUTPUT=$(git stash 2>&1)
git fetch origin
git reset --hard origin/main
./setup
If $STASH_OUTPUT contains "Saved working directory", warn the user: "Note: local changes were stashed. Run git stash pop in the skill directory to restore them."
For vendored installs (vendored, vendored-global):
PARENT=$(dirname "$INSTALL_DIR")
TMP_DIR=$(mktemp -d)
git clone --depth 1 https://github.com/garrytan/gstack.git "$TMP_DIR/gstack"
mv "$INSTALL_DIR" "$INSTALL_DIR.bak"
mv "$TMP_DIR/gstack" "$INSTALL_DIR"
cd "$INSTALL_DIR" && ./setup
rm -rf "$INSTALL_DIR.bak" "$TMP_DIR"
Step 5: Write marker + clear cache
mkdir -p ~/.gstack
echo "$OLD_VERSION" > ~/.gstack/just-upgraded-from
rm -f ~/.gstack/last-update-check
Step 6: Show What's New
Read $INSTALL_DIR/CHANGELOG.md. Find all version entries between the old version and the new version. Summarize as 5-7 bullets grouped by theme. Don't overwhelm — focus on user-facing changes. Skip internal refactors unless they're significant.
Format:
gstack v{new} — upgraded from v{old}!
What's new:
- [bullet 1]
- [bullet 2]
- ...
Happy shipping!
Step 7: Continue
After showing What's New, continue with whatever skill the user originally invoked. The upgrade is done — no further action needed.
Standalone usage
When invoked directly as /gstack-upgrade (not from a preamble), follow Steps 2-6 above. If already on the latest version, tell the user: "You're already on the latest version (v{version})."
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/upgrade-gstack-mrwakbd6' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/upgrade-gstack-mrwakbd6/download' --output '.skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md.part' && mv '.skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md.part' '.skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md' && test -s '.skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/gstack-upgrade' && cp -R '.skill-downloads/upgrade-gstack-mrwakbd6' '.claude/skills/gstack-upgrade'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/upgrade-gstack-mrwakbd6'openskills read 'upgrade-gstack-mrwakbd6'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/upgrade-gstack-mrwakbd6/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Configure a Chat Channel with SecretRefs
DevOps
Set up chat channels using non-interactive commands, with secrets only as SecretRefs. Covers gather, mutate, repair, and prove steps for reliable delivery.
Investigate ClickHouse CI Failures
DevOps
Investigate a ClickHouse CI failure end-to-end from a PR or S3 report URL. Fetches failed tests, classifies flaky vs real regression, and checks for existing issues/fixes.
Ansible PR Review
DevOps
Reviews an Ansible PR following the project's standardized process, including changelog checks, test coverage validation, and feedback tracking.