Site icon Khoa Phạm BK Blog

Skills trong Claude Code – Viên gạch bí mật giúp AI làm việc thông minh hơn

Nếu bạn đã đọc bài trước về Claude Code và WAT Framework, hẳn bạn đã thấy mình đề cập đến Skills như một phần trong hệ sinh thái của Claude Code. Nhưng nhiều bạn vẫn hay hỏi: “Skills là gì? Nó khác gì với Workflows hay MCP?”

Bài viết này sẽ đi sâu vào đúng thứ đó — từ khái niệm, cách tạo, đến cách tổ chức Skills sao cho hiệu quả nhất trong dự án thực tế.

Skills là gì?

Hãy tưởng tượng bạn có một nhân viên mới rất thông minh (đó là Claude). Nhưng dù thông minh đến mấy, nếu không có hướng dẫn cụ thể, nhân viên đó sẽ làm mỗi việc theo một cách khác nhau, không nhất quán.

Skills chính là những “sổ tay hướng dẫn” đó — các file Markdown (.md) chứa instruction cụ thể, giúp Claude biết cách xử lý một loại tác vụ nhất định theo đúng tiêu chuẩn bạn đặt ra.

Điểm đặc biệt của Skills so với các loại prompt thông thường là:

Local Skills vs Global Skills

Trong Claude Code, Skills được chia thành 2 loại chính:

Local Skills

Là các Skills được đặt bên trong project của bạn, thường ở thư mục /skills hoặc .claude/skills.

my-project/
├── .claude/
│   └── skills/
│       ├── code-review.md
│       └── write-test.md
├── src/
└── ...

Khi nào dùng Local Skills?

Global Skills

Là các Skills được cài đặt ở cấp độ toàn bộ Claude Code, không thuộc về một project cụ thể nào.

~/.claude/
└── skills/
    ├── canva-design.md
    ├── email-writer.md
    └── pr-reviewer.md

Khi nào dùng Global Skills?

Lưu ý: Global Skills có thể bị override bởi Local Skills nếu có trùng tên — Claude sẽ ưu tiên Local trước.

Cấu trúc của một Skill file

Một Skill tốt thường bao gồm các thành phần sau:

# Tên Skill

## Mô tả
[Mô tả ngắn gọn Skill này làm gì]

## Khi nào dùng
[Điều kiện để trigger Skill này]

## Quy trình thực hiện
1. Bước 1...
2. Bước 2...
3. Bước 3...

## Ví dụ
[Ví dụ input/output cụ thể]

## Lưu ý
[Những điều cần tránh, edge case...]

Không có format cứng nhắc — điều quan trọng là rõ ràng và đủ context để Claude hiểu đúng ý bạn muốn.

Thực hành: Tạo Skill đầu tiên của bạn

Hãy thử tạo một Skill đơn giản: viết unit test cho function Python.

Bước 1: Tạo file Skill

Tạo file .claude/skills/write-unit-test.md trong project của bạn:

# Skill: Viết Unit Test Python

## Mô tả
Skill này giúp tạo unit test chuẩn cho các function Python trong project.

## Khi nào dùng
Khi được yêu cầu viết test, tạo test case, hoặc kiểm thử một function.

## Tiêu chuẩn
- Dùng thư viện `pytest`
- Mỗi function phải có ít nhất 3 test case: happy path, edge case, và error case
- Tên test phải bắt đầu bằng `test_` và mô tả rõ tình huống
- Dùng `pytest.mark.parametrize` khi có nhiều input tương tự

## Quy trình
1. Đọc hiểu function cần test: input, output, side effects
2. Xác định các tình huống cần cover
3. Viết test theo thứ tự: happy path → edge case → error case
4. Thêm docstring giải thích mục đích của từng test group

Ví dụ function cần test:

def calculate_discount(price: float, discount_percent: float) -> float:
    if discount_percent < 0 or discount_percent > 100:
        raise ValueError("Discount must be between 0 and 100")
    return price * (1 - discount_percent / 100)

Test mong muốn:

import pytest
from mymodule import calculate_discount

class TestCalculateDiscount:
    def test_normal_discount(self):
        """Happy path: discount hợp lệ"""
        assert calculate_discount(100, 20) == 80.0

    def test_zero_discount(self):
        """Edge case: không có discount"""
        assert calculate_discount(100, 0) == 100.0

    def test_full_discount(self):
        """Edge case: discount 100%"""
        assert calculate_discount(100, 100) == 0.0

    def test_invalid_discount_raises_error(self):
        """Error case: discount ngoài khoảng cho phép"""
        with pytest.raises(ValueError):
            calculate_discount(100, 150)

Bước 2: Kích hoạt Skill trong Claude Code

Khi bạn muốn Claude sử dụng Skill này, có hai cách:

Cách 1 — Explicit trigger (chỉ định rõ):

Dùng skill write-unit-test để tạo test cho function parse_csv() ở file utils.py

Cách 2 — Implicit trigger (Claude tự nhận diện): Nếu bạn đã cấu hình trong claude.md (file system prompt của project), Claude sẽ tự động load Skill phù hợp khi nhận ra context.

Trong claude.md, thêm đoạn:

## Skills
Khi được yêu cầu viết test, hãy tham khảo skill tại `.claude/skills/write-unit-test.md`

Một số Skill hữu ích để bắt đầu

Dưới đây là một vài ý tưởng Skill bạn có thể tạo ngay:

1. code-review.md

Định nghĩa tiêu chí review code của team: naming convention, security checklist, performance concern…

2. commit-message.md

Chuẩn hóa format commit message theo Conventional Commits hoặc quy ước riêng của project.

3. api-documentation.md

Hướng dẫn cách viết doc cho REST API endpoint: mô tả, request/response schema, error codes…

4. refactor-guide.md

Các nguyên tắc refactor code của bạn: khi nào nên extract function, khi nào nên dùng design pattern nào…

5. bug-investigation.md

Quy trình debug theo thứ tự: check log → reproduce → isolate → fix → test.

Skills kết hợp với MCP và Workflows

Nhớ lại sơ đồ WAT Framework từ bài trước? Skills hoàn toàn có thể phối hợp với hai thành phần còn lại:

Workflows (làm gì)
    ↓
Skills (làm như thế nào)
    ↓
Tools/MCP (công cụ để làm)

Ví dụ thực tế: Bạn có một Workflow “Review Pull Request hàng ngày”. Workflow này sẽ:

  1. Dùng MCP GitHub để lấy danh sách PR đang mở
  2. Dùng Skill code-review.md để review từng PR theo tiêu chuẩn team
  3. Dùng Skill comment-writer.md để viết comment phản hồi tự nhiên, không cứng nhắc
  4. Dùng Tool để post comment lên GitHub

Không có Skills, Claude vẫn làm được — nhưng mỗi lần review sẽ theo một cách khác nhau. Có Skills, output sẽ nhất quán và đúng chuẩn hơn hẳn.

Tips để viết Skill hiệu quả

Sau một thời gian thử nghiệm, đây là những điều mình rút ra:

✅ Nên làm:

❌ Không nên:

Tổng kết

Skills là một trong những tính năng dễ bị bỏ qua nhất của Claude Code, nhưng lại mang lại giá trị thực sự khi bạn đã quen với hệ thống. Thay vì phải nhắc đi nhắc lại “làm theo kiểu này nhé” mỗi khi chat, bạn chỉ cần viết một lần và Skills sẽ đảm bảo Claude làm đúng cách đó mãi mãi.

Tóm lại:

Nếu bạn chưa thử tạo Skill nào, hãy bắt đầu ngay hôm nay với một thứ đơn giản nhất trong workflow hàng ngày của bạn. Bạn sẽ thấy sự khác biệt sau lần đầu tiên dùng lại nó.

Chúc anh em code vui! 🚀

Exit mobile version