Graphite logo

Graphite

OrganizationPopular
lightdash
graphite

Manage stacked PRs with Graphite CLI (gt) instead of git for branch/PR operations. Auto-detects Graphite repos via .git/.graphite_repo_config. Use when: creating stacked PRs, navigating branches, submitting PRs, syncing with main, restacking after changes, or any gt command usage.

Overview

Publisherlightdash
Repositorylightdash
Skill namegraphite
Stars
6.2K
Forks
790
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by lightdash on GitHub. Read the source before you install it.

Installation

Install the Graphite AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/lightdash/lightdash/tree/main/.claude/skills/graphite
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/lightdash/lightdash.git /tmp/lightdash
mkdir -p .claude/skills
cp -r /tmp/lightdash/.claude/skills/graphite .claude/skills/graphite
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Graphite in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Graphite on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Graphite is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Graphite Stacked PRs

Use Graphite CLI (gt) instead of raw git for all branch and PR operations in Graphite-initialized repos.

Detection

A repo is Graphite-initialized if .git/.graphite_repo_config exists. When detected, prefer gt over git for branch/PR workflows.

MCP Tools

The Graphite MCP server (gt mcp) is available. Use the learn_gt and run_gt_cmd tools when available:

  • learn_gt — look up gt command documentation
  • run_gt_cmd — execute gt commands directly

Key Concepts

  • A stack is a sequence of PRs, each building on its parent
  • Each PR must be atomic — self-contained and CI-green independently
  • Stacks are visualized with trunk at the BOTTOM:
    • Up/Upstack = away from trunk toward leaves
    • Down/Downstack = toward trunk/main
PR #3 (top)
   |
PR #2
   |
PR #1
   |
main (trunk)

Command Reference

Branch Navigation

CommandDescription
gt checkout [branch]Switch branches (interactive picker if no arg)
gt co mainSwitch to trunk
gt up [steps]Navigate to child branch
gt down [steps]Navigate to parent branch
gt topJump to top of stack
gt bottomJump to trunk-closest branch

Creating & Modifying Branches

CommandDescription
gt create -a -m "message"Create new branch with staged changes
gt c --no-interactive -m "message"Create new branch (non-interactive)
gt modify --no-interactiveAmend current commit
gt m --no-interactiveShort form: amend current commit
gt modify -aAmend with staged changes, then restack
gt modify --commit -a -m "msg"Add explicit commit (for review feedback)
gt delete [name]Delete branch and metadata
gt rename [name]Rename branch

Stack Operations

CommandDescription
gt restackRebase dependent branches after changes
gt sync --no-interactivePull latest main, delete merged branches, rebase
gt foldMerge branch into its parent
gt splitBreak branch into multiple branches
gt squashConsolidate commits in branch
gt reorderReorder branches in stack
gt move --onto <branch>Move branch to different parent

Submitting PRs

CommandDescription
gt submit --no-interactivePush and create/update PR for current branch
gt s --no-interactiveShort form: submit current branch
gt s --stack --no-interactiveSubmit current + all descendant branches
gt ssAlias for gt submit --stack
gt s --draft --no-interactiveSubmit as draft PR
gt submit --reviewers alice,bobAssign reviewers

Viewing

CommandDescription
gt log / gt lShow stack visualization
gt log short / gt lsAbbreviated stack view
gt pr [branch]Open PR in browser
gt info [branch]Display branch details

Recovery

CommandDescription
gt continueResume halted operation (after conflict resolution)
gt abortCancel current operation
gt undoRevert last operation

Git-to-Graphite Translation

Instead of...Use...
git checkout -b branchgt c --no-interactive -m 'message'
git pushgt s --no-interactive
git rebase maingt restack
git commit --amendgt m --no-interactive
git pull origin maingt sync --no-interactive

Workflow Rules

Branch Selection Decision Tree

SituationAction
On main?Never commit to main. Create new branch: gt c --no-interactive -m 'message'
On a branch + changes are related WIP?Amend in place: gt m --no-interactive
On unrelated branch + independent changes?gt co main then create new branch
On a branch + changes depend on it?Create stacked branch: gt c --no-interactive -m 'message'

Always Use --no-interactive

All gt commands that support it should use --no-interactive to avoid blocking on prompts. Key commands:

  • gt c --no-interactive -m 'message'
  • gt m --no-interactive
  • gt s --no-interactive or gt s --stack --no-interactive
  • gt sync --no-interactive

Staging Rules

  1. Check if working tree is dirty (git diff)
  2. Never mix different fixes/features/WIP together
  3. Stage only one set of related changes using git add <specific-files>

Commit Messages

Use semantic commit names: feat:, fix:, chore:, refactor:, docs:, test:

Submitting

  • Submit WIP as draft: gt s --draft --no-interactive
  • Submit final work: gt s --no-interactive
  • Submit entire stack: gt s --stack --no-interactive

For PR title/description conventions (Linear ticket, GitHub issue, no customer names), use the creating-pull-requests skill.

Handling Conflicts

bash
# During restack, if conflicts occur:
# 1. Resolve conflicts in the files
# 2. Stage resolved files
git add <resolved-files>
# 3. Continue the operation
gt continue

Completion Criteria

  • Working tree must be clean (no unstaged/untracked changes)
  • All branches in the stack are submitted
  • gt log shows the correct stack structure

Creating a Stack (Typical Flow)

bash
# Start from trunk
gt co main
gt sync --no-interactive

# Create first PR
# ... make changes ...
git add <specific-files>
gt c --no-interactive -m 'feat: add database migration'

# Create second PR on top
# ... make changes ...
git add <specific-files>
gt c --no-interactive -m 'feat: add backend service'

# Create third PR on top
# ... make changes ...
git add <specific-files>
gt c --no-interactive -m 'feat: add frontend components'

# Submit entire stack
gt s --stack --no-interactive

# Verify
gt log

Addressing Review Feedback

bash
# Navigate to the PR that needs changes
gt checkout branch-name

# Make changes, stage them
git add <specific-files>

# Amend and restack all branches above
gt m --no-interactive

# Push updates for the whole stack
gt s --stack --no-interactive

Frequently asked questions

What does the Graphite AI skill do?

Manage stacked PRs with Graphite CLI (gt) instead of git for branch/PR operations. Auto-detects Graphite repos via .git/.graphite_repo_config. Use when: creating stacked PRs, navigating branches, submitting PRs, syncing with main, restacking after changes, or any gt command usage.

Why use Graphite on TypingMind?

Because you install it once and use it with any model. Graphite is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Graphite in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/lightdash/lightdash/tree/main/.claude/skills/graphite. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Graphite?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Graphite?

As many as you like. As long as a model supports skills, you can use Graphite with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Graphite AI skill free?

It is published on GitHub by lightdash. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇