runlisted
Install: claude install-skill DmitriyYukhanov/claude-plugins
# issue-to-pr — issue → merge-ready PR pipeline
Ten steps from an issue to a merged PR: the gates block, the depth between them scales to the
tier. Scripts own the mechanics (`S/` = `${CLAUDE_PLUGIN_ROOT}/scripts/`, `R/` = `references/`),
you own judgment. One todo per step. Any non-zero script exit → `R/contracts.md` before you act:
some are stops, some are fallbacks.
## Hard rules (never violate)
- **Merge is gated on explicit in-session approval**, runs ONLY in the main session, via
`S/worktree.sh merge` — never a bare `gh pr merge`, which no hook denies, and never on the turn
the PR opens.
- **Ask contract:** three moments, `--grill` reshapes the first (`R/judgment.md`) — (1) Step 3:
ONE batched `AskUserQuestion` if the ledger has open items, or the grill in its place, (2) the
merge gate, (3) a hard stop. Decide everything else yourself and log it, and never ask what a
script or the code can answer.
- Stage with **explicit paths** (`git add path1 path2`); never `git add -A`/`.`, which sweeps in
whatever the project keeps untracked. Write multi-line code with the Write tool — a Bash heredoc
breaks on an apostrophe inside the body.
- **Evidence before assertion:** no "green/passing" without the command output; look up any claim
about the world outside this repo before building on it, ledgered either way (`R/judgment.md`).
- **Humanizer** runs on 100% of human-facing text (report, PR body, UI strings > 1–2 words)
regardless of tier — not code, logs or co