---
name: dogfood-tmppr
description: Dogfooding policy for developing the tmppr repo itself — route every forge operation through tmppr, never GitHub. Use when committing, branching, pushing, opening/reviewing/merging PRs, creating/closing/linking issues, running or inspecting CI, or whenever tempted to run `gh`, `hub`, the GitHub API, or open github.com. Maps each git/gh/GitHub action to its tmppr CLI/MCP equivalent.
---

# Dogfood tmppr

**tmppr is built with tmppr.** Every forge operation on this repo goes through the
`tmppr` CLI (or the `mcp__tmppr__*` tools — same commands). GitHub is never the path.
If you reach for `gh`, the GitHub API, or github.com to do PR/issue/review/CI work here,
stop and use the tmppr equivalent below.

## Division of labor

- **git** — code and branch plumbing only: `add`, `commit`, `branch`, `checkout`,
  `worktree`, `push`, `fetch`, `log`, `diff`, `merge`, `rebase`, `status`.
- **tmppr** — everything that GitHub would otherwise own: PRs, reviews, issues, CI,
  comments, merge readiness, repo settings, tokens.
- **GitHub** — never, for forge operations. After `tmppr init`, `origin` is the tmppr
  remote (so `git push` goes to tmppr). The original GitHub remote, if any, is renamed
  to `remote`; an explicit `git push remote <branch>` to mirror to GitHub is the *only*
  sanctioned GitHub touch, and only when the task explicitly asks for a mirror.

If you want a tmppr verb that doesn't exist, the answer is almost always a plain `git`
command — use that, not GitHub.

## Mapping — never the left, always the right

| Don't (GitHub)                          | Do (tmppr)                                            |
|-----------------------------------------|------------------------------------------------------|
| `gh pr create …`                        | `tmppr pr open --push --base <b> --head <h> --title … --body …` |
| `gh pr view <n>` / web PR page          | `tmppr pr show <id>`                                  |
| `gh pr diff <n>`                        | `tmppr pr diff <id>`                                  |
| `gh pr list`                            | `tmppr pr list`                                       |
| `gh pr review …`                        | `tmppr review submit <id> APPROVE\|REQUEST_CHANGES\|COMMENT --body …` |
| `gh pr comment` / inline review comment | `tmppr comment conversation <id> …` / `tmppr comment code <id> <file> <line> …` |
| `gh pr merge <n>`                       | `tmppr pr merge <id> [--ff]`  (or `tmppr pr ship <id>`) |
| `gh pr ready` / mark ready              | `tmppr pr mark-ready <id>`                            |
| "is this PR mergeable?"                 | `tmppr ready <id>`                                    |
| `gh issue create …`                     | `tmppr issue create --title … --body …`              |
| `gh issue view/list/close/comment`      | `tmppr issue show\|list\|close\|comment <id> …`       |
| link/depend issues                      | `tmppr issue link\|depend <id> …`                     |
| `gh run list` / Actions tab             | `tmppr ci runs [--pr <id>]`                           |
| `gh run view --log` / Actions logs      | `tmppr ci log <check-id>`                             |
| `gh run rerun` / `cancel`               | `tmppr ci rerun\|cancel <check-id>`                   |
| `gh repo create/edit/view`              | `tmppr repo create\|show\|set-merge-rules … `         |
| `gh auth …`                             | `tmppr auth …` / `tmppr token …`                      |
| open github.com to check status         | `tmppr serve` then `tmppr tui`, or the `tmppr` query commands |

Discover the exact flags with `tmppr <command> --help` (or `--llms` for the manifest).
Prefer the `mcp__tmppr__*` tools when available — they are the same commands.

## Hard rules

1. **No `gh`, no `hub`, no GitHub API, no github.com** for any PR / issue / review / CI /
   repo-settings operation on this repo. Use tmppr.
2. The only allowed GitHub remote interaction is an explicit `git push remote <branch>`
   mirror, and only when the task asks for it.
3. `git` is for code and branches; `tmppr` is for the forge. Don't blur the two.
4. If a tmppr command seems missing, you're probably reaching for `git` — use `git`. If
   it's genuinely a forge gap, surface it (it's a tmppr bug/feature), don't fall back to GitHub.

This skill is advisory. A `PreToolUse` hook in `.claude/settings.local.json` hard-blocks
the `gh` CLI as a backstop; if you hit that block, switch to the tmppr command above.
