/ck:review-pr — Review GitHub pull request

Kit: CK Engineer v2.20.1-beta.14 · Skill version: 2.2.0 · Category: utilities · Updated: 2026-10-05 Review 1 PR GitHub kỹ: đọc diff + file đầy đủ, soi correctness, security, breaking changes, code quality (anti AI-slop), tuân thủ quy ước dự án, testing. Ba cờ tuỳ chọn ghép được: --fix, --reply, --merge.
Mặc định (không cờ) chỉ in review ra chat — không sửa, không commit, không push. Nhưng --fix có commit + push lên branch của PR, --reply post review thật lên GitHub, --merge merge thật.

Khi nào dùng

  • Trước khi approve PR của người khác — có góc nhìn thứ 2
  • Trước khi merge PR của mình — self-review nghiêm
  • PR do AI viết — soi các pattern AI-slop (dumping-ground file, reimplement utility có sẵn, abstraction 1 caller, …)
  • Muốn đóng vòng review → fix → post review → merge → CI xanh bằng 1 lệnh

Cú pháp

Thứ tự cờ không quan trọng. Skill review PR trong repo hiện tại — chạy từ checkout của repo chứa PR.

Các mode

Lấy context qua gh pr view, gh pr diff, gh pr checks, gh pr diff --name-only. Kiểm:
  • Correctness: logic, off-by-one, null, lỗi bị nuốt, race condition, edge case
  • Security: injection (SQL, XSS, command, SSRF, path traversal), secrets hardcode, thiếu validate input, lỗ hổng authn/authz
  • Breaking changes: API contract, schema DB thiếu migration, config format, export public bị xoá/đổi tên
  • Code quality (anti-slop): checklist ngắn; load full taxonomy references/anti-ai-slop.md khi diff thêm >300 dòng, ≥2 flag inline, >2 file mới trong utils//helpers//lib/common/, hoặc không chắc
  • Project-specific compliance: theo instruction/docs của dự án
  • Testing: path mới có test chưa, phantom coverage
  • PR body contract: thiếu section evidence bắt buộc hoặc claim không có evidence → finding Important
Prose review viết theo writing language resolve được (CLAUDEKIT_LANGUAGE, CK_RESPONSE_LANGUAGE, .claudekit/config.yaml, .ck.json, mặc định en).
  1. Không có finding actionable → dừng, báo Approve
  2. Gọi ck:fix --auto với toàn bộ finding actionable (mọi Critical + Important, và Suggestion cụ thể, ít rủi ro, trong scope PR)
  3. ck:git cp — stage, commit, push lên head branch của PR
  4. Re-review, lặp lại
Dừng khi: hết finding actionable · ck:fix bị chặn bởi quyết định user/business · cùng 1 finding sống qua 3 lần fix liên tiếp · CI/verify local fail mà ck:fix không tự xử được.Output: số vòng, verdict cuối, commit đã push, finding còn lại, blocker.
  • Pre-flight: thiếu gh hoặc chưa gh auth → in review local + cảnh báo, không fail
  • Verdict map sang gh pr review --approve / --request-changes / --comment (body qua stdin)
  • PR của chính mình không approve được (HTTP 422) → tự hạ xuống --comment, body vẫn ghi “Approve”
  • Footer truy vết: *Posted by /ck:review-pr at <ISO-8601 UTC>*
  • Body > 60,000 ký tự → cắt bớt Findings, ghi chú số finding bị lược
  • Ghép --fix: chỉ post review cuối khi vòng fix hội tụ (hoặc dừng vì blocker)
Chạy cuối cùng. Chỉ merge khi đủ hết:
  • Verdict Approve (không Critical/Important; vòng --fix hội tụ, không dừng vì blocker)
  • PR OPEN + mergeable
  • reviewDecision không phải CHANGES_REQUESTED từ reviewer khác
  • CI pass hoặc chỉ đang pending
Đủ điều kiện → ck:git merge-pr <PR_REF>: merge qua gh pr merge (--auto nếu check còn pending), watch CI sau merge trên target branch, CI fail xác định → fix follow-up bằng ck:fix --auto trên branch mới, tối đa 3 lần. Không đủ điều kiện → báo not-ready kèm điều kiện fail, không ép merge.

Output

  • Summary: 1-2 câu PR làm gì
  • Risk level: Low / Medium / High
  • Findings theo severity:
    • Critical — phải sửa trước merge (bug, security, mất dữ liệu)
    • Important — nên sửa (logic, thiếu validate, AI-slop cấu trúc)
    • Suggestion — tốt nếu có (style, cải tiến nhỏ, AI-slop vi mô)
  • Verdict: Approve (không Critical/Important) · Request changes · Comment (chỉ gợi ý nhỏ, merge được)
Cuối run báo thêm: số vòng + commit đã push (nếu --fix), --reply thành công / fallback / in local, kết quả merge + SHA + CI sau merge (nếu --merge).

Recipe cho team ECH

Chạy trong checkout primeproduction/ech-prime-web-v2.

Recipe 1 — Self-review trước khi tag reviewer

Recipe 2 — Sửa finding tự động

Recipe 3 — Review xong post lên PR cho cả team thấy


Khác gì /ck:code-review


Gotchas

  • ⚠️ Cần gh đã cài + đăng nhập (gh auth status) để đọc PR; --reply thiếu auth thì in local
  • ⚠️ --fix có push — không chạy ck:git cp nếu verify fail, phát hiện secrets, hoặc working tree có thay đổi không liên quan của user
  • ⚠️ --reply không dedupe — chạy lại là post thêm 1 review mới
  • ⚠️ AI-slop là judgment call — skill có mục “When NOT to flag”; slop cấu trúc → Important, slop vi mô → Suggestion
  • ⚠️ --merge không bao giờ ép PR chưa sẵn sàng; gặp branch protection/conflict thì báo blocker, không đổi cờ để thử lại

  • /ck:code-review — review pending changes, commit, PR, codebase
  • /ck:fix --auto — engine sửa của --fix
  • /ck:git merge-pr — engine merge của --merge
  • /ck:security-scan — scan bảo mật

Reference

  • SKILL.md: ~/.claude/skills/review-pr/SKILL.md
  • References: ~/.claude/skills/review-pr/references/{anti-ai-slop,pr-body-contract,writing-language,project-rules-example}.md