atomic-issues-prslisted
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