mcpField
G
graphite-stacks

graphite-stacks

github.com/outfitter-devDevelopment2982 installsUpdated 38w ago
Repository

About graphite-stacks

Graphite Stacks is a skill for managing trunk-based development and stacked pull requests with Graphite CLI. It gives developers command guidance for creating, submitting, reorganizing, and repairing branch stacks while keeping stack operations within `gt`.

Key features

  1. 01Create and manage branch stacks
  2. 02Submit stacked pull requests
  3. 03Reorganize branch relationships
  4. 04Apply review feedback across a stack
  5. 05Recover corrupted stacks
  6. 06Use `gt` commands for stack workflows

Use cases

  1. 01Split a feature into dependent pull requests
  2. 02Submit a branch stack for review
  3. 03Route review fixes to the right branches
  4. 04Repair unexpected stack structure

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/outfitter-dev/agents --skill graphite-stacks

After installing, type/graphite-stacksin Claude Code to confirm it loaded.

Bundled filesreferences/commands.mdreferences/recovery.md

Details

From the project README

Graphite Stacks

Trunk-based development with stacked PRs using Graphite CLI.

<when_to_use>

  • Creating or managing branch stacks
  • Submitting stacked PRs
  • Reorganizing branch relationships
  • Addressing PR feedback across a stack
  • Recovering from stack corruption
  • Any gt command usage

</when_to_use>

Core Principle

Use gt commands exclusively. Mixing git and gt causes sync issues and divergent stacks. The only exception: git add for staging (or use -a flags).

This, Not That

TaskThisNot That
Create branchgt create 'name' -am "msg"git checkout -b name
Commit changesgt modify -acm "msg"git commit -m "msg"
Push to remotegt submitgit push
Rebase stackgt restackgit rebase
View stackgt status or gt lsgit log --graph
Switch branchesgt checkoutgit checkout
Amend commitgt modify -agit commit --amend
Multi-PR feedbackgt top && gt absorb -aCherry-pick commits manually

Stack Lifecycle

Create stack → Implement features → Submit PRs → Address feedback → Merge
     │              │                  │               │            │
     ▼              ▼                  ▼               ▼            ▼
 gt create     gt modify -acm     gt submit      gt absorb     gt sync

Creating Stacks

# New branch with staged changes
gt create 'feature/step-1' -am "feat: first step"

# Continue stacking
gt create 'feature/step-2' -am "feat: second step"
gt create 'feature/step-3' -am "feat: third step"

# Insert branch between current and child
gt create 'feature/step-1.5' --insert -am "feat: inserted step"

Navigation

CommandAction
gt upMove up the stack (toward children)
gt downMove down the stack (toward parent)
gt topJump to stack top
gt bottomJump to stack bottom
gt checkoutInteractive branch picker

Modifying Branches

# Amend current branch (stages all)
gt modify -a

# New commit within same branch
gt modify -acm "fix: address review feedback"

# Commit to a different branch in the stack
git add path/to/file.ts
gt modify --into target-branch -m "feat: add file"

ALWAYS:

  • Use gt create for new branches
  • Use gt modify for commits
  • Use gt submit to push
  • Use gt restack after parent changes
  • Check gt status when uncertain

NEVER:

  • Mix git commit/push/rebase with gt workflows
  • Force push without understanding stack state
  • Use git rebase -i (breaks Graphite metadata)

Addressing Review Feedback

Single PR: Navigate to branch, modify directly

gt checkout target-branch
gt modify -acm "fix: address review comment"
gt submit

Multiple PRs in stack: Use absorb from top

gt top
git add .
gt absorb -a
gt submit --stack

Graphite routes changes to correct branches based on file history.

Reorganizing Stacks

# Move branch to different parent
gt move --onto new-parent

# Move specific branch
gt move --source branch-name --onto target

# After reorganization
gt restack

Submitting

# Current branch + downstack
gt submit

# Entire stack
gt submit --stack

# Non-interactive (automation)
gt submit --no-interactive

Stack Visualization

# JSON with parent relationships (preferred for scripts)
gt status

# Visual tree
gt ls

# Recent history
gt log

Sync and Maintenance

# Pull trunk, rebase stacks, clean merged
gt sync

# Rebase branches onto updated parents
gt restack

# Undo last gt operation
gt undo

When Things Go Wrong

Stack corruption symptoms:

  • Branches appear as siblings instead of parent-child
  • PRs contain wrong files
  • gt status shows unexpected structure

See recovery.md for step-by-step recovery procedures.

Comments

Markdown supported