← Vibe coding với Next.js

Bài 10 · Nâng cao · 28 phút

Bộ Skills & Subagents như chuyên gia

Biên soạn bởi Nguyễn Anh Tuấn

Trang bị "đồ nghề" để AI làm việc theo chuẩn chuyên gia: tải về và cài bộ Skills/Subagents của Mèo - rà soát bảo mật OWASP, kiểm tra a11y theo WCAG, tối ưu SEO (để Google tìm thấy sản phẩm), dựng giao diện với shadcn-react + Tailwind CSS, tự format/lint bằng Prettier, và giữ toàn vẹn dữ liệu (data integrity). Vì sao có hàng rào này thì người không-code vẫn ship được ở tầm senior. (Bộ skills tải qua R2, một cú bấm.)

Claude viết code tốt, nhưng mỗi nghề lại có chuẩn riêng mà nếu không nhắc thì dễ bỏ sót: bảo mật theo OWASP, khả năng tiếp cận (a11y) theo WCAG, tối ưu để Google tìm thấy (SEO), giao diện nhất quán, định dạng code gọn gàng, và giữ toàn vẹn dữ liệu (data integrity). Trớ trêu là người không-code lại càng không biết những chuẩn đó để mà nhắc.

Lối ra: gói sẵn chuyên môn vào đồ nghề để Claude tự dùng. Có hai loại đồ nghề: SkillSubagent.

Một Skill là một gói hướng dẫn (how-to) Claude nạp vào khi gặp việc liên quan. Ví dụ skill "shadcn-react + Tailwind" dạy nó dựng giao diện theo đúng bộ quy ước, nên các màn hình trông nhất quán thay vì mỗi trang một kiểu. Mèo con không cần thuộc quy ước - skill mang nó theo.

  • Skill = kiến thức/chuẩn nghề đóng gói, Claude tự nạp khi việc cần tới.
  • Bộ skill của Mèo: OWASP (bảo mật), WCAG (a11y), SEO, shadcn-react + Tailwind (giao diện), Prettier (format/lint), data integrity (toàn vẹn dữ liệu).
  • Mèo con chỉ cần làm việc bình thường; skill lo phần "đúng chuẩn".

Một Subagent là trợ lý có ngữ cảnh riêng, nhận nguyên một việc rồi trả kết quả về phiên chính. Ví dụ subagent "rà bảo mật" đọc cả phần thay đổi (diff) và liệt kê lỗ hổng; subagent "kiểm a11y" soi một trang theo WCAG. Vì chạy trong ngữ cảnh riêng nên nó rà kỹ mà không làm loãng phiên chính của mèo con:

🤖 Claudephiên chínhgiao việc ⇄ phát hiện🔒 Subagent bảo mậtOWASP · ngữ cảnh riêng♿ Subagent a11yWCAG · ngữ cảnh riêng🔍 Subagent SEOtối ưu tìm kiếm · ngữ cảnh riêng
Claude giao từng việc chuyên môn cho subagent có ngữ cảnh riêng, rồi nhận lại phát hiện - như có cả một đội chuyên gia.

Nhớ nhanh

Skill là kiến thức Claude mang theo trong phiên; Subagent là một người làm riêng một việc rồi báo cáo lại. Hai thứ khác nhau nhưng cùng một mục đích: đem chuẩn chuyên gia tới cho người chưa có.

Bộ đồ nghề mèo con sắp cài phủ đúng những chuẩn một sản phẩm bán hàng cần để ship an toàn:

  • 🔒 Bảo mật (OWASP): rà các lỗ hổng phổ biến - lộ bí mật, kiểm tra đầu vào, quyền truy cập.
  • ♿ A11y (WCAG): kiểm tương phản màu, alt cho ảnh, nhãn nút - để ai cũng dùng được.
  • 🔍 SEO: tiêu đề, mô tả, dữ liệu có cấu trúc - để Google tìm thấy sản phẩm.
  • 🎨 Design system (shadcn-react + Tailwind): dựng UI theo primary color + bảng màu bạn chọn, nhất quán cho cả shop và admin.
  • 🧹 Prettier: tự format/lint cho code sạch, đỡ tranh cãi kiểu trình bày.
  • 🛡️ Data integrity: giữ dữ liệu đúng và nhất quán (nhất là tiền và số dư).

Phần bảo mật, a11y, SEO và giao diện có cả subagent để rà theo lệnh (vd "rà giao diện" kiểm responsive + tương phản); phần design system, format và toàn vẹn dữ liệu thiên về skill mà Claude áp khi dựng.

Có skill giao diện rồi, nhưng Claude không tự biết ý đồ thiết kế của mèo con: màu thương hiệu nào, phong cách ra sao. Mô tả mơ hồ thì mỗi trang một kiểu. Phải ra đề rõ - ba thứ cần đưa:

  • Primary color + bảng màu: chọn một màu chính + vài màu phụ, khai báo MỘT LẦN thành design tokens; Claude bám tokens thay vì tự chế mã màu rải rác.
  • Reference: đưa ảnh mẫu hoặc web mèo con thích để AI bắt đúng phong cách.
  • Mobile-first: yêu cầu thiết kế cho điện thoại trước rồi mới mở rộng lên desktop.

Khai báo màu bằng design tokens (Tailwind v4 @theme, cũng là cách chính meohamhoc.vn làm) - đổi một chỗ là cả sản phẩm đổi theo, AI không lệch màu:

app.css - khai báo bảng màu một lần, Claude bám theo (không hardcode mã màu khắp nơi)

@theme {
  --color-primary: #7c3aed;  /* màu thương hiệu (vd tím) */
  --color-accent:  #14b8a6;  /* nhấn phụ */
  --color-bg:      #0d1117;
  --color-ink:     #e6edf3;
}
/* Dùng: class="bg-primary text-ink" - đổi token là đổi cả sản phẩm */
📐 Đề bài thiết kếprimary + bảng màureference · mobile-first🤖 Claudeskill shadcn + Tailwind✨ UI nhất quánshop + admin🔍 subagent rà giao diện: tương phản · nhãn · responsive (mobile-first)
Ra đề (primary + bảng màu + reference + mobile-first) → Claude dựng bằng skill shadcn + Tailwind → UI nhất quán cho shop và admin; subagent rà giao diện kiểm responsive và tương phản.

Mẹo

Ghi luật giao diện vào CLAUDE.md (màu primary, font, "luôn mobile-first") để mọi phiên đều bám, không phải nhắc lại. Cùng một bộ tokens dùng cho cả trang mua hàng của khách lẫn admin dashboard - nhờ vậy hai phần trông như một sản phẩm.

Bộ đồ nghề gói trong một thư mục .claude/ (gồm skills/ và agents/). Tải về, giải nén vào gốc repo, commit - thế là xong. Lần vibe sau Claude tự thấy và dùng:

Tải bộ Skills & Subagents của Mèo

Mèo Ham Học gói sẵn các skill và subagent ở trên thành một thư mục .claude/. Giải nén vào gốc repo dự án rồi commit để nó đi cùng dự án (đồng bộ cả khi mèo con vibe trên web/điện thoại): 📦 Tải bộ Skills & Subagents (.zip)

Bộ này bổ trợ cho CLAUDE.mdbài trước: CLAUDE.md nói luật riêng của business, còn đồ nghề mang chuẩn nghề. Cả hai cùng nằm trong repo, đi đâu cũng theo.

Bí quyết nằm ở chỗ chuyên môn được đóng gói sẵn. Mèo con không cần thuộc OWASP hay WCAG; chỉ cần gọi subagent rà, đọc danh sách phát hiện bằng tiếng Việt, rồi nhờ Claude sửa. Hàng rào tự bật mỗi lần làm, nên sản phẩm đạt chuẩn cao hơn hẳn so với vibe tay không.

Trung thực

Đồ nghề giảm rủi ro và nâng chất lượng rõ rệt, nhưng không thay được con người ở chỗ nhạy cảm. Đây vẫn là khoá DEMO: với thanh toán và quyền admin, một kỹ sư rà lại vẫn đáng giá. Hãy coi đồ nghề là thứ giúp mèo con đi xa hơn rất nhiều một mình - không phải tấm bùa thay hết.

Bước tiếp theo

Đồ nghề đã sẵn, giờ tới phần tính năng cấp senior đầu tiên: cho khách đăng ký, đăng nhập và quên mật khẩu một cách an toàn, rồi cho subagent bảo mật rà trước khi mở: Đăng nhập với Better-auth.

Câu hỏi thường gặp

Skill là một gói chuyên môn (how-to) Claude nạp vào khi gặp việc liên quan - vd "dựng UI thì theo chuẩn shadcn-react + Tailwind". Subagent là một trợ lý chuyên trách có ngữ cảnh RIÊNG, nhận nguyên một việc (vd "rà bảo mật cả diff này") rồi trả kết quả về cho phiên chính. Nói gọn: Skill là kiến thức, Subagent là người làm một việc.

CLAUDE.md là luật riêng của business, luôn bật mỗi phiên (số dư không cache, tiền integer...). Skill/Subagent là đồ nghề chuyên môn theo nghề (bảo mật, a11y, SEO) - Skill nạp khi cần, Subagent được giao việc riêng. Hai thứ bổ trợ nhau: CLAUDE.md nói "luật nhà mình", Skill/Subagent mang "chuẩn nghề".

Vì việc rà soát (vd đọc cả diff tìm lỗ hổng) ngốn nhiều ngữ cảnh; để nó chạy trong một subagent riêng thì phiên chính không bị loãng, và subagent tập trung đúng một việc nên rà kỹ hơn. Xong việc, nó chỉ trả về phần kết luận gọn.

Được - đó chính là điểm. Chuẩn nghề nằm SẴN trong skill/subagent, nên mèo con không cần thuộc OWASP hay WCAG; chỉ cần gọi subagent rà rồi đọc danh sách phát hiện bằng tiếng Việt và nhờ Claude sửa. Đồ nghề mang chuyên môn tới cho người chưa có.

Vì mèo con chưa RA ĐỀ rõ. Claude không đoán được màu thương hiệu hay phong cách bạn muốn. Hãy đưa: một primary color + bảng màu (khai báo thành design tokens để bám một chỗ), một ảnh/web reference, và yêu cầu mobile-first. Ghi luật màu/font vào CLAUDE.md để mọi phiên nhất quán. Khi đó skill shadcn-react + Tailwind dựng UI sát ý hơn hẳn.

Design tokens là các biến khai báo MỘT LẦN cho màu/khoảng cách/bo góc (vd qua Tailwind v4 @theme). Thay vì rải mã màu khắp nơi, mèo con đặt --color-primary một chỗ và dùng class bg-primary. Đổi token là cả sản phẩm đổi theo, và AI không lệch màu giữa các trang - cả shop lẫn admin.

Là thiết kế cho màn hình điện thoại TRƯỚC, rồi mới mở rộng lên tablet/desktop. Phần lớn khách vào bằng điện thoại, nên làm gọn-đẹp ở mobile trước giúp không vỡ layout. Nhờ Claude "thiết kế mobile-first" và cho subagent rà giao diện kiểm trên khung điện thoại.

Không nên nghĩ vậy. Đồ nghề giảm rủi ro và nâng chất lượng rõ rệt, nhưng đây vẫn là khoá DEMO: ở chỗ nhạy cảm (thanh toán, quyền admin) một kỹ sư rà lại vẫn đáng giá. Đồ nghề giúp mèo con đi xa hơn rất nhiều một mình, không phải tấm bùa thay hết con người.

Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.

Tick những điều em tự tin làm được sau khi học bài này. 0/6

Trả lời vài câu để chắc rằng em đã nắm bài.

Câu 1/3 Điểm: 0

Skill khác Subagent ở chỗ nào?

Bài tập về nhà

  1. 1

    Cài bộ đồ nghề

    Tải bộ Skills/Subagents của Mèo (.zip ở cuối bài), giải nén thư mục .claude/ vào gốc repo dự án, rồi commit.

    ✅ Hoàn thành khi: Gốc repo có thư mục .claude/skills/ và .claude/agents/; mở phiên mới Claude nhận ra các skill/subagent vừa thêm.

  2. 2

    Gọi subagent rà bảo mật

    Nhờ Claude dùng subagent rà soát bảo mật (OWASP) kiểm tra phần code hiện có và liệt kê phát hiện.

    ✅ Hoàn thành khi: Bạn nhận được một danh sách phát hiện bằng tiếng Việt (có thể rỗng nếu sạch); mỗi mục nêu chỗ nào và vì sao đáng lo.

  3. 3

    Sửa một phát hiện

    Chọn một phát hiện trong danh sách, nhờ Claude sửa, rồi cho subagent rà lại để xác nhận.

    ✅ Hoàn thành khi: Phát hiện đã chọn biến mất ở lần rà thứ hai, và bạn đọc lướt diff thấy thay đổi hợp lý.

  4. 4

    Thử subagent a11y

    Nhờ subagent kiểm a11y (WCAG) rà một trang (vd trang sản phẩm) và đề xuất sửa (alt cho ảnh, tương phản màu, nhãn nút).

    ✅ Hoàn thành khi: Có ít nhất một đề xuất a11y cụ thể; bạn nhờ Claude áp một đề xuất và trang vẫn hiển thị bình thường.

  5. 5

    Ra đề thiết kế: màu & tokens

    Chọn một primary color + 2-3 màu phụ cho shop của mèo con; nhờ Claude khai báo chúng thành design tokens (Tailwind @theme) và dựng lại trang sản phẩm theo bộ màu đó.

    ✅ Hoàn thành khi: Có bộ design tokens trong app.css; trang sản phẩm dùng đúng màu đã chọn, đổi token là màu đổi theo.

  6. 6

    Reference + mobile-first

    Đưa cho Claude một ảnh/web reference mèo con thích và yêu cầu thiết kế mobile-first; rồi cho subagent rà giao diện kiểm trên khung điện thoại.

    ✅ Hoàn thành khi: Trang hiển thị gọn-đẹp trên màn hình điện thoại (không vỡ layout); subagent giao diện không còn cảnh báo responsive nghiêm trọng.

  7. 7

    Phân biệt skill, subagent, CLAUDE.md

    Viết 3 câu ngắn: một việc nên để Skill lo, một việc nên giao Subagent, một luật nên ghi CLAUDE.md.

    ✅ Hoàn thành khi: Ba câu đúng vai: vd Skill = "dựng UI theo shadcn"; Subagent = "rà bảo mật cả diff"; CLAUDE.md = "primary color + mobile-first".