TROISINH
Sử dụng thực chiếnSkills & Custom Commands

Skill với Scripts và Templates: Tối ưu Token & độ tin cậy cho Claude Code

Kỹ thuật tạo Skill trong Claude Code kết hợp scripts thực thi và templates động, giảm 60-80% token và tăng độ tin cậy so với sinh code runtime.

Định nghĩa

Skill kết hợp scripts và templates là kiến trúc "progressive disclosure" trong Claude Code — phần SKILL.md đóng vai trò như router định tuyến, templates xử lý ngôn ngữ tự nhiên thành lệnh có cấu trúc, và scripts thực thi các tác vụ xác định mà không cần nạp mã nguồn vào context window.

Giải thích chi tiết

Progressive Disclosure: Tải có chọn lọc

Kiến trúc này dựa trên nguyên tắc "chia nhỏ trí nhớ" để tránh làm ngập context window:

  • Level 1 (Metadata): Tên và mô tả skill (~100 tokens) luôn có sẵn để Claude quyết định "có nên dùng skill này không"
  • Level 2 (Instructions): Hướng dẫn chi tiết (~5k tokens) chỉ load khi skill được trigger
  • Level 3 (Resources): File tham khảo không giới hạn, truy cập qua bash khi cần
  • Level 4 (Scripts): File thực thi (Python, Bash, Node) chạy như "hộp đen" — Claude không đọc source code, chỉ gọi execution qua tool

Điều này khác biệt hoàn toàn với skill thuần prompt nơi Claude phải "suy nghĩ" và viết code mới mỗi lần, tiêu tốn hàng nghìn token và dễ sinh lỗi.

Scripts: Black box determinism

Scripts trong skill là các file thực thi độc lập, được lưu trong thư mục skill cùng cấp với SKILL.md. Điểm mấu chốt:

  • Tách biệt reasoning và execution: Claude chỉ cần biết "khi nào chạy script này" và "truyền tham số gì", không cần hiểu logic bên trong
  • Deterministic: Script đã test kỹ chạy 100% giống nhau, không như code LLM sinh ra runtime (stochastic)
  • Tiết kiệm token: Thay vì đọc 500 dòng code Python vào context để rồi Claude "hiểu" rồi mô tả lại, Claude chỉ cần gọi ./scripts/analyze.py --file data.csv và nhận kết quả

Ví dụ thực tế: Một script kiểm tra bảo mật dùng bandit scan toàn bộ repo, trả về JSON kết quả. Claude không cần biết bandit hoạt động thế nào, chỉ cần parse kết quả để đưa ra khuyến nghị.

Templates: Cầu nối ngôn ngữ tự nhiên

Templates (thường dùng Jinja2 hoặc prompt templates) đóng vai trò "compiler" từ mơ hồ sang cấu trúc:

  • Fuzzy front end: Xử lý ngôn ngữ tự nhiên không chính xác ("kiểm tra cái vừa sửa") thành tham số xác định (--since=HEAD~1 --filter=modified)
  • Reversible system: Template biến đổi hai chiều — natural language → structured command → side effects
  • Bảo vệ khỏi hallucination: Khi logic phức tạp (regex, parsing), template đảm bảo cấu trúc đầu ra chuẩn hóa, không để LLM tự đoán

Cơ chế hoạt động: Template nằm trong thư mục templates/ của skill, được tham chiếu trong SKILL.md. Khi Claude xác định cần chạy skill, nó dùng template để trích xuất entities từ yêu cầu người dùng, sau đó truyền vào script dưới dạng CLI arguments hoặc stdin.

Security và Offline Curation

Nghiên cứu gần đây chỉ ra 26,1% skill cộng đồng chứa lỗ hổng bảo mật (prompt injection hoặc sandbox escape). Mô hình scripts + templates giải quyết bằng:

  • Interface segregation: Tách rõ phần "xử lý ngôn ngữ" (template) và "thực thi hệ thống" (script). Script chạy trong môi trường sandbox với quyền hạn giới hạn
  • Offline curation: Thay vì sinh code lúc chạy (risky), scripts được viết và audit offline trước khi đóng gói vào skill. Đây là "binary distribution" thay vì "source compilation at runtime"

Ví dụ thực tế

Skill /deploy cho DevOps team startup Việt Nam

Scenario: Bạn cần deploy microservice lên staging chỉ bằng câu nói "đẩy auth-service lên staging kiểm tra giùm".

Cấu trúc skill:

  • Template: Trích xuất service_name="auth-service", env="staging" từ câu lệnh mơ hồ. Nếu thiếu thông tin, template yêu cầu bổ sung theo khuôn mẫu
  • Script: deploy.sh thực hiện chuỗi lệnh: build Docker image với tag unique, push lên registry công ty (AWS ECR hoặc GitLab Registry), gọi kubectl set image trong namespace staging, chờ health check probe thành công
  • Tiết kiệm: Claude không cần "nhớ" cú pháp kubectl, không cần sinh YAML mỗi lần deploy. Script đã chứa logic kiểm tra quyền, xử lý rollback nếu health check fail.

Skill /test-smart cho developer làm việc với codebase lớn

Scenario: Vừa sửa một file Python, muốn chạy test liên quan thay vì cả suite 10 phút.

Cấu trúc skill:

  • Template: Nhận input "test cái vừa sửa" → xác định file vừa thay đổi qua git diff --name-only → map tới test file tương ứng qua naming convention hoặc dependency graph
  • Script: Chạy pytest với filter cụ thể: pytest tests/unit/test_auth.py::TestLogin -v. Script trả về exit code và output ngắn gọn, không dump log dài vào context
  • Hiệu quả: Giảm thời gian chờ từ 10 phút xuống 30 giây, context window không bị ngập bởi log test thừa.

Skill /invoice-check cho team kế toán dùng Claude phân tích dữ liệu

Scenario: Kiểm tra hóa đơn hàng tháng bằng câu hỏi tự nhiên "tháng này chi phí văn phòng bao nhiêu, có bất thường không".

Cấu trúc skill:

  • Template: Trích xuất entities: category="văn phòng", time_range="tháng này", check_type="anomaly_detection". Xử lý từ đồng nghĩa ("chi phí" = "expense", "văn phòng" = "office_supplies + rent")
  • Script: Kết nối database qua SQL query đã viết sẵn (không để Claude tự viết SQL dễ lỗi), chạy phân tích thống kê bằng Python (pandas), trả về báo cáo markdown kèm biểu đồ ASCII
  • An toàn: Script chỉ có quyền read-only trên bảng expenses, không thể xóa dữ liệu, và đã được kiểm tra SQL injection.

Ứng dụng

Dành cho Developer cá nhân

Tạo bộ skill cá nhân trong ~/.claude/skills/:

  • /lint: Chạy ruff, eslint qua script, chỉ báo lỗi nghiêm trọng
  • /git-stats: Script phân tích commit history, template hỏi "tuần này tôi làm gì nhiều nhất"
  • /security-scan: Script gọi semgrep với rule OWASP Top 10, chạy tự động trước mỗi lần Claude đề xuất commit

Dành cho Data Analyst

  • /query-warehouse: Template chuyển câu hỏi business thành SQL structure → Script thực thi query trên BigQuery/PostgreSQL qua MCP connector, trả về DataFrame summary
  • /viz-quick: Script tạo matplotlib chart từ CSV tạm, template xác định loại biểu đồ phù hợp (bar cho so sánh, line cho trend)

Dành cho Team Lead/Engineering Manager

Chuẩn hóa workflow bằng skill trong .claude/skills/ dự án:

  • /pr-check: Template hướng dẫn review strategy (focus vào logic hay style?) → Script kiểm tra số file change, đếm LOC, verify conventional commit format
  • /release-note: Script gather commit messages từ git log, template format thành changelog theo chuẩn Keep a Changelog

So sánh

Tiêu chíSkill thuần promptSkill kết hợp Scripts/Templates
Token usageCao (LLM đọc hướng dẫn rồi tự sinh code vào context)Thấp (chỉ metadata + kết quả thực thi)
DeterminismStochastic (có thể khác nhau mỗi lần chạy)Deterministic (script cố định, test được)
Tốc độ thực thiChậm (LLM phải "suy nghĩ" và viết code)Nhanh (chạy binary/script trực tiếp)
Bảo mậtRủi ro cao (LLM có thể sinh code xóa nhầm dữ liệu)Kiểm soát (script đã audit, chạy sandbox)
Bảo trìKhó (prompt dài, dễ lỗi khi cập nhật)Dễ (script độc lập, version riêng, có thể test unit)
Xử lý phức tạpGiới hạn bởi khả năng reasoning của LLMKhông giới hạn (script xử lý logic nặng, regex phức tạp)

Kết luận: Skill thuần prompt phù hợp tác vụ đơn giản, linh hoạt. Skill kết hợp scripts/templates là lựa chọn cho tác vụ lặp lại, yêu cầu độ chính xác cao, hoặc xử lý dữ liệu lớn nơi token cost và độ tin cậy quan trọng hơn sự linh hoạt.

Bài viết liên quan

Cùng cụm

Đọc tiếp

On this page