⚡ ระดับสูง · บทที่ 21 · อ่าน 9 นาที

CLAUDE.md และ Memory: สอนให้ Claude รู้จักโปรเจกต์เรา

ปัญหา: Claude ลืมทุกอย่างเมื่อปิดเครื่อง

เปิด Claude Code ครั้งใหม่ = เริ่มจากศูนย์ มันไม่รู้ว่าเมื่อวานเราตกลงอะไรกันไว้ ไม่รู้กฎของโปรเจกต์ ไม่รู้ว่าห้ามแตะไฟล์ไหน ถ้าต้องพิมพ์อธิบายใหม่ทุกเช้า คงไม่ไหว — ทางแก้มี 2 ระบบที่ทำงานคู่กัน:

CLAUDE.mdAuto Memory
ใครเขียนเรา เขียนเองClaude จดเอง
เนื้อหากฎ คำสั่ง มาตรฐานโปรเจกต์สิ่งที่มันเรียนรู้จากการทำงาน/คำติของเรา
ถูกอ่านเมื่อไหร่ทุกครั้งที่เปิด sessionทุกครั้งที่เปิด session
เหมาะกับ”ต้องทำแบบนี้เสมอ”ความรู้สะสม เช่น คำสั่ง build ที่เวิร์ก

CLAUDE.md วางไว้ที่ไหน

วางไฟล์ชื่อ CLAUDE.md (ตัวพิมพ์ใหญ่ตามนี้) ไว้ที่โฟลเดอร์รากของโปรเจกต์ — แค่นี้ Claude Code จะอ่านเองอัตโนมัติทุกครั้ง ตำแหน่งอื่นที่ใช้ได้:

  • ~/.claude/CLAUDE.md — กฎส่วนตัวของเรา ใช้กับทุกโปรเจกต์ในเครื่อง (เช่น “ตอบภาษาไทยเสมอ”)
  • CLAUDE.local.md — กฎเฉพาะเครื่องเราที่ไม่อยากแชร์ให้ทีม (ใส่ .gitignore ไว้)

เคล็ดลัด: พิมพ์ /init ใน Claude Code ให้มันสำรวจโปรเจกต์แล้วร่าง CLAUDE.md ให้อัตโนมัติ แล้วเราค่อยแก้เพิ่ม — เร็วกว่าเริ่มจากกระดาษเปล่ามาก

เขียนอะไรลงไปดี

หลักคิด: เขียนสิ่งที่เราต้องพิมพ์อธิบายซ้ำถ้าไม่จด — เหมือนคู่มือพนักงานใหม่ฉบับย่อ

  1. โปรเจกต์นี้คืออะไร — 2-3 บรรทัดพอ
  2. คำสั่งที่ใช้ประจำ — รันยังไง ทดสอบยังไง build ยังไง
  3. กฎที่ห้ามละเมิด — “ห้ามแตะโฟลเดอร์ X”, “commit ต้องเขียนเป็นภาษาไทย”
  4. มาตรฐานโค้ด/งาน — ตั้งชื่อไฟล์แบบไหน ใช้ style อะไร

❌ พรอมต์ที่ไม่ดี

ช่วยเขียนโค้ดดี ๆ ให้ได้มาตรฐาน ทดสอบก่อน commit เสมอ และจัดไฟล์ให้เป็นระเบียบ

กว้างจนไม่มีผล — 'ดี' 'มาตรฐาน' 'เป็นระเบียบ' ตีความได้ร้อยแบบ

✅ พรอมต์ที่ดี

รันเว็บ: npm run dev / ทดสอบ: npm test ก่อน commit ทุกครั้ง / โค้ดใหม่ทั้งหมดใส่ใน src/ / ชื่อไฟล์ใช้ kebab-case เช่น user-profile.ts / ห้ามแก้โฟลเดอร์ legacy/ เด็ดขาด

สั้น เจาะจง วัดผลได้ — Claude ทำตามได้จริงทุกข้อ

ตัวอย่างจริง 2 แบบ

แบบที่ 1: โปรเจกต์เล็ก (เว็บส่วนตัว)

# CLAUDE.md

เว็บ portfolio ส่วนตัว สร้างด้วย Astro

## คำสั่ง
- รันดูเว็บ: npm run dev
- เช็คก่อนส่งงาน: npm run build ต้องผ่านเสมอ

## กฎ
- เนื้อหาภาษาไทย โทนเป็นกันเอง
- รูปทั้งหมดอยู่ใน public/images ห้ามใส่ที่อื่น
- สีหลักของเว็บ: #2563eb ห้ามเปลี่ยนโดยไม่ถาม

แบบที่ 2: โปรเจกต์ใหญ่ (ทำงานเป็นทีม)

# CLAUDE.md

ระบบหลังบ้านร้านค้า (Node.js + PostgreSQL)

## คำสั่ง
- ติดตั้ง: npm install / รัน: npm run dev / ทดสอบ: npm test
- ทดสอบเฉพาะไฟล์: npm test -- --grep "ชื่อเทสต์"

## โครงสร้าง
- src/api/ — endpoint ทั้งหมด แยกไฟล์ตาม resource
- src/db/ — ห้ามเขียน SQL ตรง ๆ ที่อื่น ต้องผ่านโฟลเดอร์นี้
- tests/ — เทสต์ mirror โครงสร้าง src/

## กฎทีม
- ทุก endpoint ใหม่ต้องมีเทสต์อย่างน้อย 1 ตัว
- ห้าม commit ไฟล์ .env เด็ดขาด
- ข้อความ error ที่ผู้ใช้เห็นต้องเป็นภาษาไทย

ข้อควรระวัง: อะไร “ไม่ควร” ใส่

  • ไฟล์ยาวเกิน ~200 บรรทัด — ยิ่งยาว Claude ยิ่งทำตามได้ไม่ครบ (มันคือบริบทที่ต้องแบกทุก session ด้วย — บทที่ 18)
  • ความลับ — รหัสผ่าน API key ห้ามใส่เด็ดขาด (ไฟล์นี้มักถูก commit ขึ้น Git)
  • ขั้นตอนงานเฉพาะกิจยาว ๆ — พวกนี้เหมาะเป็น Skill มากกว่า (บทถัดไป)
  • กฎที่ขัดกันเอง — เช็คทุกครั้งที่เพิ่มกฎใหม่ ถ้าขัดกัน Claude จะเลือกเองแบบสุ่ม

Auto Memory: โน้ตที่ Claude จดเอง

นอกจาก CLAUDE.md ที่เราเขียน Claude Code ยังมีความจำอัตโนมัติ (เปิดใช้เป็นค่าเริ่มต้น): ระหว่างทำงาน ถ้ามันเจอสิ่งที่ควรจำ — เช่น เราแก้คำสั่งที่มันใช้ผิด หรือบอกความชอบของเรา — มันจะจดลงไฟล์ของมันเอง แล้วอ่านกลับมาใน session หน้า

  • ดู/แก้สิ่งที่มันจดได้ด้วยคำสั่ง /memory — เป็นไฟล์ markdown ธรรมดา อ่านออกทุกบรรทัด
  • อยากให้จำอะไร บอกตรง ๆ ได้เลย: “จำไว้ด้วยว่าโปรเจกต์นี้ใช้ pnpm ไม่ใช่ npm”
  • แบ่งงานกัน: กฎถาวรของโปรเจกต์ → CLAUDE.md / สิ่งที่ค้นพบระหว่างทาง → Auto Memory
✏️ พรอมต์ให้ Claude ช่วยรีวิว CLAUDE.md ของเรา
อ่าน CLAUDE.md ของโปรเจกต์นี้แล้ววิจารณ์ตรง ๆ: 1) กฎข้อไหนกว้างเกินไปจนปฏิบัติไม่ได้ 2) มีอะไรขัดแย้งกันเองไหม 3) จากที่คุณเห็นโปรเจกต์จริง มีกฎสำคัญอะไรที่ควรเพิ่มแต่ยังไม่มี — เสนอเวอร์ชันปรับปรุงมาเลย