Hướng dẫn xây dựng Skill cho Claude

Skill là một thư mục dạy Claude cách xử lý một workflow cụ thể — load on-demand (khi cần), chia sẻ giữa Claude.ai / Claude Code / API. Tổng hợp lại tài liệu chính thức của Anthropic theo hướng dùng được ngay.

TL;DR

Theo Anthropic, skill là một bộ chỉ dẫn — đóng gói thành một folder đơn giản — dạy Claude cách xử lý một loại task hoặc workflow cụ thể. Khác với việc lặp lại preferences và quy trình trong mỗi cuộc hội thoại, skill cho phép bạn dạy Claude một lần và dùng lại mãi.

Skill phát huy sức mạnh khi bạn có workflow lặp đi lặp lại: tạo giao diện từ spec theo cùng một style, viết nghiên cứu, báo cáo theo cùng một phương pháp luận, tạo tài liệu hướng dẫn theo phong cách của team, hoặc điều phối thực hiện các tác vụ thông qua MCP.
Ví dụ kết hợp với các agent

Thực thi qua MCP:

Bước 1: Agent gọi MCP Server của GitHub để đọc nội dung file.

Bước 2: Agent tự phân tích và sửa lỗi (xử lý nội tại).

Bước 3: Agent gọi MCP Server của File System để lưu bản nháp local.

Bước 4: Agent gọi MCP Server của Slack để nhắn tin cho bạn.

Bài này tổng hợp lại tài liệu chính thức theo hướng dùng được — đủ để bạn build một skill chạy được trong 15-30 phút.

Skill là gì — về mặt cấu trúc

Một skill là một thư mục chứa:

  • `SKILL.md` (bắt buộc) — file Markdown với YAML frontmatter ở đầu.
  • `scripts/` (tuỳ chọn) — code thực thi được (Python, Bash, …).
  • `references/` (tuỳ chọn) — tài liệu chi tiết, load khi cần.
  • `assets/` (tuỳ chọn) — template, font, icon dùng trong output.

Thư mục đặt tên kebab-case (ví dụ: notion-project-setup). Không space, không underscore, không capital. File phải đặt đúng tên SKILL.md (case-sensitive). Và không kèm README.md bên trong skill — README chỉ ở repo cấp ngoài cho người đọc.

Progressive disclosure (tiết lộ dần) — vì sao skill khác CLAUDE.md

Skill dùng cơ chế ba tầng:

  1. YAML frontmatter — luôn nằm trong system prompt. Đủ ngắn để Claude biết khi nào cần dùng skill, mà không phải load toàn bộ.
  2. Phần thân `SKILL.md` — load khi Claude thấy skill liên quan tới task hiện tại. Chứa instructions đầy đủ.
  3. File liên kết (references/, scripts/, …) — Claude tự navigate tới khi cần.

Điểm khác biệt với CLAUDE.md: CLAUDE.md load mỗi session. Skill load on-demand (khi cần). Nếu bạn có 30 quy trình lĩnh vực cụ thể, đẩy vào CLAUDE.md sẽ làm context phình ra và Claude bắt đầu bỏ qua chỉ dẫn — "Bloated CLAUDE.md files cause Claude to ignore your actual instructions!" Tách thành skill là cách giải quyết.

Khi nào nên build skill

Anthropic chia ra ba category phổ biến:

  • Khởi tạo Tài liệu & Tài nguyên — Đảm bảo đầu ra nhất quán: từ các file docx, pptx, xlsx cho đến thiết kế frontend hay các thành phần code (code component) đều tuân thủ đúng style guide. Tích hợp sẵn các tiêu chuẩn thương hiệu, biểu mẫu (template) và danh sách kiểm định chất lượng. Không cần thông qua MCP.
  • Workflow Automation — quy trình nhiều bước cần phương pháp nhất quán, có kiểm tra xác thực, sàng lọc qua giữa các bước. Ví dụ: skill-creator của Claude giúp bạn tạo skill theo chuẩn.
  • MCP Enhancement — bạn đã có MCP server, skill là knowledge layer ở trên: dạy Claude dùng MCP đúng workflow, đúng thứ tự, có error handling.

Nếu bạn đang làm việc với MCP, thì kỹ năng quan trọng nhất chính là biến việc truy cập công cụ thô (raw tool access) thành những quy trình công việc (workflow) đáng tin cậy. Anthropic đã đưa ra một phép ẩn dụ về nhà bếp: MCP cung cấp cho bạn một gian bếp chuyên nghiệp (bao gồm công cụ và nguyên liệu), còn kỹ năng của bạn chính là công thức nấu ăn — tức là cách kết hợp chúng để tạo ra một món ăn có giá trị.

YAML frontmatter — phần quan trọng nhất

Đây là cái duy nhất Claude luôn đọc để quyết định có load skill hay không. Format tối thiểu:

---
name: your-skill-name
description: What it does. Use when user asks to [specific phrases].
---

Quy tắc của description:

  • Phải có cả hai: skill làm gì + khi nào dùng (trigger conditions).
  • Dưới 1024 ký tự, không XML tag (< >).
  • Liệt kê cụm từ cụ thể user có thể nói.
  • Nếu liên quan đến file type, nêu rõ.

Ví dụ tốt:

description: >
  Manages Linear project workflows including sprint planning,
  task creation, and status tracking. Use when user mentions
  "sprint", "Linear tasks", "project planning", or asks to
  "create tickets".

Ví dụ tệ — Claude sẽ không bao giờ trigger:

description: Helps with projects.   # quá chung
description: Creates sophisticated multi-page documentation systems.  # thiếu trigger

Mẹo debug khi skill không trigger: hỏi Claude "When would you use the [skill name] skill?" — Claude sẽ quote lại description. Đọc câu trả lời để biết bạn đang thiếu gì.

Cấm trong frontmatter: XML angle bracket (< >), tên skill chứa "claude" hoặc "anthropic" (reserved). Frontmatter hiện ra trong system prompt nên bị giới hạn để chống prompt injection.

Cấu trúc phần thân SKILL.md

Sau frontmatter là Markdown thuần. Template Anthropic gợi ý:

# Your Skill Name

## Instructions

### Step 1: [first major step]
Clear explanation of what happens.

Example:

python scripts/fetchdata.py --project-id PROJECTID

Expected output: [describe what success looks like]

## Examples

### Example 1: [common scenario]
User says: "Set up a new marketing campaign"
Actions:
1. Fetch existing campaigns via MCP
2. Create new campaign with provided parameters
Result: Campaign created with confirmation link

## Troubleshooting

### Error: [common error message]
Cause: [why it happens]
Solution: [how to fix]

Nguyên tắc viết:

  • Specific & actionable"Run `python scripts/validate.py --input {filename}` to check data format" thay vì "Validate the data before proceeding".
  • Reference rõ ràng"Before writing queries, consult `references/api-patterns.md` for rate limiting, pagination, and error codes."
  • Giữ `SKILL.md` ngắn — dưới ~5,000 từ. Tài liệu chi tiết đẩy sang references/.
  • Những hướng dẫn quan trọng phải nằm đầu — Claude đọc theo thứ tự, đừng chôn ở cuối.
  • Ngôn ngữ rõ ràng"CRITICAL: Before calling createproject, verify name is non-empty" thắng "Make sure to validate things properly"_.

Với validation thật sự quan trọng, đừng dựa vào ngôn ngữ — "Code is deterministic; language interpretation isn't." Bundle script và gọi nó trong instruction.

Năm pattern thường gặp

Không phải template bắt buộc, là pattern cộng đồng đã chạy thành công:

1. Điều phối theo trình tự (Sequential Workflow)

Hiểu đơn giản: Làm việc theo kiểu "dây chuyền". Bước A xong mới tới bước B, nếu bước B lỗi thì phải biết quay lại xử lý hoặc hủy bỏ (rollback) để tránh sai sót hệ thống.

Ví dụ: Quy trình đón khách hàng mới.

Tạo tài khoản → Thiết lập thanh toán → Đăng ký gói dịch vụ → Gửi email chào mừng.

Nếu thanh toán lỗi, hệ thống sẽ dừng lại và không gửi email chào mừng vô duyên.

2. Phối hợp đa công cụ (Multi-MCP Coordination)

Hiểu đơn giản: Một "nhạc trưởng" điều khiển nhiều nhạc công (MCP) cùng lúc. Quan trọng nhất là dữ liệu từ công cụ này phải truyền sang công cụ kia trơn tru.

Ví dụ: Từ thiết kế ra sản phẩm thực tế.

Lấy ảnh từ Figma → Lưu vào Google Drive → Tạo nhiệm vụ trên Linear → Báo tin nhắn qua Slack.

3. Cải thiện lặp lại (Iterative Refinement)

Hiểu đơn giản: Làm nháp rồi sửa, sửa đến khi nào đạt chuẩn thì thôi. Thay vì bắt Claude làm một lần ra kết quả hoàn hảo, hãy cho nó "soát lỗi" nhiều lần.

Cách làm: Viết bản thảo → Chạy lệnh kiểm tra (validation) → Sửa dựa trên lỗi → Hoàn thiện.

Lưu ý: Phải dạy Claude biết thế nào là "đạt" và khi nào thì nên dừng lại để tránh lặp vô tận.

4. Chọn công cụ theo ngữ cảnh (Context-aware Tool Selection)

Hiểu đơn giản: "Tùy cơ ứng biến". Cùng một mục đích là lưu trữ, nhưng tùy loại file mà Claude sẽ chọn nơi cất giữ thông minh nhất.

Ví dụ: * File nặng? Đẩy lên Cloud.

Tài liệu cần làm chung? Cho vào Notion.

Code? Đẩy lên GitHub.

File tạm? Lưu máy cục bộ.

5. Trí tuệ chuyên biệt (Domain-specific Intelligence)

Hiểu đơn giản: Không chỉ là biết dùng công cụ, mà còn phải có "đầu óc" của chuyên gia trong ngành đó. Skill này cài cắm các kiến thức nghiệp vụ sâu.

Ví dụ: Quy trình thanh toán quốc tế.

Claude không chỉ bấm nút "Chuyển tiền", mà nó còn biết tự kiểm tra danh sách đen (sanctions list), đánh giá rủi ro xem có dấu hiệu lừa đảo không, sau đó mới thực hiện và ghi lại nhật ký kiểm toán (audit trail).Một câu hỏi định hướng: skill của bạn là problem-first ("tôi cần set up workspace" → skill chọn tool) hay tool-first ("tôi đã connect Notion MCP" → skill dạy workflow tối ưu)? Đa số skill nghiêng về một phía. Biết được phía nào giúp bạn chọn pattern.

Testing — ba loại test cần có

Thứ tự đề xuất từ Anthropic:

1. Triggering tests

Skill load đúng lúc, không load nhầm.

Should trigger:
- "Help me set up a new ProjectHub workspace"
- "I need to create a project in ProjectHub"
- "Initialize a ProjectHub project for Q4 planning"

Should NOT trigger:
- "What's the weather in San Francisco?"
- "Help me write Python code"
- "Create a spreadsheet" (nếu skill không xử lý sheet)

Mục tiêu: trigger trên 90% query liên quan, gần 0% query không liên quan.

2. Functional tests

Chạy workflow → kiểm output. Ví dụ: "Create project with 5 tasks" → project được tạo, 5 task có property đúng, link đầy đủ về project, không API error.

3. Performance comparison

So với baseline (không có skill). Ví dụ:

Without skill:                With skill:
- 15 back-and-forth msg       - Automatic workflow
- 3 failed API calls          - 2 clarifying questions only
- 12,000 tokens               - 0 failed API calls
                              - 6,000 tokens

Pro tip từ Anthropic: lặp đi lặp lại trên một task khó tới khi Claude làm được, rồi mới trích xuất thành skill. Đó là cách nhanh nhất, tận dụng việc học trong bối cảnh thực tế. Sau đó mới mở rộng test cases.

Khi skill không trigger / trigger sai

Undertriggering (không load khi cần):

  • Description quá chung. Thêm trigger phrase cụ thể, từ khoá kỹ thuật, file type liên quan.
  • Hỏi Claude "When would you use the [skill name] skill?" và sửa từ chỗ Claude trả lời thiếu.

Overtriggering (load nhầm):

  • Thêm negative trigger: "Do NOT use for simple data exploration (use data-viz skill instead)."
  • Specific hơn: thay "Processes documents" bằng "Processes PDF legal documents for contract review".
  • Làm rõ scope: "Use specifically for online payment workflows, not for general financial queries."

Khi instruction load mà Claude không follow

Thường rơi vào một trong bốn:

  • Dài dòng quá — cắt gọn, dùng bullet, đẩy detail sang references/.
  • Không đưa thông tin quan trọng lên đầu — chuyển hướng dẫn quan trọng lên đầu, nhắc lại nếu cần.
  • Mơ hồ"Make sure to validate things properly""CRITICAL: verify project name is non-empty, at least one team member assigned, start date not in the past."
  • Lười (đặc biệt với task dài) — thêm "Take your time. Quality is more important than speed. Do not skip validation steps." Thường hiệu quả hơn khi đặt trong user prompt thay vì SKILL.md.

Vấn đề về context: nếu skill chậm hoặc response sa sút — SKILL.md quá lớn (chuyển sang references/), bật quá nhiều skill cùng lúc (Anthropic gợi ý không quá 20-50), hoặc không dùng progressive disclosure.

Chia sẻ skill thế nào?

Tháng 1/2026, có ba con đường:

  • Cá nhân — download folder, zip, upload vào Claude.ai (Settings > Capabilities > Skills) hoặc đặt vào skills directory của Claude Code.
  • Tổ chức — admin deploy workspace-wide qua Claude Console, auto update, quản lý tập trung (ship 18/12/2025).
  • API / programmatic — endpoint /v1/skills để list & manage, thêm skill vào Messages API qua container.skills. Cần Code Execution Tool beta. Phù hợp khi build app, agent, hoặc pipeline tự động.

Approach khuyến nghị: host trên GitHub repo public, kèm README cấp repo cho người đọc (không phải bên trong skill folder), example sử dụng có screenshot, và link từ doc của MCP server (nếu có). Khi viết về skill — focus vào outcome, không phải feature.

Skill là một open standard giống MCP — Anthropic muốn skill portable giữa các nền tảng AI khác nhau. Nếu skill phụ thuộc capability đặc thù của Claude, ghi rõ trong field compatibility.

Checklist trước khi upload

[ ] Folder name kebab-case, không space/capital
[ ] File tên đúng SKILL.md (case-sensitive)
[ ] Frontmatter có --- ở đầu và cuối
[ ] name: kebab-case, không capital
[ ] description: có cả WHAT và WHEN, < 1024 ký tự
[ ] Không có XML tag (< >) trong frontmatter
[ ] Instructions rõ ràng, có ví dụ
[ ] Có troubleshooting section
[ ] Reference link tới references/ rõ ràng
[ ] Không có README.md trong skill folder
[ ] Đã test trigger trên prompt obvious + paraphrased
[ ] Đã test không trigger trên prompt unrelated
[ ] Functional test pass

Tài liệu chính thức

Nguồn: The Complete Guide to Building Skills for Claude — Anthropic.

No comments yet