⚡ ระดับสูง · บทที่ 22 · อ่าน 10 นาที

Skills, Slash Commands และ Hooks

Slash Commands: คำสั่งลัดในตัว

พิมพ์ / ใน Claude Code จะเห็นเมนูคำสั่งทั้งหมด ตัวที่ใช้บ่อย:

คำสั่งทำอะไร
/initให้ Claude สำรวจโปรเจกต์แล้วร่าง CLAUDE.md ให้ (บทที่ 21)
/clearล้างบทสนทนา เริ่มบริบทใหม่
/compactบีบอัดบทสนทนายาวให้เหลือแต่สาระ — ประหยัดบริบทโดยไม่ต้องเริ่มใหม่หมด
/memoryดู/แก้ไฟล์ความจำทั้งหมดที่โหลดอยู่
/modelสลับโมเดล (หลักการเลือกเหมือนบทที่ 5)
/hooksเปิดหน้าจัดการ Hooks
/mcpดูสถานะการเชื่อมต่อเครื่องมือภายนอก (บทที่ 23)
/helpดูคำสั่งทั้งหมด

Skills: สร้างคำสั่งลัดของตัวเอง

Skill คือ “สูตรงาน” ที่เราเขียนเก็บไว้ครั้งเดียว แล้วเรียกใช้ได้ตลอดด้วย /ชื่อskill — เหมาะกับงานที่เราพิมพ์สั่งซ้ำ ๆ ท่าเดิมทุกครั้ง

จุดต่างจาก CLAUDE.md: กฎใน CLAUDE.md ถูกอ่านทุก session (เปลืองบริบทตลอดเวลา) แต่ Skill ถูกโหลดเฉพาะตอนใช้งาน — ขั้นตอนยาว ๆ จึงควรเป็น Skill ไม่ใช่กฎใน CLAUDE.md

สร้าง Skill แรก: ตัวสรุปงานประจำวัน

ขั้นที่ 1 — สร้างโฟลเดอร์ (ในโปรเจกต์ ใช้ .claude/skills/ — ถ้าอยากใช้ได้ทุกโปรเจกต์ ใช้ ~/.claude/skills/):

mkdir -p .claude/skills/daily-summary

ขั้นที่ 2 — สร้างไฟล์ SKILL.md ในโฟลเดอร์นั้น:

---
description: สรุปงานที่ทำวันนี้จากประวัติ git ใช้เมื่อผู้ใช้ขอสรุปงานประจำวัน
---

## สิ่งที่ต้องทำ

1. ดู git log ของวันนี้ทั้งหมด
2. สรุปเป็นภาษาไทย 3-5 ข้อ ว่าวันนี้ทำอะไรไปบ้าง
3. เขียนแบบที่เอาไปส่งหัวหน้าได้เลย: ขึ้นต้นแต่ละข้อด้วยกริยา ไม่มีศัพท์เทคนิคลอย ๆ
4. ปิดท้ายด้วย "งานค้าง" ถ้าเห็นว่ามีอะไรทำครึ่ง ๆ กลาง ๆ อยู่

ขั้นที่ 3 — ใช้งาน: พิมพ์ /daily-summary ได้เลย (ชื่อคำสั่งมาจากชื่อโฟลเดอร์) หรือแค่พิมพ์ “สรุปงานวันนี้ให้หน่อย” Claude ก็จะหยิบ skill นี้มาใช้เองเพราะอ่านจาก description ว่าเกี่ยวข้อง

ไอเดีย Skill ที่คุ้มค่าสร้าง

  • /review-th — รีวิวโค้ดตาม checklist ของทีม แล้วสรุปเป็นภาษาไทย
  • /new-post — สร้างไฟล์บทความใหม่พร้อมโครงตามมาตรฐานเว็บเรา
  • /pre-release — ไล่เช็คลิสต์ก่อนปล่อยงาน: เทสต์ผ่าน, build ผ่าน, ไม่มีไฟล์หลงเหลือ
✏️ ขี้เกียจเขียนเอง? ให้ Claude Code สร้าง Skill ให้
ช่วยสร้าง skill ใหม่ชื่อ [ชื่อ-skill] ไว้ที่ .claude/skills/ — หน้าที่ของมันคือ [อธิบายงานที่ทำซ้ำบ่อย] เขียน description ให้ดีพอที่คุณจะหยิบไปใช้เองถูกจังหวะ แล้วทดสอบเรียกใช้ให้ดูด้วย

Hooks: งานอัตโนมัติที่รันเองเสมอ

Skill ต้องมีคน (หรือ Claude) เรียก แต่ Hook รันเองอัตโนมัติเมื่อถึงเหตุการณ์ที่กำหนด — และนี่คือจุดสำคัญ: กฎใน CLAUDE.md Claude “พยายามทำตาม” แต่ Hook ถูกบังคับรันเสมอ 100% เพราะเป็นกลไกของโปรแกรม ไม่ใช่คำขอร้องต่อ AI

เหตุการณ์หลักที่ดักได้:

  • PreToolUse — ก่อน Claude ใช้เครื่องมือ (ดัก “ก่อนแก้ไฟล์/รันคำสั่ง” — ใช้บล็อกสิ่งต้องห้ามได้)
  • PostToolUse — หลังใช้เครื่องมือเสร็จ (เช่น จัด format โค้ดทุกครั้งหลังแก้ไฟล์)
  • Notification — เมื่อ Claude รอเราตอบ (เช่น เด้งแจ้งเตือนบนหน้าจอ)
  • Stop — เมื่อ Claude ทำงานเสร็จ

ตัวอย่างจริง: จัดระเบียบโค้ดอัตโนมัติทุกครั้งที่ Claude แก้ไฟล์

เพิ่มลงไฟล์ตั้งค่า .claude/settings.json ของโปรเจกต์ (หรือพิมพ์ /hooks แล้วตั้งผ่านเมนู):

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

แปลเป็นภาษาคน: “ทุกครั้งที่ Claude แก้หรือสร้างไฟล์ (Edit|Write) ให้รัน prettier (เครื่องมือจัดระเบียบโค้ดยอดนิยม) กับไฟล์นั้นทันที” — ต่อให้ Claude ลืม โค้ดก็เรียบร้อยเสมอ

เลือกใช้อะไรดี: สรุปใน 3 บรรทัด

  • อยากให้ Claude รู้ อะไรตลอดเวลา → CLAUDE.md (บทที่ 21)
  • อยากมี สูตรงาน เรียกใช้เมื่อต้องการ → Skill
  • อยากให้บางอย่าง เกิดขึ้นเสมอโดยไม่ต้องขอ → Hook

ข้อควรระวังเรื่อง Hook

Hook คือคำสั่งจริงที่รันในเครื่องเรา — ก่อน copy hook ของคนอื่นจากอินเทอร์เน็ตมาใช้ ต้องอ่านให้เข้าใจว่ามันรันอะไร (หลักเดียวกับที่ไม่รันสคริปต์แปลก ๆ ที่คนแปลกหน้าส่งมา) ถ้าอ่านไม่ออก วางให้ Claude อธิบายก่อน: “hook นี้ทำอะไร มีความเสี่ยงอะไรไหม”