Skip to content

claude ultrareview: CI/スクリプトから非インタラクティブにコードレビューを実行

原文(日本語に翻訳)

claude ultrareview [target] サブコマンドを追加しました。CI やスクリプトから非インタラクティブに /ultrareview を実行できます。結果は stdout に出力され(--json でJSON形式の生出力)、完了時に終了コード 0、失敗時に 1 で終了します。

原文(英語)

Added claude ultrareview [target] subcommand to run /ultrareview non-interactively from CI or scripts — prints findings to stdout (--json for raw output) and exits 0 on completion or 1 on failure

概要

Claude Code v2.1.120 では、claude ultrareview サブコマンドが追加されました。これにより、インタラクティブなセッションを起動せずに CI パイプラインやスクリプトから直接 /ultrareview のマルチエージェントコードレビューを実行できます。レビュー結果は標準出力に表示され、--json フラグで機械可読な JSON 形式での出力も可能です。終了コードでレビューの成否を判定できるため、CI の品質ゲートとして組み込めます。

基本的な使い方

bash
# カレントブランチをレビュー
claude ultrareview

# 特定のターゲット(PR番号やブランチ名)をレビュー
claude ultrareview 123          # PR #123 をレビュー
claude ultrareview main..HEAD   # ブランチの差分をレビュー

# JSON 形式で出力
claude ultrareview --json

# 終了コードを利用した条件分岐
claude ultrareview && echo "Review passed" || echo "Review failed"

実践例

GitHub Actions での品質ゲート

yaml
# .github/workflows/code-review.yml
name: Automated Code Review

on:
  pull_request:
    branches: [main]

jobs:
  ultrareview:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Run ultrareview
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npm install -g @anthropic-ai/claude-code
          claude ultrareview ${{ github.event.pull_request.number }} \
            --json > review-results.json
          
      - name: Comment PR with review results
        uses: actions/github-script@v7
        with:
          script: |
            const results = require('./review-results.json');
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `## 自動コードレビュー結果\n${results.summary}`
            });

JSON 出力の解析

bash
# JSON 出力を jq で解析
claude ultrareview --json | jq '.findings[] | select(.severity == "critical")'

# 重大な問題がある場合にのみ失敗させる
REVIEW=$(claude ultrareview --json)
CRITICAL_COUNT=$(echo "$REVIEW" | jq '[.findings[] | select(.severity == "critical")] | length')

if [ "$CRITICAL_COUNT" -gt 0 ]; then
  echo "Critical issues found: $CRITICAL_COUNT"
  exit 1
fi

pre-commit フックとの連携

bash
#!/bin/bash
# .git/hooks/pre-push

echo "Running ultrareview before push..."
claude ultrareview

if [ $? -ne 0 ]; then
  echo "Code review failed. Fix issues before pushing."
  exit 1
fi

echo "Review passed. Proceeding with push."

レポートの自動生成

bash
#!/bin/bash
# weekly-review.sh

DATE=$(date +%Y-%m-%d)
REPORT_FILE="reviews/report-$DATE.md"

# 今週のすべての変更をレビュー
claude ultrareview main..develop > "$REPORT_FILE"

# Slack に通知
curl -X POST -H 'Content-type: application/json' \
  --data "{\"text\": \"週次コードレビュー完了: $REPORT_FILE\"}" \
  "$SLACK_WEBHOOK_URL"

注意点

  • claude ultrareview/ultrareview スキルを使用するため、適切な API キーが必要です
  • CI 環境では ANTHROPIC_API_KEY 環境変数を設定してください
  • レビューにはコストが発生します。大規模な変更のレビューは特に注意してください
  • --json フラグの出力形式は今後変わる可能性があります
  • 終了コード 0 = 完了(問題なし)、1 = 失敗(エラーまたは重大な問題あり)

関連情報