Skill và agent trong Claude Code là gì?

Skill là gói hướng dẫn (quy trình, tiêu chuẩn, tài liệu và script) mà Claude nạp vào để làm một loại việc cụ thể; agent (subagent) là một "người làm việc" riêng, có ngữ cảnh, vai trò và quyền dùng công cụ độc lập. Nói đơn giản: skill trả lời câu hỏi "làm việc này theo cách nào", còn agent trả lời "ai làm và được phép dùng gì".

Ẩn dụ dễ nhớ: skill giống cuốn quy trình test (test procedure) của công ty; agent giống một tester được giao việc, ngồi ở bàn riêng, làm xong chỉ báo cáo kết quả cuối cho trưởng nhóm.

So sánh nhanh skill và agent

Tiêu chí Skill Agent (subagent)
Bản chất Một thư mục gồm file hướng dẫn chính SKILL.md, kèm tài liệu tham chiếu và script nếu cần Một file mô tả vai trò, phần đầu khai báo tên và quyền, phần thân là lời dặn (system prompt)
Nơi lưu Thư mục skills trong dự án hoặc trong thư mục cá nhân của Claude Thư mục agents trong dự án hoặc trong thư mục cá nhân của Claude
Chạy ở đâu Ngay trong cuộc hội thoại hiện tại Trong một ngữ cảnh riêng, tách biệt với cuộc hội thoại chính
Cách kích hoạt Claude tự chọn dựa vào phần mô tả, hoặc bạn gọi bằng lệnh có dấu gạch chéo Claude tự giao việc dựa vào phần mô tả, hoặc bạn gọi đích danh
Kết quả trả về Hướng dẫn được nạp vào để Claude làm theo Chỉ một bản báo cáo cuối gửi lại cho bên gọi
Kiểm soát quyền Có thể khai báo các công cụ được dùng khi skill hoạt động Khai báo danh sách công cụ được phép, có thể chọn model riêng
Nên dùng khi Muốn tái sử dụng một quy trình hoặc chuẩn làm việc Muốn tách việc dài, nhiều bước, hoặc cần giới hạn quyền

Cấu trúc một skill chuẩn

Mỗi skill là một thư mục, trong đó bắt buộc có file hướng dẫn chính tên SKILL.md. Phần đầu file khai báo hai thông tin quan trọng:

  • Tên skill: viết thường, nối bằng dấu gạch ngang, ví dụ itlearn-publish.
  • Mô tả: nêu rõ skill làm gì và khi nào nên dùng. Đây là phần quan trọng nhất, vì Claude dựa vào mô tả để quyết định có kích hoạt skill hay không.

Phần còn lại của file là hướng dẫn chi tiết từng bước. Nếu nội dung dài, bạn tách ra các thư mục phụ: tài liệu tham chiếu, mẫu (template) và script tự động.

Skill hoạt động theo nguyên tắc tiết lộ dần (progressive disclosure):

  1. Luôn nạp: chỉ tên và mô tả của skill, rất nhẹ.
  2. Khi được kích hoạt: mới nạp toàn bộ hướng dẫn trong SKILL.md.
  3. Khi thật sự cần: mới đọc tài liệu tham chiếu hoặc chạy script đi kèm.

Nhờ vậy bạn có thể cài nhiều skill mà không làm đầy ngữ cảnh. Mẹo: viết mô tả kèm những cụm từ người dùng hay nói (ví dụ "đăng bài lên blog", "tạo bản nháp") và giữ file chính gọn gàng.

Cấu trúc một agent chuẩn

Agent cũng là một file văn bản, gồm hai phần:

  • Phần khai báo: tên agent, mô tả (quyết định khi nào Claude giao việc cho agent), danh sách công cụ được phép dùng và model sẽ chạy. Nếu không khai báo danh sách công cụ, agent mặc định được dùng toàn bộ công cụ của bên gọi.
  • Phần lời dặn (system prompt): mô tả vai trò, quy trình từng bước, những việc tuyệt đối không được làm và định dạng báo cáo trả về.

Ngoài ra còn một số tùy chọn nâng cao như gắn sẵn skill cho agent hay đặt chế độ xin quyền. Tên và độ sẵn có của các tùy chọn này thay đổi theo phiên bản Claude Code, bạn nên đối chiếu tài liệu chính thức trước khi dùng.

Điểm khác biệt lớn nhất: agent chạy trong ngữ cảnh riêng. Mọi bước tìm kiếm, đọc file, thử sai đều diễn ra bên trong agent; cuộc hội thoại chính chỉ nhận về bản báo cáo gọn gàng.

Ràng buộc giữa skill và agent

Đây là phần dễ sai nhất. Bạn hãy nhớ các ràng buộc sau:

# Ràng buộc Hệ quả thực tế
1 Agent không tự thừa hưởng skill của cuộc hội thoại chính Phải cấp rõ cho agent: gắn sẵn skill hoặc cho phép agent dùng công cụ gọi skill
2 Agent bị giới hạn bởi danh sách công cụ được cấp Skill hướng dẫn ghi file hay chạy script, nhưng agent không có quyền ghi file hay chạy lệnh thì vẫn không làm được
3 Skill chỉ là hướng dẫn, không phải quyền Skill không tự mở thêm quyền ngoài những gì môi trường và agent cho phép
4 Agent không gọi được agent khác Muốn chạy chuỗi nhiều agent, việc điều phối phải nằm ở cuộc hội thoại chính
5 Agent chỉ trả về một bản báo cáo cuối Cần quy định rõ định dạng báo cáo trong lời dặn, nếu không bên gọi sẽ thiếu thông tin
6 Agent chạy biệt lập, thường không hỏi lại người dùng Phải dặn trước cách xử lý điểm chưa rõ, ví dụ "áp dụng giả định hợp lý rồi liệt kê trong báo cáo"
7 Một skill có thể được cấu hình để chạy trong ngữ cảnh tách riêng Khi đó skill thực chất được thực thi bởi một agent, nên cân nhắc agent nào phù hợp

Ví dụ thực tế: quy trình viết bài của IT LEARN

Trong dự án nội dung của IT LEARN, mình dùng cả hai với phân vai rõ ràng:

  • Skill viết bài blog: chứa chuẩn viết bài như giọng văn, định nghĩa trong 40–60 từ đầu, cách viết FAQ, bối cảnh ví dụ.
  • Skill đăng bài: chứa script chuyển bài viết sang HTML và đăng bản nháp lên website.
  • Agent dựng bài: nhận một bản brief, lần lượt dùng các skill trên, rồi dừng ở bước kiểm tra thử chứ không đăng thật.

Vì sao tách như vậy? Agent được phép dùng skill nhưng bị cấm đăng bài thật ngay trong lời dặn; bước đăng do cuộc hội thoại chính thực hiện sau khi người phụ trách duyệt. Skill giữ tri thức dùng lại được, agent giữ phạm vi trách nhiệm và quyền hạn.

Khi nào chọn skill, khi nào chọn agent?

  • Cần tái sử dụng một quy trình hoặc chuẩn ở nhiều nơi: viết skill.
  • Việc dài, nhiều bước, sinh nhiều thông tin phụ mà bạn chỉ cần kết quả: dùng agent.
  • Cần giới hạn quyền (chỉ đọc, không được đăng bài): dùng agent với danh sách công cụ hẹp.
  • Cần chạy song song nhiều việc độc lập: dùng nhiều agent cùng lúc.
  • Thường thì kết hợp cả hai: agent là người thực thi, skill là cuốn sổ tay agent đó tra cứu.

Với tester, đây là tư duy rất quen thuộc: tách "quy trình test" (skill) khỏi "người thực hiện có phân quyền" (agent), giống như tách test case khỏi người chạy test case đó.