【運用効率化】Claude Code GitHub ActionsのカスタムプロンプトをReusable Workflowで一元管理する仕組
こんにちは、atama plusでエンジニアをしているこっきーです。
この記事はatama plus Advent Calendar 2025の記事です。
はじめに
Claude Code GitHub Actionsにより、コードレビューやドキュメント生成を自動化できます。
しかし、プロンプトやアクション設定を各リポジトリごとに持つと、更新や管理が煩雑になりがちです。
そこで本記事では、カスタムプロンプトや設定をReusable Workflowで一元管理する方法 を紹介します。
組織内での運用標準化にも有効な手法です。
Claude Code GitHub Actionsとは?
Claude Code GitHub Actionsは、GitHub上でClaude Codeが自動的にコーディング作業をするGitHub Actionsです。
任意のプルリクエストまたはissueで@claudeとメンションするだけで、Claudeがコードを分析し、プルリクエストの作成や機能の実装、バグの修正をします。
カスタムプロンプトを使用することで、ワークフロー固有の指示を提供できます。
課題:なぜ一元管理が必要か?
各リポジトリが独自にプロンプトやバージョン、発動条件を定義すると、次のような課題が生じます。
- 設定が分散し、統一が困難
- 変更時に全リポジトリへ反映する必要があり、更新コストが高い
- 複製による設定のズレや修正漏れが発生しやすい
特に生成AI活用では “プロンプト品質の統一” が重要であり、設定の集中管理 が求められます。
従来の実装例と課題
以下は、カスタムプロンプトを直接ワークフローに書く従来の実装例です。
name: Claude Comment Review
on:
pull_request_review_comment:
types: [created]
jobs:
claude-comment-review:
if: contains(github.event.comment.body, '/trigger_phrase') # 発動条件
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1 # Claude Code Actionsのバージョン
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
trigger_phrase: "/trigger_phrase"
claude_args: | # プロンプト
--system-prompt "このプルリクエストをレビューし..."
この構成を複数リポジトリに複製すると、
- 発動条件
- プロンプト
- 使用するClaude Code Actionのバージョン
がリポジトリごとに散らばり、更新・管理が現実的ではありません。
Reusable Workflow とは?
Reusable Workflowは、共通処理を1つのワークフローにまとめ、各リポジトリのワークフローから uses: で呼び出せる仕組みです。
GitHub Actionsの “関数化” と考えると分かりやすいです。
Reusable Workflowによる解決方法
Reusable Workflowを共通リポジトリに配置し、各リポジトリはそれを呼び出す構成にします。
(1)共通リポジトリ側の例
# reusable.yml
name: Reusable Claude Comment Review
on:
workflow_call: # Reusable Workflowに設定
inputs:
trigger_phrase:
type: string
default: "/trigger_phrase"
system_prompt:
type: string
default: |
このプルリクエストをレビューし、日本語でインラインフィードバックを提供してください。
allowed_tools:
type: string
default: "mcp__github__create_pending_pull_request_review,mcp__github__add_comment_to_pending_review"
jobs:
claude-comment-review:
# 発動条件
if: |
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, inputs.trigger_phrase))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1 # Claude Code Actionsのバージョン
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
trigger_phrase: ${{ inputs.trigger_phrase }}
claude_args: | # プロンプト
--system-prompt "${{ inputs.system_prompt }}"
--allowedTools ${{ inputs.allowed_tools }}
(2)呼び出し側(各リポジトリ)
name: Claude Comment Review
on:
pull_request_review_comment:
types: [created]
jobs:
call-reusable-workflow:
uses: org/.github/workflows/reusable.yml@main
secrets: inherit
この構成により、プロンプトやバージョン、発動条件を 共通リポジトリ側だけ変更すれば全体に反映 できます。
実現できること・気をつけること
実現できること
- 設定の分散を防ぎ、更新コストを大幅に削減
- プロンプト品質の統一が容易
- デフォルトのプロンプトで品質を担保しつつ、呼び出し側でカスタマイズも可能
- 複製による設定ズレ・修正漏れを防止
- 組織全体でCI/CD基盤を標準化できる
気をつけること
- Reusable Workflow同士のネストは不可
- 呼び出し側の環境変数は自動で引き継がれない(inputsで渡す)
- secretsは
secrets: inheritで呼び出し側から渡す(但し、Organization secretsで組織全体での共有も可能) - 汎用化により、特定リポジトリ固有の要件には合わせにくくなる
まとめ
Claude Codeのカスタムプロンプトや発動条件、アクション設定をReusable Workflowに集約することで、運用コストを大きく削減できました。
特に生成AI活用ではプロンプトの統一管理が重要であり、今回の仕組みは組織的なAI活用の基盤としても有効です。
共通処理の標準化・資産化の一手として、ぜひ活用をご検討ください。
Discussion