Personal skills layered on top of gstack, discovered by Claude Code alongside gstack's own skills.
git clone <this-repo> ~/dev/gstack-extensions
cd ~/dev/gstack-extensions
./install
Then restart your Claude Code session. Skills become invokable as /pr-watcher, /qa-quincey-manual-browser-testing, etc.
Standalone skills (skills/):
/pr-watcher. Foreground watcher that pairs the main agent (dispatcher and fix-applier) with a passive polling subagent (sensor): the sensor blocks silently in one Agent call until CodeRabbit posts a settled round of feedback, then returns a single JSON blob; the main agent classifies, fixes, tests, commits, pushes, and replies on the PR before spawning the next sensor. Invoke manually after/ship./coderabbit-config. Generates a tailored.coderabbit.yamlfor the current repo. Detects languages, monorepo shape, generated/vendored dirs, and lifts conventions from CLAUDE.md/AGENTS.md intopath_filters,path_instructions, andtools. Wraps thecoderabbitCLI for optional live validation./first-principles-thinking. Goal-first reframe coaching skill. Interrupts in-flight optimization-inside-an-inherited-frame with a seven-step walk: goal, success signal, hard constraints, assumed constraints, current path, constraint-class attacks, pressure-test. Light mode by default; escalates to Deep (Socratic, one-question-per-turn) on pushback or missing context. Modeled on the SpaceX rocket-floor and Neuralink no-surgeons reframes./feature-spike. Pre-plan risk-discovery skill. Drives a four-phase loop to cheaply prove or disprove the riskiest unknown of a feature before committing to plan and build: lock a one-line outcome ("I will know X if Y"), prepare isolation (worktree or branch) and openSPIKE.mdas a live ledger with aTHROWAWAY SPIKEmarker, write the leanest possible falsifier (karpathy-guidelines explicitly OFF), escalate to/second-opinionthen user when blocked, complete the verdict (PROVEN / DISPROVEN / INCONCLUSIVE) inSPIKE.md. Sits before/plan-eng-review. Burn-after-reading: the branch and code are throwaway; only the SPIKE.md knowledge is meant to survive.
Bundles (top-level dirs with their own skills/ and shared/), skill groups that share common context files:
- PM Penny (
pm-penny/):/pm-penny-feature,/pm-penny-bug,/pm-penny-next-issue. Product manager who turns ideas, bug reports, and "what should I work on next?" into well-structured GitHub issues. Shares identity, label conventions, scope/repro gates, and fast-mode logic across the three sub-skills viapm-penny/shared/*.md. - Feature Frank (
feature-frank/):/feature-frank-pr-feedback. Engineer who works through PR review comments, patches the code, and captures durable lessons. - QA Quincey (
qa-quincey/):/qa-quincey-manual-browser-testing,/qa-quincey-manual-headless-testing. Manual QA specialist who verifies one defined flow against the spec or mockup. Browser sub-skill drives the gstack browse daemon autonomously and AI-compares screenshots against Pencil mockups; headless sub-skill (successor to the prior/qa-headless) verifies backend features by capturing side effects. Shares persona, deviation vocabulary, plan/report storage, and reconcile loop viaqa-quincey/shared/core.md.
./install symlinks every directory under skills/ AND every sub-skill under <bundle>/skills/ into ~/.claude/skills/. Claude Code scans that directory at session start and discovers any directory containing a SKILL.md. Bundle sub-skills resolve their shared files (e.g. shared/core.md) relative to the bundle root, which works through the symlink.
This repo lives outside ~/.claude/skills/gstack/, so gstack-upgrade never touches it. gstack and these extensions coexist as peers in the flat ~/.claude/skills/ namespace.
cd ~/dev/gstack-extensions
git pull
./install # idempotent; refreshes links and cleans stale ones
./uninstall
Removes only symlinks that point into this repo. Leaves gstack and any other skills alone.
For a standalone skill:
- Create
skills/<name>/SKILL.mdwith valid frontmatter (name,description). - Run
./install. - Restart Claude Code.
For a bundle (a group of sub-skills that share shared/*.md context):
- Create
<bundle>/skills/<sub-skill>/SKILL.mdfor each sub-skill at the repo top level (sibling toskills/). - Put shared context in
<bundle>/shared/; sub-skills reference it as "from the bundle root". - Run
./install. Each sub-skill is symlinked into~/.claude/skills/directly (no bundle-name prefix on the invocation).