Claude Code GitHub Action: gõ @claude trong PR để review, sửa bug, trả lời câu hỏi
Tóm tắt
anthropics/claude-code-action (MIT) đưa Claude Code vào GitHub: phản hồi khi được @claude, khi được assign issue, hoặc chạy theo prompt cố định trong workflow. Cài nhanh bằng lệnh /install-github-app trong Claude Code (cần quyền admin repo). Hỗ trợ API Anthropic, Bedrock, Vertex AI, Foundry.
Hãy tưởng tượng: trong một PR, bạn comment “@claude sửa lỗi TypeError trong component dashboard”, vài phút sau Claude đã push commit sửa lỗi lên đúng nhánh đó. Hoặc mỗi khi có PR mới, Claude tự review theo checklist của team và để lại comment trên từng dòng có vấn đề. Đó là Claude Code GitHub Actions — action anthropics/claude-code-action chạy Claude Code ngay trong workflow của repo.
Hai chế độ hoạt động
| Chế độ | Khi nào | Kết quả hiện ở đâu |
|---|---|---|
| Tương tác | Workflow không có input prompt; Claude chờ cụm kích hoạt (mặc định @claude) trong comment, review, hoặc tiêu đề/nội dung issue mới | Comment trên issue/PR, cập nhật dần khi làm |
| Tự động | Workflow có input prompt; chạy theo bất kỳ sự kiện GitHub nào, kể cả lịch cron | Log của workflow run (hoặc comment nếu prompt yêu cầu và có tool để đăng) |
Cài đặt
Cách nhanh
Cài GitHub CLI và đăng nhập (gh auth login), mở claude trong repo rồi chạy:
/install-github-app
Claude Code sẽ cài Claude GitHub App, lưu secret xác thực (ANTHROPIC_API_KEY cho API key, hoặc CLAUDE_CODE_OAUTH_TOKEN cho gói thuê bao), đẩy nhánh chứa file workflow và mở sẵn PR — bạn chỉ cần merge. Yêu cầu quyền admin repo; chỉ hỗ trợ repo trên github.com.
Cách thủ công
- Cài Claude GitHub App vào repo.
- Thêm secret
ANTHROPIC_API_KEY(key từ Claude Console), hoặcCLAUDE_CODE_OAUTH_TOKEN(tạo bằngclaude setup-token, dùng cho gói Pro/Max/Team/Enterprise). - Copy file
examples/claude.ymlcủa repo action vào.github/workflows/.
Workflow tối giản: trả lời khi được @claude
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write # cần cho xác thực mặc định qua GitHub App
actions: read # cho Claude đọc kết quả CI trên PR
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Sau khi merge, thử comment: @claude giải thích vì sao test này flaky, @claude triển khai tính năng theo mô tả issue.
Workflow review tự động mỗi PR
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"'
Cờ --comment khiến Claude đăng review lên PR (comment từng dòng, hoặc một comment tổng nếu không thấy vấn đề). Claude bỏ qua PR nháp, PR đã đóng, PR quá nhỏ/tự động, và PR đã có comment của Claude.
Chạy theo lịch
on:
schedule:
- cron: "0 9 * * *" # 9h UTC mỗi ngày
...
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Tóm tắt commit hôm qua và các issue đang mở"
claude_args: |
--allowedTools "mcp__github__list_commits,mcp__github__list_issues"
Ở chế độ tự động với prompt thường, Claude không có quyền shell hay GitHub API cho tới khi bạn cấp tool qua --allowedTools. GitHub chỉ chạy workflow lịch trên nhánh mặc định, và với repo public sẽ tắt lịch sau 60 ngày không có hoạt động.
Tham số hay dùng
| Tham số | Ý nghĩa |
|---|---|
prompt | Chỉ dẫn (văn bản hoặc gọi skill); có thì chạy chế độ tự động |
claude_args | Cờ CLI: --max-turns, --model, --allowedTools, --mcp-config… |
trigger_phrase | Đổi cụm kích hoạt, mặc định @claude |
settings | Settings Claude Code dạng JSON hoặc đường dẫn file |
use_bedrock / use_vertex / use_foundry | Chạy qua AWS, Google Cloud, Microsoft Foundry với xác thực OIDC — không lưu credential tĩnh |
Ai được kích hoạt?
- Với sự kiện issue/PR, người kích hoạt phải có quyền write trên repo (có thể mở thêm bằng
allowed_non_write_users). - Bot bị từ chối trừ khi có trong
allowed_bots— tránh vòng lặp bot gọi bot. - Với repo public, GitHub không cấp secret cho run từ PR của fork, nên review tự động chỉ chạy trên nhánh cùng repo.
Chi phí và an toàn
- Mỗi lần chạy tốn phút GitHub Actions và token API (hoặc hạn mức thuê bao nếu dùng OAuth token).
- Giảm chi phí: comment yêu cầu cụ thể, CLAUDE.md ngắn gọn (được đọc mỗi lần chạy), đặt
--max-turns, timeout cho workflow, giới hạn số run song song. - Không bao giờ commit key — luôn để trong GitHub Secrets; cấp cho workflow quyền tối thiểu; luôn review thay đổi của Claude trước khi merge.
- Muốn tổ chức không lưu secret dài hạn: dùng workload identity federation (OIDC) với service account trong Claude Console.
Áp dụng thế nào?
- Dev: Bắt đầu với chế độ
@claude— chỉ chạy khi gọi, dễ kiểm soát chi phí. Dùng để trả lời câu hỏi về code và sửa bug nhỏ. - Tech Lead: Viết checklist review vào CLAUDE.md, bật workflow review tự động cho PR từ nhánh nội bộ. Theo dõi chi phí tuần đầu rồi điều chỉnh
--max-turns. - PM: Workflow lịch 9h sáng tóm tắt commit và issue hôm qua — báo cáo tự động trong log hoặc kênh team, không cần ai ngồi tổng hợp.
Nguồn & tham khảo
- Claude Code GitHub Actions — Claude Code Docs
- anthropics/claude-code-action — GitHub