Custom slash command: project แชร์ vs user ส่วนตัว
แนวคิด
custom slash command คือคำสั่งที่เราสร้างเองแล้วเรียกด้วย /ชื่อ เช่น /review ที่รัน checklist review ของทีม มันมีสอง scope ตามที่เก็บไฟล์ ถ้าเก็บใน .claude/commands/ ที่ repo มันคือ project-scoped ถูก version control และพร้อมใช้ให้ทุกคนที่ clone หรือ pull repo ส่วนถ้าเก็บใน ~/.claude/commands/ ในโฮมของแต่ละคน มันคือ personal ที่ไม่ถูกแชร์ผ่าน version control
พิจารณาโจทย์ตรง ๆ ว่า อยากให้ /review พร้อมใช้กับทุก developer เมื่อ clone repo ควรวางไฟล์ที่ไหน คำตอบคือ .claude/commands/ ใน repo เพราะนั่นคือที่เดียวที่ commit แล้วแจกจ่ายได้อัตโนมัติ ส่วน ~/.claude/commands/ เหมาะกับคำสั่งส่วนตัวที่ไม่อยากให้กระทบทีม การใส่ command definition ลง CLAUDE.md ไม่ถูกต้อง เพราะ CLAUDE.md เก็บ instruction และ context ไม่ใช่ตัวคำสั่ง และไม่มีกลไก .claude/config.json ที่มี commands array อย่างที่บาง choice หลอกไว้
ทำไมสำคัญ
ต้องรู้ความเปลี่ยนแปลงสำคัญที่เอกสารจริงระบุ คือ custom command ถูกรวมเข้ากับ skill แล้ว ไฟล์ .claude/commands/deploy.md กับ skill ที่ .claude/skills/deploy/SKILL.md ต่างก็สร้าง /deploy และทำงานเหมือนกัน ไฟล์ .claude/commands/ เดิมยังใช้ได้ต่อ ไม่พัง แต่ skill ให้ฟีเจอร์เพิ่ม เช่น มีโฟลเดอร์แนบไฟล์ประกอบ มี frontmatter คุมว่าใครเรียกได้ และให้ Claude โหลดอัตโนมัติเมื่อเกี่ยว ถ้า skill กับ command ชื่อชนกัน skill จะชนะ
สาระสำหรับผู้เรียนคือ หลักการ scope ยังเหมือนเดิม project vs user ยังตัดสินเรื่อง "ใครได้ใช้" แต่รูปแบบไฟล์แนะนำที่ทันสมัยคือ skill ในทั้ง .claude/skills/ และ ~/.claude/skills/ ดังนั้นเวลาเจอโจทย์ให้แชร์คำสั่งทั้งทีม คำตอบยังคงเป็น "วางในไดเรกทอรีระดับ project ที่ commit ได้" ไม่ว่าจะเป็น .claude/commands/ หรือ .claude/skills/
ตัวอย่าง
# แชร์ทั้งทีม — commit เข้า repo
.claude/commands/review.md → เรียก /review
.claude/skills/review/SKILL.md → เรียก /review เช่นกัน (รูปแบบใหม่)
# ส่วนตัว — ไม่ถูกแชร์ผ่าน version control
~/.claude/commands/scratch.md → เรียก /scratch เฉพาะเครื่องเรา
# .claude/commands/review.md — ไฟล์ markdown ธรรมดา ชื่อไฟล์ = ชื่อคำสั่ง
รัน checklist review มาตรฐานของทีมกับ diff ปัจจุบัน:
1. ตรวจ error handling ที่ขาด
2. ตรวจค่า hardcode
3. ตรวจว่าเทสต์ครอบ path ใหม่แล้ว
เช็คความเข้าใจ
ต้องการให้ /review พร้อมใช้กับทุก developer เมื่อ clone repo ควรวางไฟล์คำสั่งที่ไหน และทำไมไม่ใช่ CLAUDE.md
ความสัมพันธ์ระหว่าง .claude/commands/ กับ skill เป็นอย่างไรในเอกสารปัจจุบัน