{"product_id":"best-practices-claude-code-claude-md-vs-settings-json-research-plan-execute-workflow-va-challenge-claude-patterns","title":"Best Practices Claude Code: CLAUDE.md vs settings.json, Research-Plan-Execute Workflow Và \"Challenge Claude\" Patterns","description":"\n\u003ch2\u003eTại Sao Developer Giỏi Vẫn Bị Claude Ignore Instructions?\u003c\/h2\u003e\n\n\u003cp\u003eMột trong những thắc mắc phổ biến nhất trên Reddit về \u003ca href=\"\/en\/products\/claude-code\"\u003eClaude Code\u003c\/a\u003e:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\u003cem\u003e\"Tôi đã viết 'NEVER do X' bằng chữ hoa trong CLAUDE.md. Tại sao Claude vẫn làm X?\"\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eCâu trả lời từ shanraisshan's best practices repo — một trong những repos được reference nhiều nhất trong community:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\u003cem\u003e\"Don't put 'NEVER add Co-Authored-By' in CLAUDE.md when attribution.commit is deterministic.\"\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eNói cách khác: có những thứ thuộc về CLAUDE.md, và có những thứ thuộc về settings.json. Hiểu sự khác biệt này là foundation của mọi best practice khác.\u003c\/p\u003e\n\n\u003ch2\u003eCLAUDE.md vs settings.json: Hai Tầng Với Vai Trò Khác Nhau Hoàn Toàn\u003c\/h2\u003e\n\n\u003ch3\u003eCLAUDE.md: Memory và Context\u003c\/h3\u003e\n\n\u003cp\u003eCLAUDE.md là working knowledge base của project. Nó lưu:\u003c\/p\u003e\n\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eProject context:\u003c\/strong\u003e Tech stack, cấu trúc folder, naming conventions\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSoft guidelines:\u003c\/strong\u003e Code style preferences, preferred patterns\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFile imports:\u003c\/strong\u003e Dùng \u003ccode\u003e@path\/to\/file\u003c\/code\u003e để pull content từ files khác vào context\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWorkflow documentation:\u003c\/strong\u003e Cách thức làm việc trong project cụ thể này\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eCLAUDE.md được version control — nó thay đổi theo project, theo team conventions, theo thời gian. Đây là nơi bạn giải thích \u003cem\u003etại sao\u003c\/em\u003e và \u003cem\u003ecách làm.\u003c\/em\u003e\u003c\/p\u003e\n\n\u003ch3\u003esettings.json: Operational Governance\u003c\/h3\u003e\n\n\u003cp\u003esettings.json quản lý behavior deterministic — những thứ phải xảy ra 100% thời gian:\u003c\/p\u003e\n\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePermissions:\u003c\/strong\u003e Tool nào được phép chạy, file nào được đọc\/ghi\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eModel selection:\u003c\/strong\u003e Dùng model nào cho loại task nào\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOutput styles:\u003c\/strong\u003e Format của responses\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSandboxing:\u003c\/strong\u003e Isolation level cho autonomous operations\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eKeybindings:\u003c\/strong\u003e Custom shortcuts\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eAttribution:\u003c\/strong\u003e Co-author format cho commits\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eNếu muốn Claude \u003cem\u003ekhông bao giờ\u003c\/em\u003e commit files .env → settings.json với permission deny rule, không phải CLAUDE.md với \"NEVER commit .env\".\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eRule of thumb:\u003c\/strong\u003e Memory trong CLAUDE.md. Governance trong settings.json.\u003c\/p\u003e\n\n\u003ch2\u003eArchitecture Pattern: Research → Plan → Execute → Review → Ship\u003c\/h2\u003e\n\n\u003cp\u003eCommunity consensus mạnh nhất về workflow — được gọi là \"5-phase gate methodology\":\u003c\/p\u003e\n\n\u003ch3\u003ePhase 1: Research\u003c\/h3\u003e\n\u003cp\u003eTrước khi làm bất cứ gì, Claude cần explore và understand:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eĐọc relevant code files\u003c\/li\u003e\n  \u003cli\u003eTìm dependencies và side effects\u003c\/li\u003e\n  \u003cli\u003eHiểu existing patterns trong codebase\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003ePrompt: \u003cem\u003e\"Before writing any code, explore the codebase and tell me what you find about [area]. List all files touched by this change.\"\u003c\/em\u003e\u003c\/p\u003e\n\n\u003ch3\u003ePhase 2: Plan\u003c\/h3\u003e\n\u003cp\u003ePlan phải được approve trước khi bất kỳ code nào được viết. Key insight từ repo:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\u003cem\u003e\"Start with a minimal spec or prompt and ask Claude to interview you using AskUserQuestion tool, then make a new session to execute the spec.\"\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eSpin up second Claude instance (fresh context) để review plan như staff engineer. Fresh perspective bắt được assumptions mà original context bỏ qua.\u003c\/p\u003e\n\n\u003ch3\u003ePhase 3: Execute\u003c\/h3\u003e\n\u003cp\u003eImplementation với boundaries rõ ràng. State desired outcomes, không phải implementation steps cụ thể. Claude tự quyết định how — bạn quyết định what và why.\u003c\/p\u003e\n\n\u003ch3\u003ePhase 4: Review\u003c\/h3\u003e\n\u003cp\u003eMulti-layer review:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eAutomated: tests, type checks, linting\u003c\/li\u003e\n  \u003cli\u003eAI: \"Prove to me this works\" → Claude diff giữa main và branch\u003c\/li\u003e\n  \u003cli\u003eHuman: business logic, edge cases, security implications\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003ePhase 5: Ship\u003c\/h3\u003e\n\u003cp\u003eDeploy với confidence vì mọi layer đã được kiểm tra.\u003c\/p\u003e\n\n\u003ch2\u003e\"Challenge Claude\" Patterns: 3 Prompts Tạo Accountability\u003c\/h2\u003e\n\n\u003cp\u003eĐây là section được cite nhiều nhất từ repo của shanraisshan:\u003c\/p\u003e\n\n\u003ch3\u003ePattern 1: \"Grill Me\"\u003c\/h3\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\u003cem\u003e\"Grill me on these changes and don't make a PR until I pass your test.\"\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eĐảo ngược vai trò: Claude là examiner, bạn là người cần chứng minh implementation đúng. Buộc bạn hiểu code của mình, không chỉ accept output của AI.\u003c\/p\u003e\n\n\u003ch3\u003ePattern 2: \"Prove To Me This Works\"\u003c\/h3\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\u003cem\u003e\"Prove to me this works.\"\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eClaude diff giữa main branch và current branch, list tất cả changes, explain tại sao mỗi change là đúng. Không chấp nhận \"trust me\" từ AI.\u003c\/p\u003e\n\n\u003ch3\u003ePattern 3: \"Scrap And Start Over\"\u003c\/h3\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\u003cem\u003e\"Knowing everything you know now, scrap this and implement the elegant solution.\"\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003ePattern mạnh nhất trong ba cái. Sau khi có working solution (kể cả solution xấu), buộc Claude rethink từ đầu với full context. Kết quả thường là solution đẹp hơn nhiều — vì AI bây giờ hiểu toàn bộ problem space.\u003c\/p\u003e\n\n\u003ch2\u003eCode Search: Grep + Glob Beats RAG Cho Codebase\u003c\/h2\u003e\n\n\u003cp\u003eInsight kỹ thuật quan trọng từ repo, supported bởi Anthropic engineering decision:\u003c\/p\u003e\n\n\u003cp\u003eClaude Code đã thử và loại bỏ vector databases (RAG) cho code search. Lý do:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eCode drift out of sync với embeddings → search returns stale results\u003c\/li\u003e\n  \u003cli\u003ePermission management phức tạp\u003c\/li\u003e\n  \u003cli\u003eOverhead không đáng khi grep + glob đơn giản hơn và chính xác hơn\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eGrep + glob tìm kiếm trực tiếp trong file system → luôn up-to-date, không cần index maintenance.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eÁp dụng:\u003c\/strong\u003e Đừng over-engineer code search setup. Grep works. Stay simple.\u003c\/p\u003e\n\n\u003ch2\u003eSkill Description: Viết Cho Model, Không Phải Cho Human\u003c\/h2\u003e\n\n\u003cp\u003eKhi viết Skills, phần \u003ccode\u003edescription\u003c\/code\u003e phải trả lời câu hỏi của model: \u003cem\u003e\"When should I fire this skill?\"\u003c\/em\u003e\u003c\/p\u003e\n\n\u003cp\u003eCommon mistakes:\u003c\/p\u003e\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eMistake\u003c\/th\u003e\n      \u003cth\u003eBetter\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\"Skill này xử lý emails\"\u003c\/td\u003e\n      \u003ctd\u003e\"Load khi user cần soạn, phân loại, hoặc tóm tắt emails. Áp dụng corporate tone guidelines.\"\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\"A skill for data analysis\"\u003c\/td\u003e\n      \u003ctd\u003e\"Activate when performing quantitative analysis on structured data. Includes pandas patterns, visualization defaults, and statistical test recommendations.\"\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eLiệt kê tính năng\u003c\/td\u003e\n      \u003ctd\u003eMô tả trigger conditions\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003cp\u003eNguyên tắc: Don't state the obvious. Focus vào gì pushes Claude ra khỏi default behavior.\u003c\/p\u003e\n\n\u003ch2\u003eThree-Layer Architecture: Subagents, Commands, Skills\u003c\/h2\u003e\n\n\u003cp\u003eRepo mô tả ba tầng distinct:\u003c\/p\u003e\n\n\u003ch3\u003eSubagents (.claude\/agents\/)\u003c\/h3\u003e\n\u003cp\u003eAutonomous actors trong isolated contexts. Có custom tools, permissions, persistent identity. Phù hợp cho long-running tasks cần scope của riêng chúng.\u003c\/p\u003e\n\n\u003ch3\u003eCommands (.claude\/commands\/)\u003c\/h3\u003e\n\u003cp\u003eKnowledge injected vào existing context. Workflow orchestration. Không isolate — chia sẻ context với main session.\u003c\/p\u003e\n\n\u003ch3\u003eSkills (.claude\/skills\/)\u003c\/h3\u003e\n\u003cp\u003eConfigurable, preloadable knowledge. Progressive disclosure — load khi cần, không load khi không cần. Shareable across sessions và users.\u003c\/p\u003e\n\n\u003cp\u003eThree layers phục vụ ba nhu cầu khác nhau. Sai tầng → wrong results.\u003c\/p\u003e\n\n\u003ch2\u003eHot Features Từ Community (Beta\/Recent)\u003c\/h2\u003e\n\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eAuto Mode:\u003c\/strong\u003e Background safety classifier tự handle permission prompts — không cần approve từng action nhỏ\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eScheduled Tasks (\u003ccode\u003e\/schedule\u003c\/code\u003e):\u003c\/strong\u003e Cloud-based recurring prompts, chạy kể cả khi máy tính tắt\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCode Review:\u003c\/strong\u003e Multi-agent PR analysis catching bugs và vulnerabilities\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eChannels:\u003c\/strong\u003e Push events từ Telegram\/Discord vào running sessions\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eTóm Tắt Checklist\u003c\/h2\u003e\n\n\u003cp\u003eBest practices core cho mọi Claude Code project:\u003c\/p\u003e\n\n\u003col\u003e\n  \u003cli\u003eCLAUDE.md: context và memory. settings.json: permissions và behavior deterministic\u003c\/li\u003e\n  \u003cli\u003eLuôn Research → Plan → Execute → Review → Ship, không skip phases\u003c\/li\u003e\n  \u003cli\u003eDùng \"Challenge Claude\" patterns để tạo accountability\u003c\/li\u003e\n  \u003cli\u003eGrep + glob cho code search, không cần RAG\u003c\/li\u003e\n  \u003cli\u003eSkill descriptions viết cho model's decision-making, không phải human readability\u003c\/li\u003e\n  \u003cli\u003eChọn đúng tầng: Subagent cho isolation, Command cho orchestration, Skill cho reusable knowledge\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003cp\u003eMuốn explore thêm? Xem \u003ca href=\"\/en\/products\/claude-code\"\u003eClaude Code documentation\u003c\/a\u003e và \u003ca href=\"\/en\/products\/claude-cowork\"\u003eClaude Cowork\u003c\/a\u003e cho non-technical workflows.\u003c\/p\u003e\n\n\u003chr\u003e\n\u003ch2\u003eNguồn Tham Khảo\u003c\/h2\u003e\n\u003cp\u003eBài viết dựa trên: \u003cem\u003eclaude-code-best-practice repository\u003c\/em\u003e bởi \u003cstrong\u003eshanraisshan\u003c\/strong\u003e, đăng trên GitHub. Link gốc: \u003ca href=\"https:\/\/github.com\/shanraisshan\/claude-code-best-practice\" target=\"_blank\" rel=\"noopener\"\u003egithub.com\/shanraisshan\u003c\/a\u003e\u003c\/p\u003e\n","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47725790003412,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/best-practices-claude-code-claude-md-vs-settings-json-research-plan-execute-workflow-va-challenge-claude-patterns.jpg?v=1774573950","url":"https:\/\/claude.vn\/en\/products\/best-practices-claude-code-claude-md-vs-settings-json-research-plan-execute-workflow-va-challenge-claude-patterns","provider":"CLAUDE.VN","version":"1.0","type":"link"}