EP2 Skill, Memory และ Hook แยกความรู้ ขั้นตอน และกฎ ให้ AI ทำงานแบบเดิมทุกครั้ง
พอ CLAUDE.md เริ่มบวม ให้แยกของออกเป็นสามแบบ ความรู้ไว้ใน memory ขั้นตอนไว้ใน skill และกฎที่ต้องบังคับจริงไว้ใน hook พร้อมตัวอย่างไฟล์และวิธีเลือกใช้
- ของสามแบบใช้ที่เก็บต่างกัน: ความรู้ → memory, ขั้นตอนที่ทำซ้ำ → skill, กฎที่ห้ามพลาด → hook
- Skill โหลดเฉพาะตอนต้องใช้ จึงมีได้หลายสิบตัวโดยไม่เปลือง
- คำสั่งในไฟล์ AI อาจลืมได้ แต่ hook เป็นโปรแกรมที่รันทุกครั้งแน่นอน
EP1 เราเขียนคู่มือโปรเจกต์ไว้ใน CLAUDE.md แล้ว ใช้ไปสักพักจะเจอปัญหาเดียวกันหมด คือทุกอย่างถูกยัดลงไฟล์เดียว ทั้งเรื่องที่ต้องรู้ วิธีทำงานแต่ละแบบ และกฎที่ห้ามพลาด ไฟล์ยาวขึ้นเรื่อย ๆ จนเรื่องสำคัญจมหาย ตอนนี้จะแยกของสามแบบนี้ออกจากกัน
ของสามแบบ ที่เก็บสามที่
กลับไปที่ภาพเพื่อนร่วมงานที่มาวันแรกทุกวัน ในบริษัทจริงเราให้ของเขาสามอย่าง:
| ของ | ในบริษัท | ใน Claude Code | อ่านเมื่อไหร่ |
|---|---|---|---|
| ความรู้ | บันทึกว่าเคยตกลงอะไรไว้ | memory | ทุกครั้งที่เริ่มงาน |
| ขั้นตอน | คู่มือทำงานแต่ละเรื่อง | skill | เฉพาะตอนจะทำเรื่องนั้น |
| กฎบังคับ | ระบบที่ไม่ยอมให้ข้าม เช่น ประตูต้องแตะบัตร | hook | รันเองทุกครั้ง ไม่ต้องจำ |
หลักการ: แยกสิ่งที่ต้อง รู้ สิ่งที่ต้อง ทำเป็นขั้นตอน และสิ่งที่ต้อง บังคับ ออกจากกัน
Memory: ความรู้ที่สะสม
memory คือบันทึกที่ AI เขียนเพิ่มเองระหว่างทำงาน เช่น “ผู้ใช้ไม่อยากให้ push จนกว่าจะสั่ง” หรือ “การทดลองแบบนี้เคยลองแล้ว ไม่ได้ผล” ครั้งหน้าที่เปิด session ใหม่ ไฟล์สารบัญของ memory จะถูกโหลดมาด้วย มันเลยไม่ถามซ้ำ
บทเรียนจากของจริง: โปรเจกต์หนึ่งใช้ memory จนไฟล์สารบัญยาว 203 บรรทัด ขนาด 41KB พอเปิด session ใหม่ ระบบโหลดได้แค่ราว 110 บรรทัดแรก อีก 90 กว่าบรรทัดถูกตัดทิ้ง ความรู้ที่จดไว้ท้ายไฟล์เลยเหมือนไม่เคยมี
ทางแก้คือให้สารบัญเป็น บรรทัดละหนึ่งเรื่อง สั้น ๆ แล้วเก็บรายละเอียดไว้ในไฟล์แยก และหมั่นลบเรื่องที่เก่าหรือผิดแล้ว memory ก็เหมือนสมุดจด ถ้าไม่เคยจัด สุดท้ายจะหาอะไรไม่เจอ
Skill: ขั้นตอนที่ทำซ้ำ
skill คือคู่มือทำงานเรื่องเดียว เก็บไว้ที่ .claude/skills/<ชื่อ>/SKILL.md หัวไฟล์มีแค่ชื่อกับคำอธิบาย
---
name: write-article
description: เขียนบทความลงเว็บ ใช้เมื่อผู้ใช้ขอบทความใหม่ หรือแก้บทความเดิม
---
1. อ่าน docs/ARTICLE_GUIDE.md ก่อน
2. เขียนทั้งไทยและอังกฤษ ชื่อไฟล์เดียวกัน
3. รัน npm run build ต้องผ่าน
4. เปิดดูที่จอกว้าง 375px ทั้งสองภาษา
จุดสำคัญคือ AI เห็นแค่คำอธิบายจนกว่าจะต้องใช้ พอเราสั่งงานที่ตรงกับคำอธิบาย มันจึงค่อยอ่านเนื้อหาเต็ม หรือเราเรียกเองด้วยการพิมพ์ /write-article ก็ได้ ข้อดีคือมี skill ได้หลายสิบตัวโดยไม่ทำให้ทุกงานช้าหรือเปลือง เครื่องที่ใช้เขียนบทความนี้มี skill อยู่ 35 ตัว ตั้งแต่เขียนเทสต์ก่อนโค้ด ไปจนถึงรีวิวหาโค้ดที่ซับซ้อนเกินจำเป็น
คำอธิบายจึงสำคัญที่สุดในไฟล์ ให้บอกว่า ใช้เมื่อไหร่ ไม่ใช่แค่ว่าทำอะไร ถ้าคำอธิบายกว้างไป มันจะหยิบมาใช้ผิดงาน ถ้าแคบไป มันจะไม่หยิบเลย
Hook: กฎที่ห้ามพลาด
ปัญหาของคำสั่งในไฟล์คือ AI อาจลืม โดยเฉพาะเมื่องานยาว ถ้ากฎข้อไหนพลาดไม่ได้จริง ๆ อย่าฝากไว้กับความจำของมัน ให้ใช้ hook
hook คือคำสั่ง shell ที่ Claude Code รันเองเมื่อเกิดเหตุการณ์ที่กำหนด เช่น หลังแก้ไฟล์ทุกครั้ง หรือก่อนรันคำสั่ง ตั้งไว้ใน .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": "npm run lint" }]
}
]
}
}
ตัวอย่างนี้สั่งให้รัน lint ทุกครั้งที่ AI แก้หรือสร้างไฟล์ ไม่ว่ามันจะจำได้หรือไม่ก็ตาม hook ยังใช้กันคำสั่งอันตรายได้ด้วย เช่น ถ้า hook ที่รันก่อนคำสั่งตอบกลับว่าไม่ผ่าน คำสั่งนั้นจะไม่ถูกรัน
ตัวอย่างจริงตอนเขียนเว็บนี้: ทุกครั้งที่ AI แก้ไฟล์หน้าเว็บ จะมี hook เตือนว่า “ยังไม่ได้เปิด preview ถ้าการแก้นี้ดูได้ในเบราว์เซอร์ ให้เปิดดูก่อนจบงาน” ทำให้การตรวจบนจอจริงไม่ต้องพึ่งความจำของใครเลย
เลือกยังไงว่าอะไรควรอยู่ไหน
ถามตัวเองทีละข้อ:
- ต้องรู้ทุกครั้งไหม ใช่ → CLAUDE.md (ถ้าเป็นกติกา) หรือ memory (ถ้าเป็นสิ่งที่เรียนรู้มา)
- เป็นวิธีทำงานเฉพาะเรื่องไหม ใช่ → skill
- ถ้าพลาดแล้วเสียหายจริงไหม ใช่ → hook ไม่ใช่แค่ประโยคในไฟล์
ลองเองใน 10 นาที
- เลือกงานหนึ่งที่สั่ง AI บ่อยที่สุด แล้วเขียนเป็น skill ตามแบบข้างบน ไม่เกิน 10 บรรทัด
- เปิด session ใหม่ สั่งงานนั้นด้วยคำพูดปกติ ดูว่ามันหยิบ skill มาใช้ไหม ถ้าไม่หยิบ แก้คำอธิบายให้ชัดขึ้นว่าใช้เมื่อไหร่
- เลือกกฎหนึ่งข้อที่ AI เคยลืม แล้วเปลี่ยนเป็น hook
ตรงไหนที่คนต้องทำ
AI จด memory และร่าง skill ให้ได้ แต่ คนต้องเป็นคนจัด อะไรควรจำต่อ อะไรเก่าแล้วควรลบ กฎข้อไหนสำคัญพอจะบังคับด้วย hook การตัดสินใจพวกนี้ ถ้าปล่อยให้ AI จัดเองทั้งหมด memory จะบวมแบบตัวอย่างข้างบน
ตอนหน้า
ตอนนี้ AI ของเรารู้กติกา มีคู่มือ และมีกฎบังคับแล้ว แต่ยังทำงานทีละอย่างในหัวเดียว EP3 จะให้มันแบ่งงานให้ subagent ผู้ช่วยที่มีห้องทำงานของตัวเอง ทำงานคู่ขนานกันได้ และไม่ทำให้หัวหลักรก
คำถามที่พบบ่อย
skill ต่างจาก CLAUDE.md ยังไง
CLAUDE.md ถูกอ่านทุกครั้งที่เริ่มงาน ส่วน skill ถูกอ่านเฉพาะตอนที่งานตรงกับคำอธิบายของมัน CLAUDE.md จึงควรมีแค่สิ่งที่ต้องรู้ตลอด ส่วนวิธีทำงานเฉพาะเรื่องย้ายไปเป็น skill
hook อันตรายไหม
hook คือคำสั่ง shell ที่รันอัตโนมัติด้วยสิทธิ์ของเรา จึงควรใช้เฉพาะคำสั่งที่เราเขียนเองหรืออ่านเข้าใจแล้ว เหมือนกับ git hook ทั่วไป
คำสั่งและค่าตั้งในบทความทดสอบบนระบบตัวอย่าง ลองบนเครื่องทดสอบก่อนใช้กับระบบจริงเสมอ