{"product_id":"mastering-claude-code-best-practices-thực-sự-hiệu-quả-thinking-hierarchy-plan-mode-va-claude-files","title":"Mastering Claude Code: Best Practices thực sự hiệu quả — Thinking hierarchy, Plan Mode, và .claude files","description":"\n\u003ch2\u003eTừ vibe coding đến production-ready: Tư duy đúng\u003c\/h2\u003e\n\u003cp\u003eDinanjana Gunaratne đã trải qua giai đoạn mà hầu hết developer trải qua khi mới dùng Claude Code: gõ prompts vague vào Claude, nhận code về, debug mãi vẫn không xong. Rồi anh phát hiện ra điều gì đó quan trọng — \u003cstrong\u003echất lượng output không phụ thuộc vào \"AI thông minh\" mà phụ thuộc vào process của bạn\u003c\/strong\u003e.\u003c\/p\u003e\n\n\u003cp\u003eBài viết này tổng hợp những best practices của Dinanjana đã chuyển đổi workflow của anh từ \"spend hours debugging\" sang \"production-ready từ lần đầu\".\u003c\/p\u003e\n\n\u003ch2\u003eBest Practice #1: Thinking Hierarchy — Match effort với problem\u003c\/h2\u003e\n\u003cp\u003eClaude Code có 4 levels của \"thinking\" — mỗi level tăng computational resources và quality, nhưng cũng tăng token cost:\u003c\/p\u003e\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eLevel\u003c\/th\u003e\n\u003cth\u003eDùng khi nào\u003c\/th\u003e\n\u003cth\u003eVí dụ\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003ethink\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eStraightforward features, bug fixes đơn giản\u003c\/td\u003e\n\u003ctd\u003eAdd a new API endpoint\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003ethink hard\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eComplex business logic, multi-file architecture\u003c\/td\u003e\n\u003ctd\u003eRedesign authentication flow\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003ethink harder\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ePerformance optimization, security-sensitive code\u003c\/td\u003e\n\u003ctd\u003eOptimize database queries\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eultrathink\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eLegacy integration, complex algorithms, stuck problems\u003c\/td\u003e\n\u003ctd\u003eMigrate from monolith to microservices\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"There's no point burning thinking tokens on a variable rename.\" — Dinanjana Gunaratne\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eMistake phổ biến nhất: default về \"ultrathink\" cho mọi thứ. Đây là waste tokens và thời gian. Bắt đầu với \"think\" cho simple tasks, escalate lên khi cần thiết.\u003c\/p\u003e\n\n\u003ch2\u003eBest Practice #2: Plan Mode — Architect trước, code sau\u003c\/h2\u003e\n\u003cp\u003eNhấn \u003cstrong\u003eShift+Tab hai lần\u003c\/strong\u003e để vào Plan Mode. Đây là mode Claude analyze codebase mà \u003cem\u003ekhông modify\u003c\/em\u003e bất kỳ file nào — hoạt động như architect thay vì coder.\u003c\/p\u003e\n\n\u003ch3\u003eKhi nào bắt buộc dùng Plan Mode?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBắt đầu feature mới — \"non-negotiable\" theo Dinanjana\u003c\/li\u003e\n\u003cli\u003eComplex multi-file refactoring\u003c\/li\u003e\n\u003cli\u003eDebugging vấn đề không rõ nguyên nhân\u003c\/li\u003e\n\u003cli\u003eArchitectural decisions ảnh hưởng nhiều components\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eWorkflow với Plan Mode\u003c\/h3\u003e\n\u003col\u003e\n\u003cli\u003eEnter Plan Mode (Shift+Tab twice)\u003c\/li\u003e\n\u003cli\u003eMô tả objective: \"I want to add user authentication with JWT tokens\"\u003c\/li\u003e\n\u003cli\u003eReview Claude's comprehensive plan — files sẽ touched, approach, potential risks\u003c\/li\u003e\n\u003cli\u003eRefine nếu cần: \"Actually, use session-based auth instead\"\u003c\/li\u003e\n\u003cli\u003eExit Plan Mode và execute\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003cp\u003eLợi ích: bạn review plan trước khi Claude bắt đầu thay đổi code. Tránh được rabbit holes và sai direction sau khi đã làm được 80%.\u003c\/p\u003e\n\n\u003ch2\u003eBest Practice #3: .claude Files — Project memory bank\u003c\/h2\u003e\n\u003cp\u003eFile \u003ccode\u003eCLAUDE.md\u003c\/code\u003e không chỉ là configuration — đây là \"brain implant\" cho Claude về project của bạn. Cấu trúc hierarchical:\u003c\/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003e~\/.claude\/CLAUDE.md\u003c\/code\u003e: Global settings áp dụng cho mọi project\u003c\/li\u003e\n\u003cli\u003e\n\u003ccode\u003eyour-project\/CLAUDE.md\u003c\/code\u003e: Project-level context\u003c\/li\u003e\n\u003cli\u003e\n\u003ccode\u003eyour-project\/src\/api\/CLAUDE.md\u003c\/code\u003e: Directory-specific context\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eCLAUDE.md mẫu hiệu quả\u003c\/h3\u003e\n\u003cp\u003eVí dụ từ Dinanjana về CLAUDE.md của anh:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e## Code Style\n- TypeScript only (no JavaScript)\n- Functional components with hooks\n- 2-space indentation\n- Prefer named exports\n\n## Architecture\n- State management: Zustand\n- API calls: custom hooks in src\/hooks\/\n- No business logic in components\n\n## Hard Rules\n- No class components\n- Functions max 50 lines\n- No files over 300 lines\n- Tests required for all utilities\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"The magic isn't in the format — it's in being specific about what matters for your project.\" — Dinanjana\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003ch2\u003eBest Practice #4: Encourage Clarifying Questions\u003c\/h2\u003e\n\u003cp\u003eĐây là insight breakthrough lớn nhất của Dinanjana: \u003cstrong\u003eexplicitly prompt Claude để hỏi\u003c\/strong\u003e thay vì assume.\u003c\/p\u003e\n\n\u003cp\u003eThay vì:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e\"Build me an authentication system\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eDùng:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e\"Before starting the authentication system, ask me questions about requirements to ensure we're building exactly what's needed.\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eClaude sẽ hỏi: Social login hay email\/password? Sessions hay JWT? Password reset flow như thế nào? Rate limiting? 2FA?\u003c\/p\u003e\n\n\u003cp\u003eKết quả: output chính xác ngay từ đầu thay vì làm lại 3 lần vì missed requirements.\u003c\/p\u003e\n\n\u003ch2\u003eBest Practice #5: External Memory Files\u003c\/h2\u003e\n\u003cp\u003eContext của Claude reset sau mỗi session — nhưng \u003cem\u003efiles của bạn không reset\u003c\/em\u003e. Tận dụng điều này:\u003c\/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\n\u003ccode\u003eplan.md\u003c\/code\u003e: Master plan với checkboxes — Claude và bạn cùng track progress\u003c\/li\u003e\n\u003cli\u003e\n\u003ccode\u003earchitecture.md\u003c\/code\u003e: High-level system design — đọc lại khi cần context\u003c\/li\u003e\n\u003cli\u003e\n\u003ccode\u003etodo.md\u003c\/code\u003e: Current working checklist\u003c\/li\u003e\n\u003cli\u003e\n\u003ccode\u003edecisions.md\u003c\/code\u003e: Record architectural choices và \u003cem\u003elý do\u003c\/em\u003e đằng sau chúng\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003ePattern hiệu quả: khi bắt đầu session mới, prompt: \"Read plan.md and architecture.md, then we'll continue from where we left off.\"\u003c\/p\u003e\n\n\u003ch2\u003eBest Practice #6: Active Collaboration, không phải Autonomous Mode\u003c\/h2\u003e\n\u003cp\u003eTreat Claude như \"fast junior developer\" cần direction tốt — không phải autonomous system tự làm mọi thứ.\u003c\/p\u003e\n\n\u003cp\u003ePractices cụ thể:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eReview mọi plan trước execution\u003c\/strong\u003e — đừng just hit enter và đi pha cà phê\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCourse-correct sớm\u003c\/strong\u003e — dùng Escape key nếu Claude đang đi sai hướng\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBreak complex changes thành steps\u003c\/strong\u003e — mỗi step có thể verify độc lập\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eChallenge assumptions\u003c\/strong\u003e: \"Are you sure this is the right approach? What alternatives did you consider?\"\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eCombining practices: Workflow thực tế\u003c\/h2\u003e\n\u003cp\u003eĐây là cách các best practices kết hợp trong một feature development cycle:\u003c\/p\u003e\n\n\u003col\u003e\n\u003cli\u003e\n\u003cstrong\u003eClarifying questions first\u003c\/strong\u003e: \"Before we start, ask me about requirements\"\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePlan Mode\u003c\/strong\u003e: Review architecture trước khi touch code\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAppropriate thinking level\u003c\/strong\u003e: \"think hard\" cho feature này\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCLAUDE.md check\u003c\/strong\u003e: Claude đã load project conventions\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eExternal memory\u003c\/strong\u003e: Update decisions.md sau khi chọn approach\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eActive review\u003c\/strong\u003e: Không approve blindly — đọc và hiểu\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003ch2\u003eKết quả thực tế\u003c\/h2\u003e\n\u003cp\u003eDinanjana báo cáo: sau khi áp dụng consistent, implementations \"shift from requiring extensive debugging to being remarkably close to production-ready.\"\u003c\/p\u003e\n\n\u003cp\u003eKhông phải vì Claude thông minh hơn — mà vì process tốt hơn dẫn đến context tốt hơn, dẫn đến output tốt hơn.\u003c\/p\u003e\n\n\u003ch2\u003eLiên kết với broader Claude Code ecosystem\u003c\/h2\u003e\n\u003cp\u003eNhững practices này bổ sung hoàn hảo với:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/claude-code-agent-teams-huong-dan-thiet-lap\"\u003eAgent Teams\u003c\/a\u003e: CLAUDE.md tốt = agents làm việc với nhau hiệu quả hơn nhiều\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/claude-code-mcp-servers-50-cong-cu-tot-nhat\"\u003eMCP Servers\u003c\/a\u003e: Plan Mode kết hợp với external data = better planning\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/products\/huong-dan-cau-hinh-claude-md-cho-du-an-thuc-te\"\u003eCLAUDE.md nâng cao\u003c\/a\u003e: Deep dive vào cấu trúc và patterns\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eTổng kết\u003c\/h2\u003e\n\u003cp\u003eCore philosophy của Dinanjana: \u003cem\u003e\"The secret isn't in the prompts — it's in the process.\"\u003c\/em\u003e\u003c\/p\u003e\n\n\u003cp\u003ePlan first, think appropriately hard, collaborate actively, và teach Claude về project của bạn qua .claude files. Đây không phải hacks hay tricks — đây là fundamentals của working effectively với AI pair programmer.\u003c\/p\u003e\n\n\u003ch2\u003eNguồn tham khảo\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/dinanjana.medium.com\/mastering-the-vibe-claude-code-best-practices-that-actually-work-823371daf64c\" target=\"_blank\"\u003eMastering the Vibe: Claude Code Best Practices That Actually Work — Dinanjana Gunaratne (Medium, 24\/8\/2025)\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/github.com\/shanraisshan\/claude-code-best-practice\" target=\"_blank\"\u003eClaude Code Best Practice Repository — shanraisshan (GitHub)\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47725814776020,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/mastering-claude-code-best-practices-th_c-s_-hi_u-qu_-thinking-hierarchy-plan-mode-va-claude-files.jpg?v=1774574221","url":"https:\/\/claude.vn\/products\/mastering-claude-code-best-practices-th%e1%bb%b1c-s%e1%bb%b1-hi%e1%bb%87u-qu%e1%ba%a3-thinking-hierarchy-plan-mode-va-claude-files","provider":"CLAUDE.VN","version":"1.0","type":"link"}