แทนที่จะพิมพ์ prompt เดิมซ้ำทุกครั้ง (เช่น "review โค้ดที่เพิ่งแก้แล้วบอก bug") สร้างเป็นคำสั่งสั้นได้
สร้างไฟล์ .claude/commands/review.md ในโปรเจกต์:
---
description: Review recently changed code for bugs
---
Review the current git diff. Focus on:
- Logic errors
- Missing error handling
- Security issues
Report only high-confidence findings.
ใช้ด้วย /review — Claude จะรัน prompt นี้ทันที ไม่ต้องพิมพ์ยาวทุกครั้ง
Claude Code เรียก sub-agent (context แยก) ไปทำงานเฉพาะทางได้ เช่น ค้นโค้ดทั้ง repo, review PR, เขียน plan
ใช้ agent ค้นหาว่า function calculate_tax ถูกเรียกใช้ที่ไหนบ้างในโปรเจกต์
ข้อดี: งานค้นหา/สำรวจเยอะๆ ไม่กิน context หลักของ session — sub-agent ทำเสร็จแล้วส่งสรุปกลับมาสั้นๆ
เมื่อไหร่ควรใช้: งานที่ต้องอ่านไฟล์เยอะ (>5 ไฟล์) เพื่อหาคำตอบเดียว หรืองานอิสระหลายอย่างที่ทำพร้อมกันได้
ไม่ใช่แค่พิมพ์ "วางแผนก่อน" — มี mode จริงจัง (Shift+Tab สลับโหมด หรือพิมพ์ขอ):
ใช้กับงานที่ แก้หลายไฟล์ หรือ สถาปัตยกรรมเปลี่ยน — งานเล็ก (แก้ 1 บรรทัด) ข้ามได้
Workflow ที่แนะนำสำหรับ feature ใหม่:
1. บอก Claude: "เขียน test ก่อนที่ยังไม่ผ่าน (fail) สำหรับ feature นี้"
2. ดู test แล้วเข้าใจว่ามัน expect อะไร
3. บอกให้ implement โค้ดจนกว่า test จะผ่าน
4. รัน test suite เต็มอีกรอบ ไม่ใช่แค่ test ที่เพิ่งเขียน
ข้อดี: บังคับให้นิยาม "เสร็จ" ชัดเจนล่วงหน้า ไม่ใช่เดาทีหลังว่า "น่าจะโอเค"
ถ้าอยากให้ Claude ทำ feature A ใน session หนึ่ง และ feature B อีก session พร้อมกัน (คนละ branch) โดยไม่ให้ไฟล์ชนกัน:
git worktree add ../myproject-feature-a feature-a
git worktree add ../myproject-feature-b feature-b
แล้วเปิด Claude Code แยก 2 terminal คนละโฟลเดอร์ — งานคนละ branch ทำงานพร้อมกันได้จริงโดยไม่ทับกัน
สำคัญ: ใส่ .worktrees/ หรือชื่อโฟลเดอร์ worktree ไว้ใน .gitignore ก่อน
นอกจาก CLAUDE.md ที่ root แล้ว ใส่ CLAUDE.md ย่อยในโฟลเดอร์ย่อยได้ (เช่น backend/CLAUDE.md) — Claude จะอ่านทั้งของ root และของโฟลเดอร์ที่กำลังทำงานอยู่
| ไฟล์ | ใช้ทำอะไร |
|---|---|
MEMORY.md | Claude เขียนเอง — เก็บ bug ที่เจอ+วิธีแก้, decision ทางสถาปัตยกรรม กันเจอปัญหาเดิมซ้ำ |
PLAN.md | แผนงาน feature ที่ agreed แล้ว — Claude เสนอ เราแก้ ไม่ให้ Claude แก้ตรงๆ |
.env.template | รายการ env var ที่ต้องมี (ไม่มีค่าจริง) กันลืมว่าต้อง config อะไรบ้าง |
| สถานการณ์ | ทำอะไร | เหตุผล |
|---|---|---|
| งานย่อยเกี่ยวเนื่องในโปรเจกต์เดิม | ทำต่อ session เดิม | Context มีค่า ไม่ต้องเสียเวลาโหลดใหม่ |
| Context เกิน ~50% | /compact | ความแม่นยำตกฮวบหลัง 50% — อย่ารอให้หลอนก่อนค่อยทำ |
| เปลี่ยนหัวข้อในโปรเจกต์เดิม | /clear | Context เก่า = noise รบกวนงานใหม่ |
| เปลี่ยนโปรเจกต์ | เปิด session ใหม่ | CLAUDE.md/MEMORY.md คนละไฟล์ |
| Claude เริ่มลืม/สับสน/ตอบแปลกๆ | /clear ทันที | สัญญาณ context เน่า |
| Implementation เสร็จ ก่อนเข้า review | /compact | เก็บ budget ไว้ให้รอบ review/test |
เวลาเจอ bug อย่าปล่อยให้ Claude "ลองแก้ไปเรื่อยๆ" — สั่งให้ทำตามลำดับ:
1. reproduce bug ให้เห็นก่อน (ยืนยันว่ามันเกิดจริง)
2. หา root cause (อ่าน stack trace / log จริง ไม่เดา)
3. เสนอ fix ที่ตรงจุด ไม่ใช่ patch อาการ
4. verify ว่า fix แก้ปัญหาจริง (รัน test/reproduce ซ้ำ)
ถ้า Claude เสนอ fix โดยไม่ได้ reproduce ก่อน ให้ถามกลับ: "แน่ใจนะว่านี่คือสาเหตุจริง ลอง reproduce ให้ดูก่อน"
ก่อน commit/PR งานใหญ่ สั่ง:
review โค้ดที่เพิ่งแก้ทั้งหมด หา bug, security issue, และจุดที่ over-engineer เกินความจำเป็น
Claude จะกลับมาอ่านตัวเองอย่างเป็นระบบ (ไม่ใช่ self-praise) — จับพวก edge case ที่ตอน implement มองข้าม
Hooks คือ automation ที่รันอัตโนมัติตาม event (ก่อน/หลัง Claude เรียก tool, ตอนเริ่ม/จบ session) เช่น: บล็อกไม่ให้รันคำสั่งอันตรายอัตโนมัติ, log ทุกครั้งที่แก้ไฟล์, เตือนก่อน push ระดับ intermediate แค่รู้ว่ามีอยู่พอ — เขียนเองเมื่อทีมมี pattern ที่ต้องบังคับซ้ำๆ จริงจัง
Claude ปรับรูปแบบการตอบได้ตาม output style ที่ตั้งไว้ (เช่น ตอบละเอียดแบบสอน, ตอบสั้นห้วนแบบ operator, ตอบแบบ senior engineer ข้ามพื้นฐาน) เลือกได้ผ่านคำสั่งตั้งค่า style
ใช้เมื่อ: อยากให้ Claude อธิบายเหตุผลเวลาเขียนโค้ดให้ (โหมดสอน), หรืออยากให้ตอบสั้นเข้าประเด็นไม่ต้องมี intro ยาว
สั่งให้ Claude รันคำสั่งที่ใช้เวลานาน (เช่น dev server, build, test suite ยาว) แบบไม่บล็อกไม่ต้องรอ:
รัน dev server ไว้เบื้องหลัง แล้วช่วยดู log error ให้ด้วย
Claude จะรันแล้วกลับมาทำงานอื่นต่อได้ทันที พอ process เสร็จหรือมีปัญหาจะแจ้งกลับมาเอง
ใช้เมื่อ: ต้องรัน server ค้างไว้ระหว่างทดสอบ, หรือรัน job ที่ใช้เวลานานโดยไม่อยากรอเฉยๆ
Claude Code เก็บ checkpoint ของงานที่แก้ไว้ ถ้า Claude แก้พัง/หลุดขอบเขต ย้อนกลับไปจุดก่อนหน้าได้โดยไม่ต้องพึ่ง git (สั่งขอ "ย้อนกลับไปก่อนที่จะแก้ไฟล์นี้") ต่างจาก git ตรงที่ไม่ต้อง commit ไว้ก่อนก็ย้อนได้ — เหมาะกับตอนทดลองอะไรเสี่ยงๆ ที่ยังไม่อยาก commit
นอกจาก sub-agent ทั่วไป (§2) ยังนิยาม agent เฉพาะทางเองได้ที่ .claude/agents/<name>.md — กำหนดได้ว่า agent นี้เข้าถึง tool อะไรได้บ้าง (เช่น agent สำหรับ "ค้นหาอย่างเดียว" ไม่ให้สิทธิ์แก้ไฟล์)
ใช้เมื่อ: อยากมี agent เฉพาะทางที่ทีมเรียกซ้ำบ่อย (เช่น "test-runner" ที่รัน test ได้อย่างเดียว ไม่แตะโค้ด)
งานที่ตัดสินใจซับซ้อน (สถาปัตยกรรม, debug ยากๆ, คำนวณซับซ้อน) เปิดโหมดคิดขยาย (extended thinking) ให้ Claude ใช้เวลาไตร่ตรองมากขึ้นก่อนตอบ แลกกับตอบช้าลงหน่อย
ใช้เมื่อ: งานที่ตอบผิดแล้วเสียหายจริง ไม่ใช่งานทั่วไปที่เร็วดีกว่า
.claude/agents/| อาการ | สาเหตุ | แก้ |
|---|---|---|
| Claude เริ่มแก้เกินขอบเขตที่ขอ | ไม่ได้ผ่าน Plan Mode ก่อน | บังคับ Plan Mode ทุกงานที่แตะ >2 ไฟล์ |
| Session ยาวจนตอบช้า/แปลก | Context เต็มเกิน ไม่ยอม compact | ตั้งนิสัย /compact ทุก ~50% |
| Sub-agent ทำงานซ้ำกับที่ main session ทำอยู่แล้ว | สั่ง delegate แล้วยังทำเองต่อ | อย่าทำงานซ้ำที่ sub-agent กำลังทำ รอผลมันก่อน |
| Bug แก้แล้วกลับมาใหม่ | แก้ที่อาการ ไม่ใช่ root cause | บังคับ reproduce ก่อนแก้เสมอ (§8) |