بنقرة واحدة
land
// PR をランディングする。コンフリクトを監視・解決し、チェックを待ち、グリーンに なったら squash-merge する。land、merge、PR を完了まで導くことを依頼された ときに使用する。
// PR をランディングする。コンフリクトを監視・解決し、チェックを待ち、グリーンに なったら squash-merge する。land、merge、PR を完了まで導くことを依頼された ときに使用する。
セッション履歴を根拠およびサマリとして使用し、現在の変更からきちんとした git コミットを作成する。コミット作成、コミットメッセージの準備、または staged な作業のファイナライズを依頼されたときに使用する。
Linear と対話するためのスキル。Linear MCP サーバー(`mcp__linear__*` ツール)を 優先的に使用し、MCP でカバーされない生の GraphQL 操作(イントロスペクション、 ファイルアップロードなど)は `linear_graphql` クライアントツールにフォールバックする。
最新の origin/main を現在のローカルブランチに pull し、マージコンフリクトを 解決する(別名 update-branch)。Codex が feature ブランチを origin と同期し、 rebase ではなく merge ベースの更新を行い、コンフリクト解決のベストプラクティス に従う必要があるときに使用する。
現在のブランチの変更を origin に push し、対応する pull request を作成 または更新する。push、更新の公開、pull request の作成を依頼されたときに使用する。
コードレビュー・テストガイドラインチェック・コード品質チェックを同時実行する
UI変更を含むPRで、agent-browserでスクリーンショットを撮影し、R2にアップロードしてPR本文に貼り付ける
| name | land |
| description | PR をランディングする。コンフリクトを監視・解決し、チェックを待ち、グリーンに なったら squash-merge する。land、merge、PR を完了まで導くことを依頼された ときに使用する。 |
gh CLI が認証されている。commit スキルでコミットし push スキルで push する。pull スキルを使って origin/main を fetch/merge してコンフリクトを解決し、その後 push スキルを使って更新されたブランチを公開する。commit スキルでコミット、push スキルで push し、チェックを再実行する。# ブランチと PR コンテキストを確認
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)
# マージ可能性とコンフリクトを確認
mergeable=$(gh pr view --json mergeable -q .mergeable)
if [ "$mergeable" = "CONFLICTING" ]; then
# `pull` スキルを実行して fetch + merge + コンフリクト解決を処理する。
# その後 `push` スキルを実行して更新されたブランチを公開する。
fi
# 推奨: 下記の Async Watch Helper を使う。手動ループは Python が動かないか
# ヘルパースクリプトが利用できないときのフォールバック。
# レビューフィードバックを待つ: Codex レビューは "## Codex Review — <persona>" で
# 始まる issue コメントとして到着する。レビュアーフィードバックと同様に扱い、
# 発見事項を確認したことと、対応するか延期するかを示す `[codex]` issue コメントで
# 返信する。
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
# チェックを監視
if ! gh pr checks --watch; then
gh pr checks
# 失敗した run を特定してログを検査
# gh run list --branch "$branch"
# gh run view <run-id> --log
exit 1
fi
# Squash-merge(このリポジトリではマージ時にリモートブランチが自動削除される)
gh pr merge --squash --subject "$pr_title" --body "$pr_body"
推奨: asyncio ウォッチャーを使ってレビューコメント、CI、head 更新を並列に監視する:
python3 .agents/skills/land/land_watch.py
終了コード:
gh pr checks と gh run view --log で詳細を取得し、ローカルで修正、commit スキルでコミット、push スキルで push し、ウォッチを再実行する。origin/main をマージし、本物の author コミットを追加し、CI を再トリガするために force-push し、その後チェックループを再開する。origin/main を fetch、マージ、force-push、CI 再実行が修復策。UNKNOWN の場合、待って再確認する。## Codex Review — <persona> issue コメントの存在を使う。git push --force-with-lease する。## Codex Review — <persona> で始まり、レビュアーの方法論 + 使用したガードレールを含む。マージ前に確認しなければならないフィードバックとして扱う。gh api でレビューコメントを fetch し、プレフィックス付きのコメントで返信する。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 は数値の review comment id(例: 2710521800)でなければならず、GraphQL ノード id(例: PRRC_...)ではない。エンドポイントには PR 番号(/pulls/<pr_number>/comments)を含めなければならない。[codex] プレフィックスを付ける。[codex] 付きで返信し、フィードバックに今すぐ対応するか延期するかを述べる(根拠を含める)。[codex] ... として返信する。review comment エンドポイントと in_reply_to を使い、元のレビューコメントへのインライン返信として行う(issue コメントを使わない)。[codex] ... として、フィードバックを認知したのと同じ場所に返信する(Codex レビューには issue コメント、レビューコメントにはインライン返信)。[codex] issue コメントが投稿されるまで、Codex レビュー issue コメントを未解決として扱う。[codex] インライン返信がある)であることを確認する。[codex] 前回のレビュー以降の変更:
- <差分の短い箇条書き>
Commits: <sha>, <sha>
Tests: <実行したコマンド>
[codex] 更新で簡潔な理由(例: out-of-scope、意図と矛盾、不要)を呼び出す。