CI/CD 統合:パイプラインへの Claude Code 導入
GitHub Actions と GitLab CI/CD に Claude Code を統合。PR レビュー、Issue 実装、セキュリティ監査、ドキュメント更新を開発パイプラインで自動化する方法を解説します。
2026年10月21日更新: 本ガイドはこれまで
claude code reviewや/github-action-setupといった実在しない CLI コマンドを使っていました。現在はすべてのワークフローを実際の統合方法で書き直しています:公式のanthropics/claude-code-action@v1GitHub Action、Anthropic ドキュメントの GitLab CI/CD ジョブ、そしてヘッドレスのclaude -p実行です。あわせて、v2.1.302 以降-p実行が Manual モードで始まる点、--permission-prompts none、現行モデルも反映しました。
Claude Code はローカル開発だけのツールではありません。CI/CD パイプラインに統合すれば、PR レビュー、Issue の実装、セキュリティ監査などを自動化できます。
このガイドでは、GitHub Actions と GitLab CI/CD の統合パターンを解説します。
なぜ CI/CD 統合なのか?
従来の CI/CD:
└── テストを実行
└── lint を実行
└── デプロイ(通過した場合)
Claude Code を加えると:
└── テストを実行
└── lint を実行
└── AI によるコードレビュー
└── 自動セキュリティ監査
└── ドキュメント同期チェック
└── Issue の自動トリアージ
└── Issue からの機能実装
└── デプロイ(すべて通過した場合)
どの統合を使うか
| やりたいこと | 使うもの |
|---|---|
@claude メンションと Issue から PR までの作業 | Claude Code GitHub Action(anthropics/claude-code-action@v1) |
| ワークフローファイルなしで全 PR を自動レビュー | Code Review(2026 年 10 月 15 日に Team・Enterprise 向けに GA) |
| 任意のパイプラインでの自作ステップ | ヘッドレスの claude -p |
| GitLab のパイプライン | GitLab CI/CD 統合(beta、GitLab が保守) |
GitHub Actions 統合
クイックセットアップ
連携したいリポジトリで、Claude Code 内から次を実行します。
/install-github-app
Claude Code が Claude GitHub App をインストールし、認証情報をリポジトリシークレット(API キーなら ANTHROPIC_API_KEY、claude setup-token で作るサブスクリプショントークンなら CLAUDE_CODE_OAUTH_TOKEN)として保存し、選択したワークフローファイルを含むブランチをプッシュして、マージ用のプルリクエストを開きます。対象は github.com のリポジトリのみで、管理者権限と、gh auth login で認証済みの GitHub CLI が必要です。
手動で設定する場合は、Claude GitHub App をインストールし、シークレットを自分で追加して、examples/claude.yml を .github/workflows/ にコピーします。
PR 自動レビューのワークフロー
この action はバンドルされた code-review プラグインを実行し、指摘をインラインコメントとして投稿します。
# .github/workflows/claude-code-review.yml
name: Code Review
on:
pull_request:
types: [opened, synchronize, ready_for_review, reopened]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
レビューの出力先を決めるのは次の 2 行です。
--comment:レビューを PR に投稿します。指摘ごとにインラインコメント、指摘がなければ 1 件のサマリーコメントになります。付けない場合、結果はワークフローの実行ログに残るだけです。claude_args:インラインコメント用のツールを明示する必要があります。--allowedToolsに列挙されたときだけ、action がその MCP サーバーを起動するためです。
Claude はドラフトやクローズ済みの PR、レビューが不要と判断した PR、すでに自分がコメント済みの PR をスキップします。公開リポジトリでは fork からの PR にシークレットが渡されないため、レビューは同一リポジトリのブランチでのみ実行されます。
より深いマルチエージェントのレビューが必要なら、別ジョブで claude ultrareview <pr> を実行するか、ワークフローファイル不要のホスト型 Code Review を使います。
Issue 自動トリアージのワークフロー
prompt を渡すと action は自動化モードになり、@claude メンションを待たずに実行されます。
# .github/workflows/claude-issue-triage.yml
name: Claude Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Read issue #${{ github.event.issue.number }} in ${{ github.repository }}.
Decide which existing labels apply, estimate complexity as low, medium, or high,
and add the labels with a short comment explaining the triage.
claude_args: |
--model claude-sonnet-5-5
--max-turns 10
--allowedTools "Bash(gh issue view *),Bash(gh issue edit *),Bash(gh issue comment *),Bash(gh label list *)"
自動化モードでは、権限を与えるまで Claude はシェルも GitHub API も使えません。--allowedTools にツールを列挙するか、settings 入力で permissions.allow ルールを設定します。ここでは GitHub ホストランナーに含まれる gh コマンドをスコープ付きで許可しています。読み取り専用のステップでは、action のドキュメントに載っている GitHub MCP ツール(mcp__github__list_issues や mcp__github__list_commits など)も同じように使えます。
Issue 自動実装のワークフロー
# .github/workflows/claude-implement-issue.yml
name: Claude Implement Issue
on:
issues:
types: [labeled]
jobs:
implement:
if: github.event.label.name == 'claude-implement'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- run: npm ci
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Implement issue #${{ github.event.issue.number }} on a new branch,
run the test suite, and open a pull request that closes the issue.
claude_args: |
--model claude-opus-5-5
--max-turns 40
--allowedTools "Bash,Read,Edit"
この action は既定で Claude GitHub App として認証するため、プッシュしたコミットは他のワークフローを正しくトリガーします。github_token: ${{ secrets.GITHUB_TOKEN }} を渡すと GitHub はそれらをトリガーしないので、その行を外すか、カスタム App のトークンを使ってください。
ドキュメント同期チェック
# .github/workflows/claude-doc-check.yml
name: Documentation Sync Check
on:
pull_request:
paths:
- 'src/api/**'
- 'src/lib/**'
jobs:
doc-check:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Compare the API changes in this pull request with docs/ and README.md.
If documentation is missing or now wrong, post one PR comment listing
exactly what to update. If the docs are in sync, say so and stop.
claude_args: |
--max-turns 15
--allowedTools "Bash(git diff *),Read,Glob,Grep,Bash(gh pr comment *)"
GitLab CI/CD 統合
Claude Code の GitLab CI/CD 統合は beta で、GitLab が保守しています。セットアップ用のスラッシュコマンドはなく、マスクした CI/CD 変数とジョブを 1 つ追加するだけです。
クイックセットアップ
- Settings → CI/CD → Variables でマスク変数
ANTHROPIC_API_KEYを追加します。 .gitlab-ci.ymlに Claude ジョブを追加します。
GitLab CI の設定
# .gitlab-ci.yml
stages:
- ai
claude:
stage: ai
image: node:24-alpine3.21
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
variables:
GIT_STRATEGY: fetch
before_script:
- apk update
- apk add --no-cache git curl bash
- curl -fsSL https://claude.ai/install.sh | bash
# インストーラーは claude を ~/.local/bin に置くが、この image では PATH に含まれない
- export PATH="$HOME/.local/bin:$PATH"
script:
# 任意:環境が GitLab MCP サーバーを提供している場合は起動する
- /bin/gitlab-mcp-server || true
# AI_FLOW_* 変数は context ペイロード付きの web/API トリガーから渡される
- echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"
- >
claude
-p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"
--permission-mode acceptEdits
--allowedTools "Bash Read Edit Write mcp__gitlab"
--debug
2 つ目のジョブでは、何も投稿せず、指摘があればパイプラインを失敗させるレビューを実行できます。
claude-review:
stage: ai
image: node:24-alpine3.21
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
before_script:
- apk add --no-cache git curl bash jq
- curl -fsSL https://claude.ai/install.sh | bash
- export PATH="$HOME/.local/bin:$PATH"
script:
- >
claude -p "/code-review high"
--permission-mode dontAsk
--output-format json > review.json
- jq -r '.result' review.json
artifacts:
when: always
paths:
- review.json
GitLab でのメンション対応
GitLab には @claude の組み込みトリガーがありません。メンションに応答させるには、Comments (notes) のプロジェクト Webhook を自前のリスナーに向け、コメントに @claude が含まれるときに AI_FLOW_INPUT と AI_FLOW_CONTEXT を付けて GitLab のパイプライントリガー API を呼び出します。上記のジョブはこれらの変数をすでに読み取ります。
API プロバイダーの選択肢
Anthropic API(直接)
# GitHub Action の入力
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# または `claude setup-token` で作る Claude サブスクリプションのトークン
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
長期シークレットを保存したくない場合は、anthropic_federation_rule_id と anthropic_organization_id の入力で workload identity federation を使い、ジョブに id-token: write 権限を与えます。
Amazon Bedrock
# GitHub Action:自社の AWS アカウント経由で推論する
with:
use_bedrock: "true"
# ヘッドレス実行では環境変数で設定する
env:
CLAUDE_CODE_USE_BEDROCK: "1"
AWS_REGION: us-east-1
Google Cloud’s Agent Platform
# GitHub Action
with:
use_vertex: "true"
# ヘッドレス実行
env:
CLAUDE_CODE_USE_VERTEX: "1"
CLOUD_ML_REGION: global
ANTHROPIC_VERTEX_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
Microsoft Foundry は use_foundry: "true" と CLAUDE_CODE_USE_FOUNDRY=1 を使います。3 つのプロバイダーいずれも OIDC の ID フェデレーションで認証するため、静的なクラウド認証情報をリポジトリに置く必要はありません。設定方法はクラウドプロバイダーのドキュメントを参照してください。
ワークフローパターン
パターン 1:ラベルでレビューの深さを変える
/code-review は effort レベルを受け取るので、PR にラベルが付いたときだけ深くレビューさせられます。
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: >
/code-review:code-review
${{ contains(github.event.pull_request.labels.*.name, 'security') && 'xhigh' || 'medium' }}
--comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
パターン 2:機密パスのセキュリティレビュー
jobs:
security:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Check for sensitive paths
id: paths
run: |
if git diff --name-only origin/${{ github.base_ref }}... | grep -E 'auth/|payment/|admin/'; then
echo "sensitive=true" >> $GITHUB_OUTPUT
fi
- if: steps.paths.outputs.sensitive == 'true'
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "/security-review"
claude_args: '--model claude-opus-5-5 --effort high'
パターン 3:Issue から PR までのパイプライン
name: Issue Implementation Pipeline
on:
issues:
types: [labeled]
jobs:
triage:
if: github.event.label.name == 'auto-implement'
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Read issue #${{ github.event.issue.number }} and label it
complexity:low, complexity:medium, or complexity:high.
claude_args: '--allowedTools "Bash(gh issue view *),Bash(gh issue edit *)"'
implement:
needs: triage
if: "!contains(github.event.issue.labels.*.name, 'complexity:high')"
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Implement issue #${{ github.event.issue.number }} and open a pull request."
claude_args: '--max-turns 40 --allowedTools "Bash,Read,Edit"'
複雑度の高い Issue は人が担当します。モデルの指定はジョブごとに推測させず、claude_args に明示してください。
セキュリティ上の考慮点
シークレット管理
# キーをコミットしない。常にリポジトリまたは組織のシークレットを参照する
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# 設定場所:Settings > Secrets and variables > Actions
claude setup-token の OAuth トークンは個人のサブスクリプションに紐づくため、組織で共有するシークレットには Claude Console の API キーか、シークレットを保存しない workload identity federation を使います。
権限のスコープ
# 必要最小限の権限。action の既定の GitHub App 認証には id-token: write が必要
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
# permissions: write-all は使わない
この action はトリガーしたアクターも検査します。issue と PR のイベントではユーザーに書き込み権限が必要で(権限がない人を許可するには allowed_non_write_users を設定し、自分の github_token を渡します)、bot は allowed_bots に列挙しない限り拒否されます。このチェックはスケジュール実行にも適用されます。GitHub がスケジュール実行をリポジトリのユーザーに帰属させるためです。
ヘッドレス実行を締める
v2.1.302 以降、権限モードを指定しない claude -p と Agent SDK の実行は Manual モードで始まり、承認が必要な操作は黙って通るのではなく拒否されます。CI では明示しましょう。
# 厳密な許可リスト。それ以外は実行しない
claude -p "Run the test suite and summarize failures" \
--permission-mode dontAsk \
--allowedTools "Bash(npm test *),Read"
# 分類器がレビューし、プロンプトに答える人がいない自律実行
claude -p "Update the dependency pins and run the tests" \
--permission-mode auto \
--permission-prompts none
--permission-prompts none(v2.1.259 以降)は、応答するホストがいないときに待たずに拒否します。さらに --bare を付けると、hooks、skills、plugins、MCP サーバー、CLAUDE.md の自動探索をスキップするため、同僚のローカル設定が CI の挙動を変えることはありません。共有マシン上の評価ハーネスでは、--restricted がコードを実行するツールと WebFetch を取り除き、ユーザー・プロジェクト・ローカルの設定を無視します。
監査ログ
steps:
- name: Review with a saved transcript
run: |
claude -p "/code-review high" \
--permission-mode dontAsk \
--output-format json > claude-review.json
- name: Upload the run record
if: always()
uses: actions/upload-artifact@v4
with:
name: claude-review
path: claude-review.json
組織全体で可視化するなら、ジョブごとにログを解析するのではなく、OpenTelemetry(CLAUDE_CODE_ENABLE_TELEMETRY=1)でメトリクスとイベントをエクスポートします。
コスト管理
タスクに応じたモデル選択
# claude_args の中でタスクに合わせてモデルを選ぶ
claude_args: >
--model ${{ contains(github.event.pull_request.labels.*.name, 'security')
&& 'claude-opus-5-5' || 'claude-sonnet-5-5' }}
Opus 5.5(入力/出力 100 万トークンあたり $4/$20)がデフォルトモデルです。日常のレビューには Sonnet 5.5($2/$10)、機械的なチェックには Haiku 5.5(100K トークン以下のプロンプトで $0.10/$0.50)が向きます。Opus 5.5、Sonnet 5.5、Haiku 5.5 のデフォルト effort は medium なので、まずは大きなモデルに乗り換えるより --effort を調整してください。
予算とターン数の上限
steps:
- name: Review with a spend cap
run: |
claude -p "/code-review" \
--permission-mode dontAsk \
--max-turns 20 \
--max-budget-usd 2.00
--max-budget-usd は、プリントモードの実行で推定支出が上限に達した時点で停止します。サブエージェントの支出も合算されます。上限を多少超えることがあるので余裕を持たせてください。--max-turns はエージェントのターン数を制限します。どちらもプリントモード専用で、GitHub Action では claude_args に書きます。
プロンプトキャッシュ
Claude Code はプロンプトを自動的にキャッシュし、キャッシュ読み取りは新規入力よりはるかに安価です(Opus 5.5 なら 100 万トークンあたり $0.20)。CLAUDE.md を簡潔に保ち、プロンプトを具体的に書いてターン数を減らし、GitHub の concurrency 制御で同じブランチの重複実行を避けると、効果が高まります。
出力フォーマット
PR のインラインコメント
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
出力:該当行へのインラインコメント。指摘がない場合は 1 件のサマリーコメントになります。
JSON
claude -p "/code-review" --permission-mode dontAsk --output-format json > review.json
ペイロードには最終的な result テキスト、total_cost_usd、モデルごとのコスト内訳、permission_denials が含まれます。後続のステップで分岐させましょう。
COST=$(jq -r '.total_cost_usd' review.json)
echo "Review cost: $COST USD"
スキーマによる構造化出力
後続のステップが機械可読なフィールドを必要とする場合は、実行結果を JSON Schema で検証します。
claude -p "List the blocking review findings" \
--permission-mode dontAsk \
--json-schema '{"type":"object","properties":{"blocking":{"type":"integer"}},"required":["blocking"]}'
ストリーミング
claude -p "Fix the failing tests" --output-format stream-json --include-partial-messages
長時間のジョブで、最後にまとめて出力するのではなくログで進捗を見たいときに便利です。
統合例
例 1:完全なレビューパイプライン
name: Complete PR Pipeline
on:
pull_request:
types: [opened, synchronize]
jobs:
# ステージ 1:クイックチェック
quick-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: npm ci
- run: npm run lint
- run: npm run typecheck
# ステージ 2:Claude レビュー(クイックチェック通過後のみ)
claude-review:
needs: quick-checks
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
# ステージ 3:ラベル付き PR のセキュリティレビュー
security-review:
needs: quick-checks
if: contains(github.event.pull_request.labels.*.name, 'needs-security-review')
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "/security-review"
claude_args: '--model claude-opus-5-5 --effort high'
# ステージ 4:テスト(Claude レビューと並行)
tests:
needs: quick-checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: npm ci
- run: npm test -- --coverage
例 2:夜間セキュリティスキャン
name: Nightly Security Scan
on:
schedule:
- cron: '0 2 * * *' # 毎日午前 2 時
jobs:
security-scan:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Audit this repository for security vulnerabilities introduced in the
last 24 hours of commits. If you find critical or high severity issues,
open one GitHub issue titled "Security scan findings" labeled
security,urgent, listing each finding with its severity and file.
If you find none, do nothing.
claude_args: |
--model claude-opus-5-5
--effort high
--max-turns 30
--allowedTools "Bash(git log *),Bash(git diff *),Read,Glob,Grep,Bash(gh issue create *)"
GitHub はスケジュールワークフローをデフォルトブランチからのみ実行し、公開リポジトリでは 60 日間活動がないと停止します。また実行はリポジトリのユーザーに帰属するため、それが bot なら allowed_bots に追加してください。
トラブルシューティング
Claude が @claude に応答しない
- Claude GitHub App がリポジトリにインストールされ、ワークフローが有効か確認する
- シークレットが存在し、渡している入力(
anthropic_api_keyかclaude_code_oauth_token)と一致するか確認する - コメントの
@claudeが完全な単語か確認する(/claudeや@claude-botでは動かない) - コメントしたユーザーにリポジトリの書き込み権限があるか確認する
Claude のコミットで CI が動かない
既定の GITHUB_TOKEN で作られたコミットでは GitHub はワークフローをトリガーしません。github_token: ${{ secrets.GITHUB_TOKEN }} を外して action を Claude GitHub App として認証させるか、カスタム App のトークンを渡してください。
認証エラー
# ワークフローをデバッグする前に、ローカルで認証情報を確認する
claude auth status --text
claude -p "say ok"
Bedrock、Agent Platform、Foundry についてはクラウドプロバイダーのトラブルシューティングを参照してください。
ヘッドレス実行でツール呼び出しが拒否される
権限モードを指定しない -p 実行は Manual モードで始まるため、承認されていない呼び出しは拒否されます。必要なツールを --allowedTools に追加するか、--permission-mode auto(分類器がレビュー)か dontAsk(許可リストのみ)を渡してください。--output-format stream-json では、拒否が permission_denied メッセージとして現れ、最終結果の permission_denials にも並びます。
大きな PR
- name: Review large PRs with a turn cap
run: |
claude -p "/code-review --max-findings 20" \
--permission-mode dontAsk \
--max-turns 30 \
--max-budget-usd 5.00
ベストプラクティス
1. 小さく始める
# まずはレビューだけ
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
# あとから追加:セキュリティレビュー、Issue トリアージ、実装
2. 基準は CLAUDE.md に書く
Claude は実行のたびにリポジトリの CLAUDE.md(CLAUDE.md がなければ AGENTS.md)を読みます。レビュー基準、コードスタイル、プロジェクトの慣習は各ワークフローのプロンプトで繰り返さず、そこに書きましょう。毎回トークンを消費するので簡潔に保ちます。
3. 期待値をそろえる
<!-- PR テンプレートに追加 -->
## AI レビューについて
この PR は Claude Code がレビューします。
指摘は提案です。最終判断は人が行ってください。
critical または high のセキュリティ指摘はマージ前に解消してください。
4. 使用量を監視する
実行ごとのコストは JSON 出力の total_cost_usd で追跡し、組織全体の使用量は場当たりなログではなく OpenTelemetry メトリクスと分析ダッシュボードで集計します。
はじめに
今日:
/install-github-appを実行する(GitHub)、または.gitlab-ci.ymlに Claude ジョブを追加する(GitLab)ANTHROPIC_API_KEYかCLAUDE_CODE_OAUTH_TOKENをシークレットに保存する- 1 つの PR で試す
今週:
- レビューのワークフローを追加し、effort レベルを調整する
- 機密パス向けのセキュリティレビューを追加する
- 各ジョブに
--max-turnsと--max-budget-usdを設定する
今月:
- Issue のトリアージと実装を追加する
- action とホスト型 Code Review のどちらをチームで使うか決める
- 使用量メトリクスをエクスポートしてコストを振り返る
CI/CD 統合は Claude Code を自動化フローに組み込みます。すべての PR が一貫した丁寧なレビューを受け、すべての Issue が自動でトリアージされ、チームは本当に重要なことに集中できます。
参考資料:
- Claude Code GitHub Actions - 公式 action と入力パラメーター
- Claude Code GitLab CI/CD - GitLab が保守する統合(beta)
- Claude Code をプログラムから実行する - ヘッドレスの
claude -p実行 - Code Review - Team・Enterprise 向けのホスト型 PR レビュー
- 権限モード - CI で各モードが許可するもの