Bỏ qua để đến nội dung

Mẹo & Thủ Thuật

import { Aside, Card, CardGrid } from ‘@astrojs/starlight/components’;

Chạy `/init` ngay khi vào project mới. Một CLAUDE.md với 6 phần thiết yếu (Tổng quan, Kiến trúc, Quy ước, Lệnh, Ràng buộc, Context) tiết kiệm thời gian hơn bất kỳ hành động nào khác. Không bao giờ cho Claude đọc `.env` trực tiếp. Tạo `.env.example` với placeholder và nói: "Đọc .env.example rồi generate config dùng process.env." Thói quen đơn giản này ngăn 100% rủi ro lộ secret. Xây thói quen: **Lệnh chỉ đọc → tự động duyệt. Lệnh ghi → kiểm tra trước. Lệnh phá hủy → luôn từ chối.** Sau một tuần, bạn sẽ bản năng biết nên duyệt hay kiểm tra. Cấu trúc mọi prompt phức tạp theo: **C**ontext (bối cảnh), **R**eference (tham chiếu), **E**xpectation (kỳ vọng), **F**ormat (định dạng). Team dùng CREF giảm tỉ lệ bị reject code review từ 35% xuống 12%. Đừng bao giờ nói "đọc tất cả file trong src/." Thay vào đó: (1) Hỏi cấu trúc thư mục, (2) Hỏi function signatures, (3) Chỉ đọc file cụ thể cần thiết. Chiến lược 3 lớp này dùng ít hơn 60% context. Compact ở mức **50-70%** context, không phải 90%. Compact sớm giữ được nhiều context hữu ích hơn. Giống như defrag ổ đĩa — làm chủ động tốt hơn khi khẩn cấp. Trước mọi phiên auto-coding, chỉ rõ: file ĐƯỢC PHÉP, file CẤM, điều kiện dừng, và lệnh kiểm tra. Không có ranh giới, Claude có thể sửa file bạn không muốn. Nếu cùng cách tiếp cận thất bại 3 lần với kết quả tương tự, **dừng ngay**. Hỏi: "Chúng ta đang giả định gì có thể sai?" Quy tắc này trung bình tiết kiệm $8 và 45 phút cho mỗi lần bị kẹt. Với codebase cũ, phiên đầu tiên CHỈ đọc — không sửa gì. Dùng chiến lược 3 lớp: Cấu trúc (bản đồ) → Pattern (con đường) → Chi tiết (ngõ hẻm). Một team map được codebase Java 50,000 dòng trong 5 ngày so với 3 tuần dự kiến. Khi refactor, commit sau mỗi thay đổi logic. Một function legacy 800 dòng refactor qua 33 commit nhỏ trong 4 tuần không có sự cố production nào. Cách viết lại toàn bộ cùng function đó làm hỏng payment, shipping, và audit logging. Một startup Việt Nam giảm chi phí Claude từ $1,200 xuống $380/tháng chỉ bằng cách chọn model đúng cho task. Phát hiện: "Haiku làm được 80% những gì chúng tôi dùng Opus." Tạo template tái sử dụng cho các task phổ biến (`/screen`, `/api-call`, `/debug`). Team báo cáo hoàn thành task nhanh hơn 40-60% khi thư viện template đạt 5-10 recipe.
#Kỹ thuậtCách làmTiết kiệm
1Đọc chọn lọcHỏi signatures/types trước, full file sau-60%
2Lọc outputDùng head -20, tail -50, grep -A 5-80%
3Compact chiến lượcCompact ở mốc 30%, 60%, 80%Reset về ~50%
4Prompt ngắn gọn”Fix bug saveUser” thay vì bài văn 500 từ-50%
5Đọc từng phần”Đọc dòng 1-100 của X” cho file lớnChỉ đọc phần cần
6Tránh đọc lạiHỏi “Bạn còn giữ auth.ts trong context không?”-100% chi phí trùng lặp
Terminal window
# Kiểm tra chi phí mỗi 20-30 phút
/cost
# Output mẫu:
# Input: 45,231 tokens ($0.14)
# Output: 12,847 tokens ($0.19)
# Total: 58,078 tokens ($0.33)
# Nếu context > 60%, compact chủ động
/compact

Các project Android/KMP lớn (100K+ dòng code) cần chiến lược đặc biệt để nằm trong giới hạn context.

Lớp 1: Cấu Trúc (Bản Đồ)
├── "Cho tôi xem cấu trúc thư mục project"
├── "Các module chính là gì?"
└── "Entry point ở đâu?"
Lớp 2: Pattern (Con Đường)
├── "Architecture pattern nào đang dùng?"
├── "Cho tôi xem dependency graph giữa các module"
└── "Data flow từ API đến UI như thế nào?"
Lớp 3: Chi Tiết (Ngõ Hẻm)
├── "Đọc src/auth/LoginViewModel.kt"
├── "Trace luồng payment từ click button đến API call"
└── "Điều gì xảy ra khi token hết hạn?"
Cần có: Các layer Clean Architecture, quy ước MVVM, Compose hay XML, ranh giới module, lệnh Gradle (`./gradlew assembleDebug`, `./gradlew test`), và ProGuard rules không được sửa. Với Kotlin Multiplatform, nói rõ cho Claude code nào là shared (`commonMain`) vs platform-specific (`androidMain`, `iosMain`). Không nói rõ, Claude có thể viết code platform-specific trong shared module.
Phase 1: Khảo sát (1 phiên)
"Liệt kê tất cả file dùng deprecated API X"
Phase 2: Lập kế hoạch (1 phiên)
"Tạo kế hoạch migration — file nào trước, file nào phụ thuộc"
Phase 3: Thực hiện (N phiên, theo batch)
"Migrate file 1-10 theo kế hoạch. Test sau mỗi file."
/compact
"Migrate file 11-20..."

Kết Hợp Claude Với n8n & Công Cụ Bên Ngoài

Phần tiêu đề “Kết Hợp Claude Với n8n & Công Cụ Bên Ngoài”
PatternUse CaseVí dụ
Sequential PipelineChuyển đổi nhiều bướcEmail → Trích dữ liệu → Tạo báo cáo
Fan-Out/Fan-InTask song song độc lậpPhân tích 10 PR cùng lúc
Classification RouterXử lý khác nhau theo loạiPhân loại bug vs feature vs question
Human-in-the-LoopCần phê duyệtCode review có người duyệt
Batch ProcessingNhiều itemXử lý 200+ đánh giá khách hàng
Trong node Execute Command của n8n, dùng `/usr/local/bin/claude` thay vì chỉ `claude`. Process n8n có thể không có PATH của shell bạn. Luôn set timeout trong Execute Command node là 60000ms trở lên. Thao tác Claude Code có thể mất 30-60 giây, đặc biệt với task sinh code. Với prompt phức tạp có dấu ngoặc và ký tự đặc biệt, build chuỗi prompt trong Set node trước, rồi truyền vào Execute Command. Tránh lỗi do dấu ngoặc.
  • Agency marketing: 50+ brief email/ngày tự xử lý — 2 giờ giảm xuống 5 phút
  • Đánh giá khách hàng: 200+ review phân tích bằng batch + sequential + router — 4 giờ xuống 30 phút
  • Deploy code: PR merged → auto tạo changelog → thông báo Slack → cập nhật docs

Chú ý các dấu hiệu Claude có thể hallucinate:

Dấu hiệuVí dụCách xử lý
Tên quá genericawesome-validator, fast-json-loaderKiểm tra package: npm view <tên>
Không có link nguồn”Dùng thư viện X” mà không có URLHỏi: “Cho tôi link GitHub repo”
Claim số version”Thêm vào từ v3.2.1”Kiểm tra changelog chính thức
Match quá hoàn hảoĐúng API bạn cần, không có trade-offQuá tốt? Kiểm tra độc lập
Style code lẫn lộnReact class + hooks trong cùng componentYêu cầu Claude chọn một
Tự tin nhưng sai”Đây là cách chuẩn để…”Tự tin khác chính xác
Cần verifyLệnhNguồn
npm package tồn tạinpm view <package>npmjs.com
Python package tồn tạipip show <package>pypi.org
CLI flag tồn tạicommand --helpDocs chính thức
Đường dẫn file tồn tạils -la <path>Hệ thống
API endpoint hoạt độngcurl -I <url>Server live

Khi Claude bị kẹt trong loop hoặc cho kết quả sai:

BướcHành độngPrompt
1. Chuyển hướngĐổi cách tiếp cận”Dừng lại. Thử cách hoàn toàn khác.”
2. Cung cấp thông tinBổ sung context”Bạn có thể thiếu: API trả về XML, không phải JSON.”
3. Phân táchChia nhỏ bài toán”Quên giải pháp tổng thể. Chỉ giải phần auth trước.”
4. Làm mớiDọn context cũ/compact
5. ResetBắt đầu lại/clear
6. Tự làmBạn codeViết code bằng tay
Claude gợi ý `npm install super-fast-orm`. Bạn cài. Nó không tồn tại. **Phòng tránh**: Luôn `npm view ` trước khi cài. Claude dùng `response.auto_confirm` trong tích hợp thanh toán. Field này không tồn tại trong API. Một team fintech mất 2 ngày debug trong staging. **Phòng tránh**: Đối chiếu mọi API field với docs chính thức. Claude dùng `componentWillMount` trong React. Method này deprecated từ lâu. **Phòng tránh**: Verify lifecycle method với React docs hiện tại. Claude nói "PostgreSQL hỗ trợ `UPSERT` từ version 9.0." Thực tế là version 9.5. Chi tiết nhỏ, hậu quả lớn nếu target version cũ. **Phòng tránh**: Luôn verify claim liên quan đến version.

Thêm phần này vào CLAUDE.md để giảm hallucination:

## Quy Tắc Verification
- KHÔNG BAO GIỜ gợi ý package mà chưa xác nhận tồn tại trên npm/pypi
- LUÔN cung cấp URL GitHub hoặc docs cho thư viện bên thứ 3
- Nếu không chắc về API, nói "cần verification" thay vì đoán
- Khi gợi ý feature theo version, trích dẫn changelog