land-after-merge

Automates PR merge, CI wait, deploy, and verification through a single land.sh command.

2|Updated Mar 3, 2026
One-click install
npx skills add https://github.com/DanielH2018/server --skill land-after-merge-danielh2018
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: land-after-merge
Source: https://github.com/DanielH2018/server/tree/main/.claude/skills/land-after-merge
Command: npx skills add https://github.com/DanielH2018/server --skill land-after-merge-danielh2018

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Merging a PR is only half the job — someone must wait for CI, trigger the deploy, and verify the change actually took effect. Doing this by hand means polling CI, racing other merging sessions, and misreading ambiguous failure states, all of which this Skill eliminates by handing the entire merge-to-verified-deploy sequence to one idempotent script. ## Core Features & Use Cases - Single-command landing: Runs land.sh --pr <n> --since <sha> --arm-merge --await-merge in the background with output redirected to a file, then blocks on the VERDICT: line in the foreground. - Verdict interpretation: Decodes every VERDICT: outcome — settled, deploy-failed, tip-outran-retries, merge-conflict, pr-ci-red, needs-manual-apply, deferred, and more — including which are safe resume points and which mean partial changes are live. - Guardrails against known failure modes: Covers the non-blocking-IO Ansible error, background-task memory reaping, worktree-containment command refusals, and why hand-polling CI or hand-merging is forbidden. - Use Case: A PR updating an Ansible k8s role is ready to merge. Run the prescribed land.sh command, wait for the verdict, and know exactly whether the change deployed, needs a rebase, or requires a manual initial_setup.yml apply on specific hosts. ## Quick Start Merge PR 123 and follow it through to a verified deploy using the land-after-merge procedure.

Frequently Asked Questions about land-after-merge

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I deploy a PR after merging it on GitHub?▼

Run land.sh with --pr, --since, --arm-merge, and --await-merge in the background with output redirected to a file, then block on the VERDICT line with a foreground tail and grep. The script arms the auto-merge, waits for master CI, ticks, deploys, and prints the outcome.

What does the tip-outran-retries verdict mean?▼

tip-outran-retries means master merged faster than one tick-and-deploy cycle across all three retries, so nothing was deployed. It is a resume point, not a failure — re-running the same land.sh command is safe because the operation is idempotent.

Why does Ansible fail with non-blocking IO errors in background tasks?▼

A backgrounded Bash call hands the script a non-blocking pipe for stdout and stderr, and Ansible refuses to start on one. Redirecting output to a file gives the deploy a blocking handle, which is why the redirect in the land.sh invocation is mandatory.

Is it safe to re-run land.sh after a merge conflict or timeout?▼

Yes, land.sh is idempotent — a PR already merged is left alone, so re-running after merge-conflict or merge-timeout re-arms cleanly. The exception is the deploy-failed variant where a playbook task failed after applying, meaning some changes are already live.

When does a merged PR need a manual apply instead of an automatic deploy?▼

A needs-manual-apply verdict appears when the PR reaches something neither a deploy tag nor the tick covers, such as a shared k8s role, a rotated secret, or a setup role not included in initial_setup.yml. The verdict line names the exact command that applies it.