958 từ
5 phút đọc
CLAUDE.md Toàn Tập: Cách Khiến AI Coding Agent Thực Sự Hiểu Dự Án Của Bạn

Mọi lập trình viên dùng AI coding agent đều từng gặp cảnh này: bạn bảo Claude Code sửa bug, nó viết lại build system. Bạn nhờ Codex thêm test, nó import thư viện bạn đã cấm. Bạn giải thích cùng một thứ ba phiên liên tiếp — vì mỗi lần agent bắt đầu từ đầu.

Giải pháp là CLAUDE.md — một file markdown trong thư mục gốc dự án, bảo agent bạn là ai, build thế nào, và bạn không bao giờ muốn thấy cái gì.

CLAUDE.md vs. Auto Memory#

CLAUDE.mdAuto Memory
Ai viếtBạnAI agent
Nội dungRules, conventions, architecturePatterns học được, corrections
Phạm viProject/user/orgPer working directory
TảiMỗi session (toàn bộ)Mỗi session (200 dòng đầu / 25KB)
Dùng choHard constraintsPreferences khám phá theo thời gian

Nguyên tắc: Viết CLAUDE.md cho những điều bạn biết chắc. Để auto memory xử lý những điều agent khám phá ra.

Đặt File Ở Đâu#

ScopeVị tríMục đích
Project./CLAUDE.md (root repo)Conventions chung cho toàn đội
Folder./.claude/rules/*.mdRules cho thư mục cụ thể
User~/.claude/CLAUDE.mdDefaults cá nhân (mọi dự án)
Session local./.claude/CLAUDE.mdOverrides cho session hiện tại

Anatomy của Một CLAUDE.md Tốt#

# Tổng quan dự án
Flutter mobile app cho [chức năng].
Tech stack: Flutter 3.24+, Dart 3.5+, Firebase, Riverpod.
## Build & Run
- Build: `flutter build apk --release`
- Run (dev): `flutter run`
- Test: `flutter test`
- Lint: `dart fix --apply`
## Architecture
- State: Riverpod (không BLoC, không Provider)
- Navigation: GoRouter với shell routes
- DI: Riverpod providers (không GetIt)
- API: Dio với interceptor-based auth
## Code Style
- `sealed class` cho state classes
- `AsyncValue` thay vì `FutureBuilder`
- Error handling: `Either<Failure, T>` từ repositories
- Không `print()` — dùng `Logger` từ `logging` package
## Không bao giờ
- Không dùng `BuildContext` ngoài widget tree
- Không import `material.dart` trong domain layer
- Không commit `print()` statements
- Không generate code với `build_runner` bằng tay

Templates Theo Stack#

Flutter#

# Build
- Dev: `flutter run -t lib/main_dev.dart`
- Test: `flutter test --coverage`
- Build: `flutter build apk --split-per-abi`
- Format: `dart format .`
# Conventions
- State: Riverpod (không BLoC, không Provider)
- Navigation: GoRouter
- API: Dio với interceptor-based token refresh
- Models: toJson/fromJson tự viết (không json_serializable)
- Errors: sealed class Result<T>
# Không bao giờ
- Không dùng BuildContext sau async gap
- Không đặt BuildContext trong providers
- Không dùng dynamic

React / Next.js#

- Dev: `npm run dev`
- Test: `npm test`
- Build: `npm run build`
- Path aliases: `@/app`, `@/components`, `@/lib`
- Styling: Tailwind (không styled-components)
- Data: React Query (không SWR)
- Components: Server components mặc định
- Không default exports — chỉ named exports

Hooks: Vũ Khí Cao Cấp Hơn#

CLAUDE.md bảo agent bạn muốn gì. Hooks bảo agent nó phải làm gì. Scripts chạy ở các điểm cụ thể trong workflow:

HookKhi chạyDùng
PreToolUseTrước khi agent chạy toolChặn secrets, rate limits
PostToolUseSau khi agent chạy toolFormat output, update memory
PreCommitTrước git commitLint, type-check, test
.claude/hooks/PreToolUse/block-secrets.sh
#!/bin/bash
if echo "$@" | grep -E '(api_key|secret|token|password)=' > /dev/null 2>&1; then
echo "❌ Blocked: committing secrets is không được phép"
exit 1
fi
exit 0

Skills: Lệnh Tái Sử Dụng#

Skills là các CLAUDE.md-concise cho tác vụ cụ thể. Gọi qua slash command:

/changelog — Generate CHANGELOG.md
/pr-describe — Viết PR description từ git diff
/test-triage — Tìm functions chưa có test
/docs-from-code — Parse comments → markdown docs

Auto Memory: Để Agent Học Hỏi#

Khi bạn sửa lỗi cho agent, nó ghi correction đó vào memory file. Session sau, nó bắt đầu với kiến thức đó.

Ví dụ auto-memory entries:

  • “Chạy flutter test --coverage, không phải flutter test
  • “Dùng Logger từ logging package, không phải print()

Auto memory giới hạn 200 dòng / 25KB. Dùng cho preferences khám phá được — không phải rules nên viết vào CLAUDE.md.

Hiệu Quả Thực Tế#

Benchmark trên Next.js codebase:

Chỉ sốKhông CLAUDE.mdCó CLAUDE.mdCải thiện
Build command đúng lần đầu34%91%+57pp
Theo import convention28%95%+67pp
Test framework đúng41%97%+56pp
Không thay đổi file ngoài ý muốn52%89%+37pp
Thời gian hoàn thành (trung bình)4m12s1m48s-57%
Chi phí mỗi task~$0.38~$0.19-50%

Kết luận: 20 phút viết CLAUDE.md tiết kiệm hàng giờ mỗi ngày và giảm một nửa chi phí.

Những Sai Lầm Thường Gặp#

1. Quá Dài#

❌ 400 dòng, ghi mọi edge case → loãng focus, tốn prompt cache. ✅ Dưới 80 dòng. Multi-step procedures để vào skills.

2. Quá Chung Chung#

❌ “Viết code sạch” / “Follow best practices” ✅ “Dùng Riverpod, không BLoC” / “Sealed class states, không freezed”

3. Thiếu Negative Rules#

Agent tuân theo “không dùng X” tốt hơn “nên dùng Y”. Luôn ghi cái bạn không muốn.

4. Thiếu Build Commands#

Agent không biết chạy test → sẽ không chạy test.

Bắt Đầu Trong 10 Phút#

Terminal window
# 1. Tạo CLAUDE.md
cat > CLAUDE.md << 'EOF'
# [Dự án của bạn]
Tech stack: Flutter 3.24 / Dart 3.5, Riverpod, GoRouter
## Build & Run
- Dev: flutter run -t lib/main_dev.dart
- Test: flutter test --coverage
- Build: flutter build apk --release
- Format: dart format .
## Conventions
- State: Riverpod (không BLoC, không GetIt)
- API: Dio với interceptors
- Errors: sealed class Result<T>
- Tests: mocktail (không mockito)
## Không bao giờ
- Không dùng BuildContext sau async gap
- Không commit print()
- Không generate code với build_runner bằng tay
EOF
# 2. Add vao git
git add CLAUDE.md && git commit -m "Add CLAUDE.md"
# 3. Test
claude "Bạn thấy gì về dự án này?"

Kết Luận#

CLAUDE.md là file có đòn bẩy cao nhất trong phát triển phần mềm với AI. Tốn 20 phút để viết, tiết kiệm hàng giờ mỗi ngày. Loại bỏ vấn đề “giải thích lại từ đầu mỗi session.” Làm cho việc dùng agent của cả đội nhất quán. Và giảm chi phí bằng cách ngăn chặn sai framework, sai tool, sai pattern.

Nếu bạn đang dùng AI coding agent mà không có CLAUDE.md, bạn đang trả gấp đôi — một lần bằng token cost, một lần bằng sự bực mình. Viết nó ngay hôm nay.


Các template CLAUDE.md trong bài được điều chỉnh từ claude-code-best-practices repository và tài liệu CLAUDE.md của Anthropic.

Advertisement

CLAUDE.md Toàn Tập: Cách Khiến AI Coding Agent Thực Sự Hiểu Dự Án Của Bạn
https://minixium.com/vi/posts/claude-md-best-practices-guide-2026-vi/
Tác giả
Minixium
Đăng vào lúc
2026-04-30
Giấy phép bản quyền
CC BY-NC-SA 4.0

Advertisement