Claude Skills Audit: Tìm Và Xóa Skills Không Dùng (Quy Trình 5 Bước)
Power user cài 50 skill nhưng chỉ dùng 10. Phần còn lại nằm yên trong ~/.claude/skills/, một số never invoke dù đã cài hàng tháng. Câu hỏi thực tế là: bao nhiêu skill đang làm mình chậm, và cách nào nhanh nhất để tìm ra chúng?
Bài này phân tích cơ chế thực của skills trong Claude Code, làm rõ cái gì thực sự ngốn context, chỉ ra quy trình audit thủ công 5 bước không cần lệnh phép thuật nào, và giải thích khi nào nên xoá thay vì giữ. Mình đã chạy quy trình này trên cài đặt cá nhân và một số kho khách hàng trong nửa đầu 2026, kết quả nhất quán: tỉ lệ skill cài nhưng không dùng thường trên 60 phần trăm với power user.
TL;DR
- Skill body không tự load: chỉ phần
descriptionfrontmatter được dùng để matching, skill body chỉ nạp vào context khi được invoke thực sự (theo docs chính thức code.claude.com, truy cập 01/07/2026). Vậy “500K token mỗi tháng” từ 52 skill nằm yên là không đúng cơ chế. - Vấn đề thật: skill không bao giờ invoke vì description quá generic, workflow đã thay đổi, hoặc cài vì FOMO. Kết quả là context bị pha loãng khi skill auto-invoke sai lúc, và bộ
/skillslist trở nên khó đọc. - Audit thủ công 5 bước:
/skills→ grep JSONL log → review candidates → backup rồi xoá → monitor 7 ngày. Không cần lệnh ẩn nào. - Target lý tưởng: 5 đến 15 skill cho dev solo, mỗi skill có use case cụ thể và description sắc nét.
Nếu bạn chưa cài Claude Skills nào, đọc hệ thống Claude Skills trước để hiểu cấu trúc SKILL.md và cơ chế auto-invoke. Bài này tập trung vào pattern bloat của power user đã cài quá nhiều skill.
- Solo dev cài dưới 10 skill: chưa cần audit gấp, đặt reminder kiểm tra mỗi quý.
- Power user cài 20+ skill: chạy ngay
/skillsrồi đọc danh sách, xem có bao nhiêu mình thực sự nhớ use case. Có khả năng cao trên 60 phần trăm là candidates to remove. - Team Lead quản đội: thống nhất bộ skill project-level trong
.claude/skills/của repo, tránh để mỗi dev tự cài rác vào personal~/.claude/skills/. - Cost-conscious: dùng
/usageđể xem breakdown chi phí theo skill sau mỗi session, tìm skill invoke nhiều nhưng output không có giá trị.
- Sources: docs chính thức code.claude.com/docs/en/skills và /en/commands (truy cập 01/07/2026) + quan sát cá nhân trên cài đặt thực.
- Không cover: enterprise managed skills, plugin skills từ marketplace bên ngoài.
- Freshness: Claude Code cập nhật thường xuyên, verify lại commands nếu đọc bài này sau Q3 2026.
Bài liên quan: orchestrator chuẩn /blog-audit-pipeline (audit content portfolio 100-500 bài qua kit power-user pipeline).
Cơ Chế Thực Của Skill Loading: Cái Gì Thực Sự Ngốn Context?
Trước khi audit, cần hiểu đúng cơ chế. Nhiều người nhầm rằng mọi skill đã cài đều nạp toàn bộ nội dung vào context mỗi request, như thể CLAUDE.md khổng lồ luôn mở sẵn. Thực tế khác hẳn.
Theo docs chính thức (code.claude.com/docs/en/skills, truy cập 01/07/2026): “Unlike CLAUDE.md content, a skill’s body loads only when it’s used, so long reference material costs almost nothing until you need it.” Cụ thể hơn, chỉ phần description trong YAML frontmatter của SKILL.md được dùng để matching, skill body (phần instructions chi tiết) chỉ nạp vào context khi skill được invoke thực sự, dù là invoke trực tiếp bằng /tên-skill hay Claude tự chọn invoke vì context khớp description.
Vậy vấn đề bloat thực sự là gì? Có hai loại. Loại một là auto-invoke sai lúc: skill có description quá broad khiến Claude invoke nó khi không cần, ngốn token vô ích trong các phiên không liên quan. Loại hai là cognitive overhead: khi chạy /skills thấy 50 skills, khó nhớ cái nào có ích, dẫn đến invoke thủ công không hiệu quả. Cả hai đều giải quyết được bằng cách giữ bộ skill nhỏ và description sắc nét.
Tại Sao 60% Skill Cài Không Bao Giờ Được Invoke?
Có ba nguyên nhân chính dẫn tới skill không invoke. Nguyên nhân một, description quá ngắn hoặc generic. “PDF skill” thay vì “convert markdown to PDF with custom CSS for client deliverables” khiến pattern matching của Claude không chọn đúng skill. Claude dùng description để quyết định có nên auto-invoke hay không, description mờ thì skill không bao giờ được tự chọn.
Nguyên nhân hai, workflow thay đổi sau khi cài skill. Ví dụ chuyển từ React sang Vue thì skill react-component-generator không bao giờ được gọi nữa, dù description có hay đến đâu. Workflow drift là nguyên nhân phổ biến nhất sau 3 tháng dùng.
Nguyên nhân ba, cài vì FOMO sau khi đọc bài “Top 20 Skills 2026” mà không có use case cụ thể. Skill nằm yên chờ tình huống không bao giờ đến. Pattern này đặc biệt phổ biến với skill bundle nhiều sub-skill, cài một lần được 10+ skills mà chỉ dùng 1 đến 2.
Case Study Cộng Đồng: Pattern Skill Bloat Thực Tế
Trên r/ClaudeCode thường xuyên xuất hiện thread kiểu “tôi có 60 skills nhưng chỉ nhớ tên 10”. Một số thành viên chia sẻ quy trình họ dùng để audit: xem lại danh sách /skills, đối chiếu với git history xem project nào còn active, rồi xoá skill không còn liên quan.
Theo chia sẻ cộng đồng trên r/ClaudeAI (quan sát, không phải số liệu có survey chính thức), pattern phổ biến là: skills trong personal ~/.claude/skills/ accumulate nhanh nhất vì không có project boundary. Skills trong .claude/skills/ của project thường sát với use case hơn vì có commit history làm constraint tự nhiên. Việc phân tách hai loại này khi audit tiết kiệm thời gian đáng kể.
Mình quan sát trên cài đặt cá nhân: sau 6 tháng dùng thật, tỉ lệ skill personal không invoke ổn định ở khoảng 60 đến 70 phần trăm. Mỗi đợt cleanup, thường xoá được 10 đến 15 skills mà không ảnh hưởng gì đến workflow.
/skills và grep JSONL log: skills active nổi bật rõ hơn khi có pattern thực từ conversation history.5 Bước Audit Skills Thủ Công Quarterly
Quy trình dưới đây không cần lệnh ẩn hay tool đặc biệt. Chỉ cần Claude Code và terminal cơ bản. Mỗi đợt audit mất khoảng 20 đến 30 phút, đủ để tỉa gọn bộ skills cho 90 ngày tiếp theo.
Bước một, liệt kê toàn bộ skills hiện tại. Chạy /skills trong Claude Code để xem danh sách đầy đủ với token count. Đây là lệnh built-in thực sự, hiển thị mọi skill đang active, bao gồm cả bundled skills và custom skills của bạn. Nhấn t để sort theo token count để thấy skill nào nặng nhất. Ghi ra notepad riêng hoặc export qua /export để có bản so sánh sau cleanup.
Bước hai, grep JSONL log để xem skill nào thực sự được invoke. Claude Code lưu conversation log vào ~/.claude/projects/ dạng JSONL. Chạy lệnh sau trong terminal:
grep -h "tool_use" ~/.claude/projects/*/*.jsonl 2>/dev/null | \
grep -o '"name":"[^"]*"' | sort | uniq -c | sort -rn | head -30
Output cho thấy tool nào được gọi nhiều nhất trong lịch sử session. Với custom skills, tìm thêm:
grep -rh "skill" ~/.claude/projects/*/*.jsonl 2>/dev/null | \
grep -o '"skill_name":"[^"]*"' | sort | uniq -c | sort -rn
Lưu ý: format JSONL có thể thay đổi theo phiên bản Claude Code. Nếu không tìm thấy gì, thử ls ~/.claude/projects/ để xem cấu trúc thư mục thực tế trên máy mình, rồi điều chỉnh path.
Bước ba, review từng candidate trước khi xoá. Skill có zero invocation trong 30 ngày chưa chắc là rác. Phân loại thành ba nhóm. Nhóm A là skill seasonal, chỉ dùng vào cuối tháng cho báo cáo hoặc cuối quý cho tổng kết, giữ lại và note vào ~/.claude/skills/.keep_reasons.md. Nhóm B là skill situational, chờ tình huống cụ thể chưa xảy ra trong 30 ngày nhưng workflow vẫn còn active, giữ và note. Nhóm C là skill không nhớ use case cụ thể sau 10 giây suy nghĩ: xoá.
Bước bốn, backup rồi xoá. Trước khi xoá bất kỳ skill nào:
cp -r ~/.claude/skills/ ~/.claude/skills.backup.$(date +%Y%m%d)/
Sau đó xoá skill không cần bằng rm -rf ~/.claude/skills/<tên-skill>/. Với project skills trong .claude/skills/, commit thay đổi vào git ngay sau khi xoá để có history rõ ràng. Không cần restart Claude Code vì live change detection tự nhận diện thay đổi trong thư mục skill (theo docs, truy cập 01/07/2026).
Bước năm, monitor trong 7 ngày. Sau cleanup, để ý xem có workflow nào bị break không. Nếu phát hiện thiếu skill quan trọng, restore từ backup ở bước bốn. Đo context usage qua /context sau cleanup để xác nhận footprint thay đổi khi các skill auto-invoke ít hơn. Ghi reminder cho lần audit tiếp theo sau 90 ngày.
/skills, grep terminal, và rm -rf sau khi backup.Cách Dùng /usage Và /context Để Đo Thực Tế
Sau audit, hai lệnh thực sự hữu ích để đo impact. Lệnh /usage (alias /cost và /stats) hiển thị session cost, plan usage limits, và breakdown chi phí theo skill. Trên Pro, Max, Team và Enterprise plan, có phần breakdown theo skill, subagent, plugin và MCP server. Đây là cách duy nhất xem skill nào thực sự tốn token nhiều nhất trong session vừa chạy.
Lệnh /context hiển thị context window usage dạng colored grid, kèm optimization suggestions cho context-heavy tools và memory bloat. Nếu thấy skill nào chiếm nhiều context bất thường, đó là signal để review lại SKILL.md của nó, có thể body quá dài hoặc dynamic context injection đang kéo quá nhiều data.
Mẹo thực tế: chạy /usage cuối mỗi phiên làm việc dài. Sau vài tuần, pattern sẽ rõ: skill nào xuất hiện đều trong breakdown là skill active, skill nào không bao giờ xuất hiện là candidate to remove.
Cách Dùng /loop Để Nhắc Audit Định Kỳ
Với power user không muốn nhớ audit thủ công mỗi quý, có thể dùng /loop để tự động nhắc. Đây là bundled skill thực sự của Claude Code, cho phép chạy một prompt lặp lại trong khi session mở. Ví dụ mỗi sáng thứ hai đầu tháng, gõ:
/loop "Check which skills I have installed and remind me to review them this week"
Hoặc viết custom skill nhắc audit trong ~/.claude/skills/skill-check/SKILL.md với instructions đơn giản: nhắc mình review /skills list và grep JSONL log hàng tuần. Sau đó kết hợp với /schedule để tạo routine chạy định kỳ trên cloud infrastructure của Anthropic (tính năng có trên Pro, Max plan).
Điều quan trọng: /loop chỉ chạy trong khi session mở. Để schedule thực sự background, cần dùng /schedule để tạo cloud routine hoặc dùng cron system OS kết hợp script.
Khi Nào Cần Cài Lại Skill Đã Xoá?
Trường hợp một, workflow thay đổi sau khi xoá. Xoá react-component-generator vì đang làm Vue, nhưng ba tháng sau nhận dự án React mới. Cài lại từ nguồn gốc mất 30 giây, không phải vấn đề lớn nếu đã ghi nguồn vào .keep_reasons.md.
Trường hợp hai, khách hàng yêu cầu deliverable cần skill đặc thù. Cài on-demand khi cần, không phải maintain skill chờ sẵn. Đây là pattern tốt hơn so với cài hết rồi để chờ.
Trường hợp ba, Anthropic ship update mới có bundled skill hữu ích. Dùng /release-notes để xem changelog và bundled skills mới. Quy tắc kinh nghiệm: chỉ cài skill có use case cụ thể trong workflow hiện tại của mình, không cài vì “có thể cần sau này”.
Cảnh báo: Anthropic Skills Repo Deep-Dive chỉ ra rằng cài toàn bộ official skills mà không audit cũng tạo cognitive overhead tương tự. Kết hợp hai bài để có workflow cân bằng giữa cài đủ dùng và không cài thừa.
Sau khi chạy quy trình audit trên cài đặt cá nhân và một số kho khách hàng, ba cạnh sắc cần biết trước khi áp dụng:
- JSONL log không phải perfect invocation counter. Grep JSONL cho thấy tool calls nhưng không phân biệt rõ skill nào được invoke qua auto vs direct. Dùng kết hợp với
/usagebreakdown để có bức tranh đầy đủ hơn. - Skill seasonal dễ bị xoá nhầm nhất. Skill chỉ dùng vào cuối quý cho báo cáo sẽ có zero invocation trong audit 30 ngày giữa quý. Maintain
.keep_reasons.mdđể tránh false-positive removal. - Description quality quan trọng hơn số lượng. Một skill có description tệ sẽ tự invoke sai lúc, waste context. Audit description cùng với audit số lượng, không chỉ xoá skill mà còn rewrite description cho skill giữ lại.
Quy tắc chung: audit quarterly, đo qua /usage sau cleanup, document skill seasonal để bảo vệ khỏi false-positive removal.
Câu Hỏi Thường Gặp
Lệnh /skills Cho Thấy Gì Và Có Gì Khác /help?
Lệnh /skills liệt kê tất cả skills đang available trong session hiện tại, bao gồm bundled skills của Claude Code và custom skills từ ~/.claude/skills/ cùng .claude/skills/ của project. Nhấn t để sort theo token count, nhấn Space để hide skill khỏi Claude hoặc menu /. Còn /help hiển thị mọi commands có sẵn bao gồm cả built-in commands như /compact, /context, không chỉ skills.
Xoá Nhầm Skill Quan Trọng Phải Làm Sao?
Nếu đã backup ở bước bốn, restore từ ~/.claude/skills.backup.YYYYMMDD/. Nếu không có backup và skill là custom của mình, cần viết lại từ đầu. Skill lấy từ bên ngoài thường có link gốc, tìm lại và cài lại. Đây là lý do backup trước xoá quan trọng hơn bất kỳ bước nào, và lý do nên lưu custom SKILL.md vào git private repo.
Audit Quarterly Có Đủ Hay Cần Weekly?
Quarterly đủ cho workflow ổn định. Weekly chỉ cần thiết nếu đang ở giai đoạn thử nghiệm cài nhiều skills mới, thường là trong 1 đến 2 tháng đầu dùng Claude Code. Khi workflow ổn định, 90 ngày là vừa. Team enterprise với policy quy định có thể tăng lên monthly để sync với onboarding dev mới.
Skill Có Invocation Nhưng Output Sai Thì Xử Lý Thế Nào?
Không xoá vội. Invocation nhiều với output sai thường là vấn đề description quá broad khiến Claude invoke nhầm context, hoặc instructions trong SKILL.md chưa rõ. Thử rewrite description để narrow matching trước. Nếu sau rewrite vẫn invoke sai, xem xét thay thế bằng explicit invoke thay vì auto-invoke, thêm invocation: manual vào frontmatter để tắt auto-invoke.
Team Lead Audit Skills Của Cả Team Như Thế Nào?
Có ba cách thực tế. Một, chuẩn hoá qua project skills: đặt skills team trong .claude/skills/ của repo, commit vào git, mọi dev tự động có cùng bộ skill khi clone. Hai, dùng Ansible hoặc MDM push script audit định kỳ lên mọi máy, collect JSONL grep output về central để phân tích. Ba, thống nhất policy qua README của team: tối đa N skills personal, mọi skill phải có use case documented trong .keep_reasons.md.
