# Skill là gì?

[Claude](https://homus.dev/speakers/claude) · [Claude](https://homus.dev/orgs/claude)

> Skill là file SKILL.md dạy Claude một việc một lần: Claude chọn skill qua description, đặt ở đâu, khác CLAUDE.md và slash command ra sao.

Topics: Skills, Coding Agents, Context Engineering

Canonical: https://homus.dev/talks/what-are-skills

## 1. Vì sao cần skill: thôi lặp lại chính mình

Video mở đầu bằng một tình huống rất quen với ai dùng Claude Code hằng ngày. Mỗi lần bạn giải thích lại coding standards của team cho Claude, bạn đang lặp lại chính mình. Mỗi lần review một PR, bạn lại mô tả lại từ đầu bạn muốn phần feedback được trình bày theo cấu trúc nào. Mỗi lần viết commit message, bạn lại nhắc Claude về format mà bạn thích.

Trên màn hình, người dùng mở một file coding standards của công ty (TypeScript strict mode, không dùng kiểu `any`, ưu tiên `const` và `let` thay vì `var`, quy ước đặt tên biến, hàm, class...), chọn cả 93 dòng rồi dán nguyên khối vào ô chat của Claude Code kèm câu hỏi nhờ implement phần frontend cho ứng dụng. Ở một cảnh khác, họ gõ thêm vào cuối yêu cầu viết commit một câu dặn kiểu "Remember, no emojis or verbo...", tức là lần nào cũng phải dặn lại: không emoji, không dài dòng.

```
Can you implement the frontend to this application? This is our company coding standards: [Pasted text #1 +92 lines]
```

Skill sinh ra để sửa đúng chuyện này. Một skill là một file markdown dạy Claude cách làm một việc **một lần duy nhất**, và từ đó Claude tự áp dụng kiến thức ấy mỗi khi nó liên quan tới việc đang làm, không cần bạn nhắc.

Bên trái: cùng một lời dặn phải gõ lại ở mỗi PR, mỗi commit. Bên phải: lời dặn nằm trong một file SKILL.md, Claude tự lấy ra dùng khi việc đang làm khớp với nó.

## 2. Skill là gì và Claude chọn skill bằng cách nào

Định nghĩa chung: Agent Skills là những thư mục chứa instructions, scripts và resources mà agent có thể tự tìm thấy và dùng để làm việc chính xác hơn, hiệu quả hơn. Trong Claude Code, trung tâm của mỗi skill là file `SKILL.md`.

Ví dụ trong video là một dự án FastAPI. Trong thư mục `.claude/skills/` có hai skill: một cho commit message, một tên `pr-review`. Mở `pr-review/SKILL.md` ra, phần đầu file (frontmatter nằm giữa hai dòng `---`) có `name` và `description`, bên dưới là checklist review cụ thể cho dự án.

![File SKILL.md của skill pr-review mở trong editor](https://homus.dev/photos/bjdBVZa66oU-0023.jpg)

File `.claude/skills/pr-review/SKILL.md`: frontmatter có name và description, phần thân liệt kê những gì cần kiểm khi review code trong dự án FastAPI (chất lượng code, rồi các điểm riêng của FastAPI).

Nội dung file như trên màn hình (phần nhìn thấy được):

```
---
name: pr-review
description: Reviews pull requests for code quality. Use when reviewing PRs or checking code changes.
---

When reviewing code in this FastAPI project, check for:

## Code Quality
1. **Readability and clear naming** - Variables, functions, and classes should have descriptive names
2. **Consistent patterns** - Follow the existing router/schema/model patterns in the codebase
3. **No hardcoded secrets** - Ensure API keys, tokens, and secrets use environment variables

## FastAPI Specific
4. **Pydantic schemas** - All request/response bodies should have proper Pydantic models in `schemas.py`
```

Điểm mấu chốt nằm ở dòng `description`: đó là cách Claude quyết định có dùng skill hay không. Khi bạn nhờ Claude review PR này, nó đem yêu cầu của bạn so với description của mọi skill đang có, và tìm ra skill này. Nói gọn: Claude đọc yêu cầu, so với tất cả description, rồi kích hoạt những skill nào khớp.

Demo cho thấy đúng điều đó. Người dùng chỉ gõ một câu bình thường, không nhắc gì tới skill:

```
Can you review the pull request on branch sg-221?
```

![Claude Code báo đã nạp skill pr-review](https://homus.dev/photos/bjdBVZa66oU-0231.jpg)

Sau câu hỏi review PR, Claude Code hiện dòng `Skill(pr-review)` và "Successfully loaded skill": skill được chọn tự động chỉ nhờ description khớp với yêu cầu.

## 3. Skill nằm ở đâu: cá nhân và dự án

Bạn có thể đặt skill ở vài chỗ, tuỳ ai cần dùng nó.

**Skill cá nhân** nằm trong thư mục home, ở `~/.claude/skills/`, và đi theo bạn qua mọi project. Đây là chỗ cho sở thích riêng: kiểu commit message bạn thích, format tài liệu của bạn, cách bạn muốn được giải thích code.

**Skill của dự án** nằm trong `.claude/skills/` ở thư mục gốc của repository. Ai clone repo về cũng tự động có những skill này. Trên màn hình, người dùng `cd .claude/` trong terminal, mở thư mục `skills` trong editor, rồi chuyển sang trang GitHub của repo (một "Task Management API" viết bằng FastAPI) để cho thấy thư mục `.claude` được commit cùng code.

![Cây thư mục .claude với agents và skills](https://homus.dev/photos/bjdBVZa66oU-0041.jpg)

Thư mục `.claude` ở gốc dự án: bên cạnh `agents` là `skills`, chứa hai skill: một skill về commit message và `pr-review`. Ai clone repo đều nhận được chúng.

```
~/.claude/skills/      # personal skills, follow you across all projects
.claude/skills/        # project skills, shared with anyone who clones the repo
```

Skill dự án là nơi đặt chuẩn của team, chẳng hạn brand guidelines của công ty, font chữ và bảng màu ưa dùng khi làm web design.

## 4. Skill khác CLAUDE.md và slash command ở chỗ nào

Claude Code có nhiều cách để tuỳ biến hành vi. Skill đặc biệt ở hai điểm: nó **tự động** và nó **gắn với từng loại việc**.

File `CLAUDE.md` được nạp vào **mọi** cuộc hội thoại. Nếu bạn muốn Claude luôn dùng TypeScript strict mode, quy tắc đó thuộc về `CLAUDE.md`. Skill thì ngược lại: chỉ nạp khi cần, lúc nó khớp với yêu cầu của bạn.

![Minh hoạ SKILL.md và CLAUDE.md cạnh nhân vật Claude](https://homus.dev/photos/bjdBVZa66oU-0150.jpg)

Hình minh hoạ đặt `SKILL.md` và `CLAUDE.md` cạnh nhau. Ở `SKILL.md`, hai dòng màu trên cùng tượng trưng cho name và description, phần luôn được nạp; `CLAUDE.md` thì được nạp nguyên file vào mọi cuộc hội thoại.

Lúc đầu Claude chỉ nạp name và description của mỗi skill, nên skill không làm đầy context window. Checklist review PR của bạn không cần nằm trong context khi bạn đang debug. Nó chỉ được nạp khi bạn thật sự nhờ review. Trong hình minh hoạ, khi chuyển cảnh, `CLAUDE.md` biến mất còn `SKILL.md` ở lại, như cách skill chỉ xuất hiện đúng lúc việc cần tới.

So với slash command: slash command bắt bạn phải gõ ra. Trên màn hình, gõ `/pr` thì Claude Code hiện danh sách lệnh có sẵn như `/pr-comments`, `/privacy-settings`, `/rewind`, và bạn phải tự chọn. Skill thì không cần gõ gì: Claude tự áp dụng khi nhận ra tình huống.

## 5. Khi nào nên viết một skill

Skill hợp nhất với kiến thức chuyên biệt áp dụng cho những việc cụ thể. Ba ví dụ trong video:

- Code review standards mà team bạn tuân theo.

- Format commit message mà bạn thích.

- Brand guidelines của tổ chức bạn.

Và một mẹo để nhận ra: nếu bạn thấy mình cứ giải thích đi giải thích lại cùng một điều cho Claude, thì đó chính là một skill đang chờ được viết ra.

Video kết thúc bằng lời mời xem thêm các khoá học của Claude tại claude.com/resources/courses.

## Nguồn và liên kết

- Tên gốc: What are skills?
- Sự kiện: [YouTube](https://homus.dev/events/youtube)
- Video gốc: [https://www.youtube.com/watch?v=bjdBVZa66oU](https://www.youtube.com/watch?v=bjdBVZa66oU)

- Kênh YouTube Claude: [youtube.com/@claude](https://www.youtube.com/@claude)

- Tài liệu skills trong Claude Code (vị trí `~/.claude/skills/` và `.claude/skills/`, cách description được nạp vào context): [code.claude.com/docs/en/skills](https://code.claude.com/docs/en/skills)

- Tổng quan Agent Skills trên Claude Developer Platform: [platform.claude.com/docs/en/agents-and-tools/agent-skills/overview](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview)

- Agent Skills, format mở cho skill dùng được ở nhiều agent: [agentskills.io](https://agentskills.io/home)

- Tài liệu về CLAUDE.md (memory) trong Claude Code: [code.claude.com/docs/en/memory](https://code.claude.com/docs/en/memory)

- Các khoá học chính thức của Claude: [claude.com/resources/courses](https://claude.com/resources/courses)

Nguồn: https://homus.dev/talks/what-are-skills · cập nhật 2026-10-09
