Mục tiêu học tập
Sau bài này, bạn sẽ có thể:- ✅ Tạo subagent code reviewer dùng chung toàn team, check vào repo để nhất quán
- ✅ Dùng skill /commit-push-pr để commit, push và tạo PR trong một bước duy nhất
- ✅ Link các session với —from-pr để tiếp tục công việc đúng điểm đã dừng
- ✅ Setup GitHub Actions integration và dùng tag @Claude trong PR comments để Claude tự fix
- ✅ Biết khi nào nên — và không nên — dùng @Claude để tránh over-delegation
Mở đầu: Khi bottleneck review làm chậm cả team
Hãy tưởng tượng một team 5 engineers ở một AI startup. Họ build nhanh — mỗi ngày đẩy 3-5 PR. Nhưng có một vấn đề: chỉ có hai engineer senior có thể review code đúng nghĩa. Và cả hai đều đang bận với feature của mình. Kết quả? Mỗi PR trung bình chờ 2-3 ngày trước khi được review lần đầu. Sau khi nhận feedback, engineer phải fix rồi chờ thêm 1-2 ngày review lần hai. Tổng thời gian từ push branch đến merge: 5-7 ngày cho một feature không phức tạp. Team bắt đầu chọn cách dễ hơn: merge PR mà không review kỹ. Kỹ thuật nợ tích lũy. Bug lọt vào production. Sau khi adopt subagent code reviewer cùng với GitHub Actions integration, bức tranh thay đổi hoàn toàn. Engineer push branch → subagent reviewer chạy ngay trên CI, comment lên PR trong vòng 3 phút — kiểm tra logic, security, style consistency. Engineer fix ngay trong cùng session. Human reviewer chỉ cần approve architectural decisions. Time-to-merge giảm từ 5-7 ngày xuống còn 4-6 giờ. Và khi cần fix PR theo comment của reviewer? Không còn phải “nhớ lại” mình đang làm đến đâu. Chỉ cần:Subagent Code Reviewer
Tại sao cần subagent riêng cho review?
Khi Claude vừa viết code xong trong một session dài, nó mang theo bias của người vừa code. Giống như tác giả tự proofreading bài viết của mình — bạn thường không thấy lỗi vì não bộ đọc những gì định viết, không phải những gì thực sự viết. Subagent code reviewer giải quyết vấn đề này bằng cách chạy trong context window riêng — hoàn toàn fresh, không biết session code vừa làm, không có bias “tôi vừa viết cái này nên nó chắc đúng rồi.”Tạo subagent reviewer qua /agents
Gõ /agents trong Claude Code session để mở agent manager. Tạo agent mới với config như sau: Tên: code-reviewer Prompt:- bash — chỉ cho git diff, cat, ls (không cho write commands)
- grep / glob — search codebase
- KHÔNG có edit, KHÔNG có write
Check subagent vào repo
Sau khi tạo, subagent config được lưu tại:Gọi reviewer trước khi push
Trước khi chạy /commit-push-pr, gọi reviewer:Bảng so sánh: Subagent Reviewer vs Human Reviewer vs Lint/CI
| Tiêu chí | Subagent Reviewer | Human Reviewer | Lint/CI |
|---|---|---|---|
| Tốc độ | 2-5 phút | 2-3 ngày (trung bình) | 30 giây |
| Độ sâu feedback | Cao — logic, security, context | Rất cao — architectural, business logic | Thấp — syntax, formatting |
| Hiểu business logic | Trung bình (đọc code + comments) | Cao (hiểu product context) | Không |
| Style consistency | Cao (theo CLAUDE.md) | Phụ thuộc reviewer | Cao (theo ruleset cố định) |
| Security check | Khá tốt — biết common patterns | Tốt nếu reviewer có kinh nghiệm | Chỉ với security linter |
| False positive rate | Trung bình (đôi khi over-cautious) | Thấp | Thấp (deterministic) |
| Cost | Token cost (~vài cent/review) | Thời gian engineer senior | Gần như 0 (CI minutes) |
| Ideal use case | First pass — catch obvious issues trước human | Architectural decisions, business logic, final approval | Style enforcement, breaking changes |
| Hoạt động khi nào | On-demand hoặc pre-push | Synchronous — cần người available | Mỗi push (automatic) |
| Bias | Fresh context — không bias | Có thể bị “rubber stamp” khi bận | Không có bias |
Skill /commit-push-pr
Vấn đề với workflow thủ công
Sau khi code xong và reviewer approve, phần “plumbing” vẫn tốn thời gian:/commit-push-pr làm gì
Skill này wrap toàn bộ flow vào một bước:- Review diff — xem toàn bộ changes để hiểu scope
- Tạo commit message — theo conventional commits format (feat/fix/chore/refactor…), có body mô tả tại sao thay vì chỉ cái gì
- Stage và commit — chỉ stage files liên quan (không git add . cẩu thả)
- Push lên remote — đúng branch name, không cần nhớ
- Tạo PR — title, description đầy đủ, link issues liên quan nếu có
- Post Slack (nếu có cấu hình) — tự động post PR link vào channel team
Tích hợp Slack tự động
Nếu bạn có Slack MCP server và khai báo channel trong CLAUDE.md project:So sánh thực tế
| Cách thủ công | /commit-push-pr | |
|---|---|---|
| Thời gian | 5-10 phút | 20-30 giây |
| Commit message quality | Phụ thuộc tâm trạng | Consistent, conventional |
| PR description | Thường thiếu | Đầy đủ context |
| Slack notification | Thường quên | Tự động |
| Lỗi do gõ nhầm | Thỉnh thoảng | Không có |
Session linking với —from-pr
Vấn đề: Mất context khi quay lại PR cũ
Bạn làm feature, push PR, đi ăn trưa. Teammate review và comment 8 điểm cần sửa. Sáng hôm sau bạn mở terminal, mở PR — và phải “nhớ lại” từ đầu: file nào đang sửa, decision nào đã làm, edge case nào đã thảo luận. Nếu dùng Claude trong session cũ, session đó đã đóng. Context đã mất.—from-pr giải quyết thế nào
Khi Claude tạo PR qua gh pr create (thông qua /commit-push-pr hoặc thủ công trong session Claude), session đó được auto-link với PR number. Khi bạn muốn quay lại:- Fetch PR #247 từ GitHub
- Load diff, description, comments
- Đọc conversation history được link với PR đó
- Resume đúng context — biết bạn đang implement gì, decision nào đã làm, reviewer comment gì
Use cases thực tế
Use case 1: Address review comments
Use case 2: Fix CI failures sau vài ngày
Use case 3: Add reviewer’s requested feature
GitHub Actions Integration
Setup với /install github-action
Đây là tính năng mạnh nhất — cho phép Claude hoạt động ngay trong GitHub PR, không cần mở terminal.- Repository nào? (tự detect nếu đang trong git repo)
- Trigger khi nào? (PR comments / issue assignments / PR reviews)
- Permissions? (read repo + write PRs/commits)
Cách @Claude hoạt động trong PR comments
Sau khi setup, bất kỳ ai trong team có thể tag @claude trong PR comment:- Đọc toàn bộ PR context
- Tìm UserForm.tsx và code liên quan
- Implement validation (dùng existing pattern trong codebase nếu có)
- Tạo commit thêm vào PR branch hiện tại
- Reply vào comment: “Done — added email validation using validator.js (consistent with ProfileForm.tsx line 44)“
Scope capability của GitHub Actions Claude
Claude trong GitHub Actions có thể làm gì?| Capability | Có | Không |
|---|---|---|
| Đọc code trong repo | ✅ | |
| Tạo PR từ issue | ✅ | |
| Thêm commits vào PR existing | ✅ | |
| Trả lời câu hỏi trong comments | ✅ | |
| Review code và comment | ✅ | |
| Merge PR | ❌ | |
| Delete branch | ❌ | |
| Thay đổi repo settings | ❌ | |
| Access private secrets (ngoài những gì được configure) | ❌ |
Live demo: Quiz App từ GitHub Issues
Đây là demo thực từ Anthropic team. Họ có một Quiz app với hai issues mở: Issue #12: “Add 50/50 power-up — remove two wrong answers”Issue #13: “Add per-question timer — 30 seconds countdown” Thay vì assign cho engineer, họ tag @claude vào cả hai issues. Claude:- Đọc codebase Quiz app
- Hiểu component structure
- Tạo PR cho mỗi issue (hai PR riêng biệt, tách bạch)
- Implement FiftyFiftyPowerUp component + hook vào game state
- Implement QuestionTimer với countdown và auto-submit
- Tự viết tests cho cả hai
- Request review từ maintainer
Ví dụ thực chiến: Full code review workflow trên team 5 engineers
Setup ban đầu (một lần)
Workflow hàng ngày
Bước 1: Engineer A hoàn thành feature
Bước 2: Engineer A fix ngay trong session
Bước 3: Push và tạo PR
Bước 4: Engineer B review trên GitHub
Engineer B thấy PR, đọc description, xem diff. Comment 2 điểm:Bước 5: Claude auto-fix cả hai
Claude đọc comments, implement trong 4 phút, thêm commits vào PR branch.Bước 6: Engineer B approve
Nhìn vào 2 commits mới, verify đúng, approve. Kết quả:Case studies theo role
Indie hacker (1 người)
Tình huống: Bạn build SaaS solo. Không có teammate review. Mỗi PR là bạn review chính mình — vừa thiếu “second pair of eyes”, vừa tốn thời gian. Cách dùng:- Subagent reviewer = “second pair of eyes” thực sự — fresh context, không biết “ý định” của bạn khi code
- /commit-push-pr sau mỗi feature: ship trong 5 phút, không loay hoay với git commands
- GitHub Actions: @claude add unit tests for the payment webhook handler khi review PR của chính mình sau ngủ dậy
Engineering team (5+ người)
Tình huống: Senior engineers là bottleneck review. Junior PR chờ 2-3 ngày. Cách dùng:- Subagent reviewer là mandatory first pass trên CI — PR chỉ ready-for-human-review khi reviewer không còn CRITICAL/WARNING issues
- Human reviewer chỉ focus vào: architectural decisions, business logic correctness, code ownership questions
- @claude cho mechanical fixes (formatting, missing tests, error handling)
Open source maintainer
Tình huống: Hàng chục contributor PRs mỗi tuần. Maintainer không thể review tất cả ngay. Cách dùng:- GitHub Actions Claude tự động reply contributor PRs khi có @claude tag
- @claude Please review this PR against our contribution guidelines in CONTRIBUTING.md
- Claude check: style guide compliance, test coverage, breaking changes, docs update needed
- Maintainer chỉ final-approve sau khi Claude đã check
Designer ship code
Tình huống: Product designer muốn tự ship UI polish PRs mà không cần engineer review từng cái. Cách dùng:- Subagent reviewer config với focus: accessibility (a11y), color contrast, focus states, responsive breakpoints
- Prompt reviewer: “Check WCAG 2.1 AA compliance cho changes. Flag: missing aria-labels, insufficient color contrast, no focus rings”
- /commit-push-pr sau mỗi polish PR: designer không cần học git commands
- @claude cho technical questions: “Does this CSS change affect performance on mobile?”
DevOps / Platform team
Tình huống: Infra changes (Terraform, Kubernetes, Helm) rủi ro cao — một lỗi nhỏ có thể down production. Team không có dedicated infra reviewer. Cách dùng:- Subagent reviewer được train với infra-specific checklist:
- “Check Terraform changes: không hardcode sensitive values, có terraform plan output không, state file có được lock không?”
- “Check K8s manifests: resource limits có set không, liveness/readiness probes đúng không, security context có restrict privileges không?”
- GitHub Actions @claude explain what this Terraform change does in plain English — giúp non-infra engineers hiểu PR họ cần approve
Anti-patterns
Anti-pattern 1: Subagent reviewer có write tools
Triệu chứng: Config reviewer với tất cả tools (kể cả edit/write), nghĩ rằng “reviewer tự fix luôn thì nhanh hơn.” Tại sao tệ: Reviewer là role khác với implementer. Nếu reviewer tự sửa, bạn mất khả năng verify “fix có đúng không?” — vì reviewer đã trở thành một agent khác viết code trong cùng context. Vi phạm separation of concerns, làm mờ trách nhiệm. Cách đúng: Reviewer chỉ flag. Main agent (hoặc bạn) quyết định fix gì. Sau đó reviewer chạy lại để verify.Anti-pattern 2: Skip human review hoàn toàn
Triệu chứng: “Subagent reviewer đã approve, Claude review cũng tốt rồi, merge thôi.” Tại sao tệ: Claude review rất tốt về code quality, security patterns, style. Nhưng Claude không biết:- Business constraint bất thành văn (“chúng ta không cache payment data vì compliance”)
- Architectural direction dài hạn (“module này sắp được rewrite, không đầu tư thêm”)
- Context về team (“engineer vừa join, code này họ sẽ maintain — cần readable hơn optimal”)
Anti-pattern 3: Không check .claude/agents/ vào repo
Triệu chứng: Mỗi engineer tự config reviewer khác nhau, hoặc một số người không có reviewer. Tại sao tệ: Team không nhất quán. Engineer A có reviewer nghiêm khắc (flag nhiều). Engineer B không có reviewer (ship nhanh hơn nhưng thiếu check). Code quality không đồng đều. Cách đúng: .claude/agents/code-reviewer.md là team artifact, check vào repo, review như code khác.Anti-pattern 4: Auto-merge PR sau Claude review
Triệu chứng: CI pipeline: lint pass + subagent reviewer pass → auto-merge vào main. Tại sao tệ: Claude reviewer rất tốt nhưng không hoàn hảo. False negatives xảy ra, đặc biệt với business logic phức tạp. Auto-merge bỏ qua safety net cuối cùng. Cách đúng: Claude review rút ngắn time-to-human-approval, không thay thế human approval. Vẫn require human approve trước khi merge vào main/production.Anti-pattern 5: Tag @claude cho task không phải code
Triệu chứng: @claude please analyze our Q3 metrics and suggest product direction trong PR comment. Tại sao tệ: GitHub Actions Claude được design cho code tasks trong context của PR. Analytics, product planning, strategic decisions không có đủ context trong PR. Claude sẽ trả lời nhưng response sẽ superficial — không có data access, không có product context. Cách đúng: @claude cho: code changes, tests, bug fixes, explanations về code trong PR. Dùng Claude Code trong terminal cho: research, analysis, planning.Mẹo nâng cao
Mẹo 1: Custom reviewer prompt theo team priorities
Không có “one size fits all” cho reviewer. Customize theo domain:Mẹo 2: Hook PostToolUse chạy ESLint trước commit
Thay vì nhớ chạy lint thủ công, dùng hook để tự động hóa (xem chi tiết Bài 2.11):Mẹo 3: Multiple specialized reviewers chạy parallel
Thay vì một reviewer làm tất cả (và làm trung bình), có nhiều reviewer chuyên biệt:Mẹo 4: —from-pr resume khi CI fail sau vài ngày
CI đôi khi fail vì lý do không liên quan đến code của bạn (flaky tests, infra issues). Sau khi CI ổn định:Mẹo 5: Combine /commit-push-pr với reviewer
Tạo một workflow hoàn chỉnh trong CLAUDE.md:Áp dụng ngay
Bài tập 1: Tạo subagent code reviewer (15 phút)
Bước 1: Trong một project đang có PR open (hoặc tạo branch test):Bài tập 2: Setup GitHub Actions (20 phút)
Điều kiện: Cần GitHub repo với admin access. Bước 1:Tóm tắt
Subagent reviewer = fresh context, không bias. Code reviewer chạy trong context window riêng, không biết “ý định” của bạn khi code — flag issues khách quan hơn. Restrict read-only tools, check config vào repo để cả team dùng chung. /commit-push-pr = one-step từ code đến PR. Thay thế chuỗi git add / commit / push / gh pr create thủ công. Commit message chất lượng cao, PR description đầy đủ, Slack notification tự động nếu có MCP. —from-pr = resume không mất context. Khi Claude tạo PR, session được link với PR number.claude —from-pr <N> pick up exact state — address review comments hay fix CI failures mà không cần explain lại từ đầu.
GitHub Actions @claude = Claude làm việc trong GitHub. /install github-action một lần, sau đó bất kỳ ai tag @claude trong PR comment đều có thể delegate code tasks — fix, add tests, explain — mà không cần mở terminal.
Human review vẫn là final gate. Claude reviewer rút ngắn time-to-human-review, không thay thế nó. Architectural decisions, business logic, context về team — human reviewer mang những thứ này mà Claude không có.
Bài tiếp theo
Bạn đã biết cách code review với subagent, commit với skill, và tích hợp Claude vào GitHub workflow. Bước tiếp theo để “dạy” Claude hiểu project của bạn sâu hơn là file CLAUDE.md — nơi bạn lưu instructions, conventions, và constraints để Claude tự nhớ mỗi session. Bài 2.7 sẽ đi vào chi tiết CLAUDE.md: hierarchy 3 cấp (project / user / nested), lệnh /init để bootstrap từ codebase hiện tại, syntax @ để compose multiple CLAUDE.md, và anti-patterns thường gặp khi viết file này. Và nếu bạn muốn hiểu sâu hơn về subagents — cách chúng fork context, chạy parallel, và coordinate với main agent — xem Bài 2.8: Subagents. ➡️ Bài tiếp theo: Bài 2.7 — File CLAUDE.mdTài liệu tham khảo
- Claude Code GitHub Actions — Official setup guide
- Claude Code SDK — Foundation của GitHub Actions integration (open source)
- Transcript “Building headless automation” — Demo Quiz app với @claude + GitHub issues → PRs
- Transcript “A conversation on Claude Code” — Boris Cherny về /install github-action và @Claude, fix this pattern
- Lệnh trong session: /agents, /commit-push-pr, /install github-action
- CLI flag:
claude —from-pr <PR_NUMBER> - Cross-reference: Bài 2.4 (commit phase trong EPCC), Bài 2.8 (subagents deeper dive), Bài 2.11 (hook auto-format trước commit)