mcpField
W
watch-ci

watch-ci

github.com/codervisorクラウド・DevOps30040 回インストール23 週間前に更新
リポジトリ

watch-ci について

codervisor/leanspec リポジトリの現在の HEAD コミットに対する GitHub Actions CI を監視するスキルです。curl で GitHub REST API を呼び出し、該当する実行を特定してジョブを追跡し、失敗ログを取得します。

主な機能

  1. 01コミット SHA でワークフロー実行を特定
  2. 02完了までジョブ状態をポーリング
  3. 03失敗したジョブのログを取得
  4. 04全体とジョブ別の結果を報告

活用シーン

  1. 01現在のブランチのコミットの CI を追跡
  2. 02Node.js と Rust のジョブ完了を待機
  3. 03失敗したジョブのステップとログを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/codervisor/leanspec --skill watch-ci

インストール後、Claude Code で/watch-ciを入力して読み込まれたか確認します。

詳細

CI の監視

すべてのジョブが完了するまで、現在の HEAD コミットの GitHub Actions CI パイプラインをポーリングします。

環境

Claude VM では gh CLI を利用できません。curl 経由で GitHub REST API を使用してください。 リポジトリは codervisor/leanspec です。

手順

  1. 現在のコミット SHA とブランチを取得します:

    SHA=$(git rev-parse HEAD)
    BRANCH=$(git branch --show-current)
    echo "Watching CI for commit $SHA on branch $BRANCH"
    
  2. 正確に同じコミットに一致するワークフロー実行を探します。API は実行を新しい順に返すため、head_sha で絞り込みます。実行がまだ表示されない場合(GitHub では数秒かかることがあります)は、10 秒待って最大 5 回再試行します:

    curl -sH "Accept: application/vnd.github+json" \
      "https://api.github.com/repos/codervisor/lean-spec/actions/runs?branch=$BRANCH&head_sha=$SHA&per_page=1" \
      | python3 -c "
    import json, sys
    data = json.load(sys.stdin)
    runs = data.get('workflow_runs', [])
    if not runs:
        print('NO_RUNS'); sys.exit()
    r = runs[0]
    print(f'RUN_ID={r[\"id\"]}')
    print(f'Status: {r[\"status\"]}  Conclusion: {r.get(\"conclusion\") or \"pending\"}  Commit: {r[\"head_sha\"][:8]}')"
    
  3. すべてのジョブが完了するまで、ジョブをポーリングします(Rust のビルドには約 8~10 分かかるため、60 秒ごとに確認します):

    curl -sH "Accept: application/vnd.github+json" \
      "https://api.github.com/repos/codervisor/lean-spec/actions/runs/$RUN_ID/jobs" \
      | python3 -c "
    import json, sys
    data = json.load(sys.stdin)
    for j in data.get('jobs', []):
        steps = [s for s in j.get('steps', []) if s['status'] == 'in_progress']
        step_info = f' -> {steps[0][\"name\"]}' if steps else ''
        print(f'{j[\"name\"]:40}  {j[\"status\"]:12}  {j.get(\"conclusion\") or \"\"}{step_info}')"
    
  4. 失敗した場合は、原因を調査するために失敗したジョブのログを取得します:

    curl -sH "Accept: application/vnd.github+json" \
      "https://api.github.com/repos/codervisor/lean-spec/actions/runs/$RUN_ID/jobs" \
      | python3 -c "
    import json, sys
    data = json.load(sys.stdin)
    for j in data.get('jobs', []):
        if j.get('conclusion') == 'failure':
            print(f'FAILED: {j[\"name\"]} (id: {j[\"id\"]})')
            for s in j.get('steps', []):
                if s.get('conclusion') == 'failure':
                    print(f'  Step: {s[\"name\"]}')"
    

CI の構成

  • node(約 2 分):pnpm のインストール、ビルド、型チェック、テスト
  • rust(約 8~10 分、node に依存):cargo fmt、clippy、ビルド、テスト、TS バインディングのエクスポート

報告

各ポーリングのサイクルで、ユーザーに簡潔な状況を報告します。完了したら、以下を要約します:

  • 全体の結果(成功/失敗)
  • ジョブごとの結果
  • 失敗した場合:失敗したステップと関連するエラー出力

コメント