Claude Code Skills 2026 - Progressive Disclosure và Cách Chuẩn Hoá Workflow cho Team Engineering
Posted on: 4/16/2026 11:11:27 PM
Table of contents
- 1. Bài toán mở rộng Claude Code trong một đội ngũ
- 2. Biên niên sử: từ System Prompt đến Skills
- 3. Progressive Disclosure — nguyên lý kỹ thuật cốt lõi
- 4. Cấu trúc một Skill: anatomy chi tiết
- 5. Skills vs CLAUDE.md vs Sub-Agents vs Hooks
- 6. Ví dụ từ bộ Skills chính chủ Anthropic
- 7. Xây Skill tuỳ biến cho team: case study thực tế
- 8. Discovery: Claude tự tìm skill phù hợp thế nào
- 9. Skills trong kiến trúc Plugins 2026
- 10. Best practice viết Skill chất lượng cao
- 11. Governance, bảo mật và kiểm soát rủi ro
- 12. Pattern triển khai Skills cho tổ chức 30–100 kỹ sư
- 13. Giới hạn và anti-pattern cần tránh
- 14. Tương lai Skills và cảnh quan 2026+
- 15. Kết luận: Skills là standard library của agentic engineering
1. Bài toán mở rộng Claude Code trong một đội ngũ
Khi một kỹ sư dùng Claude Code một mình, mọi chuyện đơn giản: mở dự án, gõ vài câu, chỉnh vài cái CLAUDE.md, và agent tự biết cách làm việc theo quy ước cá nhân. Nhưng khi cả đội mười, ba mươi, rồi trăm kỹ sư cùng dùng, ba vấn đề bắt đầu lộ ra. Thứ nhất là phình file hướng dẫn: mỗi dự án có chục quy ước về commit, code style, deploy, testing, review PR — nhồi hết vào CLAUDE.md thì nó dài vài nghìn dòng và agent phải nuốt toàn bộ ở mọi câu hỏi dù chỉ đang sửa CSS. Thứ hai là trùng lặp kiến thức: mỗi dev tự viết prompt riêng cho task tương tự nhau (review security, tạo migration, generate migration SQL), không có chuẩn chung. Thứ ba là không tái sử dụng được: một workflow tốt cho team A rất khó đóng gói để team B dùng lại mà không copy-paste prompt rời rạc.
Đây chính là khoảng trống mà Skills được thiết kế để lấp. Ra mắt cùng các bản cập nhật lớn của Claude Code và Agent SDK cuối 2025, Skills là đơn vị đóng gói một năng lực cho agent dưới dạng một thư mục chứa file markdown, có tên, có mô tả, có thể kèm script hoặc tài nguyên phụ. Claude không load toàn bộ Skill vào context ngay từ đầu — agent chỉ thấy tên và mô tả ngắn, và khi câu hỏi của bạn khớp với Skill đó, nó mới đọc nội dung chi tiết. Cơ chế này có tên gọi chính thức là Progressive Disclosure — "bộc lộ dần" — và chính là chìa khoá để vừa giữ context gọn vừa cho phép một agent sở hữu hàng trăm năng lực.
Bài viết này đi sâu vào Skills năm 2026 dưới ba góc nhìn: cơ chế kỹ thuật (progressive disclosure hoạt động thế nào), cách dùng thực tế (xây một Skill cho team, viết test, version hoá, đóng gói plugin), và vai trò của Skills trong bộ tứ CLAUDE.md — Sub-Agents — Hooks — Skills. Bạn sẽ biết rõ khi nào nên chọn Skill thay vì các công cụ còn lại, cấu trúc folder thế nào là chuẩn, mô tả viết ra sao để agent tự kích hoạt đúng lúc, và làm thế nào để governance hàng chục Skill trong một tổ chức mà không loạn.
2. Biên niên sử: từ System Prompt đến Skills
CLAUDE.md đặt ở gốc project, tự động nạp vào mỗi session. Lần đầu có "memory cấp dự án". Nhưng vẫn còn vấn đề: file dài, không chia theo ngữ cảnh, và lặp lại giữa các dự án..claude/commands/*.md: gõ /review-pr thì nội dung file được nạp như một prompt. Hữu ích nhưng thủ công — người dùng phải biết command nào có sẵn và gọi đúng tên.PreToolUse, PostToolUse). Công cụ mạnh nhưng khó chia sẻ giữa team — mỗi đội tự xây.3. Progressive Disclosure — nguyên lý kỹ thuật cốt lõi
Progressive Disclosure là một ý tưởng xuất phát từ thiết kế giao diện người dùng: không tung mọi thứ cùng lúc, mà để lộ thông tin theo từng bước khi người dùng cần. Trong thiết kế prompt cho LLM, ý tưởng này chuyển thành: không nạp toàn bộ hướng dẫn vào context, mà chỉ nạp phần liên quan tới nhiệm vụ hiện tại. Context window dù có rộng tới 1 triệu token vẫn là tài nguyên quý — model chú ý kém hơn ở phần xa, chi phí token tăng tuyến tính, và sự ồn ào làm giảm độ chính xác.
Skills thực hiện progressive disclosure qua ba tầng rõ ràng:
graph TD
START[User message đến] --> T1
subgraph T1["Tầng 1: Metadata (luôn trong context)"]
M1[name + description của TẤT CẢ skills khả dụng]
end
T1 --> DECIDE{Claude quyết định
skill nào phù hợp?}
DECIDE -- Không khớp --> NORMAL[Trả lời bình thường]
DECIDE -- Khớp 1 skill --> T2
subgraph T2["Tầng 2: SKILL.md (load khi kích hoạt)"]
B1[Full body: cách thực hiện, code mẫu, script path]
end
T2 --> ACT[Claude bắt đầu làm]
ACT --> NEED{Cần file phụ?
references, scripts, assets}
NEED -- Có --> T3
subgraph T3["Tầng 3: Supporting files (load khi cần)"]
S1[references/*.md, scripts/*.py, assets/*.png]
end
T3 --> ACT
NEED -- Không --> DONE[Xong task]
Tầng một là metadata: mỗi Skill có một cặp name và description được liệt kê trong system prompt. Với mười, hai mươi Skill, phần này thường chỉ tốn 1–2 nghìn token — không đáng kể. Tầng hai là SKILL.md: file markdown chính chứa hướng dẫn chi tiết. File này chỉ được đưa vào context khi Claude thấy câu hỏi của bạn khớp với description. Tầng ba là supporting files: những file đi kèm (tài liệu tham khảo dài, script Python, template, assets) mà SKILL.md trỏ tới — chỉ được đọc khi thực sự cần trong quá trình thực thi.
Điểm tinh tế là Claude đọc Skill giống như một con người đọc tài liệu: không đọc hết một lần, mà quyết định đọc section nào dựa vào mục tiêu hiện tại. Một Skill "write-pdf-report" có thể có SKILL.md 3000 từ và 10 file tham khảo tổng 50000 từ — nhưng với mỗi session cụ thể, agent chỉ thực sự nạp 5000 từ tổng cộng. Chi phí token trung bình giảm mạnh so với việc nhét tất cả vào system prompt ngay từ đầu.
Nguyên tắc: context window không phải bãi đỗ xe
Đừng xem 1M token là cái tủ chứa. Chú ý của model phân bố không đều, token đầu và cuối được chú ý tốt hơn giữa cuộn. Progressive disclosure giúp phần context "nóng" luôn là phần có giá trị nhất cho nhiệm vụ hiện tại. Kết quả: độ chính xác cao hơn, chi phí thấp hơn, độ trễ ít hơn.
4. Cấu trúc một Skill: anatomy chi tiết
Một Skill về hình thức là một thư mục, chứa ít nhất một file SKILL.md. Tên thư mục chính là tên Skill. Cấu trúc đầy đủ của một Skill chuyên nghiệp thường như sau:
pptx/
├── SKILL.md (bắt buộc: frontmatter + body)
├── references/
│ ├── python-pptx-guide.md (tài liệu tham khảo dài)
│ └── design-principles.md (nguyên tắc thiết kế slide)
├── scripts/
│ ├── create_slides.py (script thực thi chính)
│ └── validate_output.py (kiểm tra file ra)
└── assets/
├── template-modern.pptx (template mẫu)
└── fonts/Inter.ttf (font nhúng)Trái tim của Skill là SKILL.md, bắt buộc có khối frontmatter YAML ở đầu với ít nhất hai trường name và description:
---
name: pptx
description: Use this skill whenever the user wants to create, read,
edit, or manipulate PowerPoint presentations (.pptx files). Triggers
include mentions of "PowerPoint", "slide deck", "presentation" or
requests to produce professional slide presentations.
---
# PowerPoint Skill
## When to use
This skill applies when the user's task involves...
## Creation workflow
1. Read `references/python-pptx-guide.md` for API details
2. Use `scripts/create_slides.py` to generate the base file
3. Apply templates from `assets/` if user specifies a style
...Ba phần cần thiết kế cẩn thận:
| Thành phần | Mục đích | Yêu cầu |
|---|---|---|
name | Định danh ngắn, dùng làm khoá và log | Kebab-case, không dấu, ngắn (< 30 ký tự) |
description | Quyết định khi nào Skill được kích hoạt | 1–3 câu, mô tả task VÀ signal (từ khoá) kích hoạt |
| Body (markdown) | Nội dung thực thi khi Skill được kích hoạt | Rõ ràng, có ví dụ, có lệnh cụ thể, có reference sang file phụ nếu dài |
Description là thứ quan trọng nhất vì Claude đọc nó để quyết định kích hoạt. Một description tồi ("pptx skill for PowerPoint") khiến agent không biết khi nào nên dùng. Một description tốt nêu rõ task (create/read/edit PowerPoint), trigger từ khoá (mentions of "PowerPoint", "slide deck"), và đôi khi cả anti-trigger ("do not use for PDF exports").
Cái bẫy description: viết như tiêu đề, không như quảng cáo
Description không phải marketing — đừng viết "Skill tuyệt vời giúp bạn xử lý PowerPoint siêu nhanh". Viết như hướng dẫn cho một đồng nghiệp mới: "Dùng skill này khi user yêu cầu tạo/đọc/sửa file .pptx hoặc slide deck". Claude sẽ match dựa trên semantic — càng cụ thể về task và context càng khớp đúng.
5. Skills vs CLAUDE.md vs Sub-Agents vs Hooks
Bốn công cụ này dễ nhầm vì đều dùng để "dạy" Claude Code. Nhưng chúng phục vụ bốn mục đích khác nhau và phối hợp được với nhau:
| Công cụ | Tầng nạp | Thời điểm kích hoạt | Use case tiêu biểu |
|---|---|---|---|
CLAUDE.md | System prompt, luôn có | Mọi message trong session | Quy ước dự án cố định: style commit, vị trí test, ngôn ngữ nói chuyện |
| Custom Commands | Inline khi user gõ /command | User chủ động gọi | Shortcut lặp lại: /review-pr, /write-migration |
| Sub-Agents | Session riêng, isolated context | Được parent agent spawn | Tách việc nặng khỏi main context: research agent, review agent |
| Hooks | Script ngoài Claude, chạy ở harness | Theo event (PreToolUse, PostMessage...) | Tự động chạy linter sau edit, chặn tool nguy hiểm, gửi notification |
| Skills | Progressive: metadata → body → files | Claude tự quyết khi task khớp description | Năng lực có quy trình: xử lý pptx, gọi API nội bộ, deploy ứng dụng |
Quy tắc chọn đơn giản: nếu hướng dẫn luôn đúng với mọi câu hỏi trong dự án, dùng CLAUDE.md. Nếu là shortcut do user gõ tay, dùng Command. Nếu cần cô lập context hoặc chạy song song, dùng Sub-Agent. Nếu cần tự động hoá bên ngoài Claude (chạy script sau tool call), dùng Hook. Nếu là một năng lực tự kích hoạt theo ngữ cảnh, Skill là lựa chọn đúng.
Phối hợp thực tế thường trông như thế này: CLAUDE.md cố định quy ước team, Skills cung cấp các năng lực có ngữ cảnh (tạo báo cáo Excel, sinh migration SQL, review security), Sub-Agents xử lý công việc nền (research, test suite lớn), Hooks đảm bảo ràng buộc an toàn (chạy format, cấm edit file .env). Không cái nào thay thế cái khác — chúng là bốn lớp của một kiến trúc.
graph LR
USER[User message] --> HARNESS[Claude Code harness]
HARNESS --> HOOK1[Hook: PreToolUse?]
HARNESS --> AGENT[Main Claude agent]
CLAUDE_MD[CLAUDE.md
luôn có] --> AGENT
SKILLS_META[Skills metadata
luôn có] --> AGENT
AGENT -- "task khớp description" --> SKILL_BODY[SKILL.md được load]
SKILL_BODY --> SKILL_FILES[references/ scripts/ assets/]
AGENT -- "công việc nặng" --> SUBAGENT[Sub-Agent session riêng]
AGENT -- "user gõ /cmd" --> CMD[Command inline]
AGENT --> TOOL[Tool call]
TOOL --> HOOK2[Hook: PostToolUse]
6. Ví dụ từ bộ Skills chính chủ Anthropic
Anthropic công khai mã nguồn cho bộ Skills của mình — đây là nguồn học thực dụng nhất vì chúng đã được dùng ở quy mô lớn và tuân thủ đầy đủ best practice.
pptx / docx / pdf / xlsx là bộ bốn Skill xử lý tài liệu văn phòng, đều có cấu trúc tương đồng: một SKILL.md mô tả workflow tạo/đọc/sửa, vài file tham khảo ở references/, và script Python ở scripts/ dùng python-pptx, python-docx, pypdf, openpyxl. Điểm thú vị: các Skill này không gói sẵn thư viện Python — chúng giả định môi trường có pip install hoạt động và chỉ chịu trách nhiệm "chỉ đạo" Claude dùng thư viện đúng cách. Kết quả là Skill rất nhẹ (vài trăm KB) nhưng có năng lực lớn vì dựa vào hệ sinh thái Python sẵn có.
skill-creator là Skill dùng để tạo Skill mới — một minh hoạ xuất sắc cho tư tưởng "agent tự cải thiện năng lực". Nội dung của nó là một quy trình năm bước: hỏi user về mục đích, sinh cấu trúc folder, viết SKILL.md với frontmatter chuẩn, thêm supporting files nếu cần, chạy test ngẫu nhiên để đảm bảo description đủ distinct.
consolidate-memory là Skill rất ngắn (chỉ vài chục dòng) nhưng gợi ra một pattern mạnh: dùng Skill để đóng gói quy trình nội bộ của chính agent. Nó hướng dẫn Claude review file memory (MEMORY.md), merge entry trùng, prune mục lỗi thời. Không cần thư viện, không cần script — chỉ là prompt chuyên biệt được kích hoạt khi user nói "consolidate memory" hay "clean up my memory files".
Skill như một Standard Operating Procedure
Nếu bạn có một quy trình mà con người trong team đã viết thành SOP PDF, thì có thể đóng gói nó thành Skill gần như nguyên xi. Khác biệt duy nhất: thay "review bản in" bằng "đọc SKILL.md", và các bước thủ công thay bằng tool call (Read, Bash, Edit). Agent kế thừa luôn ngôn ngữ quen thuộc của team.
7. Xây Skill tuỳ biến cho team: case study thực tế
Giả sử team bạn làm SaaS .NET 10 với Vue 3 frontend. Mỗi lần thêm entity mới, quy trình thủ công gồm: tạo migration EF Core, sinh DTO, viết endpoint FastEndpoints, thêm Vue composable gọi API, cập nhật OpenAPI spec. Quy trình này lặp đi lặp lại, mất 20 phút mỗi lần, và dễ quên một bước. Đây là ứng viên lý tưởng cho Skill. Đặt tên add-entity:
.claude/skills/add-entity/
├── SKILL.md
├── references/
│ ├── fastendpoints-pattern.md
│ └── vue-composable-template.md
└── scripts/
└── validate-migration.shSKILL.md có frontmatter:
---
name: add-entity
description: Use when the user asks to add a new domain entity (table,
model, resource) to the SaaS. Covers EF Core migration, DTO, FastEndpoints
endpoint, OpenAPI update, and Vue composable. Triggers on phrases like
"thêm entity", "add a new table", "new resource for", "scaffold CRUD".
---
# Add Entity Workflow
## Context
Our codebase uses:
- .NET 10 with FastEndpoints (see `references/fastendpoints-pattern.md`)
- EF Core 10 with per-module schema (ordering, billing, catalog)
- Vue 3.6 with Pinia store and composables (see `references/vue-composable-template.md`)
## Checklist
1. **Confirm module ownership**: ask the user which module owns the entity
2. **Domain class**: create `Modules/{Module}/Domain/Entities/{Name}.cs`
3. **Migration**: run `dotnet ef migrations add Add{Name} -c {Module}DbContext`
4. **DTO**: `{Module}.Contracts/Dtos/{Name}Dto.cs` - keep minimal, no internal fields
5. **Endpoint**: `{Module}.Api/Endpoints/{Name}/` with List/Get/Create/Update/Delete
6. **OpenAPI**: run `dotnet run --project tools/openapi` to regenerate
7. **Vue composable**: `src/composables/use{Name}.ts` following template
8. **Pinia store**: only if the entity has cross-page shared state
## Validation
After generation, run `./scripts/validate-migration.sh` to ensure:
- Migration file exists
- DTO has no EF navigation properties
- Vue composable uses TanStack Query, not raw fetchKhi dev gõ "Tôi muốn thêm entity Subscription cho module Billing", Claude thấy description khớp, load SKILL.md, đi theo checklist. Vài khác biệt quan trọng so với viết prompt rời:
- Kiến thức được version hoá trong git: team sửa Skill, review PR, merge — cả đội hưởng lợi.
- Tân binh không cần học từng chuỗi prompt — Skill tự active khi họ nói ngôn ngữ tự nhiên.
- Có thể thêm script validation chạy ở bước cuối, Skill gọi qua tool Bash — đảm bảo output đúng ràng buộc team.
8. Discovery: Claude tự tìm skill phù hợp thế nào
Một câu hỏi quan trọng: nếu Claude chỉ thấy metadata, làm sao nó chọn đúng Skill khi câu hỏi mơ hồ? Cơ chế thực tế kết hợp ba nguồn signal:
- Khớp description: Claude đọc tất cả description, thực hiện matching ngầm giữa ý định câu hỏi và từ khoá/ngữ cảnh trong description. Description viết càng cụ thể về task và trigger thì matching càng chắc.
- Trigger phrase: một số skill có hẳn câu "Triggers on phrases like ..." trong description. Đây là cách thẳng thừng để "dạy" Claude nhận diện.
- Negative signal: description có thể liệt kê anti-trigger ("do NOT use for X"). Rất hữu dụng khi hai Skill hơi giống nhau (ví dụ pdf-reader vs pdf-writer).
Skill không có cơ chế "priority" cứng — Claude chọn dựa vào khớp ngữ nghĩa. Nếu có hai Skill cùng khớp, thường agent sẽ chọn cái khớp chặt hơn, hoặc load cả hai nếu task phức tạp. Trường hợp mờ, agent có thể hỏi lại user để xác nhận.
Cái bẫy over-trigger: description quá rộng
Một description kiểu "Use this skill for any code task" sẽ được kích hoạt ở mọi câu hỏi, phá hỏng cơ chế progressive disclosure. Luôn hẹp lại phạm vi cụ thể và đưa trigger từ khoá. Nguyên tắc: nếu Skill của bạn được kích hoạt ở 80% câu hỏi, nó đang làm sai việc của CLAUDE.md.
9. Skills trong kiến trúc Plugins 2026
Đến năm 2026, Claude Code hỗ trợ Plugins — đơn vị phân phối đóng gói Skills + Commands + Sub-Agents + Hooks + MCP servers trong một bundle git hoặc marketplace. Cấu trúc Plugin điển hình:
my-team-plugin/
├── plugin.json (metadata, version, tác giả)
├── skills/
│ ├── add-entity/
│ ├── review-security/
│ └── deploy-staging/
├── commands/
│ └── daily-standup.md
├── agents/
│ └── research-agent.md
├── hooks/
│ └── pre-edit-format.sh
└── mcp/
└── internal-api.json (MCP server config)Lợi ích lớn nhất: team có thể publish plugin lên GitHub hoặc internal registry, đồng đội cài một lệnh là có ngay đầy đủ mọi quy ước. Một công ty 200 kỹ sư có thể có 3–5 plugin cho các mảng (backend, frontend, infra, security, data), mỗi kỹ sư chọn cài plugin theo vai trò.
graph TB
subgraph REGISTRY[Plugin Registry]
P1[team-backend-plugin]
P2[team-frontend-plugin]
P3[security-compliance-plugin]
end
subgraph DEV1[Dev A: Full-stack]
I1[.claude/plugins/backend]
I2[.claude/plugins/frontend]
end
subgraph DEV2[Dev B: Frontend-only]
J1[.claude/plugins/frontend]
end
subgraph DEV3[Dev C: Security]
K1[.claude/plugins/security-compliance]
end
P1 --> I1
P2 --> I2
P2 --> J1
P3 --> K1
REGISTRY -. "claude code plugin install" .-> DEV1
REGISTRY -. "claude code plugin install" .-> DEV2
REGISTRY -. "claude code plugin install" .-> DEV3
10. Best practice viết Skill chất lượng cao
Description ngắn nhưng cụ thể. Nhắm 50–100 từ. Nêu ba điểm: task, input/context tiêu biểu, trigger từ khoá. Tránh lời lẽ quảng cáo. Viết ở góc nhìn "hướng dẫn cho đồng nghiệp mới" chứ không phải "thuyết trình cho CEO".
Body có cấu trúc. Dùng các section rõ ràng: "When to use", "Context", "Workflow", "Validation", "Examples". Chính Claude sẽ điều hướng theo heading — cấu trúc rõ giúp nó lấy đúng phần cần.
Tách kiến thức dài ra references/. Nếu có API docs dài, glossary nội bộ, hay mẫu PDF lớn, đừng nhét vào SKILL.md. Đặt ở references/ và link từ SKILL.md. Claude sẽ đọc file phụ khi đến bước cần — tiết kiệm token.
Script là công cụ, không phải xương sống. Script trong scripts/ tốt nhất chỉ làm việc cơ học và deterministic (validate, format, chạy lệnh CLI có sẵn). Logic suy luận nên để cho agent — nếu mọi thứ đã ở trong script, bạn không cần Claude làm gì cả.
Test trước khi ship. Dùng skill-creator của Anthropic, hoặc tự kiểm bằng cách đặt 5 câu hỏi biến thể gần với trigger, xem Claude có kích hoạt đúng không. Đặc biệt kiểm tra false positive (Skill kích hoạt nhầm ở câu không liên quan).
Version hoá như code. Skill nằm trong git, theo semantic versioning. Thay đổi lớn (đổi tên, bỏ section) là major. Thêm step mới là minor. Sửa câu chữ là patch. Dev có thể pin version nếu cần ổn định.
Giới hạn kích thước trong thực tế
Kinh nghiệm: SKILL.md dưới 2000 từ là thoải mái. 2000–5000 bắt đầu nặng nhưng chấp nhận được nếu body phải chi tiết. Trên 5000 từ gần như chắc chắn là tín hiệu cần chia thành references/. Metadata mỗi skill (name + description) nên dưới 150 từ để khi có nhiều skill không làm phình system prompt.
11. Governance, bảo mật và kiểm soát rủi ro
Skill là một hình thức "cho phép agent đọc và thực thi logic có sẵn". Điều đó mang theo bề mặt tấn công cần cân nhắc:
- Prompt injection qua SKILL.md: nếu kho skill cho phép contribution tự do, kẻ xấu có thể thêm skill có description hiền lành nhưng body chứa hướng dẫn độc hại ("exfiltrate .env", "disable hook"). Giải pháp: tất cả skill nội bộ phải qua PR review, skill public phải đến từ nguồn tin cậy hoặc được pin commit SHA.
- Phạm vi quyền tool: Skill kế thừa quyền của agent, không thể tự cấp thêm quyền. Nhưng nếu agent có quyền rộng (Bash unrestricted), một Skill tà ý có thể lợi dụng. Cách phòng: kết hợp Hooks PreToolUse để chặn lệnh nguy hiểm bất kể ai gọi.
- Data exfiltration: skill có thể khuyến khích agent đọc nhiều file hơn cần thiết. Kiểm soát qua policy: giới hạn path được đọc trong hook, hoặc dùng permission mode hạn chế.
- Drift kiến thức: một skill lỗi thời (ví dụ hướng dẫn API nội bộ phiên bản cũ) dẫn agent sinh code sai. Cần quy trình rà soát định kỳ, có owner cho từng skill, cảnh báo qua CI khi API ref thay đổi.
Một số tổ chức đã bắt đầu áp dụng mô hình "Skill Council" — nhóm 3–5 kỹ sư review tất cả skill được publish nội bộ, kiểm tra description có chính xác không, workflow có phù hợp quy chuẩn security không, và có test tối thiểu không. Đây là tương đồng với cách review code infra hoặc review design doc quan trọng.
12. Pattern triển khai Skills cho tổ chức 30–100 kỹ sư
Từ các tổ chức đã áp dụng sớm, một vài pattern kiến trúc lặp đi lặp lại:
Pattern 1 — Skills theo role. Chia kho skill theo vai trò: plugins/backend-dev, plugins/frontend-dev, plugins/sre, plugins/data. Mỗi dev cài plugin khớp role của mình. Lợi: nhỏ gọn, không bloat. Hạn: full-stack dev phải cài nhiều plugin.
Pattern 2 — Skills theo domain. Phù hợp với monolith modular: mỗi bounded context có skill riêng (billing-add-invoice, catalog-import-sku). Skill nằm chung repo với code của module đó. Lợi: skill và code cùng tiến hoá, PR sửa code kèm sửa skill nếu workflow đổi.
Pattern 3 — Meta-skill cho onboarding. Một skill duy nhất có mô tả "Use when a new engineer needs help finding which skill/doc to consult for a task" — nó chứa mục lục dẫn tới skill con, giúp tân binh nhanh chóng thấy "rừng công cụ" của team.
Pattern 4 — Skills cho playbook incident. SRE có các runbook ứng phó sự cố. Biến mỗi runbook thành một skill ("respond-to-cache-miss-storm", "rollback-failed-deploy"). Khi agent được kích hoạt trong ngữ cảnh alert, nó tự load skill đúng và dẫn on-call qua từng bước.
Pattern 5 — Skill + MCP kết hợp. MCP cung cấp công cụ (đọc dữ liệu từ hệ thống nội bộ), Skill cung cấp quy trình (cách dùng công cụ đó theo chuẩn team). Một plugin tốt thường ship cả hai cùng nhau: MCP server để kết nối Linear/Jira/Jenkins, Skill để hướng dẫn agent dùng MCP tool đó sao cho đúng quy trình.
ROI thực tế của đầu tư vào Skills
Kinh nghiệm từ các team triển khai sớm: đầu tư 2–4 giờ viết một skill cho workflow lặp lại (migration, review, deploy) tiết kiệm được 10–20 phút mỗi lần dev dùng. Với team 30 người, một skill tốt được chạy 5 lần/tuần/người, payoff ngay trong tuần đầu tiên. Quan trọng hơn: chất lượng output đồng nhất vì mọi dev đi theo cùng workflow, thay vì 30 phiên bản khác nhau tuỳ kinh nghiệm cá nhân.
13. Giới hạn và anti-pattern cần tránh
Skill quá nhỏ. Một skill chỉ có 50 từ hướng dẫn một việc trivial thường nên là Command hoặc thậm chí chỉ là một dòng trong CLAUDE.md. Skill có chi phí cố định (metadata tốn token, governance tốn effort) — chỉ nên dùng khi có giá trị rõ ràng.
Skill thay cho code. Nếu logic có thể đóng gói thành hàm/script thuần, hãy viết script. Skill không nên là nơi chứa thuật toán phức tạp — đó là trách nhiệm của code. Skill chỉ hướng dẫn agent dùng code/tool đúng cách.
Skill chồng chéo. Hai skill cùng có trigger "code review" nhưng workflow hơi khác sẽ làm Claude bối rối. Nếu phát hiện chồng chéo, gộp thành một skill với các nhánh rõ trong body, hoặc chia theo dimension khác (review-security vs review-performance, không phải review-a vs review-b).
Thiếu test. Skill không test là skill lỗi tiềm ẩn. Tối thiểu: 3 ví dụ câu hỏi nên kích hoạt skill, 3 ví dụ không nên. Có thể tự động hoá với một harness đơn giản dùng Agent SDK.
Không có owner. Mỗi skill cần một người/team chịu trách nhiệm cập nhật. Không có owner, skill trôi thành fossil trong vài tháng, gây hại nhiều hơn lợi.
14. Tương lai Skills và cảnh quan 2026+
Skills đang tiến về ba hướng rõ ràng. Hướng thứ nhất là skill registry công cộng: các marketplace nơi developer publish skill giống như npm package. Chất lượng, review, download count sẽ trở thành signal. Anthropic và cộng đồng dự kiến xây một registry chính thức vào nửa cuối 2026.
Hướng thứ hai là skill tự sinh: agent quan sát thói quen của user, nhận dạng workflow lặp lại, tự đề xuất tạo skill. Đây là một dạng meta-learning — agent không chỉ học một lần trong training, mà học tiếp trong quá trình phục vụ bằng cách mã hoá kinh nghiệm vào skill mới.
Hướng thứ ba là cross-agent skills: một skill chuẩn được dùng bởi Claude Code, Agent SDK, Claude Desktop, và cả các framework khác qua chuẩn mở (tương tự cách MCP đang làm với tool). Nếu điều này thành hiện thực, viết skill một lần là portable khắp agent, giống như viết library JavaScript chạy được cả Node và browser.
Cho đội ngũ engineering muốn đi trước, câu trả lời thực dụng không phải là đọc thêm — mà là bắt tay viết 3 skill đầu tiên. Chọn ba workflow lặp lại nhất, đóng gói theo cấu trúc đã mô tả, đo xem chất lượng output và thời gian hoàn thành thay đổi thế nào. Hầu hết team nhận ra sau tuần đầu: Skills không phải công cụ lạ để thử chơi, mà là cách đơn giản nhất để biến tri thức tập thể thành năng lực thực thi của agent.
15. Kết luận: Skills là standard library của agentic engineering
Năm 2026, ranh giới giữa "viết code" và "viết hướng dẫn cho agent" đang mờ dần. Skills là biểu hiện rõ nhất của xu hướng đó: một đơn vị đóng gói tri thức có thể version hoá, test, review, phân phối — tất cả các đặc tính của code hiện đại — nhưng nội dung lại là ngôn ngữ tự nhiên mà một đồng nghiệp mới có thể đọc hiểu. Progressive disclosure là nguyên lý kỹ thuật tinh tế đằng sau, nhưng triết lý cốt lõi đơn giản: chỉ nạp thứ liên quan, đúng lúc cần, không nạp thừa.
Với một cá nhân, Skills cắt giảm thời gian lặp lại và đảm bảo mỗi lần đều theo best practice. Với team, Skills là cách chuyển tri thức từ đầu người này sang đầu người khác mà không phải onboarding thủ công. Với tổ chức lớn, Skills là hạ tầng — giống như standard library, CI/CD, hay design system — là thứ bạn không thấy hàng ngày nhưng khi thiếu thì cả tổ chức chậm lại. Đầu tư vào Skills 2026 không phải vì theo trend, mà vì đó là đường ngắn nhất để đội ngũ bạn vận hành ở nhịp mới.
Nguồn tham khảo
Modular Monolith với .NET 10 - Kiến trúc trung dung giữa Monolith và Microservices với Vertical Slice, Wolverine và Bounded Context
Pinia 3 và TanStack Query 5 cho Vue 3.6 - State Management Hiện đại trong kỷ nguyên Vapor Mode 2026
Disclaimer: The opinions expressed in this blog are solely my own and do not reflect the views or opinions of my employer or any affiliated organizations. The content provided is for informational and educational purposes only and should not be taken as professional advice. While I strive to provide accurate and up-to-date information, I make no warranties or guarantees about the completeness, reliability, or accuracy of the content. Readers are encouraged to verify the information and seek independent advice as needed. I disclaim any liability for decisions or actions taken based on the content of this blog.