Chín practice Claude Code từ nhóm build nó

MG · MG

Chín practice Claude Code từ nhóm build nó ở Anthropic: reviewer mới, ask rule, hook onFailure block, effort, compact, xoá prompt cũ, explainer.

Đã duyệt độc lập · cập nhật 02/11/2026 · 10 min

1. Mở đầu: những gì nhóm build Claude Code đang làm

MG vào thẳng vấn đề: các engineer giỏi nhất dùng Claude Code như thế nào. Anh nói nếu bạn đang tìm những video skill hay tutorial cài đặt Claude Code kiểu thông thường thì có thể dừng xem ở đây. Theo anh, đây là video duy nhất bạn cần xem để tận dụng Claude Code được nhiều nhất (nhận định của MG trong video đăng ngày 02/11/2026).

MG nói trước micro, bên cạnh dòng chữ THE BEST ENGINEER
MG nói trước micro ở đầu video, cạnh dòng chữ "THE BEST ENGINEER"; dòng nhỏ phía dưới giới thiệu anh là AI engineer, build với Claude Code hằng ngày (theo thẻ trong video đăng ngày 02/11/2026).

Theo MG, mọi thứ trong video đến từ chính những người build Claude Code ở Anthropic, và từ các bản cập nhật đã ship trong năm tuần trước khi video đăng ngày 02/11/2026. Anh nêu trước vài thứ sẽ có: một safety hook âm thầm cho mọi thứ đi qua; vì sao auto mode có thể push thẳng lên main theo mặc định; vì sao team của Anthropic không bao giờ để AI review công việc của chính nó; một pull request chạy 50 vòng review qua một đêm; một setting ngăn các sub-agent đốt hết usage limit của bạn; và vì sao Anthropic xoá phần lớn system prompt của chính mình.

2. Practice 1: đừng để Claude tự review code của chính nó

Practice đầu tiên: không bao giờ để Claude review công việc của chính nó. MG kể rằng từ giữa tháng 10, Claude Code dùng fork ở khắp nơi (theo video đăng ngày 02/11/2026). Một fork là một bản sao của cuộc hội thoại hiện tại. Nó biết mọi thứ bạn đã bàn, kể cả lý do Claude viết code theo cách nó đã viết.

Hai khung hội thoại giống hệt nhau: cuộc hội thoại gốc và một fork là bản sao đầy đủ
Bên trái là cuộc hội thoại gốc (thêm retry cho getOrder, Claude giải thích cách làm, rồi thêm withRetry với backoff), bên phải là fork: một bản sao đầy đủ, chứa cùng lập luận. Nhãn góc phải ghi "forks by default · v2.1.302 · Oct 16" (slide trong video đăng ngày 02/11/2026).

Vì vậy, khi một fork review đoạn code đó, nó chia sẻ chung những điểm mù với bạn, và nó có xu hướng đồng ý với bạn (theo MG, video đăng ngày 02/11/2026). Anh dẫn trang best practices của Anthropic, nói rằng trang này viết rõ: một reviewer mới có ích vì nó chưa thấy lập luận của bạn. Trang best practices của Claude Code (đọc ngày 02/11/2026) liệt kê một trong những lợi ích của subagent là có được một reviewer chưa thấy code được viết ra như thế nào.

Theo MG (video đăng ngày 02/11/2026), lệnh có sẵn /code-review làm đúng việc đó: nó gửi các thay đổi của bạn tới một sub-agent mới, chưa từng thấy cuộc hội thoại. Nhóm Claude Code cũng làm như vậy với code của chính mình. Trong bài viết về cách nhóm review code, nhóm chia sẻ rằng từ tháng 6 đến tháng 9, số pull request được merge tăng hơn gấp đôi, trong khi tỉ lệ phải revert giảm hơn 40% (số liệu MG dẫn trong video đăng ngày 02/11/2026; bài viết trên claude.dev ghi cùng hai con số, đọc ngày 02/11/2026).

3. Practice 2: hỏi trước mọi lần push trong auto mode

Practice thứ hai bắt đầu từ một thay đổi mặc định. Theo MG, từ cuối tháng 9, auto mode là chế độ mặc định của Claude Code trong terminal và trong VS Code. Ở auto mode, Claude chạy phần lớn các action mà không hỏi bạn trước (theo video đăng ngày 02/11/2026).

Màn hình khởi động Claude Code v2.1.316 với thông báo auto mode là permission mode mặc định
Màn hình đầu tiên của Claude Code v2.1.316 trong video đăng ngày 02/11/2026, với dòng "Auto mode is now Claude Code's default permission mode." và nhãn "default since v2.1.284 · Sep 28" ở góc trên.

Đây là điều MG nói phần lớn mọi người bỏ qua: tài liệu của Anthropic ghi rằng theo mặc định, auto mode cho phép push lên bất kỳ branch nào, kể cả main, và nó có thể mở pull request (theo MG, video đăng ngày 02/11/2026).

Bạn có thể nghĩ: được thôi, mình chỉ cần dặn Claude "đừng push lên main". Nhưng theo MG (video đăng ngày 02/11/2026), một rule bạn gõ trong chat có thể biến mất. Khi một cuộc hội thoại dài bị compact, nghĩa là Claude tóm tắt nó lại để giải phóng chỗ, tin nhắn chứa rule của bạn có thể bị bỏ đi.

Vì thế MG khuyên đặt rule ở chỗ nó không thể biến mất: trong file settings. Thêm một ask rule cho git push, và một rule cho việc tạo pull request. Theo anh (video đăng ngày 02/11/2026), auto mode vẫn tự chạy mọi thứ khác, nhưng một lần push giờ sẽ dừng lại và hỏi bạn trước.

Claude Code ở auto mode dừng lại trước lệnh git push và hỏi có tiếp tục không
Một session thật ở auto mode trong video đăng ngày 02/11/2026: Claude định chạy git push -u origin feature/retry 2>&1, và dòng "Ask rule Bash(git push *) overrides auto mode for this command." hiện ra trước câu hỏi "Do you want to proceed?".

Và khi đang mở file đó, MG gợi ý bật luôn setting mới blockWritesOutsideWorkingDirectories. Theo anh (video đăng ngày 02/11/2026), setting này đảm bảo không có lần sửa nào rơi ra ngoài thư mục project của bạn.

4. Practice 3: hook chặn lại khi chính nó hỏng

Practice thứ ba nói về hook. Theo MG (video đăng ngày 02/11/2026), rất nhiều engineer đặt những rule quan trọng nhất của mình vào một hook. Hook là một script nhỏ mà Claude Code chạy trước một action, ví dụ để chặn một lần push lên main, hoặc để quét một commit tìm secret như API key.

Claude Codemuốn chạy git push hookscript nhỏ của bạn actionchạy, hoặc bị chặn chỉ chặn khi hook thoát với code 2 (theo MG, video đăng ngày 02/11/2026)
Hình 4.1Vị trí của hook mà MG mô tả trong video đăng ngày 02/11/2026: nó chạy giữa ý định của Claude Code và action thật.

Cái bẫy ở đây, theo MG (video đăng ngày 02/11/2026): một hook chỉ chặn được action khi nó thoát với exit code 2. Nếu script crash, có đường dẫn sai, hoặc chạy quá lâu, Claude Code coi đó là một hook thất bại, và action vẫn được thực hiện. Anh dẫn tài liệu của Anthropic nói thẳng: một policy hook có đường dẫn sai hoặc script bị crash sẽ cho mọi thứ đi qua.

Trang Hooks reference của Anthropic, mục Block the action when a hook fails
Trang Hooks reference trong video đăng ngày 02/11/2026, mục "Block the action when a hook fails": khi hook lỗi hoặc timeout, Claude Code vẫn thực hiện action; muốn chặn thì đặt "onFailure": "block" trên hook command hoặc http, cần Claude Code v2.1.295 trở lên. Trang tài liệu này vẫn ghi như vậy khi đọc ngày 02/11/2026.

Theo MG, từ ngày 8/10 có một cách sửa bằng một dòng: trong hook settings, thêm onFailure là block. Từ đó, khi một hook không khởi động được, bị timeout hoặc crash, action sẽ bị chặn thay vì được cho qua (theo video đăng ngày 02/11/2026).

onFailure chưa đặt"onFailure": "block" scanner downscanner down commit đi quachưa được quét commit bị chặn
Hình 4.2Ví dụ secret scanner mà MG đưa ra trong video đăng ngày 02/11/2026: nếu scanner bị down, nó nên dừng commit lại chứ không để commit đi qua mà chưa được quét.

MG bảo hãy nghĩ tới một secret scanner. Nếu nó bị down, nó nên dừng commit lại, chứ không để commit đi qua mà chưa được quét (lời khuyên trong video đăng ngày 02/11/2026).

5. Practice 4: làm cho review thật sự kết thúc

Practice thứ tư: đảm bảo các lần review thật sự kết thúc. MG chỉ ra vấn đề (video đăng ngày 02/11/2026): khi một người nhận được một comment nhỏ về style, người đó bỏ qua nó trong hai giây. Một AI agent thì không, nó sửa comment đó, và lần sửa ấy lại kích hoạt một lần review nữa, lần review này lại tìm ra một thứ mới để sửa.

Bài viết How the Claude Code team does code review, đoạn về một PR chạy hơn năm mươi vòng review
Bài "How the Claude Code team does code review" trên claude.dev trong video đăng ngày 02/11/2026: đoạn được tô ghi rằng một người có thể bỏ qua một nit trong vài giây, còn agent thì sửa nó; ngay dưới là mục "Review has to converge" kể về một CLI PR qua hơn năm mươi vòng review và sửa trong một đêm, tới khi tác giả dừng nó lại.

Theo MG, ở nhóm Claude Code, một pull request đã đi qua hơn 50 vòng review trong một đêm (số liệu từ bài viết của nhóm, dẫn trong video đăng ngày 02/11/2026). Vì vậy nhóm đã thay đổi ba thứ:

  • Reviewer bỏ qua style (theo MG, video đăng ngày 02/11/2026).
  • Lần review thứ hai chỉ xem những gì đã thay đổi kể từ lần đầu (theo MG, video đăng ngày 02/11/2026).
  • Sau ba vòng, reviewer bảo tác giả lùi lại và nghĩ lại cách tiếp cận, thay vì tiếp tục sửa (theo MG, video đăng ngày 02/11/2026).

Sau thay đổi đó, tỉ lệ pull request pass sau một lần review tăng từ 65% lên 78% (số MG dẫn trong video đăng ngày 02/11/2026; bài viết trên claude.dev có cùng hai con số trong biểu đồ "Pass after one review and fix round", đọc ngày 02/11/2026).

MG thêm một tip cho CI: dùng lệnh claude ultrareview, chứ không chạy code review ở print mode, vì print mode thoát ra trước khi các finding kịp tới (theo MG, video đăng ngày 02/11/2026).

Trang tài liệu Find bugs with ultrareview, đoạn về subcommand claude ultrareview
Trang "Find bugs with ultrareview" của Anthropic trong video đăng ngày 02/11/2026. Ở chế độ non-interactive, chạy subcommand claude ultrareview với --post; dòng được tô ghi rằng trong một lần chạy claude -p '/code-review ultra', Claude Code thoát trước khi finding tới nên không post gì, hãy dùng subcommand. Trang này vẫn ghi như vậy khi đọc ngày 02/11/2026.

6. Practice 5: low effort để viết, high effort để verify

Practice thứ năm. Theo MG (video đăng ngày 02/11/2026), phần lớn mọi người chạy mọi thứ ở mức effort cao nhất, nghĩ rằng nhiều effort hơn nghĩa là code tốt hơn. Anh dẫn hướng dẫn của chính Anthropic về cách dùng effort, nói rằng hướng dẫn này nói điều ngược lại: viết code ở low effort trong lúc bạn lái, rồi chuyển sang high effort để verify và test.

Bài Spending your effort của Anthropic, danh sách vòng lặp với các dòng implement on low effort và verify and test on high effort được tô
Bài "Spending your effort" (Anthropic, ngày 25/9) trong video đăng ngày 02/11/2026: một vòng lặp gồm đưa Claude một spec và để nó phỏng vấn bạn, "Implement it on low effort", review rồi lặp lại ở low effort khi cần, và "Verify and test on high effort". Thẻ chú thích ghi "Low: write it while you steer".

Tại sao? Theo MG (video đăng ngày 02/11/2026), vì effort mua cho bạn việc kiểm tra và các edge case. Nó không sửa được một cách tiếp cận sai. Trong các bài test của Anthropic, effort tối đa thậm chí còn khiến model chọn sai cách hiểu đề bài thường xuyên hơn. Bài viết trên claude.dev (đọc ngày 02/11/2026) ghi rằng tăng effort thường giảm lỗi do thiếu edge case, nhưng không sửa được khi model có cách tiếp cận sai.

Và nếu một task hoá ra khó hơn bạn nghĩ, MG nói cứ gõ ultrathink trong lúc Claude đang làm. Theo anh, từ cuối tháng 10, việc này nâng effort cho phần còn lại của lượt đó thôi, rồi quay về setting bình thường của bạn (video đăng ngày 02/11/2026).

Post trên X của Addy Osmani về việc gõ ultrathink khi Claude đang làm
Post trên X của Addy Osmani (Claude Code, Anthropic, ngày 1/11) trong video đăng ngày 02/11/2026: nếu task khó hơn dự kiến, gõ ultrathink khi Claude đang làm, nó nâng effort cho phần còn lại của lượt đó. Nhãn bên dưới ghi "Back since v2.1.311 · Oct 26".

7. Practice 6: effort riêng cho subagent

Practice thứ sáu. MG nói nếu usage limit của bạn cạn nhanh, đây có lẽ là lý do. Boris Cherny, người tạo ra Claude Code, đã đăng về chuyện này tuần trước (tính từ video đăng ngày 02/11/2026): theo mặc định, sub-agent kế thừa effort level của bạn, và nó có thể cộng dồn rất nhanh (theo MG, video đăng ngày 02/11/2026).

MG đưa ra một tình huống: bạn đặt effort extra high cho một bug khó rồi quên tắt. Giờ mọi subagent mà Claude khởi động, để search, để explore hay để test, cũng chạy ở extra high (theo MG, video đăng ngày 02/11/2026).

Session chính ở /effort xhigh, ba subagent search, explore, test đều ở low nhờ CLAUDE_CODE_SUBAGENT_EFFORT=low
Session chính đặt /effort xhigh cho một bug khó, còn ba subagent search, explore và test đều chạy ở low nhờ CLAUDE_CODE_SUBAGENT_EFFORT=low.

Theo MG, bản sửa ra ngày 31/10: một setting mới tên là CLAUDE_CODE_SUBAGENT_EFFORT. Đặt nó là low thì các subagent thôi sao chép effort level của bạn, trong khi session chính vẫn giữ mức đó. Sau đó mở /usage: theo MG (video đăng ngày 02/11/2026), giờ nó cảnh báo bạn về những session nặng, và nhấn F sẽ áp dụng cách sửa được gợi ý.

8. Practice 7: compact trước khi nghỉ, không phải sau

Practice thứ bảy: compact trước khi nghỉ, không phải sau khi nghỉ. MG nói lời khuyên này đến thẳng từ hướng dẫn của Anthropic về chi phí của một task (video đăng ngày 02/11/2026).

Lý do, theo MG (video đăng ngày 02/11/2026): với một gói subscription, Claude giữ cuộc hội thoại của bạn trong cache khoảng một giờ, nhờ vậy mọi tin nhắn mới đều rẻ hơn. Nếu bạn rời đi lâu hơn thế, cache hết hạn, và tin nhắn kế tiếp của bạn phải dựng lại toàn bộ cuộc hội thoại với giá đầy đủ.

không có cachecó cache $11.20khoảng $1.60 ví dụ của Anthropic, MG dẫn trong video đăng ngày 02/11/2026
Hình 8.1Hai con số trong ví dụ mà MG dẫn từ hướng dẫn của Anthropic (video đăng ngày 02/11/2026): cùng một khối công việc tốn $11.20 khi không có cache và khoảng $1.60 khi có cache.

Trong ví dụ của Anthropic, cùng một khối công việc tốn $11.20 khi không có cache và khoảng $1.60 khi có cache (theo MG, video đăng ngày 02/11/2026). Theo anh, Claude Code giờ tự compact một session lớn đang để không, ngay trước khi cache hết hạn. Nhưng khi đó bạn quay lại với một bản tóm tắt do Claude tự viết.

Vì vậy MG khuyên tự làm trước khi rời đi: gõ /compact và nói nó cần giữ lại những gì (lời khuyên trong video đăng ngày 02/11/2026). Trong session thật của anh, lệnh gõ vào là:

/compact keep the open bugs and the test plan
Một session Claude Code với lệnh /compact keep the open bugs and the test plan, auto mode đang bật
Session thật "before you leave" trong video đăng ngày 02/11/2026: lệnh /compact kèm chỉ dẫn giữ lại các bug còn mở và test plan, dòng dưới báo auto mode đang bật.

Còn khi bạn chỉ muốn bỏ một hướng đi bế tắc, MG bảo dùng /rewind, không dùng compact. Theo anh (video đăng ngày 02/11/2026), rewind quay về một điểm trước đó vẫn còn nằm trong cache.

9. Practice 8: xoá bớt instruction cũ

Practice thứ tám, và MG nói đây là cái làm anh bất ngờ. Addy Osmani ở Anthropic chia sẻ rằng nhóm đã xoá hơn 80% system prompt của chính Claude Code mà không có sụt giảm đo được nào trong các coding eval (theo MG, video đăng ngày 02/11/2026).

Bài của Addy Osmani: You're probably overprompting Claude, cùng thẻ 80% of the system prompt, removed
Bài "You're probably overprompting Claude" của Addy Osmani (ngày 29/10, trên x.com) trong video đăng ngày 02/11/2026: với các model như Claude Opus 5 và Claude Fable 5, hơn 80% system prompt của Claude Code đã được bỏ đi mà coding eval không giảm đo được; khi một model mới như Opus 5.5 ra, bạn có thể làm cùng thí nghiệm với instruction của mình, và lệnh /doctor prompt-audit đánh dấu những dòng viết cho model cũ. Thẻ bên phải ghi "80% of the system prompt, removed".

Theo MG (video đăng ngày 02/11/2026), các model mới hơn không cần lớp giàn giáo cũ. Những dòng như THINK CAREFULLY, IMPORTANT viết toàn chữ hoa, hay DON'T BE LAZY giờ khiến Claude làm quá tay: nhiều bước hơn và nhiều tool call hơn mức task cần.

Vì vậy, MG khuyên sau mỗi lần nâng cấp model, hãy xoá bớt instruction và chỉ thêm lại những gì model thực sự còn thiếu (lời khuyên trong video đăng ngày 02/11/2026). Để tìm những dòng đó, chạy /doctor prompt-audit. Theo MG, lệnh này kiểm tra CLAUDE.md, các rule và các skill của bạn để tìm những dòng viết cho model cũ, và nó không thay đổi gì cho tới khi bạn đồng ý (video đăng ngày 02/11/2026).

10. Practice 9: explainer mà bạn review được

Và practice thứ chín, nơi tất cả những điều này đang hướng tới. MG dẫn Andrej Karpathy, người đã nói rằng công việc của chúng ta sẽ đi lên các tầng trừu tượng, thành giám sát và thấu hiểu. Câu trích trên màn hình trong video đăng ngày 02/11/2026, từ post của Karpathy ngày 2/10, ghi: "a lot more of our work will rise up the abstractions into oversight and understanding."

Trong thực tế, theo MG (video đăng ngày 02/11/2026), điều đó có nghĩa là thôi chỉ đọc bản tóm tắt cuối cùng của Claude. Sau một thay đổi lớn, hãy yêu cầu ba thứ:

  1. Các cách tiếp cận thay thế, và điều gì loại bỏ từng cách (lời khuyên của MG, video đăng ngày 02/11/2026).
  2. Những gì nó không xác nhận được, và nó đã tìm ở đâu (lời khuyên của MG, video đăng ngày 02/11/2026).
  3. Một explainer của thay đổi đó dưới dạng một trang HTML có diagram (lời khuyên của MG, video đăng ngày 02/11/2026).
Ba yêu cầu sau một thay đổi lớn, và trang explainer.html với diagram How the parts fit together
Ba yêu cầu ở phía trên, thứ ba đang được làm nổi: "One HTML page that explains it, with a diagram". Bên dưới là trang explainer.html của project acme-api với diagram "How the parts fit together": Caller gọi getOrder, getOrder đưa hàm vào withRetry (try, catch, sleep theo backoff), mỗi lần thử gọi global fetch, và một ghi chú đỏ rằng retries undefined thì không bao giờ throw (demo trong video đăng ngày 02/11/2026).

Theo MG (video đăng ngày 02/11/2026), nhóm Claude Code làm việc này để lan toả sự hiểu biết về chính code của nhóm, và đó là cách nhanh nhất để bắt được cái quyết định mà bạn sẽ đưa ra khác đi.

11. Kết: một setup tốt hơn quanh Claude

MG khép lại: đó là cách các engineer giỏi nhất dùng Claude Code. Theo anh (video đăng ngày 02/11/2026), không phải là prompt tốt hơn, mà là một setup tốt hơn quanh Claude.

1. reviewer mới, không fork2. ask rule cho git push3. onFailure: block 4. review phải kết thúc5. low để viết, high để verify6. effort cho subagent 7. compact trước khi nghỉ8. xoá instruction cũ9. explainer review được
Hình 11.1Chín practice MG trình bày trong video đăng ngày 02/11/2026, mỗi ô là tên ngắn của một practice.

MG cảm ơn mọi người đã xem.

Nguồn và liên kết 10 nguồn

  1. Tên gốc: How the Best Engineers Use Claude Code
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=DuPZopuZzL8 youtube.com
  4. Kênh YouTube MG (MG): youtube.com/channel/UCj7NrzZWW3w3lHTk5v-GuXw youtube.com
  5. Claude Code best practices, có đoạn về reviewer chưa thấy code được viết ra như thế nào (đọc ngày 02/11/2026): code.claude.com/docs/en/best-practices code.claude.com
  6. Claude Code permission modes, trang về auto mode (đọc ngày 02/11/2026): code.claude.com/docs/en/permission-modes code.claude.com
  7. Hooks reference, mục "Block the action when a hook fails" với onFailure (đọc ngày 02/11/2026): code.claude.com/docs/en/hooks code.claude.com
  8. Find bugs with ultrareview, đoạn về subcommand claude ultrareview (đọc ngày 02/11/2026): code.claude.com/docs/en/ultrareview code.claude.com
  9. Bài viết của nhóm Claude Code về code review, có các số merged PR, revert, hơn năm mươi vòng review và 65% lên 78% (đọc ngày 02/11/2026): claude.dev/blog/solving-code-review-at-anthropic claude.dev
  10. Spending your effort, bài của Anthropic về effort (đọc ngày 02/11/2026): claude.dev/blog/spending-your-effort claude.dev