Công cụ AI Coding

Skills vs Subagents vs Hooks vs MCP: khác gì? Chọn đúng trong Claude Code (2026)

Aug 14, 202614 phút đọc

Skills, Subagents, Hooks và MCP là bốn khối mở rộng Claude Code - khác nhau ở việc ai kích hoạtlàm gì. Mẹo nhớ: Skill = điều agent NÊN BIẾT (know-how tự nạp theo yêu cầu) · Subagent = điều agent GIAO ĐI (chạy trong context riêng) · Hook = điều LUÔN xảy ra (tự động, chắc chắn, không do model quyết) · MCP = CẦU NỐI ra ngoài (kết nối DB, GitHub, API). Chúng bổ trợ nhau, không thay thế nhau.

Nếu bạn đã dùng Claude Code được một thời gian, chắc chắn bạn từng nghe cả bốn cái tên: Skills, Subagents, Hooks, MCP. Vấn đề là chúng nghe na ná nhau, tài liệu thì tản mát, và phần lớn bài viết tiếng Anh hoặc bỏ sót một khối, hoặc so sánh thiếu cột. Kết quả: nhiều người nhét mọi thứ vào Skills, hoặc lạm dụng MCP cho những việc lẽ ra chỉ cần một Hook.

Bài này gom đủ cả bốn khối vào một chỗ, kèm bảng so sánh đủ 4 cột và một bảng quyết định "cần cái nào" để bạn chọn đúng công cụ cho đúng việc. Đây là bài kết nối - mỗi khối sẽ có link tới bài chuyên sâu riêng nếu bạn muốn đào tiếp.

Bức tranh nhanh: 4 khối mở rộng Claude Code

Trước khi phân biệt, hãy hình dung một sơ đồ tầng. Nền dưới cùng là CLAUDE.md - file context luôn-bật, mô tả quy ước dự án, luôn nằm trong đầu Claude ở mỗi phiên. Nó không phải một trong "bốn khối" nhưng là lớp nền mà bốn khối kia đứng lên.

Trên nền đó là bốn cách mở rộng Claude Code (extend Claude Code):

  • Skills - gói know-how Claude tự nạp khi task khớp mô tả. Giống "cẩm nang" để sẵn trên kệ, khi cần thì lấy ra đọc.
  • Subagents - một instance Claude phụ, có context window riêng, nhận một việc gọn và trả về tóm tắt. Giống giao việc cho đồng nghiệp rồi nhận báo cáo.
  • Hooks - script chạy tự động tại một sự kiện lifecycle (trước/sau khi gọi tool, lúc mở phiên…). Giống dây chuyền tự động: sự kiện xảy ra là nó chạy, không hỏi ý ai.
  • MCP - giao thức chuẩn nối Claude tới hệ thống bên ngoài (database, GitHub, API). Giống ổ cắm quốc tế: cắm vào là nói chuyện được với dịch vụ ngoài.

Bảng so sánh Skills vs Subagents vs Hooks vs MCP

Đây là phần cốt lõi. Điểm khác biệt lớn nhất giữa bốn khối nằm ở hai câu hỏi: ai kích hoạt nó (model tự quyết hay chắc chắn chạy) và nó có tốn context không. Bảng dưới đối chiếu đủ 4 khối theo 8 chiều - thứ mà hầu hết bài so sánh tiếng Anh vẫn thiếu (nhiều bài bỏ cột MCP hoặc bỏ cột Hooks).

Chiều Skills Subagents Hooks MCP
Là gì Gói hướng dẫn/quy trình (SKILL.md + script) Claude tự nạp theo mô tả Instance Claude phụ, context window riêng, nhận task gọn, trả tóm tắt Script/lệnh chạy tự động tại sự kiện lifecycle Giao thức chuẩn nối Claude tới hệ thống ngoài
Kích hoạt khi nào On-demand khi task khớp mô tả, hoặc gọi tay Khi agent chính giao việc / chạy song song Theo sự kiện (trước/sau tool, mở phiên…), KHÔNG do model Khi cần gọi tool/dữ liệu ngoài
Sống ở đâu .claude/skills/ .claude/agents/ settings.json (mục hooks) MCP server (config .mcp.json)
Deterministic? Không - model quyết định có dùng hay không Không - model quyết định giao việc - luôn chạy khi sự kiện xảy ra Tool call do model quyết
Ảnh hưởng context Nạp vào context chính (progressive disclosure) Cô lập - context riêng, không làm bẩn context chính Không tốn context của model Kết quả tool đổ vào context
Kết nối ngoài? Không (trừ khi skill gọi MCP) Không trực tiếp Chạy shell/HTTP được - đây là lõi của nó
Dùng tốt nhất cho Đóng gói know-how tái dùng: "repo này ship feature thế nào" Tách việc nặng token, chạy song song, việc chuyên biệt Đảm bảo chắc chắn: format, lint, chặn lệnh nguy hiểm, thông báo Truy cập dữ liệu/dịch vụ thời gian thực bên ngoài
Ví dụ Skill review PR, skill viết migration Subagent scout codebase, subagent chạy test Chạy prettier sau edit, chặn đọc .env GitHub MCP, Postgres MCP

Nhìn bảng, bạn thấy ngay ba lằn ranh: Hooks là khối duy nhất chắc chắn chạy (không phụ thuộc model); Subagents là khối duy nhất có context cô lập; MCP là khối duy nhất ra ngoài hệ thống. Skills là "chất keo" know-how ở giữa. Định nghĩa và đường dẫn ở trên bám theo tài liệu chính thức Claude Code (code.claude.com/docs, truy cập 08/2026).

Skills là gì - và khi nào dùng

Skill là một thư mục chứa SKILL.md (mô tả + hướng dẫn) và tùy chọn thêm script hoặc file tham chiếu. Claude đọc phần mô tả, và khi task hiện tại khớp, nó tự "mở cẩm nang" đó ra dùng - cơ chế này gọi là progressive disclosure: chỉ nạp chi tiết khi cần, đỡ tốn context.

Dùng Skill khi bạn có một quy trình lặp lại muốn Claude làm nhất quán: "trong repo này, migration viết theo mẫu X", "PR phải kiểm 5 điểm này". Bạn viết một lần, cả team dùng lại.

# cấu trúc tối giản của một skill
.claude/skills/review-pr/
 SKILL.md # mô tả: "review pull request theo checklist repo"
 checklist.md # tài liệu skill nạp thêm khi cần

Muốn hiểu sâu cơ chế và cách viết, xem Claude Code Skills là gì và hướng dẫn tự tạo custom skill. Điểm cần nhớ: Skill không đảm bảo luôn chạy - model tự quyết có dùng hay không. Cần chắc chắn thì đó là việc của Hook.

Subagents là gì - và khi nào dùng

Subagent là một instance Claude phụ có context window riêng. Agent chính giao cho nó một việc gọn ("quét toàn bộ test và báo cái nào fail"), nó làm trong không gian riêng rồi trả về tóm tắt - chứ không đổ toàn bộ log vào context chính.

Đây là lợi thế lớn nhất: tiết kiệm context và cô lập nhiễu. Việc nào ngốn nhiều token trung gian (đọc hàng chục file, chạy test dài) mà bạn chỉ cần kết quả cuối - giao cho subagent. Nhiều subagent còn chạy song song, mỗi cái một nhánh việc.

Đánh đổi: mỗi subagent là một "phiên" mới, có overhead khởi tạo và không thấy được context của agent chính. Việc nhẹ, cần ngữ cảnh liền mạch thì đừng tách ra - phí công. Chi tiết cách viết và điều phối trong hướng dẫn Subagents.

Hooks là gì - và khi nào dùng

Hook là script hoặc lệnh chạy tự động tại một sự kiện trong vòng đời phiên: trước khi gọi một tool, sau khi Claude sửa file, lúc mở phiên… Điểm phân biệt cốt lõi: Hook deterministic - sự kiện xảy ra là nó chạy, không phụ thuộc model có "muốn" hay không. Đây chính là thứ Skill không có.

Vì vậy Hook là công cụ để đảm bảo: chạy prettier sau mỗi lần edit, chạy lint trước khi commit, hoặc chặn Claude đọc file .env / chạy lệnh nguy hiểm. Nó cũng chạy shell hoặc gọi HTTP để bắn thông báo.

# ý tưởng: sau khi Claude sửa file .ts, tự format
# (khai báo trong settings.json, mục hooks)
PostToolUse (Edit) -> prettier --write "$FILE"

Quy tắc vàng: nếu một việc bắt buộc phải xảy ra mỗi lần, đừng viết thành Skill (model có thể bỏ qua) - hãy dùng Hook. Xem sâu hơn ở bài Hooks trong Claude Code.

MCP là gì - và khi nào dùng

MCP (Model Context Protocol) là giao thức chuẩn để Claude nói chuyện với hệ thống bên ngoài. Một MCP server phơi ra các tool, và Claude gọi chúng để đọc/ghi dữ liệu thật: truy vấn Postgres, tạo issue trên GitHub, gọi API nội bộ. Khác với ba khối kia (đều "trong nhà"), MCP là khối duy nhất vươn ra ngoài.

Dùng MCP khi Claude cần dữ liệu hoặc hành động thời gian thực ở nơi khác: "lấy 10 đơn hàng mới nhất từ DB", "mở PR trên GitHub". Bạn khai báo server trong .mcp.json, Claude tự thấy các tool và gọi khi cần.

Đánh đổi: MCP thêm một phụ thuộc ngoài (server phải chạy, cần xác thực) và kết quả tool sẽ đổ vào context. Đừng dùng MCP để "nhét quy trình" - quy trình là việc của Skill; MCP chỉ nên là cây cầu dữ liệu. Đọc thêm MCP là gì và ví dụ thực tế GitHub MCP cho Claude Code.

Bảng quyết định - mình cần cái nào?

Khi phân vân, đừng bắt đầu từ "khối nào", hãy bắt đầu từ "mình muốn gì". Bảng dưới ánh xạ nhu cầu → khối:

Nếu bạn muốn… Dùng Vì sao
Đóng gói know-how/quy trình để tái dùng nhất quán Skill Nạp theo yêu cầu, không tốn context khi chưa cần
Tách việc nặng token hoặc chạy nhiều việc song song Subagent Context cô lập, chỉ trả tóm tắt về
Đảm bảo một việc LUÔN chạy dù model làm gì Hook Deterministic - kích hoạt theo sự kiện, không do model
Truy cập dữ liệu/dịch vụ bên ngoài MCP Cầu nối chuẩn ra hệ thống ngoài

Hoặc chạy nhanh qua cây quyết định 3 câu hỏi:

  • Việc này có phải luôn xảy ra, không được bỏ sót? → Có: Hook.
  • Nó cần đọc/ghi ở một hệ thống ngoài? → Có: MCP.
  • Nó ngốn nhiều context/token trung gian và chạy được độc lập? → Có: Subagent. → Không: gói know-how thành Skill.

Nhắc lại mẹo nhớ để khỏi lẫn: Skill = điều agent NÊN BIẾT · Subagent = điều GIAO ĐI · Hook = điều LUÔN xảy ra · MCP = CẦU NỐI ra ngoài.

Nhầm lẫn thường gặp: Plugins & Slash commands nằm đâu?

Hai cái tên hay làm rối bức tranh bốn khối:

Plugins không phải khối thứ năm. Plugin là cách đóng gói nhiều Skill/Subagent/Hook/cấu hình MCP lại thành một bộ để cài và chia sẻ trong một bước. Nói cách khác, plugin là "hộp" chứa bốn khối, không phải một loại khối mới. Xem Claude Code Plugins để hiểu cách đóng gói.

Slash commands (lệnh gạch chéo như /review) trước đây là một cơ chế riêng, và đang được hợp nhất về mô hình Skills theo hướng phát triển gần đây của Claude Code. Về mặt thực dụng, bạn cứ hình dung một lệnh gạch chéo như một lối tắt gọi tay tới know-how - cùng họ với Skill. Chi tiết ở bài Slash commands trong Claude Code.

Sai lầm thường gặp khi dùng 4 khối

Đây là những lỗi mình thấy nhiều nhất (kể cả từng mắc), và cách sửa:

Sai lầm Nên làm
Dùng Skill cho việc bắt buộc phải chạy (format, chặn lệnh) rồi ngạc nhiên vì model đôi khi bỏ qua Chuyển sang Hook - chỉ Hook mới đảm bảo chắc chắn
Nhét cả một quy trình nhiều bước vào một MCP server MCP chỉ nên là cầu dữ liệu; quy trình để trong Skill, gọi MCP khi cần
Tạo Subagent cho việc nhẹ, cần ngữ cảnh liền mạch Làm thẳng trong agent chính; subagent có overhead và mất context
Bỏ quên CLAUDE.md nền, rồi viết cả tá Skill để bù Đặt quy ước chung vào CLAUDE.md trước; Skill chỉ cho know-how theo tình huống

Mẫu số chung của mọi lỗi trên: chọn khối theo thói quen thay vì theo bản chất việc (chắc chắn hay không, trong nhà hay ngoài, nặng context hay nhẹ).

Dùng phối hợp cả 4 trong 1 workflow thật

Bốn khối mạnh nhất khi ghép lại, không phải chọn một bỏ ba. Đây là một luồng "mở PR an toàn" mình hay dùng, cho thấy từng khối làm đúng phần của nó:

  1. Hook chặn trước: nếu Claude định đọc .env hoặc chạy lệnh xoá nguy hiểm, hook chặn ngay - không phụ thuộc model có "nhớ" quy tắc hay không.
  2. Skill review: skill "review PR" nạp checklist repo và soát code theo đúng tiêu chuẩn team.
  3. Subagent chạy test song song: giao cho subagent quét toàn bộ test trong context riêng, chỉ trả về danh sách test fail - context chính không bị ngập log.
  4. MCP tạo PR: khi mọi thứ xanh, GitHub MCP mở pull request thật với mô tả đã soạn.

Chú ý cách chúng bổ trợ: Hook lo an toàn bắt buộc, Skill lo chất lượng theo know-how, Subagent lo tiết kiệm context, MCP lo chạm ra ngoài. Bỏ bất kỳ khối nào, luồng vẫn chạy nhưng yếu đi một mặt.

Khỏi tự dựng từng khối - bộ kit gói sẵn cả 4 (AgentKit)

Hiểu bốn khối là một chuyện; ngồi viết đủ Skills, cấu hình Subagents, cài Hooks và nối MCP cho ra một quy trình mượt lại tốn hàng chục giờ. Nếu bạn muốn đi nhanh, một bộ kit dựng sẵn có thể tiết kiệm phần dựng nền đó.

Disambiguation: AgentKit nói ở đây là bộ kit cho Claude Code (tại agentkit.best (giảm 20% qua link), dùng CLI ak, tiền thân là Claude Kit ck→ak) - khác với OpenAI AgentKit (Agent Builder/ChatKit). Đừng nhầm hai thứ.

AgentKit gói sẵn cho Claude Code: 108+ skills45 agent (17 engineer + 28 marketing) cùng 30+ workflow - tức là bạn nhận được đủ cả bốn khối (Skills, Subagents, cấu hình Hooks/MCP) ở dạng dựng sẵn thay vì viết từ đầu. Muốn xem thực hư, đọc bài review AgentKit, hoặc xem giá AgentKit (giảm 20% qua link) trực tiếp.

Nói thẳng: nếu bạn thích tự kiểm soát từng dòng và chỉ cần một hai Skill, tự dựng vẫn ổn và miễn phí. Kit hợp lý khi bạn muốn nền tảng rộng, nhất quán ngay. Muốn cân nhắc chi phí, xem AgentKit giá có đáng mua không.

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

Skills và Subagents khác nhau chỗ nào?

Skill là know-how nạp vào context chính của agent hiện tại - nó "biết thêm" một quy trình. Subagent là một instance Claude riêng biệt với context window cô lập, nhận việc rồi trả tóm tắt. Nói gọn: Skill làm agent thông minh hơn tại chỗ; Subagent tách việc ra chỗ khác để đỡ tốn context.

Khi nào dùng Hook thay vì Skill?

Dùng Hook khi việc đó bắt buộc luôn xảy ra, không được phụ thuộc vào việc model có nhớ hay không - ví dụ format code sau mỗi edit, hoặc chặn đọc file bí mật. Skill thì model tự quyết có dùng hay không, nên không đảm bảo.

MCP có thay được Skill không?

Không. MCP là cầu nối tới tool/dữ liệu bên ngoài; Skill là gói know-how/quy trình. Chúng giải quyết hai vấn đề khác nhau và thường phối hợp: Skill mô tả quy trình, trong đó gọi tool qua MCP khi cần chạm dữ liệu ngoài.

Plugins có phải khối thứ 5 không?

Không. Plugin chỉ là cách đóng gói nhiều Skill/Subagent/Hook/cấu hình MCP lại để cài và chia sẻ trong một bước. Nó là "hộp" chứa bốn khối, không phải một loại khối mới.

Slash commands giờ nằm đâu?

Slash commands đang được hợp nhất về mô hình Skills theo hướng phát triển gần đây của Claude Code. Bạn có thể xem một lệnh gạch chéo như lối tắt gọi tay tới know-how, cùng họ với Skill.

Dùng cả 4 cùng lúc được không?

Được, và nên. Chúng bổ trợ nhau: Hook đảm bảo an toàn, Skill lo chất lượng, Subagent tiết kiệm context, MCP chạm ra ngoài. Một workflow thật thường dùng cả bốn.

Có bộ kit nào gói sẵn cả 4 không?

Có. AgentKit (cho Claude Code, CLI ak) đóng gói sẵn 108+ skills và 45 agent cùng cấu hình Hooks/MCP, tiết kiệm phần dựng nền. Đọc chi tiết ở bài review AgentKit trước khi quyết.

Kết luận + đọc tiếp

Bốn khối, một mẹo nhớ: Skill = điều NÊN BIẾT · Subagent = điều GIAO ĐI · Hook = điều LUÔN xảy ra · MCP = CẦU NỐI ra ngoài. Chọn theo bản chất việc (chắc chắn hay không, trong nhà hay ngoài, nặng context hay nhẹ) thay vì theo thói quen, và bạn sẽ hết cảnh nhét mọi thứ vào Skills. Đào sâu từng khối: Skills, Subagents, Hooks, MCP. Người mới nên bắt đầu từ Claude Code là gì.

Muốn Claude Code mạnh hơn ngay? Nếu ngại tự dựng đủ bốn khối, một bộ kit dựng sẵn cho bạn Skills + Subagents + Hooks + cấu hình MCP để dùng liền - nhớ đọc review trước để biết có hợp nhu cầu không.

Dùng thử AgentKit (giảm 20% qua link) →

J

Jasmine

Tác giả · Jasmine Daily

Người viết nên Jasmine Daily - ghi lại những suy nghĩ, trải nghiệm và những khoảnh khắc đời thường. Thật lòng, không vội vàng, không hoàn hảo.

Jasmine Daily

Vẫn còn nhiều điều đang chờ được đọc.

Nếu bài viết này chạm đến bạn, hãy ghé xem thêm vài trang khác trong cuốn nhật ký này.

Đọc tiếp

Bài viết liên quan