gstack’s new Claude Code hooks pick the right skill and check it finished

2 hours ago

gstack adds two opt-in Claude Code hooks: one names the gstack skill your prompt fits, the other blocks once when a skill ends without its required outputs. Also: a slimmer /investigate, a lite skill set for Claude Opus 5.5, one browser tab per parallel agent, phone touch testing in /qa, review-bot triage beyond Greptile, secrets kept out of the lean /autoplan reviewer, and /ship reusing a green CI run. Covers gstack 1.92.78.0 to 1.94.14.0 (64 releases, 2026-11-02 to 2026-11-03), for Claude Code users. Changelog: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md Skill routing and contracts: https://github.com/garrytan/gstack/blob/main/docs/skill-routing-and-contracts.md Pregate and CI carry: https://github.com/garrytan/gstack/blob/main/docs/pregate.md gstack: https://github.com/garrytan/gstack

Ask about this presentation

Chapters

  1. 0:00Skill routing
  2. 0:12Skill contracts
  3. 0:27/investigate
  4. 0:39Lite loadout
  5. 0:5502 The browser
  6. 0:56Tab per agent
  7. 1:07Phone QA
  8. 1:1803 Reviews
  9. 1:20Review bots
  10. 1:31PR type
  11. 1:45Right diff
  12. 1:5804 Security
  13. 1:59Lean review secrets
  14. 2:13Public PR bodies
  15. 2:2505 Shipping
  16. 2:27CI carry
  17. 2:39Flaky tests
  18. 2:52Smaller changes
  19. 3:09Where to start
Show transcript
  1. A new gstack hook points Claude Code at the right skill. It scores each prompt against every skill's triggers, with no model call, and names the one that fits. It is off by default.

    Slide text
    gstack logo

    gstack’s new Claude Code hooks pick the right skill and check it finished

    ./setup --skill-routing
    UserPromptSubmit hook: names the gstack skill your prompt fits
    Off by default. Scored against each skill’s triggers, with no model call.
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.94.6.0
  2. A second hook runs when Claude Code stops. If a skill ends without the outputs its contract requires, like a test after the last edit, it blocks once. This one is off by default too.

    Slide text

    A second hook stops a skill that ends without its required outputs

    a report with real values
    a test after the last edit
    the specialist and adversarial dispatches
    ./setup --skill-contracts · blocks once · off by default
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.94.6.0
  3. /investigate loses its five-phase procedure, which Opus 5.5 never followed. It keeps its Iron Law, scope lock and debug report, and shrinks by about a third.

    Slide text

    /investigate drops the five-phase procedure Opus 5.5 never followed

    before
    29.8 KB
    now
    20.2 KB
    Followed 0 of 30 times with Claude Code’s real system prompt. Kept: the Iron Law, Scope Lock, the DEBUG REPORT.
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.0.0
  4. Opus 5.5 now gets a lite copy of every skill, minus ten coaching sections. Capy sessions pick it themselves, and Claude Code can opt in at setup. Every other model keeps the full skills.

    Slide text

    Claude Opus 5.5 gets a lighter copy of every gstack skill

    lite the same skills, minus ten coaching sections of the shared preamble
    Capy sessions pick lite from the owner’s model preference
    Claude Code ./setup --loadout lite
    full every other model, and any model gstack is not told about
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.0.0 · 1.93.11.0 · 1.93.12.0
  5. The browser.

    Slide text
    02
    The browser
    Parallel agents and phone pages
  6. When several agents drive gstack's browser at once, each one now gets its own tab and stays on it. Each tab is separate, while cookies and storage stay shared.

    Slide text

    Parallel agents no longer take over each other’s browser tab

    agent A tab 1 · goto, snapshot, click
    agent B tab 2 · goto, snapshot, click
    --session qa tab 3 · subagents name their own
    Tabs are separate. Cookies and storage stay shared.
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.0.0
  7. /qa can now make a tab act like an iPhone 15 and send real taps, swipes and pinches. It is Chromium emulating a phone, so Safari still needs a real device.

    Slide text

    /qa can now test phone pages with real touch input

    $B device "iPhone 15"
    $B tap · $B swipe · $B pinch
    $B touch down|move|up <finger> <x> <y>
    This is Chromium emulating a phone. Safari still needs a real device through /ios-qa.
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.0.0
  8. Reviews.

    Slide text
    03
    Reviews
    /review and /ship
  9. /review and /ship used to triage only Greptile's comments. Now they triage every review bot you list, so CodeRabbit and Macroscope get the same treatment.

    Slide text

    /review and /ship now triage every review bot you configured

    Greptile CodeRabbit Macroscope
    ## Review bot comments
    a count per bot in the PR body
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.33.0
  10. /review now names the kind of pull request first, so a CI or script change gets checks that fit it. It also flags a script that doesn't fit the repo, like a Windows batch file in a bash project.

    Slide text

    /review names the kind of pull request before it checks it

    docs-only CI/infra scripts/tooling application mixed
    Repo Conventions & Platform Fit a Windows .bat build script in a bash and Makefile repo with Linux-only CI
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.33.0
  11. On a pull request clone, /ship could compare your branch with itself, find zero changes and pass. Now it refuses. A stale local main also stops standing in for the real base.

    Slide text

    /ship stops passing a review on an empty or stale diff

    PR-branch clone 0 changes · review passed
    BASE_CONTAINS_HEAD
    stale local main origin/main is the base
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.33.0 · 1.94.13.0
  12. Security.

    Slide text
    04
    Security
    What leaves your machine
  13. On Capy, a feature plan gets one lean reviewer that reads your draft code and sends it to an outside model. That draft now leaves out every env and credentials file, and redacts keys in ordinary files.

    Slide text

    /autoplan’s lean reviewer no longer gets your .envrc or your keys

    On Capy, a feature plan gets one reviewer that reads your draft code, sent to an outside model provider
    The whole .env family, .envrc, credentials files and keys stay out
    A key in an ordinary file arrives as <REDACTED-…>
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.36.0 · 1.94.5.0
  14. On a public repo, /ship used to paste the owner's exact words into the pull request, where GitHub keeps every edit for good. Now it writes one line: approved, with a record id.

    Slide text

    On a public repo, /ship stops pasting your exact words into the PR

    before ## Approvals · quote, run id, plan hash
    Approved: yes (record r-<12 hex>)
    GitHub keeps every earlier version of a PR description, and no API can delete it.
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.94.8.0
  15. Shipping.

    Slide text
    05
    Shipping
    Fewer test reruns
  16. When CI already passed on the exact same clean tree, /ship now uses that run instead of running your tests again. The repo has to map its lanes first, and fork runs never count.

    Slide text

    /ship reuses a green CI run instead of running your tests again

    CI_CARRY: accepted
    LANE: <label> carried run=<id>/<attempt>
    Only at the exact clean tree, and only for lanes the repo maps. Dirty trees, fork runs and stale runs never carry.
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.94.0.0
  17. A flaky test can now go into quarantine for a week, with an owner. It still runs every time and never counts as a pass. With the owner's grant, named flakes outside your change can clear the pregate.

    Slide text

    A flaky test can go into quarantine instead of being skipped

    quarantine an owner, a ledger link, 7 days by default, 14 at most
    still runs every time, and never counts as a pass
    PREGATE: pass-with-exception (<cases>; grant <id>)
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.10.0 · 1.94.9.0
  18. The new gstack-clean command trims old scratch files and browse logs, and changes nothing until you pass apply. QA in ship and review stops writing reports into your repo. And Codex reviews now print their token usage.

    Slide text

    Your repo stays cleaner, and Codex reviews show their cost

    gstack-clean trims old scratch files and browse logs in .gstack/changes nothing without --apply · 1.93.0.0
    /ship and /review QA stop writing reports into your project 1.93.40.0
    Codex outside reviews print OUTSIDE_USAGE token counts1.93.41.0
    Skills Browser Reviews Security Shipping
    garrytan/gstack · CHANGELOG.md · 1.93.0.0 · 1.93.40.0 · 1.93.41.0
  19. If you use gstack with Claude Code, I would turn on skill routing first. It costs no model call and sends every prompt to the right skill. Every change is in the gstack changelog.

    Slide text

    Turn on skill routing first

    No model call, and every prompt gets pointed at the right gstack skill.
    garrytan/gstack · CHANGELOG.md
    Every change, with its upgrade notes, is in gstack’s changelog.
    garrytan/gstack · CHANGELOG.md · 1.94.6.0

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York