land
Installation
SKILL.md
Land
Goals
- Ensure the PR is conflict-free with main.
- Keep CI green and fix failures when they occur.
- Squash-merge the PR once checks pass.
- Do not yield to the user until the PR is merged; keep the watcher loop running unless blocked.
- No need to delete remote branches after merge; the repo auto-deletes head branches.
Preconditions
ghCLI is authenticated.- You are on the PR branch with a clean working tree.
Steps
- Locate the PR for the current branch.
- Confirm validation passes locally before any push:
npm run compilenpm run lintnpm run test:unit
- If the working tree has uncommitted changes, commit with the
commitskill and push with thepushskill before proceeding. - Check mergeability and conflicts against main.
- If conflicts exist, use the
pullskill to fetch/mergeorigin/mainand resolve conflicts, then use thepushskill to publish the updated branch. - Ensure review comments (if present) are acknowledged and any required fixes are handled before merging.
- Watch checks until complete.
- If checks fail, pull logs, fix the issue, commit with the
commitskill, push with thepushskill, and re-run checks. - When all checks are green and review feedback is addressed, squash-merge and delete the branch using the PR title/body for the merge subject/body.
- Context guard: Before implementing review feedback, confirm it does not conflict with the user's stated intent or task context. If it conflicts, respond inline with a justification and ask the user before changing code.
- Pushback template: When disagreeing, reply inline with: acknowledge + rationale + offer alternative.
- Ambiguity gate: When ambiguity blocks progress, use the clarification flow (assign PR to current GH user, mention them, wait for response). Do not implement until ambiguity is resolved.
- Per-comment mode: For each review comment, choose one of: accept, clarify, or push back. Reply inline stating the mode before changing code.
- Reply before change: Always respond with intended action before pushing code changes.
Commands
# Ensure branch and PR context
branch=$(git branch --show-current)
pr_number=$(gh pr view --json number -q .number)
pr_title=$(gh pr view --json title -q .title)
pr_body=$(gh pr view --json body -q .body)
# Check mergeability and conflicts
mergeable=$(gh pr view --json mergeable -q .mergeable)
if [ "$mergeable" = "CONFLICTING" ]; then
# Run the `pull` skill to handle fetch + merge + conflict resolution.
# Then run the `push` skill to publish the updated branch.
fi
# Preferred: use the Async Watch Helper below.
while true; do
sleep 10
done
# Watch checks
if ! gh pr checks --watch; then
gh pr checks
exit 1
fi
# Squash-merge (remote branches auto-delete on merge in this repo)
gh pr merge --squash --subject "$pr_title" --body "$pr_body"
Async Watch Helper
Preferred: use the asyncio watcher to monitor review comments, CI, and head updates in parallel:
python3 .codex/skills/land/land_watch.py
Exit codes:
- 2: Review comments detected (address feedback)
- 3: CI checks failed
- 4: PR head updated (autofix commit detected)
Failure Handling
- If checks fail, pull details with
gh pr checksandgh run view --log, then fix locally, commit with thecommitskill, push with thepushskill, and re-run the watch. - Use judgment to identify flaky failures. If a failure is a flake (e.g., a timeout on only one platform), you may proceed without fixing it.
- Ubuntu test timeouts are a known issue for this project — if tests pass on other platforms, treat the Ubuntu timeout as a flake.
- If mergeability is
UNKNOWN, wait and re-check. - Do not merge while review comments are outstanding.
- Do not enable auto-merge; use the watcher loop instead.
Review Handling
- Human review comments are blocking and must be addressed before merging.
- All GitHub comments generated by this agent must be prefixed with
[codex]. - If feedback requires changes:
- Reply with intended fixes (
[codex] ...) as an inline reply. - Implement fixes, commit, push.
- Reply with the fix details and commit sha.
- Reply with intended fixes (
- Use review comment endpoints (not issue comments) to find inline feedback:
- List PR review comments:
gh api repos/{owner}/{repo}/pulls/<pr_number>/comments - Reply to a specific review comment:
gh api -X POST /repos/{owner}/{repo}/pulls/<pr_number>/comments \ -f body='[codex] <response>' -F in_reply_to=<comment_id>
- List PR review comments:
Weekly Installs
1
Repository
s-hiraoku/vscod…terminalGitHub Stars
15
First Seen
12 days ago
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
warp1