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

Hooks — ทำงานอัตโนมัติทุก Action

Hooks คือ script ที่รันอัตโนมัติเมื่อ Claude ทำบางอย่าง เช่น หลังแก้ไฟล์ให้รัน test, หลังเสร็จงานให้แจ้งเตือน — นี่คือ automation ตัวจริง

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

  • เข้าใจความหมายของ Hooks
  • บอกประเภทของ Hooks ได้
  • ตั้งค่า Hooks พื้นฐานใน settings.json ได้
Hooks สั่งให้ทำงานอัตโนมัติเมื่อเกิดเหตุการณ์
Hooks สั่งให้ทำงานอัตโนมัติเมื่อเกิดเหตุการณ์

Hooks คืออะไร? ทำไมต้องใช้?

ลองจินตนาการว่าคุณมีเลขาส่วนตัวที่ฉลาดมาก ๆ ชื่อ Claude เลขาคนนี้ไม่เพียงแค่ทำงานที่คุณสั่ง แต่ยังรู้ว่าหลังจากทำงานชิ้นหนึ่งเสร็จแล้ว ควรจะทำอะไรต่อโดยอัตโนมัติ นี่แหละครับคือหลักการทำงานของ Hooks (ฮุกส์) ใน Claude Code

Hooks คือชุดคำสั่ง (script) ที่เราตั้งค่าไว้ล่วงหน้า เพื่อให้ Claude รันมันโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่างขึ้น เช่น พอ Claude แก้ไขไฟล์โค้ดเสร็จปุ๊บ ให้รันการทดสอบ (test) ทันที หรือพอทำงานใหญ่ ๆ เสร็จแล้ว ให้ส่งข้อความแจ้งเตือนเรา การใช้ Hooks ช่วยให้งานของคุณเป็นระบบมากขึ้น ประหยัดเวลา ลดความผิดพลาด และทำให้ Claude เป็นผู้ช่วยที่ทำงานได้เต็มประสิทธิภาพสุด ๆ ไปเลยครับ

Hooks ช่วยให้งานซ้ำ ๆ กลายเป็นเรื่องอัตโนมัติ คุณจะได้มีเวลาไปโฟกัสกับงานที่สำคัญกว่า

รู้จักประเภทของ Hooks ใน Claude

ใน Claude Code มี Hooks หลัก ๆ อยู่ 3 ประเภท ที่จะทำงานในจังหวะที่แตกต่างกัน ลองนึกภาพว่าเป็นจุดเช็กพอยต์ในกระบวนการทำงานของ Claude นะครับ

1. PreToolUse (ก่อนใช้เครื่องมือ): Hook ประเภทนี้จะทำงาน 'ก่อน' ที่ Claude จะใช้เครื่องมือบางอย่าง เช่น ก่อนที่ Claude จะเริ่มแก้ไขไฟล์ คุณอาจจะใช้ Hook นี้เพื่อตรวจสอบว่าไฟล์นั้นล็อกอยู่หรือไม่ หรือมีสิทธิ์แก้ไขได้หรือเปล่า เหมือนกับการที่เลขาตรวจสอบเอกสารก่อนส่งให้เจ้านายเซ็น เพื่อให้แน่ใจว่าทุกอย่างถูกต้อง

2. PostToolUse (หลังใช้เครื่องมือ): Hook นี้จะทำงาน 'หลังจาก' ที่ Claude ใช้เครื่องมือเสร็จแล้ว เช่น หลังจากที่ Claude แก้ไขไฟล์โค้ดเสร็จเรียบร้อย นี่เป็นประเภทที่นิยมใช้มากที่สุด เพราะเรามักจะอยากทำอะไรบางอย่างต่อจากงานที่เพิ่งเสร็จ เช่น รันการทดสอบโค้ด หรือจัดรูปแบบโค้ดให้สวยงาม

3. Stop (เมื่อหยุดทำงาน): Hook ประเภทนี้จะทำงาน 'เมื่อ' Claude ทำงานทั้งหมดที่ได้รับมอบหมายเสร็จสิ้นแล้ว ไม่ว่าจะเป็นงานเล็กหรืองานใหญ่ เหมือนกับการที่เลขาแจ้งคุณว่างานทั้งหมดที่สั่งไว้เสร็จเรียบร้อยแล้ว คุณอาจจะใช้ Hook นี้เพื่อส่งข้อความแจ้งเตือนตัวเองว่างานเสร็จแล้ว หรือสั่งให้ Claude ทำการ Deploy (นำโค้ดขึ้นระบบจริง) เป็นต้น

การเลือกใช้ Hook ให้ถูกประเภท จะช่วยให้งานของคุณราบรื่นและมีประสิทธิภาพสูงสุด

การตั้งค่า Hooks: ไฟล์ settings.json คือหัวใจ

การจะบอก Claude ว่าต้องทำอะไรเมื่อไหร่ เราจะต้องไปเขียนคำสั่งในไฟล์พิเศษที่ชื่อว่า settings.json ครับ ไฟล์นี้เปรียบเสมือน 'คู่มือการทำงานส่วนตัว' ของ Claude ที่เราสามารถปรับแต่งได้เอง

ไฟล์ settings.json เป็นไฟล์รูปแบบ JSON ซึ่งเป็นวิธีจัดเก็บข้อมูลที่อ่านง่ายสำหรับทั้งคนและคอมพิวเตอร์ คุณจะต้องระบุว่าคุณต้องการให้ Hook ทำงานในประเภทไหน (เช่น PostToolUse) และเมื่อเกิดเหตุการณ์อะไรขึ้น (เช่น แก้ไขไฟล์) แล้วจะให้รันคำสั่งอะไร

ระวังเรื่องไวยากรณ์ (Syntax) ของ JSON นะครับ ถ้ามีวงเล็บปีกกาหรือเครื่องหมายคอมมาผิดที่นิดเดียว Claude อาจจะอ่านการตั้งค่าไม่ได้

ตัวอย่างแรก: รัน Test อัตโนมัติหลังแก้โค้ด

มาดูตัวอย่างยอดนิยมกันครับ สมมติว่าคุณอยากให้ Claude รันคำสั่ง npm test (ซึ่งเป็นคำสั่งสำหรับรันการทดสอบโค้ด) ทุกครั้งที่ Claude แก้ไขหรือเขียนไฟล์เสร็จแล้ว คุณจะต้องเพิ่มส่วนนี้เข้าไปในไฟล์ settings.json ของคุณ:

ในโค้ดนี้ "hooks" คือส่วนที่เราจะกำหนด Hook ทั้งหมด "PostToolUse" บอกว่า Hook นี้จะทำงานหลังใช้เครื่องมือเสร็จ "matcher": "Edit|Write" คือเงื่อนไขที่บอกว่าให้ทำงานเมื่อ Claude 'Edit' (แก้ไข) หรือ 'Write' (เขียน) ไฟล์ และ "hooks": [{"type":"command","command":"npm test"}] คือคำสั่งที่เราต้องการให้รัน ซึ่งในที่นี้คือรันคำสั่ง npm test นั่นเองครับ

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

  1. ขั้นที่ 1: เปิดไฟล์ settings.json โดยปกติแล้วไฟล์นี้จะอยู่ในโฟลเดอร์โปรเจกต์ของคุณ
  2. ขั้นที่ 2: เพิ่มโค้ด Hooks นี้เข้าไปในไฟล์ settings.json ของคุณ (ถ้ามีส่วน "hooks" อยู่แล้ว ให้เพิ่มเข้าไปในส่วนนั้น)
  3. ขั้นที่ 3: บันทึกไฟล์ settings.json
  4. ขั้นที่ 4: ลองให้ Claude แก้ไขไฟล์โค้ดอะไรก็ได้ในโปรเจกต์ของคุณ แล้วสังเกตว่า Claude จะรัน npm test ให้โดยอัตโนมัติ
คำสั่ง npm test จะทำงานได้ก็ต่อเมื่อโปรเจกต์ของคุณมีการตั้งค่าการทดสอบไว้แล้วนะครับ

ลองให้ Claude ช่วยตั้งค่า Hooks เอง

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

เพียงแค่คุณบอก Claude อย่างชัดเจนว่าคุณต้องการให้ Hook ทำอะไร เมื่อไหร่ และรันคำสั่งอะไร Claude ก็จะสร้างโค้ดที่ถูกต้องให้คุณนำไปใส่ในไฟล์ settings.json ได้เลย วิธีนี้ช่วยให้คุณไม่ต้องกังวลเรื่องไวยากรณ์ของ JSON มากนัก

  1. ขั้นที่ 1: คัดลอก Prompt ตัวอย่างนี้: 'ช่วยตั้งค่า hook ใน settings.json ให้หน่อย: ทุกครั้งที่แก้ไฟล์ .ts (ไฟล์ TypeScript) ให้รันคำสั่ง prettier และ eslint อัตโนมัติ'
  2. ขั้นที่ 2: วาง Prompt ที่คัดลอกมาลงในช่องแชทของ Claude แล้วกด Enter
  3. ขั้นที่ 3: Claude จะสร้างโค้ด JSON สำหรับ Hook ที่คุณต้องการ คุณสามารถคัดลอกโค้ดนั้นไปวางในไฟล์ settings.json ของคุณได้เลย แต่ควรตรวจสอบโค้ดที่ Claude สร้างให้ก่อนเสมอ
Prompt ที่ชัดเจนและเฉพาะเจาะจง จะช่วยให้ Claude สร้างโค้ด Hook ที่ตรงใจคุณมากที่สุด

เคล็ดลับ Hooks ยอดนิยมและสรุป

Hooks มีประโยชน์มากในหลายสถานการณ์ นี่คือ Hooks ยอดนิยมที่คุณอาจจะเจอ:

1. Auto-format โค้ด: หลังแก้ไฟล์ ให้รันคำสั่งจัดรูปแบบโค้ด (เช่น Prettier) เพื่อให้โค้ดสวยงามและเป็นระเบียบเสมอ

2. รัน Test หลังเขียนโค้ด: หลังเขียนหรือแก้ไขโค้ด ให้รันการทดสอบอัตโนมัติ เพื่อเช็กว่าโค้ดใหม่ไม่ทำให้ส่วนอื่น ๆ เสียหาย

3. แจ้งเตือนเมื่อเสร็จงานยาว ๆ: เมื่อ Claude ทำงานที่ใช้เวลานานเสร็จ ให้ส่งข้อความแจ้งเตือนคุณผ่านช่องทางที่คุณตั้งค่าไว้

สรุปแล้ว Hooks คือพลังวิเศษที่ทำให้ Claude Code เป็นผู้ช่วยที่ทำงานแบบอัตโนมัติได้อย่างแท้จริง คุณสามารถกำหนดให้ Claude ทำอะไรบางอย่างโดยอัตโนมัติในจังหวะต่าง ๆ ของการทำงาน ไม่ว่าจะเป็นก่อนใช้เครื่องมือ หลังใช้เครื่องมือ หรือเมื่อทำงานเสร็จสิ้น การตั้งค่าทั้งหมดนี้ทำได้ง่าย ๆ ในไฟล์ settings.json และคุณยังสามารถให้ Claude ช่วยสร้างโค้ดสำหรับ Hooks ให้ได้อีกด้วย!

ลองคิดดูว่างานประจำวันอะไรที่คุณทำซ้ำ ๆ แล้วให้ Hooks ช่วยจัดการแทน
ลองใช้ Prompt นี้กับ Claude
ช่วยตั้งค่า hook ใน settings.json ให้: ทุกครั้งที่แก้ไฟล์ .ts ให้รัน prettier และ eslint อัตโนมัติ
เคล็ดลับ: hook ที่นิยม: auto-format หลังแก้, รัน test หลังเขียนโค้ด, แจ้งเตือนเมื่อเสร็จงานยาวๆ
สรุปบทนี้
  • Hook = script อัตโนมัติเมื่อ Claude ทำ action
  • มี PreToolUse, PostToolUse, Stop
  • ตั้งใน settings.json
แบบทดสอบท้ายบท
ลองตอบดู แล้วระบบจะเฉลยให้ทันที
ข้อ 1.Hooks มีประโยชน์หลักๆ คืออะไร?
เฉลย: Hooks ถูกออกแบบมาให้รันคำสั่งอัตโนมัติเมื่อ Claude ทำบางอย่าง เช่น แก้ไขไฟล์ หรือทำงานเสร็จ
ข้อ 2.Hook ชนิดใดที่จะทำงาน 'หลังจาก' Claude ใช้เครื่องมือเสร็จแล้ว (เช่น แก้ไขไฟล์เสร็จ)?
เฉลย: PostToolUse จะทำงานหลังจาก Claude ใช้เครื่องมือเสร็จแล้ว เช่น หลังแก้ไฟล์เสร็จจึงรัน test