Commit & PR
Use this skill for Codex-side publication work in opencode-swarm.
Source Of Truth
Read and follow ../../../.claude/skills/commit-pr/SKILL.md in full before committing, pushing, opening, or updating a PR.
That Claude skill remains the repository's canonical publish protocol. This Codex-native skill is the adapter layer: it tells Codex which tools to use, how to handle existing PRs, and how to finish the post-open lifecycle without drifting from the repo contract.
If instructions conflict:
AGENTS.md
docs/engineering-invariants.md
../../../.claude/skills/commit-pr/SKILL.md
- this file
Codex Execution Rules
- Use the available shell execution tool for
git, gh, build, test, and CI commands.
- Use
apply_patch for manual file edits.
- Use the runtime's parallel-execution capability for independent reads, status checks, and non-conflicting repo inspections.
- Do not stage
.Codex/, IDE-local files, or unrelated worktree changes.
- Do not open a second PR when one already exists for the branch. Update the existing PR instead.
Publish Modes
Infer the mode from the user request and branch state:
new-pr: branch is ready to publish and no PR exists yet
pr-followup: a PR already exists and you are addressing review feedback or syncing validation
closeout: a PR already exists and you are updating body text, waiting on CI, marking ready, or confirming merge prerequisites
Required Follow-Through
Existing PR updates
If the branch already has a PR:
- inspect unresolved PR feedback surfaces before updating or readying the PR:
review threads/comments, requested-changes reviews, CI/check failures,
mergeability/conflicts, and whether check data belongs to the current head SHA
- update the existing PR body instead of creating a new PR
- refresh
## Summary, ## Invariant audit, and ## Test plan when validation counts, caveats, or evidence changed
- verify the PR still points at the pushed branch head after any force-push
- use
$swarm-pr-feedback when feedback needs fixes before closeout
Draft vs ready
Default behavior:
- open or keep the PR as draft while follow-up edits are still expected, required checks are pending, or known caveats still need explanation
- mark the PR ready only after the body is current and required remote checks are green
If the user explicitly asks for a ready PR sooner, obey that request and document any remaining CI state clearly.
Remote checks are authoritative
When the user asks to open, ship, ready, or close out a PR:
- inspect remote checks with
gh pr view <n> --json statusCheckRollup,... or gh pr checks <n>
- verify check data belongs to the current
headRefOid after every follow-up push
- if a required job is
cancelled and downstream jobs are skipped, inspect the run and rerun failed/cancelled jobs
- if an obsolete older-head run is already failed or still consuming concurrency, inspect it before cancellation and cancel only when it is no longer the PR head under validation
- wait for required checks to finish when practical
- after conflict resolution, verify GitHub reports both
mergeable: MERGEABLE and mergeStateStatus: CLEAN; local conflict-marker cleanup is not enough, and branch drift must appear in the closure ledger when it affected the PR
- when
gh pr checks looks stale, inspect the workflow run directly with gh run view <run-id> --json headSha,status,conclusion,jobs,url, and keep watching downstream integration/smoke jobs after unit jobs pass
- if you edit the PR body after checks are green, expect PR Standards/title checks to rerun and re-check before calling the PR green
- do not call the PR merge-ready while a required check is
cancelled, skipped, in_progress, or otherwise non-green unless the user explicitly accepts that state
Recommended commands:
gh pr view <number> --json body,headRefName,headRefOid,isDraft,mergeable,mergeStateStatus,state,statusCheckRollup,url
gh pr checks <number> --watch --fail-fast
gh run view <run-id> --json headSha,status,conclusion,jobs,url
gh run rerun <run-id> --failed
dist/ is generated output and is not committed (#1047); do not stage it and there is no dist-check drift gate. If package-check fails, inspect the CI log: it is a source / build / package.json#files problem (an incomplete or unbuildable tarball), not generated-file drift. Fix the source or manifest and rerun bun run package:smoke locally.
After a forced install on Windows, EPERM while reading refreshed node_modules
is usually host friction; rerun the exact focused command with approved access
before treating it as a code failure.
Issue comment requirement
If the PR closes an issue:
- confirm the issue comment exists with the PR link, what changed, how to use it, and migration notes
- if the PR merged before the comment was posted, add the missing issue comment immediately
Working Pattern
- Read
AGENTS.md, docs/engineering-invariants.md as needed, and the canonical Claude commit-pr skill.
- Run the required local validation from the canonical skill.
- Stage only intended files.
- Create or update the PR.
- Refresh PR body text if the branch changed after review feedback.
- Watch remote checks to a useful conclusion when the user asked for publication or closeout.
- Verify issue comments, ready/draft state, and merge-readiness claims before finishing.
Clean-Main And CI Reality Checks
When local validation is noisy or host-limited:
- compare suspicious failures against a clean
origin/main worktree before blaming the branch
- document proven pre-existing failures in the PR body
- use remote CI as the cross-platform source of truth for merge-readiness
Final Sanity Check
- one branch, one PR
- PR head matches pushed
HEAD
- PR body matches current validation evidence
- issue comment exists when the PR closes an issue
- draft or ready state matches user intent
- required remote checks are green, or any remaining non-green state is explicitly explained
1---2name: commit-pr3description: Mandatory Codex/Copilot publication adapter for opencode-swarm. Use for every GitHub issue assignment that results in code changes, commits, pushes, draft PRs, PR body edits, PR readying, release notes, or CI closeout. Must be loaded before `git push`, `gh pr create`, `gh pr edit`, or `gh pr ready`. Routes to the single canonical source of truth at `.claude/skills/commit-pr/SKILL.md`.4---56# Commit & PR78Use this skill for Codex-side publication work in `opencode-swarm`.910## Source Of Truth1112Read and follow [`../../../.claude/skills/commit-pr/SKILL.md`](../../../.claude/skills/commit-pr/SKILL.md) in full before committing, pushing, opening, or updating a PR.1314That Claude skill remains the repository's canonical publish protocol. This Codex-native skill is the adapter layer: it tells Codex which tools to use, how to handle existing PRs, and how to finish the post-open lifecycle without drifting from the repo contract.1516If instructions conflict:17181. `AGENTS.md`192. `docs/engineering-invariants.md`203. `../../../.claude/skills/commit-pr/SKILL.md`214. this file2223## Codex Execution Rules2425- Use the available shell execution tool for `git`, `gh`, build, test, and CI commands.26- Use `apply_patch` for manual file edits.27- Use the runtime's parallel-execution capability for independent reads, status checks, and non-conflicting repo inspections.28- Do not stage `.Codex/`, IDE-local files, or unrelated worktree changes.29- Do not open a second PR when one already exists for the branch. Update the existing PR instead.3031## Publish Modes3233Infer the mode from the user request and branch state:3435- `new-pr`: branch is ready to publish and no PR exists yet36- `pr-followup`: a PR already exists and you are addressing review feedback or syncing validation37- `closeout`: a PR already exists and you are updating body text, waiting on CI, marking ready, or confirming merge prerequisites3839## Required Follow-Through4041### Existing PR updates4243If the branch already has a PR:4445- inspect unresolved PR feedback surfaces before updating or readying the PR:46 review threads/comments, requested-changes reviews, CI/check failures,47 mergeability/conflicts, and whether check data belongs to the current head SHA48- update the existing PR body instead of creating a new PR49- refresh `## Summary`, `## Invariant audit`, and `## Test plan` when validation counts, caveats, or evidence changed50- verify the PR still points at the pushed branch head after any force-push51- use `$swarm-pr-feedback` when feedback needs fixes before closeout5253### Draft vs ready5455Default behavior:5657- open or keep the PR as draft while follow-up edits are still expected, required checks are pending, or known caveats still need explanation58- mark the PR ready only after the body is current and required remote checks are green5960If the user explicitly asks for a ready PR sooner, obey that request and document any remaining CI state clearly.6162### Remote checks are authoritative6364When the user asks to open, ship, ready, or close out a PR:65661. inspect remote checks with `gh pr view <n> --json statusCheckRollup,...` or `gh pr checks <n>`672. verify check data belongs to the current `headRefOid` after every follow-up push683. if a required job is `cancelled` and downstream jobs are `skipped`, inspect the run and rerun failed/cancelled jobs694. if an obsolete older-head run is already failed or still consuming concurrency, inspect it before cancellation and cancel only when it is no longer the PR head under validation705. wait for required checks to finish when practical716. after conflict resolution, verify GitHub reports both `mergeable: MERGEABLE` and `mergeStateStatus: CLEAN`; local conflict-marker cleanup is not enough, and branch drift must appear in the closure ledger when it affected the PR727. when `gh pr checks` looks stale, inspect the workflow run directly with `gh run view <run-id> --json headSha,status,conclusion,jobs,url`, and keep watching downstream integration/smoke jobs after unit jobs pass738. if you edit the PR body after checks are green, expect PR Standards/title checks to rerun and re-check before calling the PR green749. do not call the PR merge-ready while a required check is `cancelled`, `skipped`, `in_progress`, or otherwise non-green unless the user explicitly accepts that state7576Recommended commands:7778```powershell79gh pr view <number> --json body,headRefName,headRefOid,isDraft,mergeable,mergeStateStatus,state,statusCheckRollup,url80gh pr checks <number> --watch --fail-fast81gh run view <run-id> --json headSha,status,conclusion,jobs,url82gh run rerun <run-id> --failed83```8485`dist/` is generated output and is not committed (#1047); do not stage it and there is no `dist-check` drift gate. If `package-check` fails, inspect the CI log: it is a source / build / `package.json#files` problem (an incomplete or unbuildable tarball), not generated-file drift. Fix the source or manifest and rerun `bun run package:smoke` locally.8687After a forced install on Windows, `EPERM` while reading refreshed `node_modules`88is usually host friction; rerun the exact focused command with approved access89before treating it as a code failure.9091### Issue comment requirement9293If the PR closes an issue:9495- confirm the issue comment exists with the PR link, what changed, how to use it, and migration notes96- if the PR merged before the comment was posted, add the missing issue comment immediately9798## Working Pattern991001. Read `AGENTS.md`, `docs/engineering-invariants.md` as needed, and the canonical Claude `commit-pr` skill.1012. Run the required local validation from the canonical skill.1023. Stage only intended files.1034. Create or update the PR.1045. Refresh PR body text if the branch changed after review feedback.1056. Watch remote checks to a useful conclusion when the user asked for publication or closeout.1067. Verify issue comments, ready/draft state, and merge-readiness claims before finishing.107108## Clean-Main And CI Reality Checks109110When local validation is noisy or host-limited:111112- compare suspicious failures against a clean `origin/main` worktree before blaming the branch113- document proven pre-existing failures in the PR body114- use remote CI as the cross-platform source of truth for merge-readiness115116## Final Sanity Check117118- one branch, one PR119- PR head matches pushed `HEAD`120- PR body matches current validation evidence121- issue comment exists when the PR closes an issue122- draft or ready state matches user intent123- required remote checks are green, or any remaining non-green state is explicitly explained