Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add knitli/toolshed --skill gh-stackgit clone --depth 1 https://github.com/knitli/toolshedWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/knitli/toolshed/gh-stack)<a href="https://agentmods.dev/skills/knitli/toolshed/gh-stack"><img src="https://agentmods.dev/badge/skills/knitli/toolshed/gh-stack/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/knitli/toolshed/gh-stack"><img src="https://agentmods.dev/badge/skills/knitli/toolshed/gh-stack.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00065 | $0.10581 |
| Opus 5.5 | $0.00026 | $0.04232 |
| Sonnet 5.5 | $0.00013 | $0.02116 |
| Haiku 4.5 | $0.00006 | $0.01058 |
Grade A, and why
gh-stack scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to gh-stack — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 892 lines — stays where its author put it; the contents beside it link to each section on GitHub.
gh-stack
gh stack is a GitHub CLI extension for managing stacked branches and pull requests. A stack is an ordered list of branches where each branch builds on the one below it, rooted on a trunk branch (typically the repo's default branch). Each branch maps to one PR whose base is the branch below it, so reviewers see only the diff for that layer.
main (trunk)
└── auth-layer → PR #1 (base: main) - bottom (closest to trunk)
└── api-endpoints → PR #2 (base: auth-layer)
└── frontend → PR #3 (base: api-endpoints) - top (furthest from trunk)
The bottom of the stack is the branch closest to the trunk, and the top is the branch furthest from the trunk. Each branch inherits from the one below it. Navigation commands (up, down, top, bottom) follow this model: up moves away from trunk, down moves toward it.
When to use this skill
Use this skill when the user wants to:
- Break a large change into a chain of small, reviewable PRs
- Create, rebase, push, or sync a stack of dependent branches
- Navigate between layers of a branch stack
- View the status of stacked PRs
- Tear down and rebuild a stack to remove, reorder, or rename branches
Prerequisites
The GitHub CLI (gh) v2.0+ must be installed and authenticated. Install the extension with:
gh extension install github/gh-stack
Before using gh stack, configure git to prevent interactive prompts:
git config rerere.enabled true # remember conflict resolutions (skips prompt on init)
git config remote.pushDefault origin # if multiple remotes exist (skips remote picker)
Agent rules
All gh stack commands must be run non-interactively. Every command invocation must include the flags and positional arguments needed to avoid prompts, TUIs, and interactive menus. If a command would prompt for input, it will hang indefinitely.
- Always supply branch names as positional arguments to
init,add, andcheckout. Running these commands without arguments triggers interactive prompts. Branch names are used exactly as given — a name is never prefixed or transformed, sogh stack add refactor/foocreates a branch namedrefactor/foo. - Always use
--autowithgh stack submitto auto-generate PR titles. Without--auto,submitprompts for a title for each new PR. - Always use
--jsonwithgh stack view. Without--json, the command launches an interactive TUI that cannot be operated by agents. There is no other appropriate flag — always pass--json. - Handle multiple remotes. If more than one remote is configured, pre-configure
git config remote.pushDefault origin, or pass--remote <name>to the commands that accept it:push,submit,sync,rebase, andlink.checkout,modify, andtrunkresolve a remote but have no--remoteflag — they rely onremote.pushDefault. With multiple remotes and no configured default, these commands exit with an error in non-interactive mode. - Avoid branches shared across multiple stacks. If a branch belongs to multiple stacks, commands exit with code 6. Check out a non-shared branch first.
- Plan your stack layers by dependency order before writing code. Foundational changes (models, APIs, shared utilities) go in lower branches; dependent changes (UI, consumers) go in higher branches. Think through the dependency chain before running
gh stack init. - Use standard
git addandgit commitfor staging and committing. This gives you full control over which changes go into each branch. The-Amshortcut is available but should not be the default approach—stacked PRs are most effective when each branch contains a deliberate, logical set of changes. - Navigate down the stack when you need to change a lower layer. If you're working on a frontend branch and realize you need API changes, don't hack around it at the current layer. Navigate to the appropriate branch (
gh stack down,gh stack checkout, orgh stack bottom), make and commit the changes there, rungh stack rebase --upstack, then navigate back up to continue. - Use
gh stack linkfor external tool workflows. When branches are managed by an external tool (jj, Sapling, etc.), usegh stack link branch-a branch-b.linkdoes not rely on local tracking state and is intended for API-driven PR and stack management. Provide at least two branches/PRs to create or update a stack, or a stack number followed by the new branches/PRs to append them to the top of an existing stack (e.g.gh stack link 7 branch-c). - Use
gh stack merge --yesto merge stacked PRs.gh pr mergedoes not work with stacked PRs. In a non-interactive terminalgh stack mergeruns without prompting and merges the entire stack (bottom to top) atomically; pass--yesto be explicit. Scope the merge by passing a pull request number (gh stack merge 42 --yesmerges everything up to and including PR #42) or a stack number (gh stack merge 7 --yes, which needs no local checkout). Choose the method with--squash,--rebase,--merge, or--merge-method <method>; without one, the last-used method is used. The merge is all-or-nothing — if any PR can't be merged, none are, and the failure reason is reported. Only basic pull request state is checked before merging (open and not a draft); bypassing merge requirements is not supported for stacks. If the base branch uses a merge queue, the stack is added to the queue instead of merging directly: the queue chooses the merge method (any method you pass is ignored with a warning), and the pull requests are added to the queue together but merge as the queue processes them, so they may land in separate groups rather than all at once.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 892 lines · 65 tokens per session scan A d02c3b73baac
gh-stack is a skill published in the GitHub repository knitli/toolshed (1 stars, last pushed yesterday), licensed MIT. It adds 65 tokens to every session and 10,581 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to gh-stack, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
clarify
Lightweight spec clarification scan for jig projects — a six-category ambiguity audit that asks up to five prioritized questions and appends them to the spec's ## Clarifications section. Auto-triggers when you say clarify this spec, audit this spec for ambiguities, is this spec ready for review, find unknowns in this…
explain
Explain jig vocabulary and artifacts in plain language. Three modes: term mode defines one lexicon term; artifact mode walks through a spec or ADR and its linked references; passage mode explains pasted jig output. Output is ephemeral (chat-only). Auto-triggers when you say explain this term, walk me through this…
arch-review
Team baseline for architecture, design-doc, and RFC review — produces summary, strengths, concerns, and open questions. Auto-triggers when you say review this design, review this architecture, review this proposal, review my RFC, poke holes in this proposal, is this design sound, or critique this tech spec. Defers to…
security-review
Team baseline for security review — a best-effort heuristic security pass over a diff or change-set. Auto-triggers for review this for security, any vulnerabilities here, security pass on this diff, is this code secure, check this for security issues, or security review this. Uses installed scanners when available…
pr-review
Team baseline for PR and code review — produces scope, blockers, nits, and strengths. Auto-triggers when you say review this PR, check this diff, review these changes, pre-review before I share, what do you think of this PR, or review the diff on this branch. Defers to any other installed skill whose description…
contracts
Team baseline for external-interface contract artifacts: OpenAPI, JSON Schema, AsyncAPI, .proto, and GraphQL SDL, with spectral, ajv, buf, and graphql-inspector validation. Nudges devs toward contract-first artifacts; never writes them and never scaffolds a contracts/ directory. Auto-triggers for what contract should…