Bỏ qua để đến nội dung

Skill Dạy Người Dùng Từng Bước

Level: L4 — AI Skills (Bài 8/12)

Sau bài này, bạn có thể:

  • Giải thích khái niệm “meta-skill” — Skill có vai trò hướng dẫn/dạy, không chỉ thực thi trực tiếp.
  • Áp dụng mẫu hình “workflow với checklist” (bài 32) để thiết kế 1 Skill dạy từng bước.
  • Nhận diện ví dụ meta-skill có thật trong chính Claude Code.
  • Biết khi nào nên thiết kế 1 Skill kiểu “làm hộ” và khi nào nên thiết kế kiểu “dạy làm”.

“Meta-skill” là 1 Skill mà mục tiêu không phải hoàn thành 1 tác vụ cụ thể, mà là hướng dẫn người dùng (hoặc chính Claude) hoàn thành 1 việc họ CHƯA biết cách làm — khác về bản chất với Skill “thực thi” (như Skill tóm tắt git diff ở bài 35, làm xong là có kết quả ngay).

Ví dụ khái niệm gốc (S13, Tier 3): skill /how-to — 1 skill “meta” dạy Claude cách tự động hướng dẫn người dùng giải quyết việc họ chưa biết làm, theo quy trình: tải skill → kích hoạt /how-to + mô tả việc cần làm → Claude tùy chỉnh hướng dẫn theo đúng tình huống cụ thể của người dùng.

Đặc điểm kỹ thuật phân biệt meta-skill với Skill thường:

  • Skill thường: instructions mô tả 1 quy trình cố định để Claude tự làm.
  • Meta-skill: instructions mô tả cách Claude nên đặt câu hỏi, quan sát, và hướng dẫn — nội dung đầu ra thay đổi tùy theo tình huống người dùng đưa vào, không cố định.

Không phải mọi nhu cầu đều là “làm hộ tôi việc X” — nhiều lúc nhu cầu thật là “dạy tôi cách tự làm việc X”, đặc biệt với các quy trình có nhiều biến thể tùy tình huống (không đủ ổn định để đóng gói thành 1 script cố định như bài 35, nhưng đủ lặp lại để đáng đóng gói thành 1 khung hướng dẫn). Đây chính là trường hợp mức tự do “Cao” đã học ở bài 32 — meta-skill gần như luôn thuộc nhóm này.

Về mặt kỹ thuật, meta-skill không cần cơ chế đặc biệt gì khác Skill thường (vẫn là 1 SKILL.md, vẫn theo đúng progressive disclosure đã học) — điểm khác biệt hoàn toàn nằm ở cách viết nội dung instructions: thay vì liệt kê các bước cố định, instructions mô tả 1 quy trình hướng dẫn thích ứng — ví dụ: “Bước 1: hỏi người dùng về X. Bước 2: dựa trên câu trả lời, nếu thuộc trường hợp A thì hướng dẫn theo cách A, nếu trường hợp B thì theo cách B…”

Mẫu hình chính thức phù hợp nhất: “workflow có checklist” (bài 32/S77) — đặc biệt hiệu quả cho meta-skill vì giúp cả Claude lẫn người dùng theo dõi tiến độ qua 1 quy trình nhiều bước có thể rẽ nhánh.

Tiếp nối ẩn dụ “hồ sơ đào tạo”: Skill thường (bài 35) giống như 1 biểu mẫu điền sẵn — theo đúng khuôn, điền vào là xong. Meta-skill giống như 1 người hướng dẫn viên (mentor) — không tự làm hộ, mà đặt câu hỏi, quan sát tình huống cụ thể, rồi chỉ đường phù hợp cho từng người.

  1. Xác định: đây có phải trường hợp “mỗi người/mỗi tình huống cần hướng dẫn hơi khác nhau”, không thể gói gọn thành 1 quy trình cố định duy nhất không? Nếu quy trình hoàn toàn cố định → dùng Skill thường (bài 35) là đủ, không cần meta-skill.
  2. Liệt kê các “nhánh rẽ” chính — những biến thể tình huống phổ biến nhất.
  3. Viết instructions theo mẫu hỏi-đáp-rẽ nhánh: hỏi thông tin cần thiết → dựa vào câu trả lời, chọn đúng nhánh hướng dẫn.
  4. Thêm 1 checklist tiến độ nếu quy trình hướng dẫn có nhiều bước (mẫu hình S77, bài 32).
  5. Test với ít nhất 2-3 tình huống khác nhau (không chỉ 1) — vì bản chất meta-skill là phải hoạt động tốt trên nhiều biến thể, test 1 tình huống không đủ để xác nhận Skill hoạt động đúng.

Ví dụ có thật đang chạy trong Claude Code — /run-skill-generator:

/run-skill-generator records the recipe instead. It gets your app running from a clean environment, captures what worked (the install commands, the env vars, the launch script), and commits it as a per-project skill… After that, /run, /verify, and any other agent in the repo follow the recorded recipe instead of rediscovering it.” [S74]

Đây là 1 ví dụ meta-skill thật, khác /how-to (S13, Tier 3) ở chỗ nó không chỉ “hướng dẫn 1 lần” mà tự tạo ra 1 skill mới dựa trên quá trình khám phá — 1 dạng meta-skill nâng cao (skill tạo skill). Đối chiếu với khái niệm gốc từ S13: cả 2 đều chia sẻ đặc điểm cốt lõi “thích ứng theo từng tình huống cụ thể thay vì làm theo 1 kịch bản cố định”.

## Instructions
1. Hỏi người dùng: [câu hỏi xác định tình huống]
2. Dựa trên câu trả lời:
- Nếu [tình huống A] → [hướng dẫn A]
- Nếu [tình huống B] → [hướng dẫn B]
- Nếu không rõ thuộc trường hợp nào → hỏi thêm [câu hỏi làm rõ]
3. Sau khi hướng dẫn xong, xác nhận lại với người dùng: [câu hỏi xác nhận
đã giải quyết đúng vấn đề]
Meta-skill kích hoạtHỏi tình huống người dùngKhôngTình huống B → hướng dẫn BTình huống A → hướng dẫn AXác nhận lại với người dùng
Hình 4.8 — Meta-skill: cây quyết định hỏi-đáp-rẽ nhánh, khác luồng tuyến tính cố định của Skill thường (Hình 4.7).
  1. Nghĩ ra 1 việc bạn thường phải “dạy lại” cho người khác (đồng nghiệp, người mới), mà cách dạy hơi khác nhau tùy người/tình huống.
  2. Áp dụng bước 1-3 ở mục 6 để phác thảo cấu trúc hỏi-đáp-rẽ nhánh.
  3. So sánh với Skill đã tạo ở bài 35 — Skill nào (Skill cũ hay meta-skill mới) phù hợp hơn cho việc bạn vừa nghĩ ra? Vì sao?
  • Dùng meta-skill cho việc lẽ ra chỉ cần Skill thường — thêm độ phức tạp không cần thiết nếu quy trình vốn đã cố định.
  • Chỉ test 1 tình huống — meta-skill cần test đa dạng tình huống hơn Skill thường vì bản chất là phục vụ nhiều biến thể.
  • Rẽ nhánh quá nhiều tầng — nếu cây quyết định quá phức tạp, cân nhắc tách thành nhiều file resources riêng theo pattern “domain-specific” (bài 33), thay vì nhồi hết vào 1 SKILL.md.

13. Giới hạn & khi nào KHÔNG nên áp dụng

Phần tiêu đề “13. Giới hạn & khi nào KHÔNG nên áp dụng”
  • Việc có quy trình hoàn toàn cố định, không có biến thể → Skill thường (bài 35) là đủ, không cần thiết kế meta-skill.
  • Bài này không đi sâu “skill tạo skill” (như /run-skill-generator) — đó là ứng dụng nâng cao của cùng nguyên lý, không phải nội dung bắt buộc của bài.

Meta-skill dạng “tự tạo skill mới” (như ví dụ mục 7) có hàm ý quyền hạn cao hơn Skill thường — nó có thể tạo ra file/cấu hình mới trong hệ thống. Áp dụng đúng nguyên tắc đã học ở bài 34: nếu meta-skill của bạn có khả năng tự tạo ra nội dung/file mới mà không cần xác nhận, cân nhắc kỹ có cần disable-model-invocation hay yêu cầu xác nhận thủ công ở bước cuối hay không.

  1. Luôn có 1 bước “xác nhận lại với người dùng” ở cuối quy trình hỏi-đáp-rẽ nhánh — tránh trường hợp Claude tự tin hướng dẫn sai nhánh mà không ai phát hiện.
  2. Với meta-skill phức tạp, cân nhắc tách các nhánh hướng dẫn dài thành file resources riêng (bài 33), giữ SKILL.md chỉ chứa phần điều hướng chính.
16. Nội dung nâng cao (không bắt buộc)

Mẫu hình meta-skill “quan sát và tự sinh ra 1 skill mới” (như /run-skill-generator) là 1 hướng phát triển đáng chú ý: thay vì con người viết SKILL.md thủ công (bài 35), Claude tự viết ra dựa trên quá trình thực hiện 1 tác vụ lần đầu, biến kinh nghiệm 1 lần thành tài sản tái sử dụng cho những lần sau — gần với tinh thần “evaluation-driven development” đã học ở bài 34, nhưng áp dụng ở mức tự động hóa cao hơn.

[S13] Xây Claude Skill Dạy Bạn Từng Bước, Phan Đông Giang (Tier 3) — khái niệm gốc /how-to, tinh thần “dạy thay vì làm hộ” · [S74] Extend Claude with skills, Anthropic — ví dụ chính thức /run-skill-generator · [S77] Skill authoring best practices, Anthropic — mẫu hình workflow với checklist.

Ví dụ /run-skill-generator kiểm chứng qua nguồn Tier 1 (S74) ngày 2026-07-12. Quy trình UI cụ thể của S13 (nếu có) không được dùng làm căn cứ — chỉ dùng tinh thần khái niệm, theo đúng nguyên tắc đã áp dụng cho S09 ở bài 35.