一键导入
resolve-ci
PRのCIが失敗している原因を調査し、報告・修正する。PR番号・URLを受け取るか、現在のブランチのPRを対象とする。ユーザーが「CI修正」「CI直して」「ビルド失敗」と言ったとき、または /resolve-ci を実行したときに使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
PRのCIが失敗している原因を調査し、報告・修正する。PR番号・URLを受け取るか、現在のブランチのPRを対象とする。ユーザーが「CI修正」「CI直して」「ビルド失敗」と言ったとき、または /resolve-ci を実行したときに使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
dev系パイプライン(dev-pr-review / dev-pr-review-resolve / dev-issue-implement / dev-issue-review)を人間の確認なしで自律的に1タスク回すオーケストレーター。main を最新化した後、レビュー系を優先する固定順で対象を探し、最初に見つかった1件を対応するスキルで処理する。途中で解決済みIssueを見つけたら理由を書いてcloseする。needs-info によるユーザー確認待ちは禁止で、必ず自律判断する。ユーザーが「devパイプライン回して」「自律で開発回して」と言ったとき、または /dev-hotl を実行したときに使用。
reviewed ラベルがついたIssueを見つけて実装する。対象Issueに WIP ラベルをつけ、git worktree で main を汚さずに開発し、テストがPASSすることを確認した上でIssueに紐づくPR(Closes
現在のリポジトリの開発Issueが妥当かどうかをレビューする。リポジトリの目的に沿っているか、調査内容・設計に問題がないかをチェックし、WebSearch や Parallel Search MCP で裏取りして本文を追記・修正する。レビュー着手時に in-review ラベルで排他し、問題なければ reviewed ラベルをつけ、あまりに見当違いな場合は理由を記述してcloseする。Issue番号・URLを引数に取るか、未レビューのIssueを自動で探す。ユーザーが「Issueレビュー」「Issueの妥当性チェック」と言ったとき、または /dev-issue-review を実行したときに使用。
reviewed ラベルがついたPRを見つけて、レビュー指摘事項を検討・修正する。着手時に in-review ラベルで排他する。妥当な指摘は worktree 上で修正し、反論がある場合は根拠をコメントに記述して、各レビュースレッドをresolveしていく。すべてのレビューをresolveしたら必ずmergeする。PR番号・URLを引数に取るか、対応待ちのPRを自動で探す。ユーザーが「レビュー指摘を解消して」「reviewedのPRを片付けて」と言ったとき、または /dev-pr-review-resolve を実行したときに使用。
in-review ラベルがついていないオープンPRを見つけてレビューする。git worktree でPRのコードをローカルに取得し、変更箇所以外との整合性・紐づくIssue通りの実装かを確認する。問題なければmerge、軽微な指摘なら修正してmerge、問題が多い場合はレビューを記述して reviewed ラベルをつけ、見当違い・修正済みのPRは理由を記述してcloseする。PR番号・URLを引数に取るか、レビュー待ちのPRを自動で探す。ユーザーが「PRレビューして回して」「レビュー待ちPRを処理して」と言ったとき、または /dev-pr-review を実行したときに使用。
ローカルにインストール済みの Codex CLI (OpenAI) を使って、別 LLM からのコードレビュー・セカンドオピニオン・意見交換を取得する。Claude が書いたコードに対して「別モデルの目」を入れたいとき、設計判断で複数モデルの見解を突き合わせたいとき、`codex` / `/codex` と言われたときに使用。
| name | resolve-ci |
| description | PRのCIが失敗している原因を調査し、報告・修正する。PR番号・URLを受け取るか、現在のブランチのPRを対象とする。ユーザーが「CI修正」「CI直して」「ビルド失敗」と言ったとき、または /resolve-ci を実行したときに使用。 |
PRの失敗しているCIジョブを調査し、原因を特定して修正する。
入力に応じてPRを特定する:
PR番号が指定された場合:
gh pr view <number> --json number,url,headRefName,baseRefName,title,state,statusCheckRollup
PR URLが指定された場合:
URLからオーナー・リポジトリ・PR番号を抽出する。
例: https://github.com/owner/repo/pull/123 → owner=owner, repo=repo, number=123
gh pr view <url> --json number,url,headRefName,baseRefName,title,state,statusCheckRollup
何も指定されていない場合:
現在のブランチのPRを対象とする:
# 現在のブランチのPRを確認
gh pr view --json number,url,headRefName,baseRefName,title,state,statusCheckRollup 2>/dev/null
# なければ最新のPRを取得
gh pr list --author "@me" --state open --limit 1 --json number,url,headRefName,baseRefName,title
PRが見つからない場合はユーザーに通知して終了する。
PRのブランチに切り替える(まだの場合):
CURRENT=$(git branch --show-current)
PR_BRANCH=<headRefName from Step 1>
if [ "$CURRENT" != "$PR_BRANCH" ]; then
# 未コミットの変更を先に確認する
git status --porcelain
# 変更がなければチェックアウト
git checkout "$PR_BRANCH"
git pull origin "$PR_BRANCH"
fi
重要: 未コミットの変更がある場合は、チェックアウトの前にユーザーに通知してスタッシュまたはコミットを提案する。
statusCheckRollup から失敗しているジョブを特定する:
# CIステータスの詳細を取得
gh pr checks <number> --json name,state,description,detailsUrl
各チェックの state を確認する:
FAILURE / ERROR → 調査対象SUCCESS → スキップPENDING / QUEUED → 実行中として報告失敗しているジョブがない場合は「全てのCIが成功しています」と通知して終了する。
失敗している各ジョブのログを取得する:
# GitHub Actions の場合: ワークフローランの一覧を取得
gh run list --branch <headRefName> --limit 5 --json databaseId,name,status,conclusion,headSha
# 失敗しているランのログを取得
gh run view <run-id> --log-failed
注意: --log-failed は失敗したステップのログのみを出力するため効率的。ログが長すぎる場合はBashで末尾を取得する:
gh run view <run-id> --log-failed 2>&1 | tail -200
複数のワークフローが失敗している場合は、それぞれのログを取得する。
外部CI(CircleCI, Jenkins等)で gh run が使えない場合は、detailsUrl をユーザーに提示して手動確認を依頼する。
各失敗ジョブのログを分析し、根本原因を特定する:
よくある失敗パターン:
| カテゴリ | 例 |
|---|---|
| ビルドエラー | TypeScript型エラー、コンパイルエラー、依存関係の問題 |
| テスト失敗 | ユニットテスト、E2Eテスト、スナップショットの不一致 |
| リント/フォーマット | ESLint違反、Prettier不一致、スタイルチェック |
| セキュリティ | 脆弱性スキャン、シークレット検出 |
| デプロイ | 環境変数の不足、権限エラー |
| インフラ | Flaky test、タイムアウト、リソース不足 |
各失敗について以下を判定する:
全失敗ジョブの分析結果をユーザーに提示する:
PR #<number>: <title>
CI Status: <passed>/<total> checks passed
--- 失敗しているジョブ (<count>件) ---
[1] <job-name> (FAILURE)
原因: <root cause description>
カテゴリ: <ビルドエラー|テスト失敗|リント|...>
修正可能性: <fixable|environment|flaky>
対応方針: <what will be changed>
該当ファイル: <file:line if applicable>
[2] ...
--- 実行中のジョブ (<count>件) ---
- <job-name> (PENDING)
--- 成功しているジョブ (<count>件) ---
- <job-name> (SUCCESS)
ユーザーの確認を得てから次のステップに進む。
ただし、以下の「軽微な修正」に該当する場合は確認不要で即座に修正・コミットに進む:
--fix で解決するもの)修正可能(fixable)と判定された失敗に対して、コード修正を適用する:
修正パターン別の対応:
ビルドエラー(TypeScript):
テスト失敗:
リント/フォーマット:
# 例: プロジェクトに応じて適切なコマンドを選択
npm run lint -- --fix
npm run format
npx prettier --write <files>
環境依存・flaky の場合:
gh run rerun <run-id> --failed
修正が正しいことをローカルで確認する:
# 変更内容を確認
git diff
# プロジェクトのビルド・テスト・リントを実行(該当するもの)
# package.json の scripts を確認して適切なコマンドを選択する
ローカルで同じエラーが再現・解消されることを確認する。問題がある場合は追加修正する。
変更をコミットしてプッシュする:
# 修正ファイルを個別にステージング
git add <file1> <file2> ...
# コミット
git commit -m "<type>: CI失敗を修正 @<branch-name>"
# プッシュ
git push origin <branch-name>
コミットメッセージの <type> は修正内容に応じて選択する:
fixteststylefixプッシュ後、CIの再実行状況を約2分おきに監視する。全ジョブが完了するまで繰り返す:
# 約2分おきにCIステータスを確認(全ジョブ完了まで繰り返す)
gh pr checks <number>
監視ループ:
gh pr checks <number> でステータスを確認するPENDING / QUEUED / IN_PROGRESS のジョブがある場合:
3/5 passed, 2 in progress...)再失敗時の対応:
修正後のCIで再び失敗が発生した場合:
このサイクルを全CIが成功するまで繰り返す。
最終結果をユーザーに報告する:
--- CI修正完了 ---
PR: #<number> <title>
修正コミット: <commit hash>
修正した失敗: <count>件
環境依存(未修正): <count>件
最終CIステータス: <all passed / N failed>
PR URL: <url>
ユーザーへの報告は、ユーザーの言語に合わせる:
コミットメッセージの記述言語は、リポジトリの既存コミット履歴に従う。
git add -A や git add . は使用しないgit push --force は絶対に使用しない.github/workflows/*.yml等)の変更は慎重に行い、必ずユーザーに確認するユーザー: /resolve-ci 42
1. gh pr view 42 → PR #42: feat: add user authentication
2. ブランチ feat/add-user-auth にチェックアウト
3. gh pr checks 42 → 2件失敗
- "Build" (FAILURE)
- "Lint" (FAILURE)
4. gh run view <id> --log-failed → ログ取得
5. 分析結果を提示:
[1] Build - TypeScript型エラー src/auth.ts:15
[2] Lint - ESLint unused-vars src/utils.ts:30
6. ユーザー確認 → 承認
7. src/auth.ts と src/utils.ts を修正
8. ローカルでビルド・リント確認
9. git add src/auth.ts src/utils.ts && git commit && git push
10. CI再実行中 → PR URL表示
ユーザー: /resolve-ci 55
1. gh pr view 55 → PR #55
2. gh pr checks 55 → 1件失敗
- "E2E Tests" (FAILURE)
3. ログ分析 → タイムアウトエラー、コード起因ではない
4. 分析結果を提示:
[1] E2E Tests - flaky (タイムアウト)
→ 再実行を提案
5. ユーザー確認 → 再実行
6. gh run rerun <id> --failed
7. 再実行中 → URL表示
ユーザー: /resolve-ci 70
1. gh pr view 70 → PR #70
2. gh pr checks 70 → 1件失敗
- "Deploy Preview" (FAILURE)
3. ログ分析 → 環境変数 DATABASE_URL が未設定
4. 分析結果を提示:
[1] Deploy Preview - environment (DATABASE_URL missing)
→ コード修正では解決不可。CI/CDの環境変数設定が必要
5. ユーザーに設定変更を案内して終了
ユーザー: /resolve-ci 42
1. gh pr view 42 → PR #42
2. gh pr checks 42 → 全てSUCCESS
3. 「全てのCIが成功しています。」と通知して終了