land
Skill1 starsChanged 52 days agoApache-2.0View on GitHub
Have the AI finish a topic branch end to end by merging its PR, removing the branch, and syncing the local base branch. Use when the user says land or asks to run the repo landing workflow.
25 other projects use a version of this.
Adopted by
Most recently taken up by
- bengous/claude-code-pluginstheir own version, first seen Nov 8, 2026
- rccsousa/skillstheir own version, first seen Nov 8, 2026
- frontman-ai/frontmantheir own version, first seen Nov 1, 2026
- TheAxeC/ordotheir own version, first seen Nov 1, 2026
- ian-pascoe/skillstheir own version, first seen Nov 1, 2026
- HLIntel/Headrontheir own version, first seen Nov 1, 2026
Used with
Projects with it also use drift-audit, review and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
mr-fumanchuSkilldrift-audit
Audit a project's CLAUDE.md against its memory files to find duplicated or drifting rules, then consolidate them into a single source of truth. Use when Tony says "drift audit", "check for drift", "audit memory vs CLAUDE.md", "find duplicated rules", "clean up memory duplication", or wants to reconcile CLAUDE.md and memory so a rule never lives in two places. Read-only by default; never edits or deletes anything without explicit approval.
Also in 3 projects that use this
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
GoogleSkillcode-review
Adversarial systems, concurrency, memory-model, and architecture code review protocol. Use this skill whenever asked to review code, PRs, diffs, or branches in Filament.
Also in 3 projects that use this
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- openai/symphony★ 27ksame name
- BigDawnGhost/wenyi★ 2.9ksame name
- Xinrea/bili-shadowreplay★ 1.1ksame name
- frontman-ai/frontman★ 722same name
- team-mirai-volunteer/mirai-gikai★ 214same name
- HamedMP/matrix-os★ 86same name
- aniketpanjwani/skills★ 52same name
- sledtools/pika★ 45same name
- jamie8johnson/cqs★ 15same name
- robritacca-dotcom/rift-ds★ 9same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Show its rules and text
We split this skill into the rules it gives an agent
31 rules. 0 are common, 19 are distinctive, and 12 are very specific to this project.
0
Common
Most of the 24 edited versions we read keep these.
19
Distinctive
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 8
Use this skill when the user asks the AI to land work end to end.
- Distinctive: line 34
Not a code review, test-fixing, or implementation workflow.
- Distinctive: line 35
Not a ship workflow for creating branches, commits, pushes, or pull requests.
- Very specific: line 36
Not approval to merge from the base branch, detached HEAD, or a branch without a matching pull request.
- Distinctive: line 38
Not permission to bypass failing or pending checks unless the user explicitly forces landing in the current turn and the connected account …
- Very specific: line 44
Treat a bare or direct current-turn command such as land, land this, merge this PR, or land the current branch as explicit approval to …
- Very specific: line 47
If land or merge appears as part of a broader sentence, proceed only when the user is clearly asking the AI to complete the landing …
- Distinctive: line 49
If the message is about the land skill, landing policy, a future landing, or otherwise could be read as discussion instead of approval, ask …
- Distinctive: line 52
Do not infer approval from an earlier turn.
- Very specific: line 60
Read the target repo's config file — .orchraft.jsonc, else .orchraft.json — when one exists, per context/policies/config-policy.md (the …
- Very specific: line 82
If tracked, staged, or untracked local changes are present, stash all of them (including untracked files) before landing with git stash …
- Distinctive: line 90
Prefer connected GitHub tools to merge the branch pull request.
- Distinctive: line 106
Ask the user, when the history is empty or mixed.
- Very specific: line 109
Before merging, verify whether the GitHub MCP connector exposes the specific merge action for the session, such as _merge_pull_request, and …
- Very specific: line 112
Use gh only after that exact MCP merge path has been checked and is unavailable, blocked, or fails.
- Distinctive: line 120
After the merge completes, switch to the base branch locally, sync it, and confirm there are still no tracked or staged local changes …
- Very specific: line 131
When a restored stash left local changes there, say removal will refuse until they are committed or moved, and never suggest --force.
- Distinctive: line 135
Verify the branch actually landed before deleting it, using the check that matches the merge method:
- Very specific: line 148
Never reach for git branch -D because -d refused.
- Distinctive: line 161
If landing stops after creating a stash for this workflow, restore it once the worktree is usable.
- Distinctive: line 166
Stop if the current branch is the base branch.
- Distinctive: line 167
Stop if HEAD is detached.
- Distinctive: line 168
Stop if there is no branch pull request to merge.
- Distinctive: line 169
Stop if local changes cannot be stashed cleanly (e.g.
- Distinctive: line 171
Stop if a stash created for this workflow cannot be restored after landing.
- Very specific: line 173
Stop if local HEAD does not match the PR head before merging.
- Distinctive: line 174
Stop if required jobs, checks, or mergeability status are pending, missing, failing, or errored.
- Distinctive: line 181
Stop if the merge method resolved from the config file or from the user is one the repository does not allow.
- Very specific: line 183
Stop if git branch -d refuses after a merge-commit landing — that means the branch did not land as expected.
- Very specific: line 186
If a required git or GitHub command is blocked by sandbox permissions, follow context/policies/sandbox-policy.md (the target repo's copy …
- Distinctive: line 206
If landing stops or fails, skip the landing phrase and state the blocker plainly.
“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Land Workflow
Use this skill when the user asks the AI to land work end to end.
Contents
- At A Glance
- What This Is Not
- Trigger Rules
- Preconditions
- Default Path
- Stop Conditions
- Handoff
- Response Examples
At A Glance
- Decide whether the current user message is approval to land.
- Confirm branch, PR, checks, permissions, and local worktree state.
- Resolve the merge method, then merge.
- Sync the local base branch, verify the topic branch actually landed before deleting it, and restore any local-changes stash created for this workflow. In a linked worktree, skip the sync and the deletion but still restore the stash.
- Report the result with the actual merge method and branch state.
What This Is Not
- Not a code review, test-fixing, or implementation workflow.
- Not a ship workflow for creating branches, commits, pushes, or pull requests.
- Not approval to merge from the base branch, detached
HEAD, or a branch without a matching pull request. - Not permission to bypass failing or pending checks unless the user explicitly forces landing in the current turn and the connected account can override repository protections.
Trigger Rules
- Treat a bare or direct current-turn command such as
land,land this,merge this PR, orland the current branchas explicit approval to start the workflow without asking another confirmation question. - If
landormergeappears as part of a broader sentence, proceed only when the user is clearly asking the AI to complete the landing workflow now. - If the message is about the land skill, landing policy, a future landing, or otherwise could be read as discussion instead of approval, ask one concise clarification question before merging.
- Do not infer approval from an earlier turn.
- Merging falls under
context/policies/approval-policy.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/policies/approval-policy.md); the direct commands above are that policy's current-turn go-ahead.
Preconditions
- Read the target repo's config file —
.orchraft.jsonc, else.orchraft.json— when one exists, percontext/policies/config-policy.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/policies/config-policy.md). Both allow//comments. A missing file is the normal case and means the documented defaults apply. The config file is always read from the repository being worked in, never from the plugin's own directory. - Confirm the current branch is a named branch other than the base branch.
- Confirm the branch has an upstream remote and the local
HEADis pushed. - Confirm the current branch has an open, non-draft pull request.
- Confirm the pull request head commit matches local
HEAD. - Confirm the pull request targets the expected base branch. Every later step
means that branch — the pull request's own
base.ref, which is where the merge actually lands. Do not substitute a literalmain, which a repository onmasterordevelopdoes not use. WhenbaseBranchin the config names a different branch than the pull request targets, stop and report the mismatch rather than following either: the config says where work is meant to land, and this pull request says otherwise. - Confirm the pull request has no unresolved merge conflicts.
- Confirm the connected account can merge the pull request.
- Confirm required check status by reading it fresh from the connected tool in the current turn; don't assume it from an earlier turn or a prior pass.
- If tracked, staged, or untracked local changes are present, stash all of
them (including untracked files) before landing with
git stash push -u -m "orchraft-land <branch> <timestamp>", then record its commit SHA from thegit stash list --format='%H %gs'line carrying that message, never fromstash@{0}.
Default Path
- Prefer connected GitHub tools to merge the branch pull request.
- Resolve the merge method before merging, stopping at the first source that
answers, per the config policy named in Preconditions:
- What the user asked for in the current turn.
merge.methodin the target repo's config file, when set to something other than"repo".- The repository's allowed methods. GitHub exposes
allow_merge_commit,allow_squash_merge, andallow_rebase_merge— which methods are permitted, not which is preferred, and they read asnullfor an account without push access. When exactly one is allowed, that is the answer and no further step runs. - The base branch's recent history, when more than one method is allowed
and nothing above chose. A merge commit has two parents; a squashed
commit has one and usually a trailing
(#123). Follow what the repository actually does, and say in the handoff that the method was inferred rather than configured. - Ask the user, when the history is empty or mixed.
- A method the repository forbids is a stop, not a fallback: report that the requested method is disallowed instead of quietly using another one.
- Before merging, verify whether the GitHub MCP connector exposes the specific
merge action for the session, such as
_merge_pull_request, and use that MCP action when it is available. - Use
ghonly after that exact MCP merge path has been checked and is unavailable, blocked, or fails. - Compare local
HEADwith the PR head before merging. - Confirm required jobs, checks, and mergeability status are finished and passing before merging.
- Where this workflow validates anything locally, prefer a
validatecommand from the config file over discovering one, percontext/policies/verification-policy.md. - After the merge completes, switch to the base branch locally, sync it, and
confirm there are still no tracked or staged local changes before deleting
the verified local topic branch. Skip the deletion entirely when
merge.deleteLocalBranchisfalsein the target repo's config file, and say so in the handoff. - In a linked worktree — the two lines of
git rev-parse --path-format=absolute --git-dir --git-common-dirdiffer — skip the base-branch switch and the branch deletion: git refuses to check out a branch another worktree holds and to delete the branch this worktree has checked out. Never remove the worktree yourself; tell the user to rungit worktree remove <path>, then delete the branch from another checkout. When a restored stash left local changes there, say removal will refuse until they are committed or moved, and never suggest--force. Still restore any stash created for this workflow in place;refs/stashis shared by every worktree, sostash@{0}may belong to another. - Verify the branch actually landed before deleting it, using the check that
matches the merge method:
- Merge commit — the branch's tip is an ancestor of the base branch, so
git branch --merged <base>lists it andgit branch -dsucceeds. Use-dand let it refuse if something is wrong. - Squash or rebase — the commits on the base branch are new objects, so
the topic branch's tip is not an ancestor of it.
git branch --mergedwill not list the branch andgit branch -dwill refuse with "not fully merged" even though the work landed correctly. Confirm the landing another way before deleting: the pull request reportsmerged: truewith a merge commit SHA, andgit diff <base> <branch>is empty, meaning the branch's content reached the base branch. Only then delete withgit branch -D.
- Merge commit — the branch's tip is an ancestor of the base branch, so
- Never reach for
git branch -Dbecause-drefused. Establish that the work landed first; a refusal that has not been explained is a stop, not a prompt to force. - Once the landing is verified and branch deletion is done or skipped
(linked worktree,
merge.deleteLocalBranchfalse), restore any local-changes stash created for this workflow by its recorded SHA:git stash apply <sha>, then drop the entrygit stash list --format='%gd %H'shows for that SHA. Never use baregit stash pop, which takes whatever is on top. Check the SHA in the drop'sDropped stash@{n} (<sha>)output: if another worktree stashed in between and a different entry was dropped, put it back withgit stash store -m "restored by land" <dropped-sha>and report that this workflow's own entry was left in the stash list. - If landing stops after creating a stash for this workflow, restore it once the worktree is usable.
Stop Conditions
- Stop if the current branch is the base branch.
- Stop if HEAD is detached.
- Stop if there is no branch pull request to merge.
- Stop if local changes cannot be stashed cleanly (e.g. an existing conflicting stash or a stash command failure); do not merge or delete the branch.
- Stop if a stash created for this workflow cannot be restored after landing; report the stash SHA for manual recovery.
- Stop if local
HEADdoes not match the PR head before merging. - Stop if required jobs, checks, or mergeability status are pending, missing, failing, or errored.
- Proceed despite pending or failed checks only when the user explicitly says to force landing in the current turn and the connected account has permission to override repository protections.
- Account for the actual merge method used when validating that local branch deletion is safe; see the Default Path for the check each method needs.
- Stop if the merge method resolved from the config file or from the user is one the repository does not allow.
- Stop if
git branch -drefuses after a merge-commit landing — that means the branch did not land as expected. Do not escalate to-Dto get past it. - If a required git or GitHub command is blocked by sandbox permissions,
follow
context/policies/sandbox-policy.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/policies/sandbox-policy.md): rerun that command with escalation, and stop if it is declined.
Handoff
- Unless the user asked for plain output, open with a fresh one-line success
phrase in the orc voice, speaking as the Haulmaster from
context/personality.md(the target repo's copy when it exists, otherwise${CLAUDE_PLUGIN_ROOT}/context/personality.md). If they did, open with the plain result instead. - Report the final branch state.
- Say which merge method was used and where it came from: the user, the config file, the only method the repository allows, or an inference from the base branch's history. An inferred method is reported as inferred.
- Say whether the verified local branch was deleted, and when it was kept,
why —
merge.deleteLocalBranchbeingfalse, a landing that could not be verified, or a linked worktree. - In a linked worktree, say the local base branch was not synced.
- If landing stops or fails, skip the landing phrase and state the blocker plainly.
Response Examples
Opening lines are samples of the orc voice; write a fresh one each time.
Successful landing:
🏰 Rrraaagh! Victory march into main. The branch banner rests with honor. ✨
Merged PR #123 with squash, the only method this repository allows.
Local `main` is synced, and `fix/login-crash` was deleted.
Restored the local stash.Successful landing with no stash:
🏰 Gates opened on green. Spoils carried home, feast hall ready.
Merged PR #124 with a merge commit, inferred from the base branch's history.
Local `main` is synced, and `feat/offline-cache` was deleted.
No local stash was needed.Blocked landing:
⚠️ Landing is blocked: required check `build` is still pending.
No merge was performed. Local branch and worktree were left unchanged.Clarification needed:
❓ Chief, land the current branch now?Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

