7. Superpower Skills
หน้าหลัก › โมดูล 7: Superpower Skills
บทเรียน 7.3

สร้าง Custom Slash Commands

Custom slash command ให้คุณบันทึก workflow ที่ใช้บ่อยเป็นคำสั่งสั้นๆ เช่น /review, /deploy แล้วเรียกใช้ได้ทุกเมื่อ

เมื่อเรียนจบบทนี้ คุณจะ…

  • สร้างคำสั่งพิเศษ (Custom Slash Commands) ของตัวเองได้
  • กำหนดให้คำสั่งทำงานตามที่เราต้องการได้
  • ใช้ข้อมูลเพิ่มเติมกับคำสั่งที่สร้างขึ้นได้
สร้าง slash command ของตัวเองเพื่อสั่งงานซ้ำ ๆ
สร้าง slash command ของตัวเองเพื่อสั่งงานซ้ำ ๆ

ทำไมต้องมี Custom Slash Commands?

ลองนึกภาพว่าคุณกำลังทำงานซ้ำๆ เดิมๆ ทุกวัน เช่น ตรวจสอบโค้ด, สร้างโปรเจกต์ หรือแม้แต่การ Deploy (ติดตั้งโปรแกรมขึ้นเซิร์ฟเวอร์) กระบวนการเหล่านี้อาจมีหลายขั้นตอนและต้องพิมพ์คำสั่งยาวๆ บ่อยครั้งใช่ไหมครับ?

Custom Slash Commands คือตัวช่วยที่จะทำให้ชีวิตคุณง่ายขึ้นมากครับ! มันเหมือนกับการสร้าง 'ทางลัด' หรือ 'สูตรสำเร็จ' สำหรับงานที่คุณทำบ่อยๆ แทนที่จะพิมพ์คำสั่งยาวๆ หลายบรรทัด คุณก็แค่พิมพ์คำสั่งสั้นๆ เช่น /review หรือ /deploy แล้ว Claude Code ก็จะจัดการงานทั้งหมดให้คุณทันที

ประโยชน์คือช่วยให้คุณทำงานได้เร็วขึ้น ลดโอกาสเกิดข้อผิดพลาดจากการพิมพ์ผิด และทำให้ทุกคนในทีมทำงานได้มาตรฐานเดียวกัน เหมือนมีผู้ช่วยส่วนตัวที่รู้ใจและทำงานได้เป๊ะตามที่คุณสั่งเลยครับ

เหมือนกับปุ่มลัด (Shortcut Key) บนคีย์บอร์ด ที่กดปุ่มเดียวแล้วทำงานได้หลายอย่างพร้อมกันนั่นแหละครับ

เริ่มต้นสร้าง Custom Command ง่ายๆ

การสร้าง Custom Command ไม่ได้ยากอย่างที่คิดครับ! หลักการคือเราจะสร้างไฟล์ข้อความธรรมดาๆ ไฟล์หนึ่ง แล้วเขียน 'คำสั่ง' หรือ 'สิ่งที่เราอยากให้ Claude ทำ' ลงไปในไฟล์นั้น

Claude Code จะมองหาไฟล์เหล่านี้ในโฟลเดอร์พิเศษที่ชื่อว่า .claude/commands/ ครับ ดังนั้นสิ่งแรกที่เราต้องทำคือสร้างโฟลเดอร์นี้ขึ้นมาในโปรเจกต์ของคุณ

สมมติว่าคุณอยากให้ Claude ช่วยรีวิวโค้ด คุณก็จะสร้างไฟล์ชื่อ review.md แล้วเขียนคำสั่งรีวิวลงไปในนั้น เวลาคุณเรียกใช้ /review Claude ก็จะอ่านคำสั่งจากไฟล์นี้และทำงานให้คุณทันที

  1. สร้างโฟลเดอร์ชื่อ .claude ในโปรเจกต์ของคุณ (ถ้ายังไม่มี)
  2. ภายในโฟลเดอร์ .claude ให้สร้างโฟลเดอร์ย่อยชื่อ commands
  3. สร้างไฟล์ใหม่ในโฟลเดอร์ commands เช่น review.md (ชื่อไฟล์นี้จะกลายเป็นชื่อ command ของคุณ)
  4. เปิดไฟล์ review.md แล้วเขียน Prompt (คำสั่งที่คุณต้องการให้ Claude ทำงาน) ลงไป เช่น: Review การเปลี่ยนแปลงล่าสุด มองหา bug, security, performance แล้วสรุปเป็นภาษาไทย เรียงตามความสำคัญ
ชื่อไฟล์ .md สำคัญนะ เหมือนเป็นชื่อเรียกคำสั่งของคุณเลย เช่น review.md ก็จะกลายเป็น /review

ทำให้ Command ฉลาดขึ้นด้วยการรับข้อมูล (Arguments)

บางครั้งเราก็อยากให้ Command ของเรายืดหยุ่นมากขึ้นใช่ไหมครับ? เช่น เราอยากให้ Claude อธิบายโค้ด แต่เราอยากระบุว่าให้อธิบายไฟล์ไหน ไม่ใช่ทุกไฟล์ในโปรเจกต์

ตรงนี้แหละครับที่ 'Arguments' เข้ามามีบทบาท Arguments คือข้อมูลเพิ่มเติมที่เราส่งให้กับ Command ของเรา ทำให้ Command นั้นๆ สามารถทำงานได้หลากหลายและเฉพาะเจาะจงมากขึ้น

ใน Claude Code เราสามารถรับ Arguments ได้ง่ายๆ โดยการใช้คำว่า $ARGUMENTS ใน Prompt ของเราครับ เวลาคุณพิมพ์ /explain src/auth.ts เจ้า src/auth.ts นี่แหละคือ Argument ที่จะไปแทนที่ $ARGUMENTS ในไฟล์ Command ของคุณ

  1. เปิดไฟล์ command ที่คุณต้องการให้รับข้อมูล เช่น explain.md
  2. ในเนื้อหาของไฟล์ ให้พิมพ์ $ARGUMENTS ตรงตำแหน่งที่คุณต้องการให้ Claude นำข้อมูลที่ผู้ใช้ป้อนมาใส่ เช่น: อธิบายโค้ดในไฟล์ $ARGUMENTS แบบละเอียดเป็นภาษาไทย
จำไว้ว่า $ARGUMENTS จะถูกแทนที่ด้วยข้อมูลที่คุณพิมพ์หลังชื่อ command เท่านั้น! ถ้าไม่ใส่ข้อมูลอะไรหลังชื่อ command, $ARGUMENTS ก็จะว่างเปล่า

ตัวอย่างการนำไปใช้จริง: Command สำหรับ Deploy โปรเจกต์

มาลองสร้าง Command ที่ซับซ้อนขึ้นอีกนิดกันครับ สมมติว่าทีมของคุณมีขั้นตอนการ Deploy โปรเจกต์ขึ้น Production (เซิร์ฟเวอร์จริง) ที่ต้องทำหลายขั้นตอน เช่น รัน Test ก่อน, ถ้า Test ผ่านค่อย Build โปรเจกต์, แล้วค่อยส่งไฟล์ขึ้น Production และสุดท้ายก็แจ้งผลลัพธ์

แทนที่จะต้องจำและพิมพ์คำสั่งเหล่านี้ทีละขั้น เราสามารถรวมทุกอย่างไว้ใน Custom Command เดียวได้ครับ! เราจะสร้างไฟล์ deploy.md แล้วใส่ Prompt ที่บอกขั้นตอนทั้งหมดนี้ให้ Claude ทำงาน

การทำแบบนี้ช่วยให้มั่นใจได้ว่าทุกครั้งที่ Deploy กระบวนการจะเหมือนเดิมทุกประการ ลดความผิดพลาด และประหยัดเวลาได้มหาศาลเลยครับ

  1. สร้างไฟล์ใหม่ชื่อ deploy.md ในโฟลเดอร์ .claude/commands/
  2. เขียน Prompt ที่ละเอียดและเป็นลำดับขั้นตอนลงในไฟล์ deploy.md เช่น:
  3. รัน Test ทั้งหมดในโปรเจกต์ ถ้า Test ผ่าน ให้ Build โปรเจกต์สำหรับ Production จากนั้น Deploy ไฟล์ที่ Build แล้วขึ้นสู่ Production Server พร้อมทั้งแจ้งผลลัพธ์การ Deploy ว่าสำเร็จหรือไม่
ยิ่งคุณอธิบายขั้นตอนละเอียดและชัดเจนเท่าไหร่ Claude ก็จะยิ่งทำงานได้ตรงใจและแม่นยำมากขึ้นเท่านั้น!

แชร์ Custom Command ให้เพื่อนร่วมทีม

Custom Commands จะทรงพลังยิ่งขึ้นเมื่อทุกคนในทีมสามารถใช้งานร่วมกันได้ครับ! ลองคิดดูว่าถ้าทุกคนใช้ Command เดียวกันในการ Deploy หรือ Review โค้ด มันจะช่วยให้การทำงานเป็นมาตรฐานเดียวกันขนาดไหน

เนื่องจากไฟล์ Custom Commands ของเราอยู่ในโฟลเดอร์ .claude/commands/ ซึ่งเป็นส่วนหนึ่งของโปรเจกต์ คุณสามารถแชร์ Command เหล่านี้ให้เพื่อนร่วมทีมได้ง่ายๆ ผ่านระบบควบคุมเวอร์ชัน (Version Control System) อย่าง Git ครับ

เมื่อคุณสร้างหรือแก้ไข Command แล้ว เพียงแค่ Commit (บันทึกการเปลี่ยนแปลง) และ Push (ส่งโค้ดขึ้นไปบนคลังส่วนกลาง) เพื่อนร่วมทีมที่ Pull (ดึงโค้ดลงมา) ก็จะสามารถใช้ Command เดียวกันกับคุณได้ทันที ทำให้การทำงานร่วมกันราบรื่นและมีประสิทธิภาพมากขึ้นครับ

  1. หลังจากสร้างหรือแก้ไขไฟล์ command ในโฟลเดอร์ .claude/commands/ แล้ว
  2. บันทึกการเปลี่ยนแปลง (Stage) ไฟล์เหล่านั้น
  3. คอมมิต (Commit) การเปลี่ยนแปลงเข้าสู่ระบบ Git ของโปรเจกต์
  4. พุช (Push) โค้ดขึ้นไปยังคลังเก็บโค้ดส่วนกลาง (เช่น GitHub, GitLab, Bitbucket) ที่ทีมใช้ร่วมกัน
การแชร์ Command ช่วยให้ทุกคนในทีมทำงานได้มาตรฐานเดียวกัน และประหยัดเวลาได้เยอะเลยนะ เหมือนทุกคนมีคู่มือการทำงานที่อัปเดตอยู่เสมอ!
ลองใช้ Prompt นี้กับ Claude
ช่วยสร้าง custom slash command ชื่อ /deploy ที่: รัน test, ถ้าผ่านให้ build, แล้ว deploy ขึ้น production พร้อมแจ้งผล
เคล็ดลับ: เก็บ command ที่ทีมใช้ร่วมใน .claude/commands/ แล้ว commit ขึ้น git ทุกคนจะได้ใช้
สรุปบทนี้
  • สร้างไฟล์ใน .claude/commands/
  • ใช้ $ARGUMENTS รับค่า
  • commit ให้ทีมใช้ร่วม
แบบทดสอบท้ายบท
ลองตอบดู แล้วระบบจะเฉลยให้ทันที
ข้อ 1.Custom Slash Commands มีประโยชน์หลักๆ อย่างไร?
เฉลย: Custom Slash Commands ช่วยให้เราบันทึกขั้นตอนการทำงานที่ใช้บ่อยๆ ให้เป็นคำสั่งสั้นๆ เพื่อเรียกใช้ได้ง่ายและรวดเร็ว
ข้อ 2.ถ้าต้องการให้ Custom Slash Command ของเราสามารถรับข้อมูลเพิ่มเติมได้ ต้องใช้อะไร?
เฉลย: เราใช้ `$ARGUMENTS` เพื่อรับค่าหรือข้อมูลเพิ่มเติมที่ผู้ใช้พิมพ์เข้ามาพร้อมกับคำสั่ง