Close Feature PR
Contract
Prereqs:
- •Run inside the target git repo.
- •
gitandghavailable onPATH, andgh auth statussucceeds. - •Working tree clean (
git status --porcelain=v1is empty).
Inputs:
- •PR number (or current-branch PR).
- •Optional: whether to skip checks (
--skip-checks).
Outputs:
- •PR merged (default merge commit) and remote branch deleted.
- •Local checkout switched back to base branch and updated; local feature branch deleted (best-effort).
Exit codes:
- •
0: success - •non-zero: checks failing, PR not mergeable, auth issues, or git/gh command failures
Failure modes:
- •PR is draft and automatic
gh pr readyfails. - •Required checks failing or branch not mergeable.
- •Missing
ghauth or insufficient permissions.
Setup
- •Ensure
gh auth statussucceeds.
When to use
- •The user asks to merge/close a PR and clean up the feature branch.
- •If the PR is tracked by a progress file (PR body links to
docs/progress/...) and you want to finalize/archive that progress, useclose-progress-prinstead.
Workflow
- •Identify the PR number
- •Prefer current branch PR:
gh pr view --json number -q .number
- •Prefer current branch PR:
- •Preflight
- •Ensure working tree is clean:
git status --porcelain=v1should be empty - •Ensure checks pass:
gh pr checks <pr> - •Ensure PR is not draft:
gh pr view <pr> --json isDraft -q .isDraftshould befalse; iftrue, rungh pr ready <pr>automatically, then continue to merge.
- •Ensure working tree is clean:
- •Review PR hygiene (aligned with
create-feature-pr)- •Title reflects feature outcome; capitalize the first word.
- •PR body includes:
Summary,Changes,Testing,Risk / Notes. - •
## Progress/## Planning PRare progress-derived metadata and must be treated as a pair. - •Non-progress feature PR: both sections should be absent.
- •Progress-derived feature PR: both sections must exist with non-empty values.
- •If only one section exists, or either section is
None(or empty), remove both sections entirely. - •If PR body includes
Open Questionsand/orNext Stepsand they are not already- None, update them to the latest status (resolve questions or confirm with the user, check off completed steps, link follow-ups). - •
Testingrecords results (pass/failed/skipped) and reasons if not run. - •If edits are needed: use
gh pr edit <pr> --title .../gh pr edit <pr> --body-file ....
- •Merge and delete branch
- •Default merge method: merge commit
- •
gh pr merge <pr> --merge --delete-branch
- •Local cleanup
- •Resolve refs:
- •
baseRefName="$(gh pr view <pr> --json baseRefName -q .baseRefName)" - •
headRefName="$(gh pr view <pr> --json headRefName -q .headRefName)"
- •
- •
git switch "$baseRefName" && git pull --ff-only - •Delete local feature branch if it still exists:
git branch -d "$headRefName"
- •Resolve refs:
Optional helper script
- •Use
$AGENTS_HOME/skills/workflows/pr/feature/close-feature-pr/scripts/close_feature_pr.shin this skill folder to run a deterministic merge + cleanup. - •If
$AGENTS_HOME/skills/workflows/pr/feature/close-feature-pr/scripts/close_feature_pr.shfails, attempt to fix the underlying cause (prefer fixing the script when it's a script bug, otherwise fix the documented prerequisites/workflow), re-run it, and explicitly report whether the fix succeeded.