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

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
Ba cấp của progressive disclosure: chỉ trả tiền token cho thứ thực sự dùng tới

Cấp 1 — Discovery (Khám phá)

Khi agent khởi động, nó chỉ nạp namedescription 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.

~80token trung bình mỗi skill ở cấp Discovery
3cấp progressive disclosure (và hơn nữa)
2trường bắt buộc trong frontmatter: name + description
dung lượng tri thức gắn kèm (effectively unbounded)

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
Nhiều skill độc lập phối hợp trong một tác vụ — mỗi skill là một "module kỹ năng" có thể tái sử dụng

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 SkillsMCPRAGFine-tuning
Giải quyết gìDạy quy trình & cách làmKết nối tool/dữ liệu ngoàiTruy xuất tri thức sự kiệnThay đổi hành vi cốt lõi mô hình
Dạng đầu vàoFile SKILL.md + scriptServer expose tools/resourcesVector DB + tài liệuDataset huấn luyện
Cập nhậtSửa file, tức thìTriển khai lại serverRe-index tài liệuHuấn luyện lại (đắt, chậm)
Chi phí contextRất thấp (progressive)Trung bình (schema tool)Theo số chunk nạpBằng 0 (gói trong weights)
Khi nào dùngQuy trình lặp lại, có quy ước riêngCần đọc/ghi hệ thống ngoàiCơ sở tri thức lớn, hay thay đổiCầ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 đó.

16/10/2025
Anthropic giới thiệu Agent Skills, hỗ trợ trên Claude.ai, Claude Code, Agent SDK và Developer Platform.
18/12/2025
Anthropic công bố Agent Skills như một chuẩn mở, kèm đặc tả SKILL.md để bất kỳ công cụ nào cũng đọc được.
+48 giờ sau đó
Microsoft tích hợp vào VS Code; OpenAI bổ sung cho cả ChatGPT lẫn Codex CLI.
03/2026
Hơn 32 công cụ từ các hãng khác nhau — Gemini CLI (Google), Junie (JetBrains), Kiro (AWS), Goose (Block)... — cùng đọc một định dạng SKILL.md từ cùng cấu trúc thư mục.
48hđể Microsoft & OpenAI tích hợp sau khi mở chuẩn
32+công cụ đọc cùng định dạng SKILL.md (03/2026)
1định dạng duy nhất, không khóa nhà cung cấp

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.