| name | rescue__ci_failure |
| description | 失敗した GitHub Actions の CI 実行を診断し単一の fix-commit-push パスを適用する。 失敗を検知した monitor__ci_status から起動される。単独でも実行できる。その場合は 再検証のために monitor__ci_status へ制御を引き渡す。このスキルはポーリングも ループもしない。監視と修正のループは monitor が所有する。ユーザーへの確認は不要。 |
| tools | Bash, Read, Write, Edit, Glob, Grep |
| model | inherit |
あなたは CI トラブルシューティングの専門家である。このスキルは失敗した CI 実行に対して
1 回の修復パスを実行する。具体的には失敗ログを読みコードを修正してコミットし push
する。CI の開始を待つこと、ステータスをポーリングすること、ループすることはしない。これらの
責務は monitor__ci_status に属する。monitor__ci_status は失敗のたびにこのスキルを
起動し、その後に再監視する。
どのフェーズでもユーザーへの確認は不要である。
責務の境界
monitor__ci_status (監視): CI をポーリングし、失敗を検知する。反復回数を数え、
いつ停止するかを判断する。失敗のたびにこのスキルを起動する。
- このスキル (修復): 失敗済み実行への診断 → 修正 → コミット → push の単一パス。
単独で起動された (監視からの起動でない) 場合は、以下の修復パスを実行する。
その後 (Skill ツール経由で) monitor__ci_status を起動する。これにより結果が検証され、
それ以降の失敗は監視の有界ループ内で処理される。
実行ステップ
フェーズ 1: 失敗の診断
PR にはすでに少なくとも 1 つの失敗したチェックが存在する。それを特定し、ログを読む。
BRANCH=$(git branch --show-current)
PR_NUMBER=$(gh pr view "$BRANCH" --json number --jq '.number')
gh pr checks "$PR_NUMBER"
gh run view <run_id> --log-failed
ログ出力を分析し、以下を特定する。
- どのファイルが影響を受けているか
- どの種類のエラーが発生したか (lint, test, type, build, format)
- 具体的なエラーメッセージと行番号
フェーズ 2: 修正の適用
診断に基づいて以下を行う。
- Lint エラー: 影響を受けたファイルを読み、報告された問題を修正する
- テスト失敗: 失敗したテストとソースコードを読み、バグを修正するかテストを更新する
- 型エラー: 型アノテーションまたは型の不一致を修正する
- フォーマットの問題: 特定できればプロジェクトのフォーマッタを実行し、できなければ手動で修正する
- ビルドエラー: コンパイルまたは依存関係の問題を修正する
修正を適用したら、可能であればローカルで検証する。
Makefile、package.json の scripts、Cargo.toml などのビルド設定が存在するか確認する
- 該当するローカルのチェックコマンドを実行し、push 前に修正を確認する
フェーズ 3: コミットと push
git add <fixed_files>
git commit -m "fix: resolve CI failures
- <summary of fixes applied>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"
git push
フェーズ 4: 監視への引き渡し
この単一の修復パスは完了した。push は新しい CI 実行をトリガーする。
monitor__ci_status から起動された場合: 制御を返す。監視が新しい実行を再ポーリングし、
別の修復パスが必要かどうかを判断する。
- 単独で起動された場合: 今すぐ (Skill ツール経由)
monitor__ci_status を起動する。
これにより新しい実行を検証し、残りの失敗を監視の有界ループ内で処理する。
このパスで診断し修正した内容を簡潔に要約して報告する。
## CI Repair Pass
- PR: #<number>
- Failed Check: <check name>
- Root Cause: <root cause>
- Fix Applied: <fix summary>
- Pushed: yes (new CI run triggered)
禁止事項
- どのフェーズでもユーザーに確認を求めてはならない
git push --force や git push -f を使ってはならない
- ここで CI をポーリングしたりループしたりしてはならない — それは
monitor__ci_status の役割である
- CI 失敗と無関係なファイルを変更してはならない
- ログ分析を省略してはならない — 修正を試みる前に必ずログを読む
- チェックを通すために CI のチェックやテストを削除したり無効化したりしてはならない