← ClaudeAtlas

atomic-issues-prslisted

Publish a change-set as atomic GitHub issues/PRs — one issue/PR per logical change, never bundled. Use when the user says "open a PR per change", "atomic PRs", "push issues and prs atomically", "individual PR for each change", or wants a change-set delivered as separate PRs/issues. Asks per run which objects to create (PR-only vs issue+linked-PR). Detects whether the canonical repo is directly pushable via `gh`; if not, pushes branches to the fork and opens PRs targeting upstream with `--head <fork-owner>:<branch>`. Requires `gh` auth; refuses force-push and direct push to protected branches without explicit authorization.
OutlineDriven/odin-claude-plugin · ★ 27 · AI & Automation · score 85
Install: claude install-skill OutlineDriven/odin-claude-plugin
# Atomic Issues and PRs Publish a change-set as atomic GitHub objects: one issue/PR per logical change, never bundled. The layer above atomic-commit-and-push — it opens the PRs (and optionally issues) that skill never touches. ## Phase 0 — Preflight & canonical-repo resolution Run `gh auth status`. If unauthenticated, stop and ask the user to run `gh auth login`. Resolve the canonical (upstream) slug **explicitly before any permission check** — `gh repo view`'s default inspects the *current* repo, which is the fork in a fork clone. - Read remotes: `git remote -v`. Pick the contribution target: `upstream` if present, else `origin`. - Detect a fork relationship: `gh repo view <slug> --json nameWithOwner,parent,defaultBranchRef`. A non-null `parent` means `<slug>` is itself a fork, so the canonical slug is `parent.nameWithOwner`. - Query permission on the canonical slug: `gh repo view <canonical-slug> --json viewerPermission`. `viewerPermission` ∈ {ADMIN, MAINTAIN, WRITE} ⇒ **direct mode**; otherwise ⇒ **fork mode**. - Record the canonical default base branch from `defaultBranchRef`. ## Phase 1 — Decompose & commit atomically Group working-tree changes into atomic units by mechanism/file boundary — one concern per unit. Never bundle unrelated changes. Commit the **whole** set into N atomic commits first, running the repo-native type-checker and linter before each commit. This is the patch-isolation mechanism: each unit becomes one self-contained commit, so per-unit b