name: land description: Land a PR by monitoring conflicts, resolving them, waiting for checks, and squash-merging when green; use when asked to land, merge, or shepherd a PR to completion.
Land
Goals
- Ensure the PR is conflict-free with main.
- Keep CI green; fix failures when they occur.
- Squash-merge the PR once checks pass.
- Do not yield to the user until the PR is merged.
- No need to delete remote branches after merge.
Preconditions
ghCLI is authenticated.- You are on the PR branch with a clean working tree.
Steps
- Find the PR for the current branch:
gh pr view --json number,url,headRefOid,mergeable,mergeStateStatus - Run local validation to confirm a clean baseline:
mix compile --warnings-as-errors && mix test - Handle uncommitted changes: stash or commit before proceeding.
- Check mergeability. If
mergeable == CONFLICTING:- Run the
pullskill to rebase/merge origin/main. - Rerun validation after resolving.
- Push the resolved branch.
- Run the
- Start the async watch helper:
Exit codes:python3 .codex/skills/land/land_watch.py2— review comments exist (address them before merging)3— CI failed (investigate and fix)4— PR head was updated (pull and retry)5— merge conflicts detected (run pull skill)
- If exit code
2(review comments): address each comment, commit fixes, push, re-run watch. - If exit code
3(CI failed):- Read the failure output from
gh run view. - Fix the issue; commit with
fix: ...prefix. - Push and re-run watch.
- Read the failure output from
- If exit code
0(checks green, no blocking reviews): squash-merge:pr_title=$(gh pr view --json title -q .title) pr_body=$(gh pr view --json body -q .body) gh pr merge --squash --subject "$pr_title" --body "$pr_body" - Confirm merge succeeded:
gh pr view --json state -q .stateshould beMERGED.
Review Handling
For each reviewer comment, choose one:
- Accept: implement the change, reply
[codex] Done — <brief summary> - Clarify: ask a targeted question if the comment is ambiguous
- Push back: acknowledge, provide rationale, offer alternative; prefix with
[codex]
Always reply to a comment before pushing code changes that address it.
Notes
- Flaky tests: rerun once. If still failing, investigate root cause before pushing a skip.
- If CI failure is unrelated to your changes: note it in the workpad, push back to reviewer/maintainer, and do not proceed with merge until the issue is resolved or explicitly waived.