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 frontmatterbody instructions.

Ví dụ thực tế: Landing page skill

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

name: Định danh của skill. Dùng kebab-case, ngắn gọn. description: Đây là trái tim của skill. Claude đọc description này để quyết định có nên load skill hay không. Description tốt cần:
  • 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
Description quá generic: “Giúp tôi làm marketing tốt hơn” → Claude có thể trigger mọi lúc bạn hỏi về marketing. Description quá specific: “Trigger chỉ khi user gõ đúng chữ ‘tạo landing page khóa tiếng Anh màu xanh light mode’” → Miss hàng loạt variation hợp lệ. Description đúng: Mô tả rõ ràng task type, list 3-6 trigger phrase tự nhiên, không giới hạn cứng nhắc.

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
Với skill thực tế, body nên có 6 phần sau:
Không có limit cứng cho body, nhưng nên giữ SKILL.md ngắn gọn. Nếu body bắt đầu dài, tách reference, examples, scripts, hoặc templates sang file riêng để Claude chỉ đọc khi cần. Skill 200 dòng vẫn tốt hơn CLAUDE.md 200 dòng về cùng topic vì skill chỉ load khi match, nhưng skill càng gọn thì context càng sạch.

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.

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

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
Sau lần thứ tư nhắc cùng một checklist, đây rõ ràng là một skill.

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

Cả ba nên trigger skill. Nếu không trigger, kiểm tra lại description — thêm keyword từ prompt variation đó vào description.

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:
Tune description và body dựa trên thực tế dùng là process bình thường — skill tốt thường mất 2-3 lần iterate.

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:
Body: Checklist các trạng thái của màn hình login, copy cho từng lỗi phổ biến, quy tắc không tiết lộ tài khoản có tồn tại hay không, và output format gồm flow summary, field list, error messages, success state. Kết quả: Team có login flow nhất quán, user hiểu cần làm gì khi đăng nhập lỗi, và Claude không cần được nhắc lại từng trạng thái.

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:
Body: Cấu trúc section chuẩn, checklist thông tin cần hỏi, quy tắc viết headline, format CTA, và điều cấm như không bịa testimonial hoặc số liệu. Kết quả: Người viết nội dung chỉ cần nói sản phẩm và audience. Claude tự tạo outline, copy, CTA và FAQ theo chuẩn.

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:
Body: Các field tối thiểu cần thu thập, template email xác nhận, reminder trước buổi học, chính sách đổi lịch/hoàn tiền nếu có, và checklist tránh hỏi quá nhiều thông tin. Kết quả: Mỗi khóa học có luồng đăng ký giống nhau, học viên nhận thông tin rõ ràng, team không phải viết lại từ đầu.

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:
Body: Tone of voice, cấu trúc trả lời 3 phần (xác nhận vấn đề, hướng dẫn bước tiếp theo, lời mời phản hồi), danh sách câu không nên dùng, và escalation rule khi vấn đề liên quan thanh toán.

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:
Body: Template summary, cách phân biệt decision với discussion, format action item, quy tắc đánh dấu owner/deadline chưa rõ để hỏi lại.

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:
Body: Checklist H1/H2 structure, meta description 150-160 chars, internal link tối thiểu 2-3, image có alt text, focus keyword xuất hiện trong title + first paragraph + một H2, readability (Flesch score).

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

Description generic → Claude trigger nhầm (load skill khi không cần) hoặc không trigger đúng lúc cần.

Anti-pattern 2: Description quá cứng nhắc

Skill không trigger = skill vô dụng.

Anti-pattern 3: Nhồi mọi thứ vào 1 skill khổng lồ

Khi match, toàn bộ 500 dòng load vào context. Thay vào đó:
Mỗi skill nhỏ, focused. Chỉ load khi thực sự cần.

Anti-pattern 4: Hardcode paths và thông tin cá nhân

Hardcode paths → skill chỉ dùng được trên máy của một người. Hardcode thông tin liên hệ → outdated sau 3 tháng.

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:
Skill tốt nên trigger cả 5. Nếu miss 2/5, tune lại description — thêm keywords từ những variation bị miss.

Mẹo 2: Composable skills

Skill không cần standalone. Skill campaign-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ó skill brand-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ục skills/ 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:
Multi-language trigger list đặc biệt hữu ích nếu team của bạn mix tiếng Anh và tiếng Việt.

Á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:
Bước 2: Tạo skill folder:
Bước 3: Viết SKILL.md với frontmatter và body. Checklist:
  • 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
Bước 4: Test với 3 prompt variations khác nhau. Skill trigger cả 3? Nếu không, tune description. Bước 5: Dùng skill trong 1 tuần, ghi lại:
  • 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): ______
Dựa vào data đó để iterate.

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:
Bước 2: Đọc SKILL.md của một skill có sẵn. Trigger keywords là gì? Scope là gì? Bước 3: Thử invoke skill đó với 2-3 prompt variations. Hoạt động như expected không? Bước 4: Nếu chưa có skill nào, vào Introduction to Agent Skills để xem Anthropic cung cấp skill template gì.

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ài

Tà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
Khoá học “Claude Code 101” — bản tiếng Việt v1.0Bản quyền 2026 Anthropic. Mọi quyền được bảo lưu.