Hai tuần trước mình bắt đầu dùng Claude Code như một công cụ viết code chính, không chỉ là tool thỉnh thoảng mở ra hỏi câu hỏi. Kết quả bất ngờ: mình tiết kiệm khoảng 40% thời gian code, nhưng điều quan trọng hơn là chất lượng code cải thiện rõ rệt.
Bài viết này mình tổng hợp lại từ trải nghiệm thực tế, kết hợp với guide viral 154 điểm trên Hacker News tuần này của tác giả Arps18, cộng thêm tips trực tiếp từ Boris Cherny — lead Claude Code team tại Anthropic.
Claude Code Là Gì Và Tại Sao Nó Khác Biệt?
Claude Code là terminal-based AI coding assistant của Anthropic. Nhưng gọi nó là “assistant” hơi hạ thấp. Thực ra nó giống một junior developer ngồi trong terminal, đọc toàn bộ codebase, viết code, chạy test, commit, thậm chí tạo PR.
Điểm khác biệt lớn nhất so với ChatGPT hay Claude web: Claude Code hoạt động trực tiếp trên máy bạn, đọc file thật, chạy lệnh thật, sửa code thật. Không copy-paste, không”context window” giới hạn.
Mình test so sánh nhanh: cùng một task thêm authentication middleware cho API, ChatGPT mất khoảng 15 phút (viết code + copy + test + sửa lỗi), Claude Code mất 4 phút tự hoàn thành từ đầu đến cuối.
Tại Sao Nhiều Người Dùng Claude Code Sai Cách?
Đại đa số người dùng Claude Code như một chatbot: gõ prompt, chờ trả lời, copy code. Đây là cách dùng sai最常见的.
Boris Cherny, lead Claude Code team, chia sẻ nguyên tắc số một: cho Claude cách tự verify công việc của nó. Không có verification, bạn là feedback loop duy nhất. Có verification, Claude tự lặp đến khi code thực sự chạy được. Boris nói riêng nguyên tắc này mang lại cải thiện chất lượng 2-3 lần.
Cách mình chuyển từ dùng sai sang dùng đúng:
- Thay vì pair-programming, hãy delegate. Cat Wu từ Claude Code team nói: “Model hoạt động tốt nhất khi bạn coi nó như một engineer bạn giao việc, không phải pair programmer hướng dẫn từng dòng.” Viết brief rõ ràng, rồi để nó tự chạy.
- Thay vì mô tả, hãy reference. Không nói “nhìn module authentication”, gõ trực tiếp
@src/auth/login.py. Thay vì paste error, pipe nó:cat error.log | claude. Context chính xác luôn thắng mô tả đại khái. - Thay vì code ngay, hãy plan trước. Plan mode (Shift+Tab hai lần) đưa Claude vào chế độ read-only. Đọc file, trace flow, hiểu data model. Lên plan. Rồi mới execute.
Plan Mode — Tính Năng Ít Ai Dùng Nhưng Rất Mạnh
Plan mode là thứ thay đổi hoàn toàn workflow của mình. Khi bạn ấn Shift+Tab hai lần, Claude chuyển sang chế độ chỉ đọc: không sửa file, chỉ phân tích.
Workflow mình áp dụng hàng ngày:
- Bật Plan mode, yêu cầu Claude đọc toàn bộ codebase liên quan
- Claude đưa ra plan chi tiết: file nào cần sửa, thay đổi gì, tại sao
- Mình ấn Ctrl+G để mở plan trong editor, chỉnh sửa nếu cần
- Tắt Plan mode, yêu cầu Claude execute theo plan đã duyệt
Tip pro từ bài viết trên Hacker News: hãy để một Claude viết plan, rồi mở một session Claude hoàn toàn mới để review plan đó như một “staff engineer” — không có context bias nên nó thực sự bắt được gap.
CLAUDE.md — Bí Quyết Khiến Claude Code “Thông Minh” Hơn Theo Thời Gian
Đây là phần hay nhất mà mình muốn chia sẻ. CLAUDE.md là file instruction được load đầu mỗi session. Viết đúng, cùng một prompt cho ra kết quả khác biệt hoàn toàn.
Boris Cherny chia sẻ file CLAUDE.md thực tế mà Claude Code team dùng trong repo của chính họ. Nội dung cực kỳ ngắn, chỉ khoảng 20 dòng:
- Build commands mà Claude không tự đoán được (dùng bun không phải npm)
- Thứ tự chạy test (typecheck trước, test sau, lint trước commit)
- Cách chạy single test
- Pre-PR ritual
Không có style preference, không có codebase tour, không có lời khuyên chung chung. Mỗi dòng đều trả lời được câu hỏi: “Nếu bỏ dòng này, Claude có mắc lỗi không?” Nếu không, cắt bỏ.
Nguyên Tắc Vàng: Để Claude Tự Viết Rules Cho Chính Nó
Mỗi khi Claude mắc lỗi, mình kết thúc prompt bằng: “Update CLAUDE.md so you do not repeat this.”
Boris gọi Claude là “eerily good at writing rules for itself” từ chính sai lầm của nó. Mình test đúng 2 tuần: ban đầu CLAUDE.md của mình chỉ 5 dòng, giờ đã có 30 dòng, mỗi dòng là một gotcha thực sự. PR review comments giảm hẳn.
Cấu trúc CLAUDE.md hiệu quả theo kinh nghiệm của mình:
- Code style: Quy tắc ngắn gọn (dùng ES modules, không dùng CommonJS)
- Workflow: Lệnh chạy test, lint, build cụ thể
- Architecture: Route nào đi qua middleware nào, query DB đặt ở đâu
- Gotchas: Phần quan trọng nhất — mỗi entry là một lỗi Claude từng mắc, capture ngay khi xảy ra
.claude Directory — Hệ Thống Cấu Hình Nhiều Tầng Ít Ai Biết
Hầu hết người dùng chỉ biết CLAUDE.md và dừng lại. Thực ra thư mục .claude/ là một hệ thống cấu hình phân tầng khá mạnh:
| File | Scope | Commit | Chức năng |
|---|---|---|---|
| CLAUDE.md | Project + Global | Có | Instruction load mỗi session |
| CLAUDE.local.md | Project only | Không (gitignore) | Ghi chú riêng, không share |
| settings.json | Project + Global | Có | Permissions, hooks, env vars |
| .mcp.json | Project only | Có | MCP servers chia sẻ trong team |
| skills/ | Project + Global | Có | Reusable prompts (dùng /name) |
| agents/ | Project + Global | Có | Subagent definitions |
| rules/ | Project + Global | Có | Instruction theo path (path-gated) |
Mình thích nhất rules/*.md vì nó path-gated. Ví dụ: rule cho thư mục migrations không nằm trong CLAUDE.md làm phình mỗi session, mà nằm riêng trong .claude/rules/migrations.md với glob pattern. Claude chỉ load khi làm việc trong thư mục đó.
CLAUDE.local.md thì dùng để dump PR review feedback. Mình ghi lại ngay khi thấy comment thay vì cố nhớ. Sau vài tuần nó thành rule file cá nhân hóa cho chính feedback mình hay nhận.
Skills — Biến Claude Code Thành Chuyên Gia Cho Từng Task
Skills là thứ khiến Claude Code đi từ “agent làm được mọi thứ” sang “agent làm tốt những việc cụ thể cho project của bạn.”
Cách hoạt động: một skill là thư mục dưới .claude/skills/ten-skill/ chứa file SKILL.md với frontmatter và instruction. Tên thư mục trở thành slash command.
Mình tạo skill đơn giản mà dùng mỗi ngày:
- /review-pr: Tự động đọc diff, tóm tắt thay đổi, flag rủi ro (missing error handling, hardcoded values, test cần update)
- /api-convention: Check route mới có tuân theo convention không (middleware auth, query format, response structure)
- /summarize-changes: Chạy git diff HEAD, tóm tắt trong 3 bullet points, liệt kê rủi ro
Frontmatter hỗ trợ: disable-model-invocation: true (chỉ chạy khi gõ trực tiếp), allowed-tools (giới hạn tool dùng), agent: read-only (chế độ chỉ đọc).
MCP — Kết Nối Claude Code Với Bất Kỳ Dịch Vụ Nào
MCP (Model Context Protocol) cho phép Claude Code kết nối với database, API, internal tools. File .mcp.json ở root project định nghĩa MCP servers mà toàn team dùng chung.
Mình đang dùng MCP cho:
- PostgreSQL trực tiếp — Claude query DB, đọc schema, viết migration mà không cần copy-paste
- GitHub — quản lý issue, PR, review trực tiếp từ terminal
- Internal API docs — Claude đọc documentation realtime thay vì nhớ từ prompt
Parallel Sessions — Khi Một Claude Không Đủ
Một trong những tip mà mình thấy ít người nói: chạy nhiều Claude Code session song song.
Workflow thực tế: một session Claude viết code, một session Claude khác review code đó trong parallel. Không share context, nên review session không bị bias.
Mình áp dụng khi làm task phức tạp: session 1 implement feature, session 2 viết test cho feature đó. Kết quả: vừa nhanh hơn, test lại independent hơn vì không bị influence bởi implementation detail.
So Sánh Nhanh Claude Code Với Các Alternatives
Mình dùng cả ba tool này trong ít nhất 2 tuần mỗi cái:
| Tiêu chí | Claude Code | GitHub Copilot | Cursor |
|---|---|---|---|
| Môi trường | Terminal | IDE | IDE riêng |
| Hiểu codebase | Toàn bộ (file thật) | File đang mở | Toàn bộ (index) |
| Chạy lệnh | Có (terminal thật) | Không | Hạn chế |
| Tự verify | Có (chạy test, lint) | Không | Hạn chế |
| Custom skills | Có (skills system) | Không | Rules (cơ bản) |
| MCP support | Có | Không | Một phần |
| Giá | $100/tháng (Claude Max) | $19/tháng | $20/tháng |
| Phù hợp | Developer chuyên sâu | Autocomplete | All-in-one IDE |
Copilot tốt cho autocomplete và suggestion nhanh. Cursor tốt khi bạn muốn IDE all-in-one. Nhưng nếu bạn cần agent thực sự tự chủ — đọc code, chạy test, tự sửa lỗi, commit — Claude Code hiện tại không có đối thủ.
5 Tips Nhanh Mình Muốn Chia Sẻ Thêm
- Ctrl+G là friend của bạn. Mở plan của Claude trong editor, chỉnh trước khi nó thành code. Plan chỉ là text, hãy shape nó.
- Prune CLAUDE.md định kỳ. Sau vài tuần, những gì đã thành muscle memory có thể bỏ. File chỉ nên capture những gì đang học, không phải những gì đã biết.
- Progressive disclosure trong skills. Claude chỉ load frontmatter (~100 tokens mỗi skill) lúc bắt đầu session. Full SKILL.md chỉ load khi skill được gọi. Không lãng phí context.
- Dùng
claude project purge --dry-runđể xem Claude giữ bao nhiêu local state cho project, hữu ích khi giao laptop cho người khác. - Batch similar tasks. Thay vì yêu cầu Claude sửa 10 file rời rạc, gom thành một brief: “Sửa 10 file theo pattern sau…” — nhanh hơn và consistent hơn.
Claude Code Có Phải Cho Ai Cũng Không?
Thành thật thì không. Nếu bạn chỉ cần autocomplete nhanh, Copilot đủ rồi. Nếu bạn muốn IDE có AI tích hợp, Cursor tiện hơn.
Claude Code phù hợp nhất khi:
- Bạn làm việc trên codebase lớn, phức tạp
- Bạn cần agent tự chủ — không muốn hướng dẫn từng bước
- Bạn sẵn sàng đầu tư thời gian setup CLAUDE.md, skills, rules
- Bạn thoải mái với terminal
Mình đánh giá Claude Code giống như một junior developer giỏi: cần instruction rõ ràng lúc đầu, nhưng sau khi đã hiểu project (qua CLAUDE.md và skills), nó tự làm rất tốt. Đầu tư 1-2 tuần setup ban đầu, sau đó tiết kiệm hàng giờ mỗi ngày.
