← ClaudeAtlas

issue-to-prlisted

Drive a GitHub issue — bare or tracked on a Project board — from triage to a merge-ready PR through a gated pipeline (design hardening, tests green, code-review clean), scaling the machinery to the task's tier and asking at most one batched question. Auto-links the issue to close on merge, advances the board card, then merges and cleans up once you approve the PR in-session. Triggers: "take task N", "work on issue #N", "do the next task", "build/fix X" when no issue exists yet, and — for the merge gate later — "merge it", "approve the PR", "ship it", "lgtm merge".
DmitriyYukhanov/claude-plugins · ★ 7 · Code & Development · score 76
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