# Open Graphite Stacks

> Discovers and displays all open Graphite stacks authored by you across your GitHub repos. Shows a simple grouped view of every stack with PR numbers, titles, and status. Use when you want to see what stacks you have open.

- Skill: `n1ddeh/open-graphite-stacks` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add n1ddeh/open-graphite-stacks`
- Raw SKILL.md: https://api.skillmd.com/api/skills/n1ddeh/open-graphite-stacks/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: n1ddeh (https://skillmd.com/u/n1ddeh)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/n1ddeh/open-graphite-stacks

---


# Discover My Open Stacks

> **Install path:** This skill expects to be installed at `~/.claude/skills/open-graphite-stacks/`. All script paths below assume this location. If installed elsewhere, adjust paths accordingly.

Finds all open PRs authored by the current user, groups them into Graphite stacks, and displays a simple overview.

## Step 1: Fetch Data

Run the fetch script which handles everything — fetching PRs, enriching with review threads, and grouping into stacks:

```bash
~/.claude/skills/open-graphite-stacks/scripts/fetch-stacks.sh
```

This outputs pre-grouped JSON:
```json
{
  "my-backend": {
    "stacks": [
      [
        { "number": 101, "title": "...", "isDraft": false, "reviewDecision": "APPROVED",
          "totalThreads": 5, "resolvedThreads": 2 },
        { "number": 102, "title": "...", ... }
      ]
    ],
    "standalone": [
      { "number": 115, "title": "...", ... }
    ]
  }
}
```

Each stack array is ordered trunk-to-tip. `reviewDecision` is one of: `APPROVED`, `CHANGES_REQUESTED`, `REVIEW_REQUIRED`, or `""`.

If all repos have empty stacks and standalone arrays, report: `No open PRs found.` and stop.

## Step 2: Format Output

Render the JSON into this format:

```
## My Open Stacks

### my-backend

Stack 1:
- [1] [DRAFT] #101 feat: add billing endpoint | 💬 2/5 | CHANGES_REQUESTED
- [2] #102 feat: add billing tests | 💬 0/3 | APPROVED
- [3] #103 feat: billing UI integration | 💬 1/1

Stack 2:
- [1] #110 fix: sync race condition | APPROVED

Standalone:
- #115 chore: bump dependencies | 💬 0/2

### my-frontend

Stack 1:
- [1] #50 feat: new settings page | 💬 3/4 | CHANGES_REQUESTED
- [2] #51 feat: settings validation

---
Summary: {total_prs} open PRs across {total_stacks} stacks and {standalone_count} standalone PRs
```

Rules:
- Mark draft PRs with `[DRAFT]` before the PR number
- Show review thread counts as `💬 N/M` where N = resolved threads and M = total threads — but ONLY when totalThreads > 0. Omit entirely when 0/0
- Show `reviewDecision` only if non-empty
- Use `|` as delimiter between title, thread count, and review decision. Only include `|` segments that have content
- Use markdown list syntax (`- `) for each PR line
- If a repo has no open PRs, omit it entirely
- Group standalone PRs under a "Standalone" heading separate from numbered stacks
- Keep it concise — no extra commentary, just the structured output

