Skills, commands และ hooks ส่วนเสริมของ harness
skill, slash command, hook และ plugin คือสี่วิธีต่อขยาย harness ที่ห่อ AI อยู่ บทนี้แยกให้เห็นชัดด้วยคำถามเดียว ใครเป็นคนสั่ง skill คือความรู้ที่ AI เลือกหยิบเอง command คือสิ่งที่คุณกดเรียกเอง hook คือกฎที่ระบบบังคับรันทุกครั้ง และ plugin คือการแพ็กทั้งหมดเป็นชุด
Skills, commands และ hooks ส่วนเสริมของ harness
คุณเคยพิมพ์ prompt เดิมซ้ำ ๆ ไหม เช่น "ช่วย review งานนี้แบบละเอียด ดูความเสี่ยงก่อน สรุปเป็น bullet อย่าแก้เองถ้าไม่จำเป็น" หรือ "ช่วยเขียนบทความตาม voice guide นี้ เปิดด้วย hook มีตัวอย่างไทย ห้ามใช้ภาษาทางการ" พิมพ์ครั้งแรกยังโอเค ครั้งที่ห้าก็เริ่มน่าเบื่อ ครั้งที่สิบเริ่มมีเวอร์ชันเพี้ยน เพราะคุณลืมบรรทัดหนึ่งไป
นี่คือจุดที่ skill เริ่มมีประโยชน์
ถ้า prompt คือการบอก AI ว่าครั้งนี้ต้องทำอะไร skill คือการเก็บ "วิธีทำงานแบบหนึ่ง" ไว้เป็นของเรียกซ้ำได้ เหมือนคุณมี checklist, คู่มือสั้น ๆ, template, ตัวอย่าง, หรือ script เล็ก ๆ ที่ AI โหลดมาใช้เมื่อเจองานประเภทนั้น แทนที่คุณต้อง paste ใหม่ทุกครั้ง
บทก่อนเราพูดเรื่อง token ว่าอย่ายัดทุกอย่างเข้า context ตลอดเวลา skill แก้ปัญหานี้ได้สวย เพราะ description สั้น ๆ ของ skill อยู่ให้ AI เห็นว่า skill นี้มีอยู่ แต่เนื้อหาเต็มของ skill จะโหลดก็ต่อเมื่อใช้จริง long reference จึงไม่ต้องกิน context ทุก turn
บทนี้จริง ๆ พูดถึงสี่อย่างที่ต่อขยาย harness
ย้อนกลับไปเรื่อง harness ใน section ก่อน harness คือระบบที่ห่อ model อยู่ คอยป้อนบทสนทนา ยื่นเครื่องมือ และจัดการทุกอย่างรอบ ๆ ตัว model สิ่งที่บทนี้จะสอนคือสี่วิธีที่คุณ "ต่อขยาย" harness ตัวนั้นให้ทำงานแบบที่คุณอยากได้ และกุญแจที่ทำให้ไม่สับสนคือถามคำถามเดียว ใครเป็นคนสั่งให้มันทำงาน
- skill คือความรู้และขั้นตอนที่ AI เลือกหยิบมาใช้เอง เมื่อมันคิดว่าเกี่ยวกับงานตรงหน้า คนสั่งคือ AI
- slash command คือคำสั่งที่คุณพิมพ์
/เรียกเอง คนสั่งคือคุณ - hook คือกฎที่ระบบลั่นไกให้เองทุกครั้งตามจังหวะที่ตั้งไว้ คนสั่งไม่ใช่ทั้ง AI และไม่ใช่คุณในตอนนั้น แต่คือระบบที่ทำตามกฎ
- plugin คือกล่องที่แพ็กสามอย่างข้างบนรวมกันเป็นชุดเดียว เพื่อแชร์และติดตั้งทีเดียว
ทั้งสี่อย่างจริง ๆ คือข้อความและคำสั่งในไฟล์ .md หรือไฟล์ตั้งค่าที่เปิดอ่านได้ ไม่มีเวทมนตร์ ความต่างมีแค่ใครเป็นคนกดปุ่มเริ่ม และเราจะไล่ทีละอย่าง
💡 ใจความสำคัญ: อย่าจำสี่อย่างนี้เป็นศัพท์สี่ตัว ให้จำเป็นคำถามเดียว ใครเป็นคนสั่ง skill คือ AI เลือกเอง command คือคุณกดเอง hook คือระบบบังคับทุกครั้ง plugin คือเอาทั้งหมดมาแพ็กรวมกัน
Skill คืออะไรในภาษาคน
ใน Claude Code, skill คือโฟลเดอร์หนึ่งที่มีไฟล์หลักชื่อ SKILL.md ข้างในเป็นข้อความ markdown ธรรมดา ด้านบนอาจมี frontmatter ไว้บอกชื่อ คำอธิบาย วิธีเรียกใช้ และสิทธิ์บางอย่าง ด้านล่างคือคำสั่งที่บอก Claude ว่าเมื่อใช้ skill นี้ให้ทำอะไร
พูดง่าย ๆ skill คือ prompt ที่ถูกจัดเก็บเป็นไฟล์ มีชื่อ มีคำอธิบาย และเรียกใช้ซ้ำได้
แต่ skill ดีกว่า prompt ธรรมดา 3 อย่าง
อย่างแรก มันมี description ให้ Claude ใช้ตัดสินว่าเมื่อไหร่ควรโหลด skill นี้เอง ถ้า description เขียนดี คุณแค่ถามงานตามธรรมชาติ Claude ก็อาจหยิบ skill ที่เกี่ยวข้องมาใช้โดยไม่ต้องบอกชื่อ
อย่างที่สอง คุณเรียกมันเองได้ด้วย slash เช่น /summarize-changes หรือ /debug เหมือนกดปุ่ม workflow ที่เตรียมไว้แล้ว
อย่างที่สาม skill มีไฟล์ประกอบได้ เช่น reference, examples, template หรือ scripts ทำให้ SKILL.md สั้นและบอกทาง ส่วนรายละเอียดเยอะ ๆ เก็บแยกไว้ให้ AI เปิดอ่านเฉพาะตอนจำเป็น
💡 ใจความสำคัญ: skill ไม่ใช่พลังลับของ AI มันคือคำสั่งที่คุณเก็บเป็นไฟล์ เพื่อให้ AI โหลดมาใช้ซ้ำอย่างเป็นระบบ
จุดที่ต้องจำคือ skill ยังทำงานผ่าน context เหมือนเดิม เมื่อ skill ถูกใช้ เนื้อหา SKILL.md จะถูกใส่เข้า conversation เป็นข้อความหนึ่งก้อน และอยู่กับ session ไปเรื่อย ๆ ตามกฎ context และ compaction ดังนั้น skill ที่ดีควรกระชับ ไม่ใช่เอาหนังสือทั้งเล่มมายัดไว้ในไฟล์เดียว
เมื่อไหร่ควรทำ skill แทน prompt
ไม่ใช่ทุก prompt ควรถูกทำเป็น skill ถ้าคุณจะใช้ครั้งเดียว พิมพ์ prompt ธรรมดาเถอะ ง่ายกว่า
skill คุ้มเมื่อมีอาการพวกนี้
- คุณ paste ขั้นตอนเดิมซ้ำหลายครั้ง
- งานมี checklist ที่ห้ามลืม
- งานต้องทำตาม voice guide, policy, format หรือมาตรฐานเฉพาะ
- งานต้องเปิดไฟล์ reference หรือ template เดิมบ่อย ๆ
- งานมี script เล็ก ๆ ที่ควรรันประกอบ
- คุณอยากให้คนในทีมทำงานแบบเดียวกัน
CLAUDE.mdเริ่มยาวเพราะใส่ procedure เยอะเกินไป
ตัวอย่างง่าย ๆ สำหรับเว็บ AI ภาษาคน skill หนึ่งอาจชื่อ v3-chapter-writer ข้างในบอกว่า ก่อนเขียนให้อ่าน _brief.md, _coverage.md, voice guide, agenda leaf แล้วเขียนบทภาษาไทยตามโครง v3 พร้อม self-check อีก skill หนึ่งอาจชื่อ lens-a-readability ใช้ตรวจบทจากมุมคนอ่านออฟฟิศไทยว่าอ่านจบไหม
ถ้างานเป็นความจริงถาวรของโปรเจกต์ เช่น "ใช้ฟอนต์นี้" หรือ "สีหลักคืออะไร" ใส่ CLAUDE.md หรือ design doc ดีกว่า แต่ถ้างานเป็นขั้นตอนที่เรียกใช้เมื่อจำเป็น เช่น "เขียนบทใหม่หนึ่งบท" หรือ "review ด้วย lens A" ทำเป็น skill จะเหมาะกว่า
ลองทำดู: หา prompt ที่ควรกลายเป็น skill
เปิดประวัติแชทหรือไฟล์โน้ต prompt ของคุณ แล้วถามตัวเอง 3 ข้อ
1. ฉันเคยพิมพ์ prompt นี้เกิน 3 ครั้งไหม
2. ถ้าลืมบรรทัดหนึ่ง ผลงานจะเสียคุณภาพไหม
3. คนอื่นในทีมควรทำตามวิธีเดียวกันไหม
ถ้าตอบว่าใช่ 2 ข้อขึ้นไป งานนั้นน่าจะเป็น skill ได้
Skill ไม่ใช่เวทมนตร์ และมันพังได้
skill ทำให้ AI ดูเก่งขึ้น เพราะมันให้คำสั่งที่ชัดกว่าและสม่ำเสมอกว่า แต่ไม่ได้ทำให้ AI กลายเป็นผู้เชี่ยวชาญจริงแบบมนุษย์ และไม่ได้รับประกันว่าจะทำถูกทุกครั้ง
skill พังได้หลายแบบ
description ไม่ชัด Claude ไม่รู้ว่าควรใช้ skill เมื่อไหร่ skill เลยไม่ auto-trigger หรือ trigger ผิดงาน
คำสั่งใน skill กว้างเกินไป เช่น "ทำให้ดีที่สุด" หรือ "เขียนให้ดี" แบบนี้ไม่ต่างจาก prompt ลอย ๆ skill ที่ดีต้องบอกขั้นตอน ผลลัพธ์ที่ต้องการ และข้อห้ามที่ชัด
skill ใหญ่เกินไป พอโหลดแล้วกิน context เยอะ หรือหลัง compaction เนื้อหาบางส่วนอาจถูกเก็บไว้ไม่ครบ เอกสาร Claude Code ระบุว่าหลัง compaction จะ re-attach skill ล่าสุดภายใต้ token budget ถ้าคุณ invoke skill เยอะมาก skill เก่าอาจหลุดได้
ใช้ skill ผิดประเภท เอา workflow ที่ควรให้คนกดเอง เช่น deploy, commit, ส่ง Slack ไปปล่อยให้ Claude auto-trigger แบบนี้เสี่ยง เพราะ AI อาจคิดว่างานพร้อมแล้ว ทั้งที่คุณยังไม่อยากให้ลงมือ
ดังนั้น skill ที่ดีไม่ใช่ skill ที่ยาวที่สุด แต่คือ skill ที่เล็กพอ ชัดพอ และมีขอบเขตพอให้ AI ใช้ถูกงาน
💡 ใจความสำคัญ: skill เพิ่มความสม่ำเสมอ ไม่ได้เพิ่มความจริงแท้ คุณยังต้องตรวจผลลัพธ์ โดยเฉพาะ skill ที่แก้ไฟล์ รันคำสั่ง หรือส่งข้อมูลออกนอกเครื่อง
Auto-trigger กับ manual invoke ต่างกันยังไง
skill มี 2 วิธีถูกใช้
วิธีแรกคือ manual invoke คุณเรียกเองด้วย /skill-name เช่น /summarize-changes หรือ /v3-chapter-writer 3.4 แบบนี้คุณคุมชัดว่าเมื่อไหร่ skill ถูกใช้ เหมาะกับงานที่มีผลข้างเคียงหรืออยากกดเอง เช่น deploy, commit, publish, send message
วิธีที่สองคือ auto-trigger Claude เห็น description ของ skill แล้วตัดสินใจเองว่างานนี้เกี่ยวกับ skill นั้น จึงโหลดมาใช้ เหมาะกับ guideline หรือความรู้ที่อยากให้ AI หยิบเมื่อเกี่ยว เช่น style guide, API convention, review lens, document formatting
ใน SKILL.md มี field ช่วยคุมสองแบบนี้ได้ ตัวสำคัญคือ disable-model-invocation: true ถ้าตั้งเป็น true Claude จะไม่เรียก skill เอง คุณเท่านั้นที่เรียกได้ อีกตัวคือ user-invocable: false ใช้กับ skill ที่เป็นความรู้เบื้องหลัง ไม่จำเป็นต้องโผล่ในเมนูให้คนกด
ถ้าจะจำให้สั้น ให้คิดแบบนี้
- งานที่ "รู้เมื่อเกี่ยว" ให้ auto-trigger ได้
- งานที่ "ลงมือแล้วมีผล" ให้คนกดเอง
- งานที่ "อันตรายถ้า trigger ผิดเวลา" ให้ปิด model invocation
Slash commands คือคำสั่งที่คุณกดเรียกเอง
มาถึงเสาที่สอง พอพูดถึง skill จะเจอคำว่า slash command เพราะใน Claude Code คุณพิมพ์ / แล้วตามด้วยชื่อคำสั่ง เช่น /help, /clear, /compact, /context, /debug, /plugin จุดร่วมของมันคือ คนกดเรียกคือคุณ ไม่ใช่ AI
ตรงนี้มีความสับสนเล็กน้อย เพราะคำสั่งที่ขึ้นต้นด้วย slash มี 2 ชนิด
ชนิดแรกคือ built-in command เป็นคำสั่งที่ CLI ทำงานด้วย logic ของตัวเอง เช่น /clear ล้าง context, /context แสดงการใช้ context, /model เปลี่ยน model, /permissions ตั้ง permission พวกนี้ไม่ใช่ prompt ที่ส่งให้ Claude แต่มักเป็นฟังก์ชันของเครื่องมือ
ชนิดที่สองคือ skill หรือ bundled skill เป็น prompt-based workflow ที่ถูกเรียกด้วย slash เหมือนกัน เช่น /debug, /code-review, /batch, /loop, /claude-api หรือ skill ที่คุณสร้างเองใน .claude/skills/<name>/SKILL.md
ความต่างคือ built-in command เหมือนปุ่มระบบ ส่วน skill command เหมือนแฟ้มขั้นตอนที่ส่งให้ Claude อ่านแล้วทำงาน แต่ทั้งสองชนิดเหมือนกันตรงที่คุณเป็นคนกดเรียก จุดนี้คือเส้นแบ่งจาก skill แบบ auto-trigger ที่ AI หยิบเอง
เอกสาร Claude Code บอกว่า custom commands เดิมใน .claude/commands/ ยังใช้ได้ แต่ตอนนี้ skills เป็นทางที่แนะนำกว่า เพราะรองรับไฟล์ประกอบ frontmatter การ auto-trigger และการจัดเป็น plugin ได้ดีกว่า
ลองทำดู: แยกคำสั่งในเมนู /
เปิด Claude Code แล้วพิมพ์ / ดูรายการคำสั่ง ลองสังเกตว่าอะไรเป็น built-in command และอะไรถูก mark ว่า Skill ถ้าเจอ skill ให้ถามตัวเองว่า "ถ้าเปิดไฟล์ skill นี้ได้ มันน่าจะมีขั้นตอนอะไรอยู่ข้างใน" การมองแบบนี้จะทำให้ slash command ไม่ดูเป็นเวทมนตร์อีกต่อไป
Skill อยู่ที่ไหน และแชร์ยังไง
ตำแหน่งของ skill บอกว่าใครใช้ได้
personal skill อยู่ที่ ~/.claude/skills/<skill-name>/SKILL.md ใช้ได้ทุกโปรเจกต์ของคุณ เหมาะกับวิธีทำงานส่วนตัว เช่น style การ review, วิธีสรุป meeting, วิธีเขียน report
project skill อยู่ที่ .claude/skills/<skill-name>/SKILL.md ใน repo ใช้กับโปรเจกต์นั้น เหมาะกับ workflow เฉพาะทีม เช่น วิธีเขียนบท v3, วิธี run app, วิธี deploy staging
plugin skill อยู่ใน plugin และมี namespace เช่น /my-plugin:review เหมาะกับของที่อยากแชร์ข้ามโปรเจกต์ ข้ามทีม หรือแจกผ่าน marketplace
managed skill มาจากการตั้งค่าระดับองค์กร เหมาะกับบริษัทที่อยากให้ทุกคนมี policy หรือ workflow เดียวกัน
ไฟล์ skill เองมักมีหน้าตาประมาณนี้
---
description: Review a v3 chapter for readability as a Thai office worker.
disable-model-invocation: true
---
Read the assigned chapter.
Check whether the first 3 sentences pull the reader in.
Flag jargon before it is introduced.
List boring stretches and suggested fixes.
Return a verdict: pass or revise.
สังเกตว่ามันคือ markdown อ่านได้ เปิดดูได้ แก้ได้ ไม่มีอะไรลึกลับ
ความปลอดภัย: เปิดอ่านก่อนเชื่อ
จุดที่ต้องจริงจังที่สุดคือ skill และ plugin จากคนอื่น
skill ธรรมดาอาจเป็นแค่ข้อความ แต่ skill สามารถมี script ประกอบได้ สามารถใช้ dynamic context injection เพื่อรันคำสั่งก่อนส่งเนื้อหาให้ Claude ได้ และสามารถตั้ง allowed-tools เพื่อ pre-approve tool บางอย่างตอน skill active ได้ เอกสาร Claude Code เตือนชัดว่า project skill ที่มี allowed-tools จะมีผลหลังคุณ trust workspace ดังนั้นควร review project skills ก่อน trust repo
แปลเป็นภาษาคนคือ ถ้าคุณติดตั้ง skill จาก GitHub หรือรับ repo จากคนอื่น อย่าเพิ่งคิดว่า "ก็แค่ prompt" ให้เปิดอ่านก่อน
เช็กอย่างน้อย 5 จุด
SKILL.mdสั่งให้ทำอะไร- มี
allowed-toolsหรือdisallowed-toolsไหม - มีบรรทัดที่ขึ้นต้นด้วย
!เพื่อรันคำสั่ง shell ไหม - มีโฟลเดอร์
scripts/หรือไฟล์ executable ไหม - skill นี้ส่งข้อมูลออกนอกเครื่องไหม เช่นเรียก
curl,gh, API, Slack, email
ถ้าอ่านแล้วไม่เข้าใจ อย่าเพิ่งรัน โดยเฉพาะ skill ที่แตะ production, credential, customer data, finance, หรือข้อมูลบริษัท เรื่องข้อมูลและ permission mode จะลงลึกใน บทวิจารณญาณและความปลอดภัย แต่กฎเบื้องต้นคือ ของที่ให้ AI รันแทนคุณต้องอ่านได้และควรอ่านก่อน
💡 ใจความสำคัญ: skill ที่ดีควรโปร่งใสจนคุณเปิดอ่านแล้วเข้าใจว่า AI จะทำอะไร ถ้า skill ซ่อนพฤติกรรมไว้ใน script หรือคำสั่งที่คุณไม่เข้าใจ ให้ถือว่าเสี่ยงก่อน
Plugin คือชั้นเหนือ skill
ถ้า skill คือขั้นตอนหนึ่ง plugin คือกล่องรวมของหลายอย่าง
ใน Claude Code, plugin สามารถ bundle skills, agents, hooks และ MCP servers เข้าด้วยกัน แล้วติดตั้งเป็นชุดเดียวได้ (ตัว hook ที่อยู่ในลิสต์นี้ เราจะพูดถึงเต็ม ๆ ในหัวข้อถัดไป) เหมาะกับของที่อยากแชร์จริงจัง เช่น plugin สำหรับ GitHub workflow, plugin สำหรับภาษา programming หนึ่ง, plugin สำหรับทีม content ที่มี writer skill, reviewer skill, hook ตรวจ format, และ agent เฉพาะทาง
ความต่างระหว่าง standalone .claude/ กับ plugin คือขนาดและการแจกจ่าย
Standalone เหมาะกับของส่วนตัว โปรเจกต์เดียว ทดลองเร็ว ชื่อสั้น เช่น /review
Plugin เหมาะกับของที่แชร์หลายโปรเจกต์ ต้อง version, update, distribute หรือไม่อยากให้ชื่อชนกับของคนอื่น จึงมี namespace เช่น /my-plugin:review
ตลาด plugin หรือ marketplace คือ catalog ให้คุณ browse และ install plugin ที่คนอื่นทำไว้ เอกสาร Claude Code ระบุว่า official Anthropic marketplace มีให้ browse ผ่าน /plugin และติดตั้งได้ เช่น /plugin install github@claude-plugins-official ส่วน community หรือ marketplace อื่นต้อง add marketplace ก่อน แล้วค่อย install plugin ทีละตัว
คิดเหมือน app store แต่สำหรับความสามารถของ Claude Code เพิ่มร้านก่อน ถึง browse ได้ จากนั้นค่อยเลือกติดตั้ง app แต่ละตัว ไม่ใช่เพิ่ม marketplace แล้วทุกอย่างเข้ามาในเครื่องทันที
สร้าง skill เองควรเริ่มยังไง
อย่าเริ่มจากการทำ skill ใหญ่ เริ่มจาก prompt ที่คุณใช้ซ้ำจริง ๆ หนึ่งอัน
ขั้นตอนที่ง่ายที่สุดคือ
- เลือกงานซ้ำหนึ่งงาน
- เขียน description ให้ชัดว่า skill นี้ใช้เมื่อไหร่
- เขียนขั้นตอนสั้น ๆ เป็น markdown
- ใส่ไว้ที่
.claude/skills/<name>/SKILL.mdถ้าเป็นของโปรเจกต์ หรือ~/.claude/skills/<name>/SKILL.mdถ้าเป็นของส่วนตัว - ลองเรียกด้วย
/name - ถ้ามันไม่ auto-trigger ตอนควร trigger ให้แก้ description
- ถ้ามัน trigger บ่อยเกินไป ให้ narrow description หรือใส่
disable-model-invocation: true
skill แรกไม่ควรมี script ไม่ควรมี allowed-tools ไม่ควรแตะ production ทำให้เป็นข้อความล้วนก่อน พอใช้แล้วเห็นว่าคุ้ม ค่อยเพิ่มไฟล์ประกอบหรือ script ทีหลัง
ลองทำดู: skill แรกแบบปลอดภัย
ลองสร้าง skill ส่วนตัวชื่อ meeting-summary สำหรับสรุป meeting note
---
description: Summarize messy meeting notes into decisions, open questions, owners, and next steps.
---
Summarize the meeting notes in this format:
## Decisions
List decisions already made.
## Open Questions
List questions that still need answers.
## Owners
List each owner and responsibility.
## Next Steps
List concrete next actions.
Keep it concise. Do not invent missing owners. If something is unclear, mark it as unclear.
นี่เป็น skill ที่ปลอดภัยเพราะไม่มี script ไม่มี tool permission และไม่ส่งอะไรออกนอกเครื่อง มันแค่ทำให้รูปแบบสรุปประชุมของคุณสม่ำเสมอขึ้น
Hook คือกฎที่ระบบบังคับ ไม่ใช่สิ่งที่ AI เลือก
skill, command และ plugin ที่ผ่านมา มีจุดร่วมหนึ่งอย่าง มันยังต้องมีคน "เรียกใช้" ไม่ AI ก็คุณ แต่มีงานอีกแบบที่คุณไม่อยากให้ขึ้นกับการเรียกของใครเลย คุณอยากให้มันเกิดขึ้นทุกครั้ง โดยอัตโนมัติ นี่คือเสาสุดท้ายของบทนี้ และเป็นเสาที่ต่างจากสามเสาแรกที่สุด
ลองนึกถึงเครื่องมืออย่าง Claude Code ที่เปิดไฟล์ แก้โค้ด รันคำสั่งในเครื่องให้คุณได้จริง พอมันลงมือทำ คุณก็มักมีกิจวัตรที่อยากให้พ่วงไปด้วยเสมอ เช่นทุกครั้งที่มันแก้ไฟล์เสร็จ อยากให้จัดรูปแบบโค้ดให้เป็นระเบียบทันที ทุกครั้งก่อนมันจะรันคำสั่งที่อันตราย อยากให้มีคนเบรกไว้ก่อน ทุกครั้งที่มันหยุดรอคุณ อยากได้แจ้งเตือนเด้งขึ้นมา
ถ้าคุณทำสิ่งเหล่านี้ด้วยการ "บอก" AI ในแชท คุณจะเจอความจริงที่บทก่อน ๆ ปูไว้ AI ไม่ได้ทำตามคำสั่งแบบหุ่นยนต์ มันเดาการกระทำที่เหมาะสมถัดไปจากทุกอย่างที่อยู่ตรงหน้ามันในตอนนั้น ถ้าคำสั่งของคุณหล่นหายไปในบทสนทนาที่ยาวขึ้น มันก็ลืมได้ ตราบใดที่พฤติกรรมสำคัญยังขึ้นกับว่า AI จะ "นึกถึง" หรือเปล่า มันก็เชื่อถือไม่ได้เต็มร้อย เพราะการนึกถึงคือการเดา และการเดาพลาดได้เสมอ
ทางออกคือเลิกฝากความหวังไว้กับความจำของ AI แล้ววางกฎไว้กับระบบที่ห่อ AI อยู่อีกที กฎนั้นเรียกว่า hook
hook คือคำสั่งที่ถูกตั้งไว้ให้ "ลั่นไก" โดยอัตโนมัติ ในจังหวะที่กำหนด ก่อนหรือหลัง AI ลงมือทำอะไรบางอย่าง คำว่า hook แปลตรงตัวว่าตะขอ ลองนึกภาพตะขอที่เกี่ยวไว้ตรงจุดหนึ่งในเส้นทางการทำงานของ AI พอ AI เดินมาถึงจุดนั้น ตะขอก็เกี่ยวคำสั่งของคุณออกมารันทันที ทุกครั้ง โดยที่ AI ไม่ต้องเป็นคนตัดสินใจว่าจะรันหรือไม่
ตัวอย่างจริงสามอย่างที่คนนิยมตั้งกัน
- จัดรูปแบบโค้ดอัตโนมัติหลังแก้ไฟล์ ตั้ง hook ไว้ที่จุด "หลังแก้ไฟล์เสร็จ" พอ AI แก้ไฟล์ไหนเสร็จ ไฟล์นั้นก็ถูกจัดให้เป็นระเบียบเองทุกครั้ง โดยไม่ต้องสั่ง
- เบรกคำสั่งอันตรายก่อนรัน ตั้ง hook ไว้ที่จุด "ก่อนรันคำสั่ง" ให้ตรวจว่าคำสั่งที่ AI กำลังจะรันเข้าข่ายอันตรายไหม เช่นลบไฟล์ทิ้งทั้งหมด ถ้าใช่ก็ปัดตกไม่ให้รัน
- เด้งแจ้งเตือนเมื่อ AI รอคุณ ตั้ง hook ไว้ที่จุด "เมื่อ AI หยุดรอให้คุณสั่งต่อ" ให้เด้งข้อความขึ้นบนหน้าจอ คุณจะได้ไปทำอย่างอื่นได้โดยไม่ต้องนั่งเฝ้า
hook ต่างจาก skill ตรงไหน นี่คือหัวใจ
นี่คือจุดที่ทำให้สี่อย่างในบทนี้ลงล็อก กลับไปที่คำถามเดียว ใครเป็นคนสั่ง
skill คือความรู้ที่ AI เลือกหยิบมาใช้ เมื่อมันคิดว่าควร ถ้าวันนั้นมันคิดว่างานนี้ไม่ต้องใช้ มันก็ไม่หยิบ ความรู้ดีแค่ไหนก็ช่วยไม่ได้ถ้าไม่มีใครหยิบมาใช้ คนสั่งคือ AI
hook คือกฎที่ระบบบังคับรันเสมอ ไม่ขึ้นกับว่า AI อยากทำไหม เหมือนประตูที่ล็อกอัตโนมัติทุกครั้งที่ปิด ไม่มีใครต้องตัดสินใจล็อกมัน มันเป็นกลไกที่ติดมากับประตู ปิดเมื่อไหร่ก็ล็อกเมื่อนั้น คนจะลืมหรือจะขี้เกียจก็ไม่เกี่ยว เพราะการล็อกไม่ได้อยู่ในมือคนตั้งแต่แรก คนสั่งคือระบบ
💡 ใจความสำคัญ: skill อยู่ในมือของ AI มันเลือกใช้หรือไม่ใช้ก็ได้ ส่วน hook อยู่ในมือของระบบ AI ไม่มีสิทธิ์เลือก เวลามาถึงจุดที่ตั้งไว้ คำสั่งก็รัน นี่คือเส้นแบ่งระหว่าง "ขอให้ทำ" กับ "ทำแน่นอน"
พูดอีกแบบ skill ทำให้ AI ฉลาดขึ้น รู้มากขึ้น hook ทำให้พฤติกรรมบางอย่างแน่นอนขึ้น ไม่ได้เกี่ยวกับความฉลาดเลย เป็นคนละเรื่องกัน และนี่คือเหตุผลที่คุณมักใช้ทั้งคู่ ไม่ใช่เลือกอย่างใดอย่างหนึ่ง skill บอกว่า AI ควรทำงานยังไงให้ดี hook คอยกำกับว่าอะไรต้องเกิดขึ้นทุกครั้งไม่ว่าอะไรจะเกิดขึ้น
hook ทำงานจริง ๆ ยังไง
hook ตั้งค่าไว้ในไฟล์ตั้งค่าของเครื่องมือ ในกรณีของ Claude Code คือไฟล์ชื่อ settings.json คุณเขียนลงไปว่า ที่จุดไหน (เช่น "หลังแก้ไฟล์") ให้รันคำสั่งอะไร และจะให้รันเฉพาะกรณีไหน (เช่น เฉพาะตอนแก้ไฟล์ ไม่ใช่ตอนค้นเว็บ) คำสั่งที่ให้รันก็คือคำสั่งคอมพิวเตอร์ธรรมดา
ตัวอย่างของจริงแบบย่อ สมมติคุณอยากได้ hook ที่ "หลัง AI แก้ไฟล์เสร็จ ให้รันโปรแกรมจัดรูปแบบโค้ดทันที" หน้าตาที่เขียนลงไฟล์จะประมาณนี้
"hooks": {
"PostToolUse": [
{
"matcher": "Edit",
"hooks": [
{ "type": "command", "command": "prettier --write ." }
]
}
]
}
อ่านเป็นภาษาคนได้ว่า ที่จังหวะ "หลังใช้เครื่องมือ" (PostToolUse) เฉพาะตอนที่เครื่องมือนั้นคือการแก้ไฟล์ (matcher: "Edit") ให้รันคำสั่ง prettier --write . ซึ่งก็คือโปรแกรมจัดระเบียบโค้ดตัวหนึ่ง คุณไม่ต้องจำคำพวกนี้ และไม่ต้องพิมพ์เองด้วยซ้ำ ที่ยกมาให้ดูก็เพื่อให้เห็นว่า hook ไม่ใช่ของลึกลับ มันคือกฎสั้น ๆ บอกแค่ว่า "จังหวะไหน เงื่อนไขอะไร รันคำสั่งอะไร" เท่านั้นเอง
ส่วนที่ทรงพลังที่สุดคือ hook ที่ตั้งไว้ก่อนการกระทำ มันไม่ได้แค่รันคำสั่งเพิ่มเฉย ๆ มันมีสิทธิ์ตัดสินการกระทำนั้นได้ด้วย hook ก่อนรันคำสั่งสามารถส่งสัญญาณกลับไปได้สี่แบบ ปล่อยผ่านให้ทำได้เลย ถามคุณก่อนว่าจะอนุญาตไหม ปัดตกห้ามทำเด็ดขาด หรือส่งต่อให้ระบบ permission ปกติตัดสินตามเดิม ตัวอย่างคลาสสิกคือ ตั้ง hook ไว้ก่อนรันคำสั่ง ให้ตรวจว่าคำสั่งนั้นมีคำว่าลบไฟล์ทิ้งแบบกู้ไม่ได้อยู่ไหม ถ้ามี ก็ปัดตกทันที AI จะ "อยาก" รันคำสั่งนั้นแค่ไหนก็รันไม่ได้ เพราะระบบเบรกไว้ตั้งแต่ก่อนถึงมือ AI กลายเป็นรั้วความปลอดภัยที่ AI ข้ามไม่ได้ ต่างจากการพิมพ์สั่งในแชทว่า "อย่าลบไฟล์นะ" ที่ AI อาจเผลอข้าม
เรื่องการคุมไม่ให้ AI ลงมือเกินสั่งในภาพใหญ่ ทั้งโหมดขออนุญาตและการตั้งกฎความปลอดภัย เป็นหัวข้อที่บท วิจารณญาณ ความปลอดภัย และความเป็นส่วนตัว ดูแลอยู่ hook คือหนึ่งในเครื่องมือที่ทำให้กฎพวกนั้นบังคับใช้ได้จริงในระดับอัตโนมัติ
ลองทำดู: ออกแบบ hook ในหัวก่อนหนึ่งตัว
ยังไม่ต้องแตะไฟล์ตั้งค่าใด ๆ ถ้าคุณใช้ Claude Code อยู่ ลองพิมพ์ /hooks ดูได้ว่ามีจุดลั่นไกอะไรบ้าง แต่ที่สำคัญกว่าคือฝึกมองให้ออกว่างานไหนควรเป็นกฎ ลองเติมประโยคนี้ให้เต็ม "ทุกครั้งที่ AI ทำ ___ เสร็จ ฉันอยากให้ ___ เกิดขึ้นเองโดยไม่ต้องสั่ง" หรือ "ก่อนที่ AI จะ ___ ฉันอยากให้มันหยุดถามฉันก่อนเสมอ"
ถ้าคุณเติมประโยคนี้ได้ คุณเพิ่งออกแบบ hook ในหัวสำเร็จ ส่วนที่เหลือคือเรื่องเทคนิคที่บอกให้ AI ช่วยเขียนเป็นไฟล์ให้ได้ และนี่คือจุดที่ skill กับ hook มาบรรจบกันพอดี คุณใช้ความฉลาดของ AI ตั้งกฎที่บังคับตัวมันเองในอนาคต แม้คุณจะไม่เขียนโค้ดเลย แค่บอกเป็นภาษาคนว่าอยากให้เกิดอะไรขึ้นทุกครั้ง สิ่งที่ยากกว่าไม่ใช่การพิมพ์คำสั่ง แต่คือการมองออกว่างานไหนควรเป็นกฎอัตโนมัติ ไม่ใช่คำขอที่ต้องพูดซ้ำ ๆ
สรุป ต่อขยาย harness โดยรู้ว่าใครเป็นคนสั่ง
ทั้งบทนี้ว่าด้วยสี่วิธีต่อขยาย harness ที่ห่อ AI อยู่ และกุญแจที่ทำให้ไม่สับสนคือคำถามเดียว ใครเป็นคนสั่งให้มันทำงาน
- skill คือวิธีเก็บ prompt และขั้นตอนที่ใช้ซ้ำให้เป็นไฟล์ AI เลือกหยิบมาใช้เองเมื่อเกี่ยว มันเพิ่มความสม่ำเสมอ ไม่ได้เพิ่มความจริงแท้ คุณยังต้องตรวจผล
- slash command คือสิ่งที่คุณกดเรียกเองด้วย
/ทั้ง command ของระบบและ skill ที่เรียกแบบกดปุ่ม คนสั่งคือคุณ - hook คือกฎที่ระบบลั่นไกให้เองทุกครั้งตามจังหวะที่ตั้งไว้ มันไม่ได้ทำให้ AI ฉลาดขึ้น แต่ทำให้พฤติกรรมบางอย่างแน่นอนขึ้น เพราะมันไม่ได้อยู่ในมือ AI
- plugin คือการแพ็ก skill, command, hook และ MCP เป็นชุดเดียว เพื่อแชร์ ติดตั้ง และอัปเดตง่าย
prompt เหมาะกับงานครั้งเดียว CLAUDE.md เหมาะกับกฎถาวรของโปรเจกต์ ส่วนสี่อย่างข้างบนคือชั้นที่ทำให้วิธีทำงานของคุณกลายเป็นระบบ และยิ่งทรงพลังยิ่งต้องอ่านก่อนเชื่อ โดยเฉพาะ skill, plugin หรือ hook จากคนอื่น เปิดไฟล์ดูก่อนว่ามันสั่งให้ทำอะไร ดู allowed tools ดู script และอย่าให้ workflow ที่มีผลข้างเคียง auto-trigger หรือลั่นไกโดยไม่ตั้งใจ
บทถัดไปจะพาไปอีกชั้นหนึ่ง เมื่อ skill คือการเก็บวิธีทำงานไว้ในไฟล์ แล้วถ้า AI ต้องเชื่อมกับเครื่องมือหรือข้อมูลภายนอกจริง ๆ ควรใช้ CLI, MCP หรือ API ต่างกันยังไง นั่นคือเรื่องของ connectors
อ่านต่อ: Connectors CLI vs MCP vs API
แหล่งอ้างอิง
- https://code.claude.com/docs/en/skills
- https://code.claude.com/docs/en/commands
- https://code.claude.com/docs/en/discover-plugins
- https://code.claude.com/docs/en/plugins
- https://code.claude.com/docs/en/hooks-guide
- https://code.claude.com/docs/en/hooks
- https://code.claude.com/docs/en/agent-sdk/skills
- https://code.claude.com/docs/en/agent-sdk/slash-commands
- https://code.claude.com/docs/en/agent-sdk/plugins