Live Borg debugging by exec-ing into the borg-web-ui Docker container. Use when debugging borg commands, writing tests against real borg output, developing borg 2.0 features, or verifying borg behavior before writing code.
中文简介正在准备中。当前显示原文说明。
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.
中文简介正在准备中。当前显示原文说明。
安装前可以查看交给 AI 代理的指令内容。
Merging as the human approval signal for
reviewDecision=REVIEW_REQUIRED only when the fast-path preflight is run with
the explicit admin-bypass flag and reports that bypass is required.gh CLI is authenticated.Human Review handoff: head=<PR head SHA>; at=<ISO-8601 timestamp>; validation=<commands>.python3 .codex/skills/land/land_watch.py --preflight --json --allow-review-required-admin-bypass --handoff-note '<handoff note>'.0, skip full local validation and the full watcher
loop for this already-green PR. The preflight has confirmed the head SHA is
unchanged since Human Review, checks are green, and no new human/Codex
feedback appeared since Human Review. Squash-merge with the PR title/body
after one final gh pr view --json mergeable,mergeStateStatus,reviewDecision
check still reports either a clean merge state or the exact
BLOCKED + REVIEW_REQUIRED state that requires administrator bypass.6, fails, or reports missing/uncertain data, use the
conservative fallback below.git diff --check; backend checks for backend changes; frontend checks for
frontend changes; and smoke/runtime checks for user-facing app changes.commit skill
and push with the push skill before proceeding.pull skill to fetch/merge origin/main and
resolve conflicts, then use the push skill to publish the updated branch.commit skill,
push with the push skill, and re-run checks.# 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)
handoff_note='Human Review handoff: head=<sha>; at=<timestamp>; validation=<commands>'
# Fast path for already-green PRs. If this exits 0, skip local validation and
# the full watcher loop. If it exits 6 or errors, use the conservative fallback.
if preflight_json=$(python3 .codex/skills/land/land_watch.py --preflight --json --allow-review-required-admin-bypass --handoff-note "$handoff_note"); then
requires_admin_bypass=$(
printf '%s' "$preflight_json" |
python3 -c 'import json,sys; print("true" if json.load(sys.stdin).get("requires_admin_bypass") else "false")'
)
mergeable=$(gh pr view --json mergeable -q .mergeable)
merge_state=$(gh pr view --json mergeStateStatus -q .mergeStateStatus)
review_decision=$(gh pr view --json reviewDecision -q .reviewDecision)
merge_args=(--squash --subject "$pr_title" --body "$pr_body")
if [ "$requires_admin_bypass" = "true" ]; then
if [ "$mergeable" = "MERGEABLE" ] && [ "$merge_state" = "BLOCKED" ] && [ "$review_decision" = "REVIEW_REQUIRED" ]; then
merge_args+=(--admin)
gh pr merge "${merge_args[@]}"
merge_rc=$?
if [ "$merge_rc" -eq 0 ]; then
exit 0
fi
exit "$merge_rc"
fi
elif [ "$mergeable" = "MERGEABLE" ] && { [ "$merge_state" = "CLEAN" ] || [ "$merge_state" = "HAS_HOOKS" ]; }; then
gh pr merge "${merge_args[@]}"
merge_rc=$?
if [ "$merge_rc" -eq 0 ]; then
exit 0
fi
exit "$merge_rc"
fi
fi
# Check mergeability and conflicts for the conservative fallback.
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
# Conservative fallback: Borg UI local validation before merge. Keep this
# scope-sensitive for the PR.
git diff --check
if git diff --name-only origin/main...HEAD | rg -q '^(app|tests|requirements.txt|pytest.ini|ruff.toml)(/|$)'; then
ruff check app tests
ruff format --check app tests
pytest tests/unit -v
fi
if git diff --name-only origin/main...HEAD | rg -q '^frontend/'; then
(cd frontend && npm run check:locales && npm run typecheck && npm run lint && npm run build)
fi
# Fallback watcher path. The manual loop is a fallback when Python cannot run or
# the helper script is unavailable.
# Wait for review feedback: Codex reviews arrive as issue comments that start
# with "## Codex Review — <persona>". Treat them like reviewer feedback: reply
# with a `[codex]` issue comment acknowledging the findings and whether you're
# addressing or deferring them.
while true; do
gh api repos/{owner}/{repo}/issues/"$pr_number"/comments \
--jq '.[] | select(.body | startswith("## Codex Review")) | .id' | rg -q '.' \
&& break
sleep 10
done
# Watch checks
if ! gh pr checks --watch; then
gh pr checks
# Identify failing run and inspect logs
# gh run list --branch "$branch"
# gh run view <run-id> --log
exit 1
fi
# Squash-merge (remote branches auto-delete on merge in this repo)
gh pr merge --squash --subject "$pr_title" --body "$pr_body"
For already-green PRs, the preflight command checks current GitHub state instead of repeating local validation:
python3 .codex/skills/land/land_watch.py --preflight --json --allow-review-required-admin-bypass --handoff-note "$handoff_note"
The handoff note must come from the workpad final handoff notes:
Human Review handoff: head=<PR head SHA>; at=<ISO-8601 timestamp>; validation=<commands>
The normal fast path is allowed only when all of these are true:
MERGEABLE and merge state is CLEAN or HAS_HOOKS.The review-required administrator-bypass fast path is allowed only when the
same head/check/feedback requirements pass, the preflight was run with
--allow-review-required-admin-bypass, mergeability is MERGEABLE, merge state
is BLOCKED, and reviewDecision is REVIEW_REQUIRED. In that case the
preflight JSON includes "requires_admin_bypass": true; merge with
gh pr merge --admin. If GitHub rejects the admin merge, record the missing
merge permission or branch-policy error in the workpad as the landing blocker.
Exit codes:
requires_admin_bypass field before choosing merge arguments.Use the asyncio watcher in the conservative fallback to monitor review comments, CI, and head updates in parallel:
python3 .codex/skills/land/land_watch.py
Exit codes:
gh pr checks and gh run view --log, then
fix locally, commit with the commit skill, push with the push skill, and
re-run the watch.origin/main if needed, add a real author commit, and force-push to retrigger
CI, then restart the checks loop.origin/main, merge, force-push, and rerun CI.UNKNOWN, wait and re-check.gh pr merge --admin fails, do not retry normal merge. Record the exact
permission or branch-policy error in the workpad as the landing blocker.## Codex Review — <persona> issue comments (not job status) as the signal
that review feedback is available.git push --force-with-lease.## Codex Review — <persona> and include the reviewer’s
methodology + guardrails used. Treat these as feedback that must be
acknowledged before merge.gh api and reply with a prefixed comment.gh api repos/{owner}/{repo}/pulls/<pr_number>/comments
gh api repos/{owner}/{repo}/issues/<pr_number>/comments
gh api -X POST /repos/{owner}/{repo}/pulls/<pr_number>/comments \
-f body='[codex] <response>' -F in_reply_to=<comment_id>
in_reply_to must be the numeric review comment id (e.g., 2710521800), not
the GraphQL node id (e.g., PRRC_...), and the endpoint must include the PR
number (/pulls/<pr_number>/comments).[codex].[codex] and state whether you will address the feedback now or
defer it (include rationale).[codex] ...) as an inline reply to the original review comment using
the review comment endpoint and in_reply_to (do not use issue comments for
this).[codex] ...) in the same place
you acknowledged the feedback (issue comment for Codex reviews, inline reply
for review comments).[codex] issue comment is posted acknowledging the findings.[codex] inline
replies).[codex] Changes since last review:
- <short bullets of deltas>
Commits: <sha>, <sha>
Tests: <commands run>
[codex] update with a brief reason (e.g.,
out-of-scope, conflicts with intent, unnecessary).还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Live Borg debugging by exec-ing into the borg-web-ui Docker container. Use when debugging borg commands, writing tests against real borg output, developing borg 2.0 features, or verifying borg behavior before writing code.
中文简介正在准备中。当前显示原文说明。
Create a well-formed git commit from current changes using session history for rationale and summary; use when asked to commit, prepare a commit message, or finalize staged work.
中文简介正在准备中。当前显示原文说明。
Continue a multi-phase engineering spec from its progress table. Use when the user says /continue-spec, "continue the spec", "continue the operations feature", or asks what the next phase is. Runs the next step (plan, implement, review) in this session on the model the spec names, stopping at the spec's gates. Never uses subagents.
中文简介正在准备中。当前显示原文说明。
Use Symphony's `linear_graphql` client tool for raw Linear GraphQL operations such as comment editing and upload flows.
中文简介正在准备中。当前显示原文说明。
Pull latest origin/main into the current local branch and resolve merge conflicts (aka update-branch). Use when Codex needs to sync a feature branch with origin, perform a merge-based update (not rebase), and guide conflict resolution best practices.
中文简介正在准备中。当前显示原文说明。
Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request.
中文简介正在准备中。当前显示原文说明。