Agent Skills 2026: Dạy AI Agent kỹ năng mới với SKILL.md
Posted on: 5/27/2026 1:10:00 AM
Table of contents
- TL;DR
- 1. Vấn đề: Context window là tài nguyên khan hiếm
- 2. Agent Skills là gì?
- 3. Progressive Disclosure — bộ não của cơ chế
- 4. Sức mạnh thật: bundle code để có độ tin cậy "deterministic"
- 5. Composability — nhiều skill phối hợp
- 6. Skills, MCP, RAG hay Fine-tuning — chọn gì?
- 7. Từ tính năng riêng tới chuẩn mở
- 8. Bảo mật: skill là code, hãy đối xử như code
- 9. Khi nào nên (và không nên) viết Skill
- Kết luận
Bạn có một AI agent cực kỳ thông minh. Nó suy luận tốt, viết code sạch, gọi tool thành thạo. Nhưng khi bạn yêu cầu nó "điền form PDF theo đúng template công ty", "xuất báo cáo Excel có pivot table đúng chuẩn phòng kế toán", hay "viết commit message theo convention nội bộ", nó loay hoay — không phải vì không đủ thông minh, mà vì nó không biết cách làm theo quy trình riêng của bạn. Kiến thức ấy không nằm trong dữ liệu huấn luyện, và bạn cũng không muốn nhồi 5.000 dòng hướng dẫn vào mỗi prompt.
Đây chính là khoảng trống mà Agent Skills ra đời để lấp. Được Anthropic giới thiệu cuối năm 2025 và nhanh chóng trở thành một chuẩn mở được hàng chục công cụ áp dụng, Agent Skills cho phép bạn đóng gói "tri thức quy trình" thành một thư mục đơn giản với file SKILL.md ở trung tâm — và agent chỉ nạp nó vào ngữ cảnh đúng lúc cần. Bài viết này mổ xẻ toàn bộ cơ chế bên dưới.
TL;DR
Agent Skills = một thư mục chứa file SKILL.md (metadata + hướng dẫn) cộng với script và tài nguyên đi kèm. Cơ chế cốt lõi là progressive disclosure: agent chỉ nạp tên + mô tả khi khởi động (~vài chục token/skill), nạp toàn bộ hướng dẫn khi tác vụ khớp, và đọc tài nguyên chi tiết khi thực sự cần. Nhờ đó "kho tri thức" gắn vào agent gần như không giới hạn mà không làm phình context window.
1. Vấn đề: Context window là tài nguyên khan hiếm
Một LLM hiện đại có thể có context window vài trăm nghìn token, nhưng đó không phải lý do để nhồi nhét. Có ba ràng buộc thực tế:
- Chi phí & độ trễ: Mỗi token trong context đều tốn tiền và làm chậm inference. Nạp 50 quy trình chi tiết vào mọi request là lãng phí khủng khiếp khi 49 cái không liên quan.
- Context rot: Khi context quá dài, mô hình "loãng" sự chú ý — thông tin quan trọng bị chôn vùi giữa hàng nghìn dòng hướng dẫn không dùng tới, làm giảm chất lượng suy luận.
- Tính bảo trì: Quy trình của tổ chức thay đổi liên tục. Bạn cần sửa ở một chỗ, không phải đi vá từng prompt rải rác khắp codebase.
Các giải pháp trước đây đều có điểm yếu: fine-tuning thì đắt và chậm cập nhật; nhồi vào system prompt thì phình context; RAG thì hợp với "tra cứu sự kiện" hơn là "thực thi quy trình nhiều bước". Agent Skills chọn một hướng khác — và chìa khóa là progressive disclosure.
2. Agent Skills là gì?
Định nghĩa ngắn gọn từ Anthropic: "Một skill là một thư mục chứa file SKILL.md, gói gọn các hướng dẫn, script và tài nguyên giúp agent có thêm năng lực." Đó là một định dạng nhẹ, mở, không phụ thuộc framework cụ thể.
Cấu trúc tối thiểu của một skill chỉ gồm một file. Phức tạp hơn thì có thêm thư mục con:
pdf-skill/
├── SKILL.md # Bắt buộc: metadata + hướng dẫn cốt lõi
├── reference.md # Tùy chọn: tài liệu chi tiết, nạp khi cần
├── forms.md # Tùy chọn: hướng dẫn riêng cho thao tác điền form
└── scripts/
└── fill_form.py # Tùy chọn: code thực thi xác định (deterministic)
Trái tim của mọi skill là SKILL.md, gồm hai phần: YAML frontmatter (metadata) và phần thân (hướng dẫn dạng Markdown).
---
name: pdf-processing
description: Trích xuất, điền và chỉnh sửa file PDF — dùng khi người
dùng cần đọc form, điền dữ liệu vào PDF, hoặc tách/ghép trang.
---
# Xử lý PDF
## Khi nào dùng skill này
Khi tác vụ liên quan đến đọc nội dung PDF, điền form, hoặc thao tác trang.
## Quy trình điền form
1. Chạy `scripts/fill_form.py --inspect <file>` để liệt kê các field.
2. Map dữ liệu người dùng vào tên field tương ứng.
3. Gọi `scripts/fill_form.py --fill ...` để ghi giá trị.
Xem `forms.md` để biết cách xử lý checkbox và chữ ký số.
Mẹo viết description
Trường description là thứ quyết định skill có được kích hoạt hay không. Hãy viết nó như một câu trả lời cho "khi nào agent nên dùng tôi?": nêu rõ tác vụ và từ khóa người dùng có thể nhắc tới. Một description mơ hồ ("xử lý tài liệu") sẽ khiến skill bị bỏ qua hoặc kích hoạt nhầm.
3. Progressive Disclosure — bộ não của cơ chế
Anthropic ví Agent Skills như một cuốn cẩm nang được tổ chức tốt: bắt đầu bằng mục lục, rồi tới chương cụ thể, và cuối cùng là phụ lục chi tiết. Agent chỉ lật tới phần nó cần. Cơ chế này diễn ra qua ba cấp:
flowchart TD
A[Khởi động agent] --> B["CẤP 1 — Discovery
Nạp name + description
của MỌI skill vào system prompt"]
B --> C{Tác vụ người dùng
khớp skill nào?}
C -->|Không khớp| D[Bỏ qua, không tốn thêm token]
C -->|Khớp| E["CẤP 2 — Activation
Đọc toàn bộ SKILL.md
vào context"]
E --> F{Cần chi tiết
bổ sung?}
F -->|Không| G[Thực thi theo hướng dẫn]
F -->|Có| H["CẤP 3+ — Execution
Đọc reference.md, forms.md...
hoặc chạy script qua Bash"]
H --> G
style B fill:#e94560,stroke:#fff,color:#fff
style E fill:#2c3e50,stroke:#fff,color:#fff
style H fill:#16213e,stroke:#fff,color:#fff
style G fill:#f8f9fa,stroke:#e94560,color:#2c3e50
Cấp 1 — Discovery (Khám phá)
Khi agent khởi động, nó chỉ nạp name và description của từng skill vào system prompt — vừa đủ để biết "skill này tồn tại và dùng cho việc gì". Theo đo lường của Anthropic, chi phí trung bình chỉ khoảng ~80 token/skill (dao động từ ~55 token cho skill webapp-testing đến ~235 token cho skill xlsx). Nhờ vậy bạn có thể cài hàng trăm skill mà system prompt vẫn gọn.
Cấp 2 — Activation (Kích hoạt)
Khi tác vụ người dùng khớp với description của một skill, agent mới đọc toàn bộ nội dung SKILL.md vào context. Đây là lúc nó nhận được quy trình từng bước, các quy ước, lưu ý.
Cấp 3+ — Execution (Thực thi)
Trong khi thực thi, nếu SKILL.md tham chiếu tới các file khác (reference.md, forms.md...), agent chỉ đọc chúng khi thực sự chạm tới phần đó. Quan trọng hơn: với agent có filesystem và công cụ thực thi code, nó không cần đọc toàn bộ skill vào context — nó có thể chạy script để xử lý dữ liệu mà không bao giờ nạp dữ liệu thô vào cửa sổ ngữ cảnh. Đây là lý do Anthropic gọi dung lượng tri thức gắn vào skill là "effectively unbounded" — gần như không giới hạn.
4. Sức mạnh thật: bundle code để có độ tin cậy "deterministic"
Một điểm thường bị bỏ sót: skill không chỉ chứa văn bản hướng dẫn, mà còn có thể đóng gói script thực thi (thường là Python) để agent gọi qua công cụ Bash. Đây là khác biệt then chốt với "prompt engineering thuần túy".
Lấy ví dụ skill xử lý PDF của Anthropic: thay vì yêu cầu mô hình "đọc hiểu" cấu trúc binary của PDF (vừa tốn token vừa dễ sai), skill đính kèm một script Python trích xuất danh sách field của form mà không cần nạp file PDF vào context. Anthropic mô tả đây là "độ tin cậy xác định mà chỉ code mới mang lại".
Nguyên tắc vàng: việc gì làm được bằng code thì đừng bắt LLM "đoán"
Parse XLSX, validate JSON theo schema, sinh checksum, gọi API có rate-limit phức tạp... đều nên là code xác định trong scripts/. Để LLM lo phần suy luận và điều phối, còn phần "máy móc lặp lại chính xác" thì giao cho script. Đây cũng chính là tinh thần của mẫu CodeAct — agent hành động bằng cách viết và chạy code thay vì gọi tool JSON rời rạc.
5. Composability — nhiều skill phối hợp
Vì metadata của tất cả skill đã cài được nạp đồng thời lúc khởi động, agent có thể kích hoạt nhiều skill cùng lúc dựa trên ngữ cảnh tác vụ. Ví dụ một yêu cầu "đọc dữ liệu từ file Excel rồi xuất ra báo cáo PDF có chữ ký" có thể kích hoạt đồng thời skill xlsx và skill pdf, mỗi cái đóng góp phần quy trình của mình.
flowchart LR
U["Yêu cầu:
Đọc Excel → xuất PDF báo cáo"] --> AG((Agent))
AG -.kích hoạt.-> S1["Skill: xlsx
đọc & pivot dữ liệu"]
AG -.kích hoạt.-> S2["Skill: pdf
render & điền form"]
AG -.kích hoạt.-> S3["Skill: brand-style
quy ước thương hiệu"]
S1 --> R[Kết quả hoàn chỉnh]
S2 --> R
S3 --> R
style AG fill:#e94560,stroke:#fff,color:#fff
style S1 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style S2 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style S3 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
style R fill:#2c3e50,stroke:#fff,color:#fff
6. Skills, MCP, RAG hay Fine-tuning — chọn gì?
Đây là câu hỏi thực tế nhất. Bốn cơ chế này không loại trừ nhau — chúng giải quyết các bài toán khác nhau và thường dùng kết hợp.
| Tiêu chí | Agent Skills | MCP | RAG | Fine-tuning |
|---|---|---|---|---|
| Giải quyết gì | Dạy quy trình & cách làm | Kết nối tool/dữ liệu ngoài | Truy xuất tri thức sự kiện | Thay đổi hành vi cốt lõi mô hình |
| Dạng đầu vào | File SKILL.md + script | Server expose tools/resources | Vector DB + tài liệu | Dataset huấn luyện |
| Cập nhật | Sửa file, tức thì | Triển khai lại server | Re-index tài liệu | Huấn luyện lại (đắt, chậm) |
| Chi phí context | Rất thấp (progressive) | Trung bình (schema tool) | Theo số chunk nạp | Bằng 0 (gói trong weights) |
| Khi nào dùng | Quy trình lặp lại, có quy ước riêng | Cần đọc/ghi hệ thống ngoài | Cơ sở tri thức lớn, hay thay đổi | Cần phong cách/định dạng cố hữu |
Quan hệ giữa Skills và MCP
Anthropic nói rõ Skills bổ trợ cho MCP: "Skills dạy agent những quy trình phức tạp có liên quan tới tool và phần mềm bên ngoài." Nói cách khác — MCP cung cấp cánh tay (kết nối tới database, API, hệ thống), còn Skills cung cấp bí kíp (biết dùng những cánh tay đó theo trình tự nào cho đúng quy trình của bạn). Một skill hoàn toàn có thể hướng dẫn agent gọi một MCP server cụ thể ở bước nào.
7. Từ tính năng riêng tới chuẩn mở
Điều khiến Agent Skills đáng chú ý không chỉ là thiết kế, mà là tốc độ trở thành chuẩn chung của ngành — gợi nhớ đúng quỹ đạo mà MCP đã đi qua trước đó.
8. Bảo mật: skill là code, hãy đối xử như code
Một skill có thể chứa script thực thi và hướng dẫn agent kết nối ra ngoài — nghĩa là nó mang đúng rủi ro của việc cài phần mềm bên thứ ba. Anthropic khuyến nghị rõ: "Chỉ cài skill từ nguồn đáng tin cậy."
Checklist trước khi cài một skill
- Đọc kỹ toàn bộ file trong skill trước khi cài — đặc biệt là các script.
- Kiểm tra dependency & tài nguyên đính kèm: script kéo về thư viện nào, từ đâu?
- Cảnh giác hướng dẫn kết nối ra mạng: nếu SKILL.md bảo agent truy cập URL/nguồn ngoài lạ, đó là cờ đỏ.
- Coi chừng "lethal trifecta": skill kết hợp truy cập dữ liệu nhạy cảm + đọc nội dung không tin cậy + khả năng gửi ra ngoài chính là công thức cho prompt injection và rò rỉ dữ liệu.
Nói cách khác, hãy đặt skill vào đúng quy trình review bảo mật như bất kỳ dependency nào trong codebase: pin phiên bản, audit nội dung, và giới hạn quyền của môi trường thực thi ().
9. Khi nào nên (và không nên) viết Skill
Nên viết Skill khi...
- Có một quy trình lặp lại nhiều bước mà bạn liên tục phải nhắc lại cho agent.
- Tổ chức có quy ước riêng (format báo cáo, convention code, brand voice) mà mô hình không thể tự biết.
- Có phần việc nên giao cho code xác định thay vì để LLM "đoán".
Chưa cần Skill khi...
- Tác vụ chỉ là truy vấn sự kiện một lần — RAG hoặc tìm kiếm phù hợp hơn.
- Bạn chỉ cần kết nối tới một hệ thống ngoài mà không có quy trình đặc thù — dùng MCP server là đủ.
- Hướng dẫn quá ngắn, một câu trong prompt là xong — đừng tạo skill cho việc tầm thường.
Kết luận
Agent Skills không cố làm cho mô hình "thông minh hơn" — nó làm cho mô hình hữu dụng hơn trong thế giới thật, bằng cách dạy nó cách làm theo quy trình của bạn. Vẻ đẹp của thiết kế nằm ở sự đơn giản: một thư mục, một file Markdown, và một nguyên lý progressive disclosure giúp tri thức gắn kèm gần như không giới hạn mà context vẫn gọn gàng.
Cùng với MCP (cánh tay nối ra ngoài) và RAG (bộ nhớ tra cứu), Skills hoàn thiện bộ ba công cụ để xây agent production: biết quy trình, có công cụ, và nhớ được tri thức. Nếu bạn đang vận hành agent và thấy mình lặp đi lặp lại cùng một đoạn hướng dẫn, đó chính là tín hiệu: đã đến lúc viết SKILL.md đầu tiên.
Spec-Driven Development: Khi Đặc Tả Trở Thành Source Code
Agentic Commerce 2026: Khi AI Agent Tự Thanh Toán
Disclaimer: The opinions expressed in this blog are solely my own and do not reflect the views or opinions of my employer or any affiliated organizations. The content provided is for informational and educational purposes only and should not be taken as professional advice. While I strive to provide accurate and up-to-date information, I make no warranties or guarantees about the completeness, reliability, or accuracy of the content. Readers are encouraged to verify the information and seek independent advice as needed. I disclaim any liability for decisions or actions taken based on the content of this blog.