Mục tiêu học tập
Sau bài này, bạn sẽ có thể:- ✅ Giải thích Agent Skill là gì và cơ chế auto-trigger hoạt động như thế nào
- ✅ Viết một SKILL.md đúng format với YAML frontmatter và body instructions
- ✅ Quyết định đặt skill ở đâu: personal (~/.claude/skills/) hay project (.claude/skills/)
- ✅ Phân biệt chính xác Skill vs CLAUDE.md vs slash command vs hook — cái nào dùng khi nào
- ✅ Nhận ra pattern lặp lại trong workflow của mình và biến nó thành skill trong dưới 20 phút
Mở đầu: 20 lần nhắc cho 20 landing page
Bạn là người làm marketing, creator, hoặc founder nhỏ. Mỗi tháng bạn cần tạo nhiều landing page cho khóa học, webinar, ebook, dịch vụ tư vấn, hoặc chiến dịch quảng cáo. Lần nào bạn mở Claude Code để làm một landing page mới, bạn cũng phải nhắc:“Landing page phải có Hero, Problem, Solution, Benefits, Social Proof, Pricing, FAQ và CTA. Viết bằng tiếng Việt thân thiện, tránh văn mẫu quá AI. Nút chính dùng màu xanh lá, tone chuyên nghiệp, ưu tiên người mới bắt đầu. Nếu thiếu thông tin về sản phẩm thì hỏi lại trước.”Claude ghi nhớ — nhưng chỉ trong session đó. Session tiếp theo, bạn lại nhắc lại y chang. 20 landing page/tháng = 20 lần copy-paste đoạn instructions đó. Tính ra một năm bạn đã mất nhiều giờ chỉ để nhắc Claude cùng một thứ. Tệ hơn: nếu có teammate mới join, bạn phải gửi đoạn instructions đó cho họ qua Slack, rồi họ lại phải nhớ copy-paste mỗi lần tạo trang mới. Đây chính xác là vấn đề mà Agent Skills giải quyết. Bạn viết SKILL.md cho
landing-page một lần. Claude tự đọc, tự hiểu, và mỗi khi bạn nói “tạo landing page”, “làm trang đăng ký webinar”, “viết page bán khóa học” — Claude tự apply toàn bộ quy tắc đó mà không cần bạn nhắc lại.
“If you find yourself explaining the same thing to Claude repeatedly, that’s a skill waiting to be written.”20 landing page/tháng → 0 lần nhắc lại checklist. Skill viết một lần, dùng mãi mãi.
Skill là gì?
Agent Skill là một folder chứa file markdown (SKILL.md) — có thể kèm scripts và resources thêm — mà Claude Code tự động phát hiện và load khi request của bạn match với description của skill đó. Định nghĩa chính thức từ Anthropic:“Agent skills are folders of instructions, scripts, and resources that agents can discover and use to do things more accurately and efficiently.”Điểm khác biệt then chốt: skill không phải là lệnh bạn phải gõ. Skill là kiến thức bạn dạy cho Claude một lần — Claude tự biết khi nào nên dùng kiến thức đó.
Cơ chế auto-trigger
Khi bạn gõ bất kỳ prompt nào, Claude không chỉ đọc prompt đó. Claude đọc xong rồi so sánh với toàn bộ danh sách skill đang available, xem description của skill nào match nhất, sau đó load skill đó vào context để thực thi. Điểm quan trọng: khi không match, Claude chỉ load tên + description của skill (vài chục token). Full content của skill chỉ load khi match. Đây là lý do skill tiết kiệm context hơn CLAUDE.md — như đã thấy ở Bài 2.5: skill là on-demand, CLAUDE.md là always-on.Anatomy của SKILL.md
Một SKILL.md có hai phần bắt buộc: YAML frontmatter và body instructions.Ví dụ thực tế: Landing page skill
YAML frontmatter — phần quan trọng nhất
- Mô tả skill làm gì (để Claude hiểu scope)
- List trigger keywords/phrases điển hình (để matching chính xác hơn)
- Đủ specific để không trigger nhầm, đủ broad để không miss variation
Body — instructions chi tiết
Body là phần Claude thực sự đọc khi skill được trigger. Viết như bạn đang viết instructions cho một người cộng tác mới rất giỏi nhưng chưa biết context của bạn:- Dùng heading cố định để Claude biết lúc nào cần làm gì
- Bullet points cho checklist và conventions
- Ví dụ cụ thể khi cần
- Explicit về input, quy trình, output, và những gì không được làm
Bảng so sánh: Skill vs CLAUDE.md vs Slash Command vs Hook
Đây là bảng bạn cần thuộc lòng. Bốn công cụ này thoạt nhìn có vẻ overlap — nhưng mỗi cái có use case riêng biệt hoàn toàn.| Tiêu chí | Skill | CLAUDE.md | Slash Command | Hook |
|---|---|---|---|---|
| Trigger | Auto — Claude nhận ra khi nào cần | Luôn luôn — load mọi session | Manual — bạn phải gõ /tên | Event-driven — sự kiện xảy ra |
| Context cost | Thấp — chỉ tên+desc cho đến khi match | Cao — full content mọi lúc | On-demand — chỉ khi invoke | Bằng 0 với Claude context |
| Ai quyết định dùng | Claude tự quyết | Không áp dụng | Bạn quyết | Hệ thống (trigger by event) |
| Use case chính | Task-specific knowledge | Always-relevant project info | Explicit invocation | Deterministic automation |
| Ví dụ điển hình | ”Landing page theo brand checklist" | "Project dùng màu brand nào, tone voice nào” | /create-landing-page theo template | Auto-format file sau mỗi lần edit |
| Sharing | Project skill: cả team. Personal: chỉ bạn | Project CLAUDE.md: cả team | Có thể share qua repo | Share qua settings.json |
| Khi nào tạo | Pattern lặp ≥3 lần, task-specific | Info luôn relevant mọi task | Muốn explicit control | Muốn guaranteed every-time |
Quy tắc quyết định nhanh
Storage locations — đặt skill ở đâu?
Skill có thể lưu ở hai nơi, với ý nghĩa hoàn toàn khác nhau:Personal skills: ~/.claude/skills/
- Theo bạn qua mọi project
- Không được commit vào git (nằm ngoài repo)
- Phù hợp cho: personal preferences, style viết của bạn, cách bạn muốn Claude tóm tắt nội dung, workflow cá nhân
Project skills: .claude/skills/
- Checked in vào git
- Ai clone repo đều có skill tự động
- Phù hợp cho: team standards, brand guidelines, tone of voice, conventions của form đăng ký hoặc landing page
Bảng quyết định: personal vs project
| Câu hỏi | Personal | Project |
|---|---|---|
| Teammate có cần skill này không? | Không | Có |
| Skill có team-specific convention không? | Không | Có |
| Skill phản ánh style cá nhân không? | Có | Không |
| Cần cả team dùng cùng landing page guideline không? | Không | Có |
| Ví dụ | ”Viết nội dung theo style cá nhân của tôi" | "Landing page phải đúng brand checklist của công ty” |
Ví dụ thực chiến: Tạo skill register-flow từ scratch
Bước 0: Identify pattern
Bạn thường xuyên tạo form đăng ký cho webinar, khóa học, ebook, hoặc buổi tư vấn. Lần nào bạn cũng phải nhắc Claude:- Chỉ hỏi thông tin thật sự cần
- Có thông báo lỗi dễ hiểu
- Có màn hình thành công sau khi đăng ký
- Có email xác nhận hoặc tin nhắn follow-up
Bước 1: Tạo folder
Bước 2: Viết frontmatter
Bước 3: Viết body — 6 sections thiết yếu
Bước 4: Test với 3 prompt variations
Bước 5: Iterate
Sau vài lần dùng, bạn nhận ra Claude đôi khi tạo form quá dài. Thêm vào body:Case studies theo role
Product/UX team: skill login-flow
Vấn đề: Mỗi lần làm màn hình đăng nhập, team phải nhắc lại cùng một checklist: login bằng email, forgot password, social login, lỗi sai mật khẩu, trạng thái loading, và copy cho user mới. Skill:Marketing team: skill campaign-landing-page
Vấn đề: Mỗi chiến dịch mới cần một landing page khác nhau, nhưng cấu trúc trang, tone of voice, CTA, FAQ và bằng chứng xã hội luôn theo cùng một chuẩn brand. Skill:Education team: skill course-registration
Vấn đề: Mỗi khóa học mới cần trang đăng ký, email xác nhận, reminder trước buổi học, và câu trả lời cho các thắc mắc phổ biến. Skill:Customer support: skill faq-answer
Vấn đề: Support team thường trả lời lặp lại các câu hỏi như “tôi chưa nhận email”, “đổi lịch thế nào”, “có hoàn tiền không”, nhưng mỗi người viết một kiểu. Skill:Operations team: skill meeting-summary
Vấn đề: Sau mỗi cuộc họp, team cần summary, decisions, action items, owner, deadline. Nếu làm thủ công, format dễ bị lệch và action item dễ bị bỏ sót. Skill:Marketing/Content team: skill blog-seo-check
Vấn đề: Content writer dùng Claude để viết blog post nhưng hay quên check SEO basics trước khi publish. Skill:Khi nào tạo Skill? — Decision flowchart
Tóm tắt quy tắc:- Xảy ra guaranteed mỗi lần event? → Hook
- Bạn muốn explicit invoke? → Slash command
- Relevant mọi task? → CLAUDE.md
- Pattern lặp, task-specific, auto-trigger? → Skill
Anti-patterns
Anti-pattern 1: Description quá generic
Anti-pattern 2: Description quá cứng nhắc
Anti-pattern 3: Nhồi mọi thứ vào 1 skill khổng lồ
Anti-pattern 4: Hardcode paths và thông tin cá nhân
Anti-pattern 5: Nhầm skill với hook
Nếu bạn muốn tự động format file, tạo backup, hoặc chạy một bước kiểm tra sau MỖI lần Claude edit file — đó không phải skill, đó là hook (xem Bài 2.11). Skill là kiến thức Claude áp dụng khi recognize task type. Hook là automation chạy mỗi khi event xảy ra, guaranteed, không cần Claude “nhận ra”. Dấu hiệu bạn đang dùng skill cho việc của hook: bạn viết trong description “Trigger EVERY TIME Claude edits a file” — “every time” + “event” = hook territory.Anti-pattern 6: Personal skill trong project repo (hoặc ngược lại)
Personal skill chứa style cá nhân (“Viết nội dung theo giọng của tôi”) → đừng checked in vào project repo, vì mọi teammate sẽ thấy Claude viết theo style của bạn, không phải của họ. Team standard skill (“Landing page phải đúng brand checklist này”) → phải vào project .claude/skills/, không phải personal ~/.claude/skills/, vì teammate cần có skill này khi clone repo.Anti-pattern 7: Không version skill khi brand hoặc quy trình thay đổi
Skill brand-voice được viết năm 2024 khi công ty dùng tone trẻ trung, vui vẻ. Năm 2025 công ty rebrand sang premium và nghiêm túc hơn. Skill cũ vẫn còn trong .claude/skills/ nhưng instructions không còn đúng. Cách tránh: treat skill như tài liệu sống. Khi brand, sản phẩm, hoặc quy trình thay đổi, update hoặc archive skill cũ. Có thể thêm version note trong skill header:Mẹo nâng cao
Mẹo 1: Test description với 5 variations trước khi deploy
Trước khi dùng skill trong production, thử 5 cách gõ khác nhau để trigger:Mẹo 2: Composable skills
Skill không cần standalone. Skillcampaign-landing-page có thể reference checklist của skill brand-voice:
Bước 1: Xác định brand voice
Đọc brand voice hiện tại: tone, từ nên dùng, từ cần tránh, cách viết CTA, và mức độ trang trọng.Bước 2: Áp dụng vào landing page
Nếu project có skillbrand-voice available, dùng nó để giữ tone nhất quán. Nếu không, follow format mặc định: headline rõ lợi ích, body copy ngắn, CTA dùng động từ cụ thể, không bịa testimonial.
Mẹo 3: Tham khảo real skill example
Reference skills trong repo của bạn (thư mụcskills/ hoặc .claude/skills/) là ví dụ real của một skill phức tạp — có frontmatter, có multi-phase workflow, có reference files, có principles. Đọc nó để hiểu skill có thể scale đến mức độ phức tạp nào.
Anthropic cũng có course riêng về Agent Skills: Introduction to Agent Skills — nên xem sau khi hoàn thành bài này.
Mẹo 4: Skill template trong organization
Nếu bạn là team lead của một team lớn, tạo “skill template repo” — một repo riêng chứa các skill cơ bản mà mọi project nên có. Thành viên mới fork repo đó vào personal~/.claude/skills/, xong là có ngay bộ skill cơ bản.
Ví dụ structure:
Mẹo 5: Document trigger keywords rõ ràng trong description
Thay vì hy vọng Claude suy ra, hãy explicit:Áp dụng ngay
Bài tập 1 (20 phút): Viết skill đầu tiên của bạn
Bước 1: Nghĩ về 3 tháng gần nhất. Bạn đã nhắc Claude cùng một thứ ít nhất 3 lần chưa? Ghi ra:- name ngắn, kebab-case
- description có mô tả scope + ít nhất 3 trigger phrases
- Body có đủ 6 phần: Khi thực hiện, Input cần có, Quy tắc / conventions, Quy trình thực hiện, Output format, Lưu ý / tránh làm
- Không hardcode paths hoặc thông tin cá nhân
- Số lần trigger đúng: ______
- Số lần trigger nhầm (false positive): ______
- Số lần miss (bạn cần nhắc mà skill không trigger): ______
Bài tập 2 (15 phút): Khám phá skills hiện có
Bước 1: Check xem bạn đang có skills nào:Tóm tắt
5 takeaways từ bài này: 🎯 Skill = kiến thức dạy một lần, Claude tự apply mãi mãi. Pattern lặp ≥3 lần là tín hiệu rõ ràng cần viết skill. 🎯 Description là linh hồn của skill. Claude dùng description để quyết định trigger — quá generic trigger nhầm, quá specific bỏ sót. Cần balance và test với nhiều prompt variations. 🎯 Personal skill theo bạn, project skill theo repo. Không nhầm hai loại — đặt sai chỗ gây ra inconsistency trong team hoặc mất skill khi đổi máy. 🎯 Skill tiết kiệm context hơn CLAUDE.md cho task-specific knowledge. Skill chỉ load khi match — checklist landing page không ngồi trong context khi bạn đang làm task khác (xem Bài 2.5). 🎯 Skill không thay thế được hook hay slash command — mỗi công cụ có use case riêng. Hiểu bảng so sánh để dùng đúng tool cho đúng job.Bài tiếp theo
Bạn đã hiểu Skills — cách dạy Claude một kỹ năng cụ thể và để nó tự nhận ra khi nào cần dùng. Bài tiếp theo đi sâu vào MCP (Model Context Protocol) — cách kết nối Claude với các công cụ và dữ liệu bên ngoài: database, API, Figma, Linear, GitHub, Slack. Nếu skill là “dạy Claude cách làm việc của bạn”, thì MCP là “cho Claude thêm tay để với tới các công cụ bạn đang dùng hàng ngày”. Hai thứ complement nhau — và Bài 2.10 sẽ chỉ ra khi nào dùng MCP thay vì tạo skill (hint: nếu CLI tool đã có sẵn và documented tốt, thường không cần MCP). ➡️ Bài tiếp theo: Bài 2.10 — MCP: Kết nối Claude với thế giới bên ngoàiTài liệu tham khảo
- Introduction to Agent Skills — Course chuyên sâu của Anthropic về Agent Skills
- Claude Code documentation — Skills — Official reference
- Bài 2.5 — Quản lý Context: lý do skill tiết kiệm context hơn CLAUDE.md
- Bài 2.7 — File CLAUDE.md: khi nào dùng CLAUDE.md thay vì skill
- Bài 2.8 — Subagents: skill vs subagent (hai sides of the same coin)
- Bài 2.10 — MCP: skill thay thế MCP CLI tools trong nhiều trường hợp
- Bài 2.11 — Hooks: khi nào hook thay skill cho deterministic automation