Skills là gì? Cách Claude Code tự động 'đoán ý' và chạy lệnh thay bạn
Hiểu Skills trong Claude Code: cách biến workflow thủ công thành automation thông minh, phân biệt rõ Skills vs MCP, và tạo custom commands tự động invoke.
Định nghĩa
Skills là những "bộ kỹ năng" được đóng gói trong file SKILL.md, cho phép Claude Code tự động kích hoạt (auto-invoke) workflow dựa trên ngữ cảnh hội thoại thay vì đợi bạn gõ lệnh thủ công. Nó đóng vai trò cầu nối giữa slash command (phải ra lệnh trực tiếp) và MCP (kết nối hệ thống bên ngoài), mang automation vào đúng lúc, đúng chỗ mà bạn không cần nhớ tên lệnh.
Giải thích chi tiết
Skill vs Slash Command: Sự khác biệt cốt lõi
Nhiều người nhầm lẫn Skills và slash commands là một. Sự thật: chúng là hai kiến trúc điều khiển khác nhau.
Slash commands (/plan, /commit, /test) là imperative — bạn phải nhớ tên lệnh, gõ đúng cú pháp, và kích hoạt thủ công. Đây là "chế độ kéo cò" (manual trigger).
Skills là declarative — bạn mô tả vấn đề bằng ngôn ngữ tự nhiên, Claude đọc "menu" các description có sẵn và tự quyết định có nên gọi skill hay không. Hãy tưởng tượng slash command như điện thoại bàn phải quay số, còn skill như smartphone hiển thị ứng dụng phù hợp khi bạn cần.
Điểm mấu chốt nằm ở YAML frontmatter. Skill sử dụng trường description (tối đa 200 ký tự) như một điều kiện if ngầm: nếu mô tả trong skill khớp ngữ nghĩa (semantically) với ý định của bạn, Claude sẽ auto-invoke mà không cần prefix /.
Cấu trúc SKILL.md: Progressive Disclosure
Skill sử dụng kiến trúc 3 cấp độ tải (progressive disclosure) để tiết kiệm context window — điều mà slash command truyền thống không làm được:
- Level 1 (Metadata): YAML frontmatter (
name,description,autoInvoke) luôn được load (~100 tokens). Đây là "bìa sách" để Claude biết skill tồn tại. - Level 2 (Instructions): Nội dung markdown body chỉ load khi skill được trigger (dưới 5k tokens). Đây là "nội dung chương sách".
- Level 3 (Resources): File tham chiếu (
REFERENCE.md, scripts) được gọi qua bash khi cần, không bao giờ nằm trong context window.
Cấu trúc này cho phép bạn có hàng chục skill trong dự án mà chỉ tốn ~100 tokens mỗi skill khi chưa dùng đến — hiệu quả gấp 60-80 lần so với nhồi toàn bộ hướng dẫn vào system prompt.
Auto-invoke: Từ thủ công sang tự động
Trường autoInvoke trong frontmatter chứa các trigger phrase (ví dụ: "that worked", "problem solved", "let's document this"). Khi Claude phát hiện các cụm từ này trong lịch sử chat, skill sẽ tự động chạy mà không cần bạn gõ lệnh.
Kết hợp với effort (implicit filter), Claude chỉ auto-invoke khi phát hiện dấu hiệu "cố gắng" — ví dụ: nhiều lần thử lỗi, stack trace dài, hoặc nhiều file bị chỉnh sửa. Điều này tránh việc ghi chép lại mọi câu lệnh đơn giản như sửa typo.
Vị trí và phạm vi: User vs Project
Skills có hai phạm vi persistence:
- User scope (
~/.claude/skills/): Skill cá nhân, áp dụng mọi dự án (ví dụ: skill viết commit message theo chuẩn của bạn). - Project scope (
.claude/skills/): Skill đặc thù dự án, chia sẻ qua git với cả team (ví dụ: skill triển khai microservice nội bộ).
Khi có xung đột tên, project scope ghi đè user scope — cho phép override behavior cục bộ mà không ảnh hưởng global workflow.
Ví dụ thực tế
Skill /test cho developer Việt Nam
Bạn đang làm việc với hệ thống backend Node.js của một startup fintech tại Hà Nội. Thay vì chạy npm test và đợi 10 phút cho toàn bộ suite, bạn tạo skill auto-test với description: "Automatically run relevant test suites when user mentions testing, debugging, or 'it broke'".
Khi bạn chat "hmm, function tính lãi suất này chạy sai kết quả", Claude không chỉ đọc code — nó auto-invoke skill, quét git diff để tìm file vừa sửa, xác định test file liên quan qua import graph, và chạy jest chỉ trên module đó thay vì toàn bộ suite.
# .claude/skills/auto-test/SKILL.md
---
name: auto-test
description: "Run relevant tests when debugging failures or verifying fixes. Trigger on: 'test', 'broke', 'bug', 'fix'."
autoInvoke: ["broke", "fix verified", "let's test"]
---
When invoked:
1. Read recent git diff to identify changed files
2. Use glob to find test files matching patterns: *test_{filename}.py or [filename]_test.py
3. Run: python -m pytest <matched_tests> -v
4. Report pass/fail with concise summarySkill /deploy cho DevOps tại Việt Nam
Thay vì nhớ sequence docker build → tag → push → restart khi triển khai lên VPS Vultr ở Singapore hoặc server vật lý tại Viettel Cloud, bạn tạo skill deploy với description chứa từ khóa "deploy", "ship to production", "release".
Khi bạn nói "ship cái feature này lên prod đi", Claude tự động:
- Check
git statusđảm bảo không có uncommitted changes - Chạy test suite (qua skill
/testnếu có) - Build Docker image với tag semantic version
- Push lên registry (Docker Hub hoặc Harbor nội bộ)
- SSH vào server thông qua jump host và restart service
Khác với alias bash tĩnh, skill này có thể xử lý edge case như "nếu test fail thì abort và notify Slack channel #backend-vn" nhờ reasoning capability của Claude.
Skill chuẩn hóa code review cho team logistics
Một team phát triển ứng dụng giao hàng nội địa tạo skill pr-checklist với autoInvoke: ["created a PR", "ready for review", "submit this"]. Mỗi khi developer nói "tôi vừa tạo PR xong", Claude auto-load checklist nội bộ: kiểm tra có thêm unit test cho tính năng tính phí ship VietQR không, có cập nhật API docs không, có để lại console.log debug không.
Đây là cách institutionalize tribal knowledge — biến "quy tắc ngầm" của team thành automation không cần tech lead phải nhắc nhở mỗi lần review.
Ứng dụng
Developer cá nhân
- Context switching zero-cost: Chuyển giữa dự án React của khách hàng Mỹ và dự án Spring Boot của đối tác Hàn Quốc không cần nhớ lại "dự án này dùng Jest hay Vitest", skill tự detect và chạy đúng lệnh.
- Vibe coding accelerator: Non-coder dùng skill để tự động hóa các bước lặp lại (resize ảnh sản phẩm cho Shopee, chuyển đổi file CSV từ VietQR sang định dạng MISA) mà không cần học syntax bash phức tạp.
Team/Doanh nghiệp
- Standardization: Đóng gói best practices (security scan, conventional commits) vào skill chia sẻ qua
.claude/skills/, đảm bảo mọi member tuân thủ cùng workflow dù làm việc từ Hà Nội hay TP.HCM. - Onboarding nhanh: New hire chỉ cần clone repo, skill đã sẵn sàng hướng dẫn cách build, test, deploy theo chuẩn công ty mà không cần mentor ngồi cạnh chỉ từng bước.
Non-coder & Content creators
- Content pipeline: Skill tự động chuyển bản thảo markdown thành định dạng publish khác nhau (Ghost, Substack, LinkedIn) khi bạn nói "xuất bản bài này".
- Data cleaning: Auto-invoke khi phát hiện file CSV mới từ báo cáo bán hàng, tự động chuẩn hóa encoding UTF-8 và xử lý missing values trước khi import vào Google Sheets.
So sánh
| Đặc điểm | Skills | Slash Commands | MCP (Model Context Protocol) |
|---|---|---|---|
| Kích hoạt | Auto-invoke (semantic matching) hoặc Manual | Chỉ Manual (/command) | Manual (tool calling) |
| Thành phần | SKILL.md + scripts | Markdown file đơn thuần | External server (JSON-RPC) |
| Context | Progressive disclosure (lazy load) | Load toàn bộ khi gọi | Không load code, chỉ gọi API |
| Phạm vi | Single-file, nội bộ Claude | Single-file, nội bộ Claude | Kết nối hệ thống bên ngoài (DB, API, GitHub) |
| Use case | Workflow nội bộ, automation lặp lại | Lệnh one-off, tương tác thủ công | Tích hợp dữ liệu real-time từ bên ngoài |
| Ví dụ | /test, /deploy, /simplify | /plan, /commit, /ask | Truy vấn PostgreSQL, post Slack message |
Kết luận: Skills là "công cụ nội bộ" của Claude Code — chúng biến các thao tác lặp lại thành reflex tự động. MCP là "cầu nối ra thế giới bên ngoài". Đừng dùng skill để gọi API bên ngoài (dùng MCP), cũng đừng dùng MCP cho các workflow nội bộ đơn giản (tốn context và latency).
Bài viết liên quan
Cùng cụm (Skills & Custom Commands)
- Tạo Custom Skill đầu tiên: SKILL.md từ A đến Z — Hướng dẫn từng bước tạo skill với YAML frontmatter và scripts
- YAML Frontmatter cho Skills: name, description, autoInvoke, effort — Deep dive vào cấu hình routing và trigger conditions
- 5 Bundled Skills: /simplify, /batch, /debug, /loop, /claude-api — Khám phá 5 skill built-in sẵn của Claude Code
- Skills nâng cao: Kết hợp scripts và templates — Tách biệt logic thực thi (scripts) khỏi reasoning (templates)
Đọc tiếp
- Daily Workflow: Slash commands, git, debug, refactor — Nền tảng kỹ năng hàng ngày trước khi lên automation
- MCP là gì? Model Context Protocol giải thích đơn giản — Hiểu rõ ranh giới giữa Skills và MCP để chọn đúng công cụ
- Hooks là gì? 25 events và 4 loại hook — Nâng cấp lên event-driven automation với hooks (Level 2)
Team Memory trong Claude Code: Đồng bộ 'bộ não' AI cho cả nhóm
Cách thiết lập CLAUDE.md và hệ thống memory chia sẻ cho team 5-10 người, chuẩn hoá AI coding với directory-scoped context và progressive disclosure.
Tạo Custom Skill cho Claude Code: Hướng dẫn SKILL.md từ A đến Z
Hướng dẫn tạo custom skill Claude Code từ A-Z: Từ YAML frontmatter đến auto-invoke workflow. Tự động hóa test, deploy và PR chỉ với file SKILL.md đơn giản.