issue-to-prlisted
Install: claude install-skill DmitriyYukhanov/claude-plugins
# issue-to-pr — issue → merge-ready PR pipeline
One repeatable, gated flow: the **gates** (design hardening, tests green, review clean,
approval-gated merge) block progress; the depth between them scales to the tier. Mechanics
live in tested scripts (`S/` = `${CLAUDE_PLUGIN_ROOT}/scripts/`, `R/` = `references/`); you
own judgment. One todo per step.
## Hard rules (never violate)
- **New task = new branch in its own worktree** (`S/worktree.sh ensure`), cut from the
resolved base. All work happens there; never two tasks in one tree.
- **Merge is gated on explicit in-session approval**, runs ONLY in the main session
(plugin agents ignore the hook), via `S/approve.sh` + `S/worktree.sh merge` — never a
bare `gh pr merge`, never on the turn the PR opens.
- **Ask contract:** contact the user at exactly three moments — (1) ONE batched
`AskUserQuestion` at Step 4.5 (only if the ledger has open items), (2) the merge gate,
(3) a hard stop. Decide everything else yourself and log it (see below).
- Stage with **explicit paths** (`git add path1 path2`); never `git add -A`/`.` (a hook
denies it). Conventional Commits. TDD (failing test first) for any logic.
- **Humanizer** runs on 100% of human-facing text (report, PR body, UI strings > 1–2 words)
regardless of tier — not code/logs/commit subjects. Don't claim "green/passing" without the
command output. Don't ask what a script or the code can answer.
## Config, tier, ask contract, state
- **Config** (`.claude/issue-to-p