4 câu hỏi cho mọi tình huống
Xác định câu đề đang hỏi về trục nào, cách làm đúng thường hiện ra ngay.
- Phạm vi: áp dụng cho ai, và có nằm trong version control không?
- Chế độ: cần tìm hiểu trước không, và có người đang theo dõi không?
- Đầu ra: ai dùng kết quả? Người đọc văn bản, chương trình thì cần dữ liệu có cấu trúc.
- Danh tính: chạy bằng credential của ai, có truy lại được ai đã cho phép không?
Cấu hình CLAUDE.md theo phạm vi
-
Dự án:
./CLAUDE.mdhoặc./.claude/CLAUDE.mdChia sẻ cho cả team qua git. Đây là nơi chính cho chuẩn chung của team, mọi thay đổi đều có thể review.
-
Thư mục con:
frontend/CLAUDE.mdQuy ước riêng cho một phần của repo. Được nạp khi Claude làm việc với file trong thư mục đó.
-
Người dùng:
~/.claude/CLAUDE.mdChỉ có tác dụng với bạn, trên mọi dự án. Chỉ dùng cho sở thích cá nhân.
-
Cá nhân trong dự án:
./CLAUDE.local.mdChỉ cho bạn, trong dự án này. Nhớ thêm vào
.gitignore. -
Toàn tổ chức: managed policy
Do IT hoặc DevOps triển khai, dùng cho chuẩn chung và yêu cầu tuân thủ của công ty.
Bẫy đề thi
Chuẩn của team chỉ nằm trong ~/.claude/CLAUDE.md của một người thì đồng đội không nhận được, và mỗi người sẽ làm một kiểu. Hãy chuyển vào CLAUDE.md của dự án và commit.
Đã đối chiếu tài liệu chính thức
CLAUDE.md là context, không phải cấu hình bắt buộc. Muốn chặn một hành động bất kể Claude quyết định gì, hãy dùng PreToolUse hook. Nên giữ mỗi file dưới 200 dòng. Xem docs
Tách rule khi file quá lớn
Dấu hiệu cần tách: Claude bỏ qua rule có trong file, người review không tìm thấy quy ước, hoặc các thư mục cần chỉ dẫn trái ngược nhau.
.claude/rules/: mỗi chủ đề một file, nhưtesting.md,api-design.md.- Frontmatter
paths: rule chỉ nạp khi Claude làm việc với file khớp mẫu. Rule không cópathsđược nạp ngay khi khởi động. - Import: viết
@path/to/filetrong CLAUDE.md để dùng chung, không phải sao chép giữa các nơi.
Ví dụ file .claude/rules/react-test.md:
---
paths:
- "**/*.test.tsx"
---
Mỗi test phải có ít nhất một assertion.
Khi nào dùng rule, khi nào dùng thư mục con
Quy ước áp dụng cho một loại file nằm rải rác nhiều thư mục, như .test.tsx: dùng rule có paths. Quy ước gắn với một thư mục: dùng CLAUDE.md trong thư mục đó.
Chế độ làm việc và các lệnh
Direct execution
Mặc định cho việc đơn giản và rõ ràng.
Plan Mode
Dùng cho việc phức tạp hoặc mơ hồ, như migrate hơn 50 file. Claude tìm hiểu và đề xuất trước khi sửa. Mẹo: nếu không nói được thay đổi trong một câu, hoặc không đoán được file nào sẽ bị ảnh hưởng, hãy lập kế hoạch trước.
Các lệnh cần biết
/plan: vào Plan Mode./compact: tóm tắt lịch sử để giải phóng context./memory: xem và sửa các file CLAUDE.md, bật hoặc tắt auto memory./context: xem context đang dùng và các file memory đã nạp./branch: tách cuộc hội thoại để thử hướng khác mà vẫn giữ bản gốc.
Skills
Skill đóng gói chỉ dẫn để dùng lại và quản lý phiên bản. Chỉ dẫn sao chép bằng tay thì dần dần khác nhau.
context: fork: chạy skill trong subagent riêng, để kết quả dài dòng không vào lịch sử chính.argument-hint: gợi ý tham số khi autocomplete, ví dụ[issue-number].
Đã đối chiếu tài liệu chính thức
- Nguồn ôn tập ghi
/fork_session, nhưng danh sách lệnh chính thức không có lệnh này. Hiện tại dùng/branch, hoặc/forkđể chép sang phiên chạy nền, hoặc cờ CLI--fork-sessionkhi resume. Xem docs - Nguồn ôn tập nói
/memorydùng để kiểm tra file nào đã nạp. Docs chính thức hướng dẫn dùng/contextđể kiểm tra, còn/memoryđể mở và sửa. Xem docs argument-hintchỉ là gợi ý, không kiểm tra hay bắt buộc nhập tham số. Xem docs
Chạy trong CI/CD
- Cờ
-p(--print): chạy không tương tác. Thiếu cờ này là lỗi hay gặp nhất, job treo đến khi timeout. - JSON theo schema: dùng
--output-format jsonvà--json-schema. Chương trình không nên phụ thuộc vào văn xuôi. - Tách biệt context: lần chạy sau không bị ảnh hưởng bởi lần chạy trước.
- Secret: lấy từ biến môi trường hoặc secret manager, không commit vào repo.
claude -p "Review diff này" \
--output-format json \
--json-schema "$(cat schema.json)"
Danh tính và kiểm toán
Service account dùng chung là lỗi quan trọng nhất của domain này. Khi có sự cố, log chỉ thấy tên account mà không thấy ai đã kích hoạt. Cách sửa là xác thực và phân quyền theo từng người, kèm least privilege.
MCP server dùng chung cho dự án
Commit .mcp.json để cả team có cùng cấu hình. Token nằm trong biến môi trường, file chỉ tham chiếu đến nó.
{
"mcpServers": {
"docs": {
"type": "http",
"url": "https://docs.example.com/mcp",
"headers": {
"Authorization": "Bearer ${DOCS_TOKEN}"
}
}
}
}
Câu hỏi kiểm toán
Khi một tool không thể hoàn tác đã chạy, bạn có truy lại được ai đã cho phép, với quyền gì, và theo cấu hình nào không?
Dùng Claude để review và debug
Review bằng phiên độc lập
Agent khó phát hiện lỗi của chính nó vì đang mang theo mạch suy luận cũ. Hãy dùng một Claude instance mới để review.
Review nhiều lượt
Từng file để tìm lỗi cục bộ, thêm lượt riêng để kiểm tra luồng dữ liệu giữa các file.
Review lại sau mỗi commit
Đưa kèm các phát hiện trước đó, và chỉ báo lỗi mới hoặc chưa được sửa.
Debug qua nhiều module
Dùng Grep tìm điểm vào, rồi Read theo các import để lần theo luồng chạy.
Explore subagent
Tách phần tìm kiếm dài dòng và chỉ trả về tóm tắt, giúp context chính gọn.
Báo nhiều lỗi trong một tin nhắn
Hợp lý khi các lỗi liên quan nhau, sửa lỗi này ảnh hưởng đến lỗi kia.
Ngoài ra, ba việc vận hành hay gặp là debug sự cố, chạy runbook và tự động viết tài liệu. Khi đánh giá kết quả tự động, đừng tin một con số chính xác tổng. Hãy đánh giá theo từng nhóm và từng ca.
Nhớ nhanh
- Chuẩn của team nằm trong cấu hình dự án đã commit.
- File quá lớn thì tách vào
.claude/rules/vớipaths. - CI cần
-p, JSON theo schema, context riêng, secret từ bên ngoài. - Việc lớn, chưa rõ thì dùng Plan Mode trước.
- Service account dùng chung làm mất khả năng truy vết.