Skills — แพ็กความเชี่ยวชาญเป็นโฟลเดอร์ที่ Claude หยิบใช้เอง

⏱ 25 นาทีลองในClaude ↗

⚠️ บทนี้มีข้อมูลที่เปลี่ยนบ่อย (ฟีเจอร์ ราคา ชื่อเมนู) ตรวจกับเว็บทางการก่อนนำไปใช้

เป้าหมาย

สร้าง skill ที่ Claude เรียกใช้ถูกจังหวะ มีสคริปต์คำนวณจริง แชร์ให้ทีมได้ และทดสอบได้ว่าทำงาน

Skill คืออะไร ต่างจาก CLAUDE.md ตรงไหน

CLAUDE.md Skill
โหลดเมื่อไร ทุก session ตั้งแต่ต้น เฉพาะตอนงานตรงกับ description หรือพิมพ์ /ชื่อ
เหมาะกับ กติกาที่ใช้ตลอด (สไตล์โค้ด คำสั่ง build) ขั้นตอนเฉพาะงาน (ทำใบเสนอราคา ออกรายงาน)
มีไฟล์ประกอบ ไม่ค่อย สคริปต์ เทมเพลต เอกสารอ้างอิง

Progressive disclosure: ตอนเริ่ม Claude เห็นแค่ name + description ของทุก skill → เนื้อหา SKILL.md โหลดเมื่อจะใช้ → ไฟล์ประกอบโหลดเมื่อถูกอ้างถึง มี skill 50 อันก็ไม่กิน context

โครงสร้างโฟลเดอร์ (ตัวอย่างเต็ม)

.claude/skills/lease-quote/
├── SKILL.md            # คำสั่งหลัก (จำเป็น)
├── template.md         # แบบฟอร์มใบเสนอราคา
└── scripts/calc.py     # คำนวณค่างวดด้วยโค้ด ไม่ให้ AI บวกเลขในหัว
ที่เก็บ path ใครใช้ได้
ส่วนตัว ~/.claude/skills/<name>/ คุณ ทุกโปรเจกต์
โปรเจกต์ .claude/skills/<name>/ (commit) ทุกคนใน repo
plugin อยู่ใน plugin เรียกแบบ /plugin-name:skill-name ทุกคนที่ติดตั้ง plugin (บท 6d-04)

เขียน description ให้ "ติด"

description คือสิ่งเดียวที่ Claude ใช้ตัดสินว่าจะหยิบ skill ไหน → เขียน ทำอะไร + ใช้เมื่อไร + คำที่ผู้ใช้มักพิมพ์

  • ❌ ช่วยเรื่องลีสซิ่ง (กว้าง ไม่รู้จะใช้ตอนไหน)
  • ✅ คำนวณค่างวดเช่าซื้อรถและร่างใบเสนอราคาภาษาไทย ใช้เมื่อผู้ใช้ขอคำนวณค่างวด ผ่อนรถ เช่าซื้อ หรือใบเสนอราคาลีสซิ่ง
  • skill ที่มีผลข้างเคียง (deploy, ส่งอีเมล) ใส่ disable-model-invocation: true → เรียกได้เฉพาะคนพิมพ์ /ชื่อ

ฟีเจอร์ใน SKILL.md

  • $ARGUMENTS = ข้อความหลัง /lease-quote ... (หรือประกาศ arguments: [price] แล้วใช้ $price)
  • !`คำสั่ง` = รันคำสั่งก่อน แล้วแทนที่ด้วยผลลัพธ์ เช่นวันที่วันนี้
  • allowed-tools = เครื่องมือที่ skill ใช้ได้โดยไม่ต้องถามทุกครั้ง → ให้แคบที่สุด

⚠️ ต้องตรวจสอบ: รายชื่อฟิลด์ frontmatter ล่าสุดที่ code.claude.com/docs (หัวข้อ Skills)

ลองเลย 🧪

ทดลอง A — สร้าง skill ทั้งโฟลเดอร์ (รันที่ root ของโปรเจกต์)

mkdir -p .claude/skills/lease-quote/scripts
cat > .claude/skills/lease-quote/SKILL.md <<'EOF'
---
name: lease-quote
description: คำนวณค่างวดเช่าซื้อรถและร่างใบเสนอราคาภาษาไทย ใช้เมื่อผู้ใช้ขอคำนวณค่างวด ผ่อนรถ เช่าซื้อ หรือใบเสนอราคาลีสซิ่ง
allowed-tools: Bash(python3 .claude/skills/lease-quote/scripts/calc.py *)
---
วันที่ออกใบเสนอราคา: !`date +%Y-%m-%d`
ข้อมูลจากผู้ใช้: $ARGUMENTS

## ขั้นตอน
1. ต้องได้ ราคารถ เงินดาวน์ จำนวนงวด อัตราดอกเบี้ยต่อปี (flat) ถ้าขาดให้ถามก่อน ห้ามเดา
2. คำนวณด้วย `python3 .claude/skills/lease-quote/scripts/calc.py ราคา ดาวน์ งวด อัตรา` เท่านั้น
3. กรอกผลลง template.md ในโฟลเดอร์นี้ ตอบเป็นภาษาไทย
4. ปิดท้ายว่า "ตัวเลขเบื้องต้น อนุมัติจริงขึ้นกับผลพิจารณาสินเชื่อ"
EOF
cat > .claude/skills/lease-quote/template.md <<'EOF'
# ใบเสนอราคาเบื้องต้น (วันที่ ...)
| รายการ | จำนวน |
|---|---:|
| ราคารถ / เงินดาวน์ / ยอดจัด | ... |
| ดอกเบี้ยรวม | ... |
| ค่างวดต่อเดือน x จำนวนงวด | ... |
EOF
cat > .claude/skills/lease-quote/scripts/calc.py <<'EOF'
import sys
price, down, months, rate = float(sys.argv[1]), float(sys.argv[2]), int(sys.argv[3]), float(sys.argv[4])
principal = price - down
interest = principal * rate / 100 * months / 12
print(f"ยอดจัด {principal:,.2f} บาท | ดอกเบี้ยรวม {interest:,.2f} บาท | ค่างวด {(principal + interest) / months:,.2f} บาท x {months} งวด")
EOF

→ เปิด claude ในโฟลเดอร์นั้นแล้วทำทดลอง B

ทดลอง B — ทดสอบว่า skill "ติด" และ "ไม่ติด" ถูกที่

ลูกค้าอยากผ่อนรถราคา 850,000 ดาวน์ 170,000 ผ่อน 48 งวด ดอกเบี้ย 2.89% ต่อปี ช่วยทำใบเสนอราคาให้หน่อย
เขียนอีเมลขอบคุณลูกค้าที่มาดูรถเมื่อวาน

→ ข้อแรกต้องใช้ skill และรันสคริปต์ (ค่างวด 15,804.33 บาท) ข้อสองต้อง ไม่ ใช้ → ลองพิมพ์ตรงๆ /lease-quote 850000 170000 48 → ต้องถามอัตราดอกเบี้ยก่อน ไม่เดา

ทดลอง C — พกไปใช้ที่อื่น Skills เป็นมาตรฐานเปิด (Agent Skills) → zip โฟลเดอร์ lease-quote แล้วอัปโหลดใน claude.ai (Settings → Skills) หรือใช้ผ่าน API ที่มี code execution → สังเกตว่า !`...` และ allowed-tools อาจทำงานต่างจาก Claude Code ให้ทดสอบซ้ำบนแพลตฟอร์มปลายทาง

⚠️ ต้องตรวจสอบ: ชื่อเมนูอัปโหลด skill และแพ็กเกจที่ใช้ได้บน claude.ai

ความปลอดภัย

  • skill จากคนอื่น = โค้ดที่รันบนเครื่องคุณ → อ่าน SKILL.md และ scripts ทุกไฟล์ก่อนติดตั้ง
  • ห้ามใส่ API key ใน skill ให้สคริปต์อ่านจาก environment variable

สรุปจำง่าย

description บอก "เมื่อไร" ให้ชัด ตัวเลขให้สคริปต์คิด ทดสอบทั้งกรณีที่ต้องติดและไม่ต้องติด