Learn > Claude > Claude Code 101

Claude Code 101

Setup, context management, subagents, MCP cơ bản trong Claude Code.

  • Claude Code là agentic coding tool — có direct access vào file, terminal và codebase để tự làm việc, thay vì copy-paste qua lại như Claude.ai.
  • Điểm khác biệt cốt lõi: nó chạy như một AI Agent = một LLM operating in a loop (real-time), có tools để tương tác với môi trường và đạt mục tiêu.
  • Cơ chế: agentic loop 3 pha (Gather context → Take action → Verify results), context window được quản bằng compaction, tools chạy code khi cần, và 3 permission modes (Default · Auto-accept · Plan mode) cấu hình được.
  • Cài đặt & surface: terminal (curl / PowerShell Invoke-RestMethod; Homebrew & winget không auto-update), VS Code, JetBrains, Desktop, hoặc web (claude.ai/code — chỉ GitHub repo); Claude chỉ truy cập thư mục chạy lệnh + mọi subfolder.
  • Prompt: viết càng descriptive càng tốt; Shift+Tab cycle giữa Approval và Auto-accept; Plan Mode dùng read-only tools để phân tích codebase, hỏi clarifying questions rồi trả về kế hoạch chi tiết trước khi đụng code.
  • Takeaway lớn nhất: workflow Explore → Plan → Code → Commit. Plan (read-only) để course-correct trước khi viết code; Code cần success criteria + tools + test suite; Commit thì chạy subagent code reviewer (fresh eyes, không bias) rồi tạo commit message theo style của mình.
  • Quản lý context: /compact (nén, giữ nhớ) khi tiếp cùng feature · /clear (xoá sạch) khi sang feature mới tránh bias · /context để soi dung lượng. Tiết kiệm context: prompt cụ thể (mơ hồ tốn HƠN), tắt MCP server thừa (nạp hết tool) hoặc dùng Skills, và delegate cho subagent (context riêng, chỉ trả summary).
  • Git workflow: code-reviewer subagent (read-only, check config vào repo cho cả team) review trước khi push; skill /commit-push-pr gộp commit·push·tạo PR một bước (có Slack MCP thì tự post link PR); claude --from-pr <số> resume session đã gắn với PR để xử lý review comment / build lỗi.
  • CLAUDE.md = persistent memory của dự án: file Markdown ở root, Claude tự đọc mỗi session và nội dung được append vào prompt. Phân cấp project-level (root, commit cho team) vs user-level (config folder, preference riêng, xuyên mọi project). Tip: lưu correction lặp lại vào memory, tham chiếu docs bằng @file, nên bắt đầu KHÔNG có file rồi /init để giữ nó compact.
  • Subagent: định nghĩa bằng Markdown + YAML frontmatter, tạo nhanh qua lệnh /agents → Create new agent (chọn scope, purpose, tools, color; Claude sinh name/description/prompt để biết khi nào gọi). Tuỳ biến: persistent memory (nhớ xuyên conversation) và preload skills qua key skill — LƯU Ý cả skill được nạp nguyên vào context, khác với skill ở hội thoại chính.
  • MCP (Model Context Protocol) = open standard nối Claude Code với tool & data ngoài (database, app, repo). Thêm bằng claude mcp add — HTTP (remote) vs Stdio (local); quản bằng /mcp. Scope: Local (project+mình) · User (mọi project+mình) · Project (.mcp.json commit cho cả team). Context cost: server nạp tool definition dù không dùng → ưu tiên CLI (gh/aws, không định nghĩa thường trực) hoặc Skill; vượt 10% context tự bật tool search mode (kém tin cậy hơn).
  • Hooks = kiểm soát tất định (deterministic): chạy command tại điểm lifecycle, LUÔN chạy (khác prompt chỉ 'đa số'). Cấu hình trong settings.json qua /hooks: event + matcher + command. 5 event: PreToolUse · PostToolUse · UserPromptSubmit · Stop · Notification. PostToolUse (matcher Edit|MultiEdit|Write) để auto-format & log; PreToolUse để chặn — exit 0 cho qua, exit 2 chặn (stderr feedback về Claude), code khác = lỗi non-blocking. Commit .claude/settings.json cho cả team; dùng CLAUDE_PROJECT_DIR trỏ script bất kể cwd.

Claude Code 101 là gì? Là khoá nhập môn về Claude Code — agentic coding tool của Anthropic — dạy cách để Claude tự đọc code, sửa file và chạy lệnh ngay trong môi trường dev của bạn. Đây là ghi chú tiếng Việt tóm tắt toàn khoá, thuật ngữ giữ nguyên tiếng Anh kèm chú thích.

TL;DR — Claude Code là một AI Agent biết lập trình: khác Claude.ai ở chỗ nó có direct access vào file/terminal/codebase và tự làm việc thay vì copy-paste. Lõi của "agent" = một LLM operating in a looptools. Dùng hiệu quả cần nhớ 3 điều: context window là working memory (không nhồi cả repo), nó hỏi permission trước khi hành động, và nó có thể sai nên phải luôn ở trong vòng review. Và takeaway lớn nhất của khoá: theo workflow Explore → Plan → Code → Commit — đừng nhảy thẳng vào code.

Claude Code là gì?

Claude Code = agentic coding tool (công cụ lập trình dạng agent): nó hiểu codebase, edit file, chạy lệnh terminal, và tích hợp với dev tools sẵn có để giúp bạn hoàn thành việc nhanh hơn.

Có mặt trên nhiều "cửa": terminal, Visual Studio Code, Claude Desktop app, web, và JetBrains IDEs.

Claude Code khác Claude.ai ở đâu?

Nếu đã dùng Claude.ai, bạn sẽ thấy khác biệt lớn: Claude.ai buộc bạn copy-paste code qua lại. Claude Code có direct access (truy cập trực tiếp) tới file, terminal và toàn bộ codebase → nó tự vào và làm, không cần bạn chép tay.

⭐ Điểm khác biệt cốt lõi: Claude Code hoạt động như một AI Agent.

AI Agent là gì? (khái niệm lõi)

AI Agent = phần mềm có thể tương tác với môi trường (environment)thực hiện hành động (actions) để hoàn thành một mục tiêu (goal) định trước.

Về bản chất, nó vận hành bằng một LLM operating in a loop (mô hình ngôn ngữ chạy trong một vòng lặp) theo thời gian thực. AI Agent có thể được cấp tools, external services, hoặc thậm chí các AI Agent khác để đạt mục tiêu.

Nhịp của loop giống cách một người làm việc: nhìn → làm một việc → xem kết quả → nghĩ → làm tiếp, lặp đến khi xong. Bọc một LLM trong loop + cho nó tools là biến nó từ "chỉ nói" thành "làm được việc".

Claude Code làm được gì trong thực tế

  • Đọc & hiểu codebase — nhờ giải thích một feature hoặc trace một bug xuyên suốt code.
  • Sửa file xuyên project — refactor một function và update mọi file tham chiếu tới nó.
  • Chạy lệnh terminal — build, chạy test, cài package, và dùng output để quyết định bước tiếp theo.
  • Search web — tra documentation hoặc API reference mới nhất khi cần.

3 điều tâm niệm để dùng hiệu quả

  1. Context window — "working memory" (trí nhớ làm việc) của Claude. Chứa được nhiều nhưng không phải tất cả cùng lúc. Đây là chỗ tính "agentic" phát huy: Claude tự tìm chiến lược định vị câu trả lời trong codebase mà không load toàn bộ vào context.
  2. Nó hỏi permission — mặc định Claude Code xin phép trước khi chạy lệnh hoặc sửa file. Bạn luôn nắm quyền, dù thích kiểu hands-on hay hands-off.
  3. Nó có thể sai — như mọi công cụ, Claude Code không hoàn hảo: có thể hiểu nhầm ý, tạo bug, hoặc over-engineer. Ở trong vòng review giúp bắt lỗi sớm.

Áp dụng thực tế: "LLM in a loop, có tools, tự sai được" nghĩa là nên quản Claude Code như quản một junior engineer mới vào team: cấp context tốt, chốt success criteria rõ, review từng bước — chứ không giao khoán rồi tin tuyệt đối. Vì nó tự làm, rủi ro cũng tự nhân lên nếu buông tay.

Cơ chế bên trong: Agentic Loop

Claude Code khác app chat thông thường; hiểu agentic loop sẽ dùng nó hiệu quả hơn. Vòng lặp gồm 5 bước:

  1. Bạn nhập một prompt vào Claude Code.
  2. Claude gather context (thu thập ngữ cảnh cần) bằng cách tương tác với model — model trả về text hoặc một tool call mà Claude Code có thể thực thi.
  3. Take action — ví dụ sửa một file hoặc chạy một lệnh.
  4. Verify results — kiểm tra kết quả và xác định xem đã đạt đúng điều prompt đặt ra chưa.
  5. Đạt rồi → Claude kết thúc và chờ prompt tiếp theo. Chưa đạt → loop lại và thử tiếp cho tới khi kết quả hoàn chỉnh & verify được.

Gói gọn 3 pha: Gather context → Take action → Verify results. Xuyên suốt loop, bạn có thể add context, interrupt (ngắt), hoặc steer (lái) để dẫn Claude về đúng mục tiêu.

Context window & compaction

Claude có context window quyết định lưu và tham chiếu được bao nhiêu: hội thoại, nội dung file, output của lệnh, v.v. Khi chạm giới hạn, Claude Code thực hiện compactiontự động quyết định bỏ hoặc tóm tắt phần nào để kéo context window về mức dùng được, rồi làm tiếp. ⚠️ Compaction là bản tóm lượccó thể làm rơi mất chi tiết.

Quản lý context: /compact · /clear · /context

Context = working memory của Claude. Mọi thứ — prompt bạn gõ, file Claude đọc, lệnh nó chạy, kết quả tool call nó nhận — đều chất vào context window. Không gian hữu hạn nên tối ưu cách dùng rất quan trọng.

3 lệnh cần thuộc:

  • /compact — nén thủ công mọi thứ tính tới thời điểm chạy lệnh. Hợp khi muốn giải phóng chỗ nhưng vẫn giữ trí nhớ về việc đã làm.
  • /clearbắt đầu lại từ đầu, không còn trí nhớ phiên trước; xoá sạch mọi thứ.
  • /contextkiểm tra trạng thái context: tổng dung lượng, hạng mục ngốn nhiều chỗ nhất, kèm biểu đồ trực quan.

Dùng lệnh nào khi nào (rule of thumb):

  • Dùng /compact khi đang làm một feature cụ thể, đụng trần context nhưng cần đi tiếp — giữ context bám sát feature hiện tại.
  • Dùng /clear khi bắt đầu feature mới — không để hội thoại cũ gây bias cho việc mới. Cái gì cần Claude nhớ xuyên session → đưa vào CLAUDE.md để nó khỏi phải rediscover từ đầu.

3 mẹo tiết kiệm context:

  1. Be specific — prompt mơ hồ trông nhỏ nhưng thực ra tốn context HƠN về lâu dài: thiếu chỉ dẫn rõ, Claude buộc phải khám phá codebase nhiều hơn + tự suy luận, ngốn chỗ hơn hẳn một prompt chi tiết.
  2. Manage your MCP servers — MCP server nạp toàn bộ tool vào context mặc định, kể cả khi bạn không dùng. Server không liên quan project → tắt bớt. Có thể thử Skills — giống MCP nhưng không nạp hết mọi thứ vào context ngay từ đầu.
  3. Use subagents — subagent chạy song song với main agent nhưng có context window hoàn toàn riêng. Việc chỉ cần đáp án (VD "auth endpoints nằm ở đâu?") → subagent làm rồi chỉ trả về summary cho main agent → giữ context chính sạch.

Áp dụng thực tế: context giống ngân sách — tiêu khôn thì đi được xa. Tôi quản nó y như quản scope một sprint: một session = một feature (xong thì /clear), tri thức lặp lại thì "tài liệu hoá" vào CLAUDE.md thay vì bắt Claude điều tra lại mỗi lần, và delegate phần tra cứu cho subagent để "bàn làm việc" chính không bị rác.

Tools — "tay chân" của agent

Tools là xương sống của cách agent hoạt động. Đa số AI assistant chỉ text in → text out; tools cho phép Claude Code quyết định khi nào chạy code để tiến gần hoàn thành task — có thể là file-reading tool, web search tool, hay vô số năng lực khác. Claude dùng semantic understanding (hiểu ngữ nghĩa) để quyết khi nào gọi tooldùng output thế nào.

Permission modes (khoá dạy 3 — bản hiện tại đã có 5)

Khoá dạy 3 chế độ:

  • Default behavior — Claude hỏi phép rõ ràng trước khi sửa file hoặc chạy shell command.
  • Auto-accept — file được sửa không cần hỏi, nhưng lệnh vẫn cần được duyệt.
  • Plan mode — chỉ dùng read-only tools để lập kế hoạch hành động trước khi bắt tay làm.

⚡ Cập nhật thực tế (07/2026): Claude Code bản hiện tại đã tách thành 5 mode (đổi nhanh bằng phím 15, hoặc cycle bằng Shift+Tab):

  1. Ask permissions — chính là Default: hỏi trước mọi edit & command.
  2. Accept edits — chính là Auto-accept: tự sửa file, lệnh vẫn hỏi.
  3. Plan mode — read-only, vạch kế hoạch trước khi làm.
  4. Auto mode — chạy tự chủ hơn (tự thực thi trong phạm vi an toàn), nhanh hơn Accept edits nhưng chưa bỏ hết chốt như Bypass.
  5. Bypass permissionsbỏ qua HẾT permission, chạy mọi thứ không hỏi. Đây chính là "skip permissions" mà khoá cảnh báo — rủi ro cao nhất.

Ba mode đầu khớp 1-1 với những gì khoá dạy; hai mode sau (Auto mode, Bypass permissions) là phần khoá gốc chưa cập nhật.

Tất cả cấu hình trong settings file. ⚠️ Thận trọng khi bỏ qua permission (Bypass): cho Claude Code tự do chạy lệnh nghĩa là một sai sót có thể khó bắt kịp trước khi nó xảy ra.

Cài đặt & các "cửa" chạy Claude Code

Cài rất nhanh, tuỳ bạn muốn dùng ở terminal, IDE, desktop hay web.

Terminal

  • macOS / Linux / WSL: cài một phát bằng lệnh curl. Thích Homebrew thì brew install cũng được — nhưng không hỗ trợ auto-update.
  • Windows: PowerShell dùng Invoke-RestMethod; CMD dùng curl; hoặc winget — cũng không auto-update như Homebrew.
  • Cài xong gõ claude; chưa nhận thì restart terminal. cd vào thư mục dự án rồi chạy claude.
  • Lần đầu: chọn color theme, đăng nhập bằng Claude account (Pro / Max / Enterprise) hoặc API key. Có Enterprise thì chọn đúng option đó.
  • Phạm vi quyền = thư mục bạn chạy claude: Claude truy cập được thư mục đó + toàn bộ subfolder.

IDE

  • VS Code: Extensions → tìm "Claude Code" → chọn extension của Anthropic có dấu tích xanh (blue verification check) → Install → restart. Mở bằng command palette (Ctrl/Cmd + Shift + P → "Claude Code Open in New Tab") hoặc click logo Claude ở sidebar. Trải nghiệm gần như terminal; có thể tắt UI, dùng thẳng terminal trong settings.
  • JetBrains: cài plugin từ JetBrains Marketplace → restart → click logo Claude → mở pane terminal chạy cạnh editor.

Desktop & Web

  • Desktop: đăng nhập Claude Desktop → có toggle "Code" ở trên; làm việc trong một folder cụ thể, đổi permission, chạy được cả cloud environment.
  • Web: vào claude.ai/code (hoặc nhãn "Code" ở sidebar chat). Giống desktop nhưng chỉ giới hạn ở GitHub repositories.

Chọn cửa nào?

  • Terminal — muốn cutting edge: tính năng ship ở đây trước.
  • IDE (VS Code / JetBrains) — trải nghiệm gần như y hệt, gắn liền editor.
  • Desktop — hợp để Claude chạy nền trong lúc bạn làm việc khác.
  • Web — hợp làm việc remote trên một GitHub repo.

Prompt đầu tiên & chọn chế độ duyệt

Nói chuyện với Claude Code y như mọi AI assistant khác. Khi gõ prompt, có vài thứ vừa bảo vệ bạn vừa làm mọi thứ dễ hơn.

Auto-Accept vs. Approval — bấm Shift + Tab để cycle giữa các chế độ:

  • Approval mode — Claude hỏi phép mỗi lần muốn sửa file hoặc chạy lệnh. (Chính là "Default behavior" / "Ask permissions" ở phần trên.)
  • Auto-accept mode — file edits tự duyệt, nhưng lệnh vẫn cần bạn cho phép.
  • Không có đúng/sai — tuỳ bạn thấy thoải mái.

Plan Mode trong thực chiến

Plan Mode (cũng nằm trong menu Shift + Tab): lấy prompt của bạn, dùng read-only tools để phân tích codebase + research cách hiện thực. Nó hỏi lại các câu clarifying dọc đường, rồi trả về một kế hoạch chi tiết có thể đem thực thi.

Hợp nhất khi: lên kế hoạch cho thay đổi phức tạp hoặc code review an toàn (read-only, không đụng gì), và các feature nhiều bước (multi-step implementation).

Ví dụ — thêm Dark Mode toggle:

  1. Mở root directory của dự án, chạy claude.
  2. Bấm Shift + Tab vài lần để vào Plan Mode.
  3. Viết prompt mô tả rõ — VD: "app cần dark mode toàn bộ, tạo toggle trên header cho user chuyển light/dark, tự tìm contrast color hợp light theme hiện có".
  4. Để Claude lập plan → review plan → ổn thì accept, cho Claude xin duyệt ở từng bước.
  5. Cuối cùng bạn thấy đúng những gì Claude đã làmcách nó đi tới kết luận.

Chốt: prompt càng descriptive (mô tả rõ) càng tốt; muốn stay in the loop ở mọi bước thì được; dùng Plan Mode để Claude đào sâu chi tiết trước khi đụng code.

⭐ Workflow lõi: Explore → Plan → Code → Commit

Nếu chỉ lấy một thứ từ khoá này, hãy lấy quy trình này. Nhảy thẳng vào "bảo Claude viết code" = phải course-correct (chỉnh sửa) nhiều về sau.

1. Explore & Plan — nhanh nhất là Plan Mode. Trong plan mode, Claude không sửa được file — chỉ đọc để thu thập thông tin về cách hiện thực. Vào bằng Shift + Tab tới khi thấy "Plan Mode", rồi viết prompt (VD: "thêm WebP conversion vào image upload pipeline — tìm chỗ nên đặt, có cần dependency mới không, tiếp cận thế nào"). Claude đọc file liên quan, chạy web search, trả về plan. Review → không đạt thì bảo nó sửa vùng cụ thể. ⭐ Đây là chỗ tốt nhất để course-correct vì CHƯA viết dòng code nào.

Có thể chạy explore subagent ngoài plan mode nếu chỉ muốn tóm tắt codebase mà không định sửa gì sau đó.

2. Code — plan ổn → approve → Claude làm từng item. Chọn auto-accept file edits hay hỏi mỗi lần. Claude tự troubleshoot trước khi coi plan "finished", nhưng đôi lúc bạn phải nhảy vào. Lợi thế Plan Mode: sau khi thực thi bạn có context vì sao ra kết quả đó → giúp định hướng bước tiếp. Ba tip cho phase này:

  • Define success criteria — Claude cần biết "correct" trông thế nào để tự tin về kết quả; ghi explicit trong plan.
  • Add tools — tool giúp Claude đạt mục tiêu → bớt qua lại. VD build web UI thì cài Claude in Chrome để Claude control tab browser + test UI trực tiếp.
  • Include a test suite — cho Claude bộ test để liên tục validate; Claude viết test hộ được. ⚠️ Trước khi giao, đảm bảo test đáng tin (source of truth) để tránh false positive.

Quick tip: Claude cứ vấp đúng một lỗi lặp lại → bảo nó lưu cách giải vào CLAUDE.md.

3. Commit — bạn tự test + hài lòng → push. Trước khi commit, chạy subagent code reviewer: một cặp mắt mới (fresh eyes), không dính thiên kiến mà main agent tích luỹ trong session. Rồi bảo Claude viết commit message theo style của bạn. Cứ thế lặp lại cho feature tiếp theo.

Recap 4 pha: Explore (đưa Claude context dự án) · Plan (bản kế hoạch để đo thành công) · Code (qua lại tới kết quả cuối) · Commit (review + push, rồi sang feature tiếp).

Góc Delivery Manager: bốn pha này gần như trùng với cách tôi vẫn quản một dự án giao cho team — chỉ khác là lần này người thực thi là Claude Code. Chốt kế hoạch và hướng đi trước khi bắt tay viết code (thay vì code trước rồi sửa sau); success criteria chính là Definition of Done; subagent review là tách người kiểm tra khỏi người làm để bỏ thiên kiến; test suite làm chuẩn để khỏi nghiệm thu nhầm. Đây là bộ khung tôi dùng để giao việc cho AI mà vẫn giữ được kiểm soát rủi ro.

Git workflow: subagent review · /commit-push-pr · --from-pr

Claude Code có vài tính năng built-in làm git workflow nhanh hơn.

Review bằng subagent (trước khi push PR): bảo Claude dùng subagent review thay đổi. Subagent chạy ở context window riêng, fresh eyes — không mang bias của main agent vừa viết code cả session. Hai chốt khi tạo code-reviewer subagent:

  • Giới hạn ở read-only tools — reviewer chỉ flag issues, KHÔNG sửa file.
  • Check subagent config vào repo → cả team dùng chung một reviewer, chuẩn review đồng nhất.

Skill /commit-push-pr: gộp commit · push · tạo PR trong một bước thay vì làm tay từng cái. Nếu có Slack MCP server cấu hình channel trong CLAUDE.md, nó tự động post link PR vào channel của team.

Session linking với --from-pr: khi Claude tạo PR qua gh pr create, session tự được link với PR đó. Cần quay lại sau (xử lý review comment, sửa build hỏng) thì chạy claude --from-pr <PR_NUMBER> → nối tiếp đúng chỗ đã dừng.

Áp dụng thực tế: đây đúng là "tách người làm khỏi người kiểm" mà tôi nói ở pha Commit — nhưng đóng gói thành cấu hình check vào repo để chuẩn review không phụ thuộc trí nhớ từng người. /commit-push-pr + Slack auto-post là bước "bàn giao" tự động; --from-pr là "mở lại đúng ticket" khi CI đỏ hay có review comment — bớt ma sát vặt của vòng đời một PR.

File CLAUDE.md — bộ nhớ bền vững của dự án

CLAUDE.md là một trong những tính năng hữu ích nhất của Claude Code: nó cho Claude một persistent memory (trí nhớ bền vững) về dự án của bạn.

Vấn đề nó giải: không có CLAUDE.md, mỗi lần mở Claude Code là bắt đầu lại từ đầu — nó phải tự re-explore codebase, tự đoán cần dependency nào, tự suy feature nào đã hiện thực. Đoán nhiều → dễ lệch, bạn phải course-correct liên tục.

Cách hoạt động: CLAUDE.md là một file Markdown đặt ở root của dự án. Claude Code tự đọc nó mỗi khi bắt đầu một session, và nội dung file được append thẳng vào prompt của bạn. Nói cách khác, nó là một onboarding script (kịch bản nhập môn) cho codebase.

Một ví dụ điển hình chứa 3 khối:

  • Mô tả stack (VD: "Next.js 15 App Router, Tailwind, Drizzle ORM").
  • Commands — lệnh dev / test / lint (VD pnpm dev, pnpm test, pnpm lint).
  • Code Style — quy ước (VD: 2-space indent, prefer named exports, API routes ở app/api/, ưu tiên server actions).

Có sẵn khối này, khi bạn nhờ tạo một React component, Claude đã biết dùng Tailwind + theo đúng convention của bạn, khỏi phải dặn lại.

CLAUDE.md là để cho cả team

Nên commit CLAUDE.md vào version control để cả team hưởng. Có một phân cấp (hierarchy) memory file tuỳ đối tượng:

  • Project-level CLAUDE.md — nằm ở root directory của dự án. Chia sẻ với team.
  • User-level CLAUDE.md — nằm ở config folder của riêng bạn, áp cho mọi dự án của bạn. Để đây các personal preferences (sở thích cá nhân).

3 tip dùng CLAUDE.md

  1. Save corrections to memory — nếu bạn thấy mình sửa Claude một điều lặp đi lặp lại (VD "luôn dùng server actions thay vì API routes"), hãy bảo Claude lưu rule đó vào memory. Lần sau mở project nó tự biết. (Đúng mạch với tip ở pha Code: Claude vấp một lỗi hoài → lưu cách giải vào CLAUDE.md.)
  2. Reference project docs bằng @ — muốn Claude tham chiếu tài liệu sẵn có thì dùng ký hiệu @ + đường dẫn file thay vì chép lại nội dung, VD @README.md.
  3. Bắt đầu KHÔNG có CLAUDE.md — Anthropic khuyên chạy trần lúc đầu để thấy rõ chỗ nào bạn phải course-correct hoài, nhờ đó CLAUDE.md giữ được compact và chỉ chứa thông tin thật sự cần. Khi sẵn sàng, chạy /init để Claude tự sinh một bản khởi điểm.

Recap: khác biệt giữa một session Claude Code ức chế và một session trơn tru thường nằm ở context — và CLAUDE.md là cách bạn cấp context đó. Bắt đầu từ stack + preferences + commands, rồi bồi đắp dần theo thời gian.

Áp dụng thực tế: với tôi, CLAUDE.mdtờ handover cho một thành viên mới vào dự án — chỉ khác là thành viên đó là Claude, và nó đọc lại tờ đó ở mỗi lần vào việc. Vì nội dung bị append vào prompt, tôi coi nó như tài sản chung phải giữ ngắn và đúng: rule nào đã lỗi thời thì gỡ, đừng để phình. Chính repo này cũng có một CLAUDE.md ở root — nó là lý do vào là biết ngay dự án deploy qua Cloudflare Pages, i18n dùng vi/en/ja, và không được tự ý đề xuất feature ngoài /learn. Phân cấp project-level (chung, commit vào repo) vs user-level (riêng, config folder) thì tôi ánh xạ đúng như quy ước công ty vs sở thích cá nhân: cái ràng buộc cả team thì phải vào repo, cái chỉ hợp gu mình thì để riêng, không nhét vào chỗ chung.

Subagents — tạo & tuỳ biến agent con

Ở các phần trước, subagent xuất hiện như một công cụ giữ context sạch (explore subagent, code-reviewer subagent). Phần này đi vào cách tự tạo và tuỳ biến một subagent.

Nhắc lại vì sao cần: phần lớn context window bị ngốn bởi tool call dò codebaseweb search lúc research. Những gì moi ra trong lúc đó không phải lúc nào cũng liên quan feature chính → làm rác context. Subagent giải quyết bằng cách chạy song song, với context window riêng: nó lo phần nặng (VD "explore this codebase for me"), xong tóm tắt findings trả về cho Claude. Kết quả: bạn có đáp ánkhông lôi cả hành trình đi tới đáp án vào context chính.

Tạo subagent của riêng bạn

Subagent được định nghĩa trong file Markdown + YAML frontmatter. Cách dễ nhất là để Claude sinh giúp — chạy:

/agents

Rồi chọn "Create new agent". Bạn sẽ đi qua các bước: chọn scope (phạm vi), định nghĩa purpose (mục đích), chọn tools subagent được phép dùng, và cả color cho nó. Claude sẽ sinh name, description, và prompt cho subagent. Chính description/prompt này cũng báo cho Claude biết KHI NÀO nên gọi subagent đó, dựa trên các prompt bạn đưa.

Tuỳ biến sâu hơn

  • Persistent memory — cho subagent giữ trí nhớ xuyên nhiều conversation. Rất hợp khi bạn dùng nó đều đặn trên cùng những dự án.
  • Preload skills — nạp sẵn skill vào subagent bằng cách thêm key skill + liệt kê skill theo tên. ⚠️ Lưu ý: khác với skill ở conversation chính, ở đây CẢ skill được nạp nguyên vào context (main conversation thì nạp dần, không đổ hết một lúc).

Recap: giữ context window sạch là một trong những cách tốt nhất để làm việc năng suất với Claude Code. Với subagent, bạn cho một agent chạy nền lo phần heavy liftingchỉ trả về đáp án cho context chính.

Đi sâu hơn: Anthropic có khoá riêng "Introduction to Subagents" — đúng khoá kế tiếp trong lộ trình Developer của track này.

Áp dụng thực tế: với tôi, subagent là cách "đóng gói một vai" thành cấu hình tái dùng thay vì mô tả lại mỗi lần. Ba núm chỉnh — scope · tools · prompt — chính là bản mô tả công việc (JD) của một vai: giới hạn read-only cho reviewer để nó chỉ soi không sửa, cho explore-agent tool đọc + web search, và prompt = "định nghĩa vai" để Claude biết khi nào triệu đúng người. Persistent memory là để một vai lặp lại (VD reviewer của repo này) nhớ được quy ước qua các phiên; còn preload skill thì tôi cân nhắc kỹ vì nạp NGUYÊN skill là đánh đổi chính context mà subagent sinh ra để tiết kiệm — chỉ preload khi subagent gần như luôn cần skill đó.

MCP — nối Claude Code với tool & dữ liệu ngoài

MCP (Model Context Protocol) là một open standard (chuẩn mở) cho phép Claude Code kết nối với external tools và data sources. Khi bạn hỏi, Claude tự hiểu khi nào nên dùng các tool đó để xử lý câu hỏi tốt hơn.

Rất nhiều context của bạn nằm ngoài codebase — trong database, productivity app, public repository. MCP bắc cầu khoảng cách đó.

Làm được gì với MCP?

Trước hết cần hiểu khái niệm "tools" trong agentic AI: tools cho agent (như Claude Code) khả năng thực hiện hành động để hoàn thành task hiệu quả hơn — khác với AI thường chỉ trả về một text response.

Ví dụ: team dùng Linear để quản dự án → thêm Linear MCP server để kéo chi tiết issue cụ thể (VD ticket MEN-12). Cần documentation mới nhất của một dependency → một docs MCP server như Context7 cấp cho Claude Code (VD tra docs shadcn/ui mới nhất).

Thêm một MCP server

Dùng lệnh claude mcp add. Có hai loại chính:

  • HTTP server — cho dịch vụ remote: do provider host, nối qua network.
  • Stdio server — cho local process chạy trên máy bạn.

Quản lý bằng /mcp trong một session Claude Code: xem cái gì đang connected, check status, và disable server không cần.

Scoping — 3 phạm vi

  • Local — chỉ có ở project hiện tại, chỉ mình bạn.
  • User — có ở mọi project của bạn.
  • Project — dùng file .mcp.json bạn commit vào version control → bất kỳ ai trên codebase tự động có đúng y bộ server đó.

Context costs — cái giá phải để mắt

MCP server thêm tool definitions vào context window ngay cả khi bạn không dùng tới. Cấu hình nhiều server → ăn mòn context khả dụng. Chạy /mcp để soi cái gì đang connected và disable cái không dùng. Ba hướng nhẹ context hơn:

  • CLI equivalent — nếu một tool có bản CLI (như gh cho GitHub, aws cho AWS) thì CLI tiết kiệm context hơnkhông thêm tool definition thường trực.
  • Skill — một Skill chỉ nạp name + description vào context; Claude chỉ nạp full nội dung skill khi xác định cần dùng.
  • Tool search mode — nếu MCP tools vượt 10% context window, Claude Code tự chuyển sang tool search mode, tự khám phá đúng tool theo nhu cầu — nhưng có thể kém tin cậy hơn.

Recap: MCP nối Claude Code với external tools & data sources. Thêm server bằng claude mcp add. Scope vào dự án bằng .mcp.json để cả team tự có. Và để mắt tới context bằng cách disable server không dùng.

Áp dụng thực tế: tôi xếp MCP đúng vào bài toán tổng chi phí context mà khoá nhắc suốt: mỗi server là một khoản "phí thuê bao" trừ thẳng vào context dù có xài hay không. Nên thứ tự ưu tiên của tôi là CLI → Skill → MCP: việc gì gh/aws làm được thì gọi CLI (không để lại tool definition), năng lực đóng gói được thì để Skill (chỉ nạp name+description tới khi cần), chỉ giữ MCP thường trực cho thứ thật sự cần realtime như Linear/DB. Về scope, tôi ánh xạ đúng như CLAUDE.md: cái ràng buộc cả team (VD server issue tracker) thì để Project scope qua .mcp.json commit vào repo; cái chỉ mình dùng thì Local/User, đừng nhét vào chỗ chung.

Hooks — kiểm soát tất định (deterministic)

Hooks cho phép bạn chạy lệnh tại những điểm cụ thể trong lifecycle của Claude Code. Điểm khác biệt cốt lõi so với mọi thứ khác trong khoá: hook là deterministic (tất định) — chúng LUÔN chạy.

Vì sao dùng hook

Bạn có thể dặn trong CLAUDE.md "chạy Prettier sau mỗi lần edit file". Đa số lần nó làm — nhưng thi thoảng nó không làm. Một hook khiến điều đó xảy ra mỗi lần, không ngoại lệ. Các use case phổ biến:

  • Auto-format sau khi edit file.
  • Log mọi lệnh đã chạy phục vụ compliance.
  • Chặn thao tác nguy hiểm như sửa file production.
  • Gửi notification cho bạn khi Claude làm xong task.

Cơ chế

Hook được cấu hình trong settings.json. Bạn chọn một event, tuỳ chọn đặt matcher (áp cho tool nào), và cấp một command để chạy. Cấu hình qua lệnh /hooks trong Claude Code, hoặc sửa thẳng settings.json. Các event có sẵn:

  • PreToolUse — chạy trước một tool call.
  • PostToolUse — chạy sau khi tool call hoàn tất.
  • UserPromptSubmit — chạy khi bạn submit prompt, trước khi Claude xử lý.
  • Stop — chạy khi Claude trả lời xong.
  • Notification — chạy khi Claude gửi notification.

⚡ Cập nhật thực tế (07/2026): 5 event trên là phần khoá dạy. Claude Code bản hiện tại đã có thêm các event mới, đáng chú ý: SubagentStop (khi một subagent chạy xong), PreCompact (trước khi context bị nén — kịp lưu thứ quan trọng), và SessionStart / SessionEnd (đầu/cuối mỗi session — hợp để nạp context động hoặc dọn dẹp). Cơ chế cấu hình (event + matcher + command, exit code) vẫn y như khoá dạy.

Ví dụ thực tế — auto-format

Hook phổ biến nhất: auto-format sau edit. Đặt một hook PostToolUse với matcher "Edit|MultiEdit|Write" để nó nổ mỗi khi Claude sửa file. Command check đuôi file rồi chạy formatter phù hợp — Prettier cho TypeScript, gofmt cho Go, tuỳ project của bạn dùng gì.

Chặn bằng PreToolUse

Hook PreToolUse có thể chặn tool call trước khi nó thực thi. Hook nhận tool name + input dạng JSON qua stdin. Exit code quyết định hành vi:

  • Exit code 0 — cho chạy bình thường.
  • Exit code 2chặn hành động. Message ở stderr được đưa ngược lại cho Claude làm feedback → nó biết vì sao bị chặn và tự điều chỉnh.
  • Exit code khác — lỗi non-blocking, hiện cho bạn xem nhưng không dừng gì.

Đây là cách enforce hard rule (ép luật cứng): chặn ghi vào thư mục config production, chặn lệnh bash chứa rm -rf, chặn commit vào main. Bất cứ gì team cần được đảm bảo (guaranteed) chứ không chỉ gợi ý (suggested).

Chia sẻ hook cho team

Hook cấu hình trong .claude/settings.jsonproject-levelcommit được vào repo → cả team tự động có cùng bộ hook. Dùng biến môi trường CLAUDE_PROJECT_DIR trong command để trỏ tới script lưu trong project, nhờ đó chúng chạy đúng bất kể current working directory của Claude.

Recap: hook cho bạn kiểm soát tất định hành vi Claude Code. Dùng PostToolUse để auto-format & log; dùng PreToolUse để chặn thao tác nguy hiểm. Cấu hình bằng /hooks hoặc settings.json, và commit vào repo để team cùng có. Cần xảy ra mỗi lần không sai sót → đừng để trong prompt, hãy để trong hook.

Áp dụng thực tế: đây là ranh giới tôi luôn vẽ khi giao việc cho AI: cái gì nên làm thì để prompt/CLAUDE.md (mềm, model tự cân), cái gì bắt buộc thì để hook (cứng, không thương lượng). Với một Delivery Manager, hook chính là control trong ngôn ngữ quản trị rủi ro — PreToolUse exit 2 để chặn rm -rf/commit vào main là preventive control (ngăn trước), PostToolUse log mọi lệnh là audit trail cho compliance. Và vì nó nằm trong .claude/settings.json commit vào repo, cả team thừa hưởng cùng một mức đảm bảo — guarantee không phụ thuộc việc ai đó có nhớ đọc CLAUDE.md hay không.

Từ khoá cần thuộc

🔴 Core: agentic coding tool · AI Agent (LLM operating in a loop + tools) · direct access (files/terminal/codebase) · context window (working memory) · agentic loop (Gather context → Take action → Verify results) · compaction (nén context khi đầy, có thể rơi chi tiết) · /compact (nén, GIỮ nhớ) · /clear (xoá sạch, không nhớ) · /context (soi dung lượng context) · tools (dùng semantic understanding để quyết khi nào gọi) · permission modes (Default/Approval · Auto-accept · Plan mode) · Shift + Tab (cycle giữa các mode) · Plan Mode (read-only → clarifying questions → detailed plan) · descriptive prompt (mơ hồ = tốn context HƠN) · Explore → Plan → Code → Commit (workflow lõi) · success criteria · subagent (context window riêng, chỉ trả summary) · /agentsCreate new agent (chọn scope · purpose · tools · color; Claude sinh name/description/prompt → biết khi nào gọi) · subagent = Markdown + YAML frontmatter · preload skills (key skill → nạp NGUYÊN skill vào context, khác hội thoại chính) · persistent memory (subagent nhớ xuyên conversation) · subagent code reviewer (fresh eyes, no session bias, read-only tools, check config vào repo dùng chung team) · /commit-push-pr (skill gộp commit·push·PR một bước) · claude --from-pr <PR> (resume session gắn với PR) · CLAUDE.md (persistent memory dự án: Markdown ở root, tự đọc mỗi session, nội dung append vào prompt; nhớ xuyên session / lưu solution lặp) · project-level vs user-level CLAUDE.md (root/commit-cho-team vs config folder/preference riêng-xuyên-mọi-project) · /init (Claude tự sinh CLAUDE.md khởi điểm) · MCP (Model Context Protocol — open standard nối tool & data ngoài) · claude mcp add · HTTP server (remote) vs Stdio server (local) · /mcp (xem/status/disable server) · MCP scope: Local (project+mình) · User (mọi project+mình) · Project (.mcp.json commit → cả team) · tool search mode (MCP tools >10% context → tự bật, kém tin cậy hơn) · Hooks (deterministic — LUÔN chạy, khác prompt) · hook events: PreToolUse · PostToolUse · UserPromptSubmit · Stop · Notification · matcher ("Edit|MultiEdit|Write" cho auto-format) · exit code hook: 0 cho qua · 2 chặn (stderr → feedback về Claude) · khác = non-blocking · /hooks (cấu hình trong settings.json) · .claude/settings.json (project-level, commit cho team) · CLAUDE_PROJECT_DIR (trỏ script bất kể cwd) · directory access (thư mục chạy claude + mọi subfolder) · "can make mistakes".

🟡 Important: các "cửa" chạy Claude Code (terminal · VS Code · Claude Desktop · web · JetBrains) · install: curl / PowerShell Invoke-RestMethod (Homebrew & winget KHÔNG auto-update) · sign in Pro/Max/Enterprise hoặc API key · terminal = features ship first · web = chỉ GitHub repos · VS Code blue verification check · Approval mode = Default (hỏi mỗi lần) · Plan Mode hợp cho safe code review + multi-step features · dùng terminal output để quyết bước tiếp · refactor cross-file · interrupt / steer / add context giữa loop · verify results (Claude tự kiểm việc mình làm) · tool call do model trả về · cấu hình permission trong settings file · explore subagent (chạy ngoài plan mode để tóm tắt codebase) · add tools (VD Claude in Chrome test UI) · test suite = source of truth (tránh false positive) · course-correct trước khi viết code · commit message theo style của mình · /compact khi tiếp cùng feature · /clear khi sang feature mới (tránh bias) · MCP servers nạp hết tool vào context mặc định (kể cả khi không dùng) → tắt server thừa · CLI equivalent (gh, aws) tiết kiệm context hơn MCP (không thêm tool definition thường trực) · Linear MCP (kéo issue) · Context7 (docs MCP, docs dependency mới nhất) · "tools" cho agent khả năng hành động (khác AI chỉ trả text) · Skills = giống MCP nhưng không nạp hết trước (chỉ name+description tới khi cần) · Slack MCP (channel trong CLAUDE.md) → /commit-push-pr tự post link PR · session tự link PR khi tạo qua gh pr create · CLAUDE.md = onboarding script cho codebase · save corrections to memory (rule sửa lặp lại) · @file tham chiếu docs trong CLAUDE.md (VD @README.md) · nên bắt đầu KHÔNG có CLAUDE.md rồi mới thêm (giữ compact).

🟢 Good-to-know: search web cho docs/API reference · "stay in the loop" · Claude.ai = copy-paste vs Claude Code = tự làm · restart terminal/IDE nếu chưa nhận lệnh · tắt UI dùng thẳng terminal trong VS Code · Desktop chạy nền + cloud environment · quy trình plan → review → accept → duyệt từng bước → xem lại kết quả · thận trọng khi skip permission (khó bắt lỗi trước khi xảy ra) · bản Claude Code hiện tại (07/2026) có 5 mode: Ask permissions · Accept edits · Plan mode · Auto mode · Bypass permissions (đổi bằng phím 1–5 / Shift+Tab) · subagent chạy song song với main agent.


Nguồn: Claude Code 101 (Anthropic Academy) — Copyright Anthropic. Phần đề thi thử cho khoá này nằm ở tab "Đề thi thử".

Câu hỏi thường gặp

Claude Code là gì?
Claude Code là agentic coding tool của Anthropic: nó hiểu codebase, tự sửa file, chạy lệnh terminal và cắm vào các dev tool sẵn có để hoàn thành công việc nhanh hơn. Dùng được ở terminal, VS Code, JetBrains IDEs, Claude Desktop app và trên web.
Claude Code khác Claude.ai ở điểm nào?
Khác biệt cốt lõi là Claude Code hoạt động như một AI Agent và có direct access vào file, terminal cùng toàn bộ codebase — nó tự vào làm việc thay vì để bạn copy-paste code qua lại như trên Claude.ai.
AI Agent là gì?
AI Agent là phần mềm có thể tương tác với môi trường và thực hiện hành động để hoàn thành một mục tiêu định trước. Về bản chất, nó là một large language model (LLM) operating in a loop theo thời gian thực, có thể dùng tools, external services hoặc cả các AI Agent khác để đạt mục tiêu.
Claude Code có những permission mode nào?
Khoá Claude Code 101 dạy 3 chế độ: Default (hỏi phép trước khi sửa file hoặc chạy lệnh), Auto-accept (tự sửa file, nhưng chạy lệnh vẫn phải duyệt), và Plan mode (chỉ dùng read-only tools để lập kế hoạch trước khi làm). Tính tới 07/2026, Claude Code bản thật đã có 5 mode: Ask permissions (= Default), Accept edits (= Auto-accept), Plan mode, Auto mode (chạy tự chủ hơn trong phạm vi an toàn) và Bypass permissions (bỏ qua hết — rủi ro cao nhất, chính là "skip permissions" mà khoá cảnh báo). Chuyển nhanh bằng phím 1–5 hoặc Shift+Tab; cấu hình trong settings file.
Compaction trong Claude Code là gì?
Khi hội thoại chạm giới hạn context window, Claude Code tự động compact — quyết định bỏ bớt hoặc tóm tắt phần nội dung cũ để kéo context về mức dùng được, nhờ đó phiên làm việc tiếp tục mà không vỡ giới hạn.
Cài đặt Claude Code và chạy được ở đâu?
Claude Code dùng được ở terminal (macOS/Linux/WSL cài bằng curl; Windows dùng Invoke-RestMethod trong PowerShell hoặc curl trong CMD — lưu ý Homebrew và winget không auto-update), extension VS Code, plugin JetBrains, Claude Desktop app, và trên web tại claude.ai/code (chỉ làm việc với GitHub repo). Terminal nhận tính năng mới sớm nhất. Claude chỉ truy cập thư mục bạn chạy lệnh claude cùng toàn bộ subfolder của nó.
Plan Mode trong Claude Code dùng khi nào?
Plan Mode dùng read-only tools để phân tích codebase và nghiên cứu cách hiện thực, hỏi lại các câu clarifying rồi trả về một kế hoạch chi tiết trước khi đụng vào code. Nó hợp nhất cho việc lên kế hoạch cho thay đổi phức tạp, làm code review an toàn (không sửa gì), và các feature nhiều bước. Bấm Shift+Tab để vào Plan Mode; sau khi duyệt plan, Claude vẫn xin phép ở từng bước thực thi.
Skill /commit-push-pr trong Claude Code làm gì?
/commit-push-pr gộp cả ba việc commit, push và tạo pull request vào một bước thay vì làm tay từng cái. Nếu bạn có Slack MCP server cấu hình channel trong CLAUDE.md, nó còn tự động post link PR vào channel của team. Muốn quay lại làm tiếp một PR sau này (xử lý review comment hoặc sửa build hỏng) thì dùng lệnh claude --from-pr <số PR> để nối tiếp đúng chỗ đã dừng.
File CLAUDE.md trong Claude Code là gì và để làm gì?
CLAUDE.md là file Markdown đặt ở root dự án, cấp cho Claude Code một persistent memory (trí nhớ bền vững) về dự án. Claude tự đọc nó mỗi khi bắt đầu session và nội dung file được append thẳng vào prompt của bạn — như một onboarding script cho codebase. Không có nó, mỗi phiên Claude phải tự dò lại codebase, đoán dependency và feature đã có, khiến bạn phải course-correct nhiều. File điển hình mô tả stack, các Commands (dev/test/lint) và Code Style.
Khác nhau giữa project-level và user-level CLAUDE.md?
Project-level CLAUDE.md nằm ở root directory của dự án và nên commit vào version control để cả team dùng chung. User-level CLAUDE.md nằm ở config folder của riêng bạn, áp cho mọi dự án — dùng để chứa personal preferences. Nguyên tắc: cái gì ràng buộc cả team thì để project-level (vào repo), cái gì chỉ hợp gu cá nhân thì để user-level.
Nên tạo CLAUDE.md như thế nào cho hiệu quả?
Anthropic khuyên bắt đầu KHÔNG có CLAUDE.md để thấy rõ chỗ nào bạn phải sửa Claude lặp đi lặp lại — nhờ đó file giữ được compact, chỉ chứa thông tin thật sự cần. Khi sẵn sàng, chạy /init để Claude tự sinh một bản khởi điểm. Ba mẹo: (1) bảo Claude lưu các correction lặp lại vào memory; (2) tham chiếu tài liệu sẵn có bằng ký hiệu @ + đường dẫn (VD @README.md) thay vì chép lại; (3) giữ file ngắn gọn vì nội dung bị append vào prompt.
Hooks trong Claude Code là gì và khác gì so với dặn trong CLAUDE.md?
Hooks cho phép chạy command tại những điểm cụ thể trong lifecycle của Claude Code. Khác biệt cốt lõi: hook là deterministic (tất định) — nó LUÔN chạy. Nếu bạn dặn trong CLAUDE.md "chạy Prettier sau mỗi lần edit", đa số lần Claude làm nhưng thi thoảng quên; còn hook thì làm mỗi lần, không ngoại lệ. Nguyên tắc: cái gì cần xảy ra mỗi lần không sai sót thì đừng để trong prompt, hãy để trong hook.
Claude Code có những hook event nào?
Khoá Claude Code 101 dạy 5 event, cấu hình trong settings.json (qua lệnh /hooks hoặc sửa thẳng file): PreToolUse (chạy trước một tool call), PostToolUse (sau khi tool call hoàn tất), UserPromptSubmit (khi bạn submit prompt, trước khi Claude xử lý), Stop (khi Claude trả lời xong), và Notification (khi Claude gửi notification). Bản Claude Code hiện tại (07/2026) có thêm các event mới như SubagentStop, PreCompact và SessionStart/SessionEnd. Mỗi hook gồm một event, một matcher tuỳ chọn (áp cho tool nào) và một command.
PreToolUse hook chặn một hành động bằng cách nào?
PreToolUse hook nhận tool name và input dạng JSON qua stdin, rồi dùng exit code để quyết định: exit code 0 cho hành động chạy bình thường; exit code 2 chặn hành động và message ở stderr được đưa ngược lại cho Claude làm feedback để nó biết vì sao bị chặn và tự điều chỉnh; exit code khác là lỗi non-blocking chỉ hiện cho bạn xem, không dừng gì. Đây là cách ép luật cứng như chặn rm -rf, chặn ghi vào thư mục production hay chặn commit vào main.
Làm sao chia sẻ hook cho cả team?
Hook cấu hình trong .claude/settings.json là project-level và commit được vào repo, nên cả team tự động có cùng bộ hook. Nên dùng biến môi trường CLAUDE_PROJECT_DIR trong command để trỏ tới script lưu trong project — nhờ đó script chạy đúng bất kể current working directory hiện tại của Claude.
MCP trong Claude Code là gì và dùng để làm gì?
MCP (Model Context Protocol) là một open standard cho phép Claude Code kết nối với external tools và data sources — như database, productivity app hay public repository. Nhiều context của bạn nằm ngoài codebase; MCP bắc cầu khoảng đó, và Claude tự hiểu khi nào nên dùng các tool này. Ví dụ Linear MCP server kéo chi tiết issue, Context7 cấp documentation mới nhất của dependency.
HTTP server và Stdio server trong MCP khác nhau thế nào?
Cả hai đều thêm bằng lệnh claude mcp add. HTTP server dành cho dịch vụ remote do provider host, kết nối qua network. Stdio server dành cho local process chạy ngay trên máy bạn. Dùng /mcp trong session để xem server nào đang connected, check status và disable server không cần.
Có mấy cách scope một MCP server?
Ba cách. Local — chỉ có ở project hiện tại và chỉ mình bạn. User — có ở mọi project của bạn. Project — dùng file .mcp.json commit vào version control để bất kỳ ai trên codebase tự động có đúng bộ server đó. Chỉ scope Project mới chia sẻ cho cả team.
Làm sao giảm chi phí context khi dùng MCP server?
MCP server thêm tool definitions vào context window ngay cả khi bạn không dùng, nên nhiều server sẽ ăn mòn context. Ba hướng nhẹ hơn: (1) nếu tool có CLI equivalent như gh (GitHub) hay aws (AWS) thì dùng CLI — tiết kiệm hơn vì không thêm tool definition thường trực; (2) dùng Skill — chỉ nạp name + description, full nội dung chỉ nạp khi cần; (3) nếu MCP tools vượt 10% context window, Claude Code tự chuyển sang tool search mode (khám phá tool theo nhu cầu, nhưng có thể kém tin cậy hơn). Chạy /mcp để soi và disable server thừa.
Làm sao tạo một subagent của riêng mình trong Claude Code?
Subagent được định nghĩa trong file Markdown kèm YAML frontmatter. Cách dễ nhất là chạy lệnh /agents rồi chọn "Create new agent" — bạn sẽ đi qua các bước chọn scope, định nghĩa purpose, chọn tools nó được phép dùng và cả màu cho nó. Claude sẽ tự sinh name, description và prompt; chính description/prompt này cũng cho Claude biết khi nào nên gọi subagent đó dựa trên prompt của bạn.
Có thể tuỳ biến subagent thêm những gì?
Hai tuỳ biến đáng chú ý: (1) persistent memory — cho subagent giữ trí nhớ xuyên nhiều conversation, hợp khi dùng đều đặn trên cùng dự án; (2) preload skills — nạp sẵn skill vào subagent bằng cách thêm key skill và liệt kê skill theo tên. Lưu ý quan trọng: khác với skill ở hội thoại chính, khi preload vào subagent thì CẢ skill được nạp nguyên vào context.
Khác nhau giữa /compact và /clear trong Claude Code?
/compact nén hội thoại tính tới thời điểm chạy lệnh nhưng vẫn GIỮ trí nhớ những gì đã làm — dùng khi đang làm một feature cụ thể, đụng trần context nhưng cần đi tiếp. /clear thì xoá sạch mọi thứ, bắt đầu lại từ đầu không còn trí nhớ — dùng khi chuyển sang feature mới để hội thoại cũ không gây bias. Ngoài ra /context cho bạn xem context đang chứa gì và hạng mục nào ngốn nhiều chỗ nhất. Cái gì cần nhớ xuyên session thì đưa vào CLAUDE.md.
Làm sao tiết kiệm context window khi dùng Claude Code?
Ba cách chính: (1) viết prompt cụ thể — prompt mơ hồ trông nhỏ nhưng tốn context hơn vì Claude phải khám phá codebase và tự suy luận nhiều hơn; (2) quản lý MCP servers — mỗi server nạp toàn bộ tool vào context mặc định dù không dùng, nên tắt server không liên quan hoặc dùng Skills (không nạp hết mọi thứ trước); (3) dùng subagents — chúng có context window riêng, làm việc rồi chỉ trả về summary nên giữ context chính sạch.
Workflow Explore Plan Code Commit trong Claude Code là gì?
Đây là quy trình cốt lõi của khoá Claude Code 101, gồm 4 pha: Explore (đưa Claude context liên quan của dự án), Plan (dùng Plan Mode read-only lập kế hoạch để đo thành công và course-correct trước khi viết code), Code (qua lại giữa bạn và Claude — nên định success criteria, thêm tools, và có test suite làm nguồn chân lý), và Commit (chạy subagent code reviewer với góc nhìn mới không thiên kiến, rồi tạo commit message theo style của bạn trước khi push).

Đề thi thử (79 câu)

Đề thi thử tự biên soạn, bám sát đề thi chứng chỉ thật — trích 20 câu đầu dưới đây. Bản tương tác — chấm điểm, đáp án & giải thích từng câu — nằm ở tab “Đề thi thử” trên trang.

  1. What is Claude Code? How is Claude Code best described?

    • A. A chatbot that answers coding questions in a web browser
    • B. An agentic coding tool that understands your codebase, edits files, runs commands, and integrates with your developer tools
    • C. A code linter that only checks style violations
    • D. A cloud service that hosts and deploys your applications
  2. What is Claude Code? What is the key differentiator that separates Claude Code from Claude.ai?

    • A. Claude Code uses a larger language model
    • B. Claude Code is free while Claude.ai is paid
    • C. Claude Code works as an AI Agent with direct access to your files, terminal, and codebase
    • D. Claude Code can only answer questions but cannot write code
  3. What is an Agent? Which statement best defines an AI Agent?

    • A. Software that interacts with its environment and performs actions to complete a defined goal, built on an LLM operating in a loop
    • B. A pre-recorded script that runs the same fixed steps every time
    • C. A database that stores prompts and responses
    • D. A single one-shot call to a language model with no ability to act
  4. What Can Claude Code Do? Claude Code runs your test suite, reads the failing output, and then decides what to fix next. Which capability does this demonstrate?

    • A. Searching the web for documentation
    • B. Running terminal commands and using the output to decide what to do next
    • C. Storing the entire codebase in its context window
    • D. Deploying the application to production
  5. Using Claude Code Effectively In the context of using Claude Code effectively, what does the "context window" refer to?

    • A. The list of files currently open in your editor
    • B. Claude's working memory — it can hold a lot, but not everything at once
    • C. A pop-up window that asks for your permission
    • D. The maximum number of terminal commands per session
  6. Using Claude Code Effectively By default, what does Claude Code do before running commands or making changes to your files?

    • A. It applies all changes automatically without notifying you
    • B. It asks you for permission, keeping you in control
    • C. It emails you a summary after the changes are done
    • D. It requires you to manually approve every token it generates
  7. The Agentic Loop The agentic loop is often summarized as three repeating phases. What are they?

    • A. Compile, run, debug
    • B. Gather context, take action, verify results
    • C. Read, summarize, reply
    • D. Plan, approve, deploy
  8. The Agentic Loop In the agentic loop, what happens after Claude Code takes an action and verifies that the results do NOT yet satisfy your prompt?

    • A. It stops and reports a failure to the user
    • B. It permanently discards the prompt
    • C. It loops back and tries again until the results are complete and verifiable
    • D. It switches to plan mode automatically
  9. Context When the conversation reaches the limit of the context window, what does Claude Code do?

    • A. It compacts the conversation, automatically removing or summarizing content to bring the context back to a usable size
    • B. It immediately ends the session and loses all progress
    • C. It asks you to manually delete old messages
    • D. It doubles the size of the context window
  10. Tools What role do tools play for Claude Code compared to a typical text-in/text-out assistant?

    • A. They translate the conversation into other languages
    • B. They let Claude Code execute code — like reading a file or searching the web — deciding via semantic understanding when to call a tool and how to use its output
    • C. They compress the context window
    • D. They replace the need for a language model entirely
  11. Permissions In Auto-accept permission mode, how does Claude Code behave?

    • A. It runs everything — file edits and shell commands — without asking
    • B. It edits files without asking, but shell commands still require approval
    • C. It only reads files and never makes changes
    • D. It asks for permission before every single action
  12. Permissions What characterizes Plan mode in Claude Code?

    • A. It uses read-only tools to compile a plan of action before starting any work
    • B. It auto-accepts all file edits and commands
    • C. It deploys the plan to production automatically
    • D. It disables the context window to save memory
  13. Installing Claude Code You run the `claude` command inside a project directory. What does Claude Code have access to?

    • A. Only the single file you explicitly open
    • B. That directory and all of its subfolders
    • C. Your entire hard drive, including the home directory
    • D. Nothing until you grant access file-by-file
  14. Installing Claude Code Which installation methods for Claude Code do NOT support auto-updates?

    • A. The curl script and PowerShell Invoke-RestMethod
    • B. Homebrew (brew install) and winget
    • C. The VS Code and JetBrains extensions
    • D. All installation methods auto-update equally
  15. Installing Claude Code On Windows, which command is used to install Claude Code in PowerShell?

    • A. curl
    • B. brew install
    • C. Invoke-RestMethod
    • D. apt-get install
  16. Installing Claude Code How is Claude Code on the web (claude.ai/code) different from the desktop app?

    • A. It gives full access to your local file system
    • B. It is restricted to working with GitHub repositories
    • C. It cannot run any tools
    • D. It requires an API key instead of a Claude account
  17. Installing Claude Code According to the course, which surface should you choose if you want to stay on the cutting edge with the newest features first?

    • A. The desktop app
    • B. The web app
    • C. The terminal
    • D. The JetBrains plugin
  18. Installing Claude Code When you first run `claude` in the terminal, which of the following is part of the initial setup?

    • A. Choosing a color theme and signing in with a Claude account (Pro/Max/Enterprise) or an API key
    • B. Manually writing a configuration file from scratch
    • C. Installing a separate database server
    • D. Granting root access to your machine
  19. Your First Prompt Which keyboard shortcut cycles between the permission/acceptance modes in Claude Code?

    • A. Ctrl + P
    • B. Shift + Tab
    • C. Cmd + Enter
    • D. Alt + M
  20. Your First Prompt What does Plan Mode do when given a prompt?

    • A. It immediately edits files to implement the request
    • B. It uses read-only tools to analyze your codebase, asks clarifying questions, and returns a detailed plan it can execute
    • C. It runs every command automatically without asking
    • D. It only searches the web for documentation

…và 59 câu nữa trong bản đề thi thử đầy đủ (79 câu) — mở tab “Đề thi thử” trên trang để làm toàn bộ, có chấm điểm & giải thích.