teach-me-ai / FT-3
⟵ กลับหน้า Roadmap
FAST-TRACK · FT-3

ตั้งค่า Claude ให้เข้าใจโปรเจกต์คุณ: CLAUDE.md & .claude/

⏱️ ~15 นาที 🎯 เขียน CLAUDE.md ที่ดี + รู้จักโครงสร้าง .claude 🧪 teach-by-example: เปิดของจริงประกอบ

จนถึงตอนนี้เราสั่ง Claude ทีละครั้ง แต่ถ้าอยากให้มัน รู้จักโปรเจกต์คุณตั้งแต่ประโยคแรก โดยไม่ต้องอธิบายซ้ำทุกครั้ง — นั่นคือหน้าที่ของ CLAUDE.md และโฟลเดอร์ .claude/ บทนี้กระชับ เน้นดูของจริงในโปรเจกต์นี้เป็นตัวอย่าง (teach-by-example / สอนด้วยตัวอย่างจริง)

CLAUDE.md คืออะไร ทำไมสำคัญ

CLAUDE.md คือ สิ่งแรกที่ Claude Code อ่าน เมื่อเปิดโปรเจกต์ มันคือ "บรีฟงาน" (project brief / สรุปงานให้ทีมใหม่) ที่ทำให้ Claude เข้าใจบริบททันที และเนื้อหาในนี้จะ override (เขียนทับ / ลบล้าง) พฤติกรรมเริ่มต้นของ Claude — พูดง่ายๆ คือคุณกำลัง "ตั้งกฎประจำโปรเจกต์" ให้มัน

เปิดโปรเจกต์ claude อ่าน CLAUDE.md (ก่อนอื่นเสมอ) ปรับพฤติกรรม override default CLAUDE.md = บรีฟงานถาวรของโปรเจกต์
Claude อ่าน CLAUDE.md ก่อนทำงานทุกครั้ง แล้วใช้มันปรับพฤติกรรมให้เข้ากับโปรเจกต์คุณ

องค์ประกอบที่ CLAUDE.md ที่ดีควรมี:

ส่วนบอกอะไรตัวอย่างสั้น
โปรเจกต์คืออะไรทำงานอะไร เพื่อใคร (1–2 ประโยค)"REST API สำหรับระบบจอง"
Tech stackภาษา / framework / ฐานข้อมูล / เครื่องมือTypeScript, NestJS, PostgreSQL
วิธีรัน / เทสต์คำสั่งจริงที่ใช้ dev และ testpnpm dev, pnpm test
Conventionsธรรมเนียมโค้ด (จัดไฟล์, naming, error)"จัดโค้ดตาม feature"
Guardrailsสิ่งที่ต้องทำ / ห้ามทำ (ราวกันตก)"ห้าม commit ถ้าไม่สั่ง"
⚠️

เพราะ CLAUDE.md override พฤติกรรมเริ่มต้น จึงต้องเขียนอย่างตั้งใจ — อย่าใส่สิ่งที่ไม่จริง เช่น เขียนว่า pnpm test ทั้งที่โปรเจกต์ใช้ npm test Claude จะเชื่อและทำผิดตาม ให้เขียนสั้นแต่ เป็นความจริงทั้งหมด

เขียน CLAUDE.md ที่ดี: สั้น มีสาระ เป็นจริง

หลักคือ high-signal (สาระแน่น น้ำน้อย) — Claude อ่านมันทุกครั้ง ยิ่งยาวเกินจำเป็น ยิ่งเปลือง context และกลบสิ่งสำคัญ เขียนเท่าที่ช่วยให้ทำงานถูก แล้วลบส่วนที่ไม่เกี่ยวออก

  • สั้น: เลือกเฉพาะสิ่งที่ Claude ต้องรู้จริงๆ ไม่ใช่ยกคู่มือทั้งเล่มมาวาง
  • เป็นจริง: คำสั่ง/พาธ/กติกา ต้องตรงกับของจริง ตรวจก่อนใส่
  • เจาะจง: "จัดโค้ดตาม feature ไม่ใช่ตามชนิดไฟล์" ดีกว่า "เขียนโค้ดให้สะอาด"
🔎 เปิดดูของจริง 2 ไฟล์นี้ควบคู่ไปด้วย: CLAUDE.md ของโปรเจกต์นี้ (สังเกตว่ามันบอกบทบาท "ครู", โปรไฟล์ผู้เรียน, กติกาไฟล์ ครบแต่ไม่ยืดเยื้อ) และ เทมเพลตเปล่า EN/CLAUDE.template.md ที่เอาไปเริ่มโปรเจกต์อื่นได้

โครงร่าง (skeleton) ของเทมเพลตหน้าตาแบบนี้ — เริ่มจากตรงนี้แล้วเติมของจริงลงไป:

# CLAUDE.md — <ชื่อโปรเจกต์>

<!-- สั้น มีสาระ เป็นจริง — อะไรที่นี่ override default ของ Claude -->

## What this project is
<ทำงานอะไร เพื่อใคร 1–2 ประโยค>

## Tech stack
- Language(s): TypeScript, Go
- Framework(s): NestJS
- Data: PostgreSQL, MongoDB

## How to run / test
```bash
pnpm install
pnpm dev
pnpm test
```

## Project conventions
- จัดโค้ดตาม feature ไม่ใช่ตามชนิดไฟล์
- ใช้ immutable data — คืน object ใหม่แทนการ mutate

## Guardrails (ต้องทำ / ห้ามทำ)
- DO: เขียน test ที่ fail ก่อน แล้วค่อย implement
- DON'T: commit หรือ push ถ้าไม่ได้สั่ง

โครงสร้าง .claude/ เต็มรูปแบบ

CLAUDE.md คือ "บรีฟ" ส่วนโฟลเดอร์ .claude/ คือ "กล่องเครื่องมือ" ประจำโปรเจกต์ ที่ทำให้ Claude ทำงานเฉพาะทางได้ แต่ละโฟลเดอร์ย่อยมีหน้าที่ต่างกัน:

.claude/ commands/ คำสั่งลัดที่คุณสร้างเอง เช่น /quiz /lesson agents/ subagent เฉพาะทาง เช่น ai-tutor, quiz-master skills/ ความรู้/ขั้นตอนเชิงลึกที่ Claude โหลดมาใช้ตอนทำงาน hooks/ สคริปต์อัตโนมัติ เช่น format/lint หลังแก้ไฟล์ settings.json — permissions, env, การตั้งค่า
.claude/ = กล่องเครื่องมือประจำโปรเจกต์ — แต่ละโฟลเดอร์ทำหน้าที่คนละอย่าง
ที่ตั้งหน้าที่ทบทวนจากบทก่อน
commands/slash command ที่นิยามเอง (ไฟล์ .md ต่อ 1 คำสั่ง)FT-1
agents/subagent เฉพาะทาง มี system prompt + tools ของตัวเองFT-2
skills/ชุดความรู้/ขั้นตอน (SKILL.md) ที่โหลดมาใช้เมื่อเข้าเงื่อนไขFT-2
hooks/สคริปต์รันอัตโนมัติในจังหวะต่างๆ (ก่อน/หลังใช้ tool, จบ session)ใหม่
settings.jsonตั้งค่า permissions, environment variable, การเชื่อมต่อใหม่

โปรเจกต์นี้มี .claude/ จริงให้เปิดดูได้เลย — ไปที่ โฟลเดอร์ .claude/ ของโปรเจกต์นี้ จะเห็น commands/ (quiz, lesson, explain, progress) และ agents/ (ai-tutor, quiz-master) ส่วนเทมเพลตพกพาไปโปรเจกต์อื่นดูได้ที่ TH/ (คู่แปลไทย)

ไฟล์ command มีหน้าตาแบบไหน (frontmatter)

ไฟล์ command/agent/skill ขึ้นต้นด้วย frontmatter (ข้อมูลกำกับหัวไฟล์ คั่นด้วย ---) แล้วตามด้วยเนื้อหาเป็น Markdown:

---
description: ตั้งคำถามทดสอบความเข้าใจของผู้เรียน
argument-hint: [ระดับ เช่น FT-3]
---

# คำสั่ง /quiz
เมื่อผู้เรียนพิมพ์ /quiz ให้ตั้งคำถาม 3–5 ข้อจากหัวข้อที่ระบุ
ตรวจคำตอบทีละข้อ แล้วให้ feedback เป็นภาษาไทย

MCP เบื้องต้น (Model Context Protocol)

MCP (Model Context Protocol / โพรโทคอลบริบทของโมเดล) คือ มาตรฐานกลาง สำหรับต่อ Claude เข้ากับ เครื่องมือและข้อมูลภายนอก — คิดเหมือน "พอร์ต USB-C ของ AI": เสียบ MCP server เข้าไป Claude ก็ใช้ของนั้นได้ทันที

ตัวอย่างที่ dev เจอบ่อย: MCP server สำหรับ database, GitHub, Jira, ไฟล์ระบบ ฯลฯ พอเชื่อมแล้ว Claude จะ "อ่านข้อมูลจริง" หรือ "สั่งงานเครื่องมือจริง" ได้ แทนที่จะเดาอย่างเดียว — คุณเพิ่ม MCP server ด้วยคำสั่ง claude mcp add หรือไฟล์ .mcp.json ที่ root ของโปรเจกต์

💡

สรุปสั้น: skills/commands/agents = ขยายความสามารถจากภายใน ส่วน MCP = ต่อสะพานออกไปหาโลกภายนอก (ข้อมูล/เครื่องมือของจริง) บทนี้ให้รู้จักแนวคิดพอ รายละเอียดลึกจะเจออีกทีตอน Lv3 Tool use และ Lv7 Production

teach-by-example: เปิดของจริงประกอบ

วิธีเรียนเรื่องนี้เร็วที่สุดคือ อ่านของจริง ไม่ใช่ท่องนิยาม โปรเจกต์นี้เตรียมไว้ให้ครบ:

  • ../../../CLAUDE.md — CLAUDE.md ตัวจริงที่ทำให้ Claude เป็น "ครู" ในโปรเจกต์นี้
  • ../../../.claude/ — commands + agents ของจริง เปิดดูว่า frontmatter + เนื้อหาเขียนยังไง
  • ../../../EN/CLAUDE.template.md — เทมเพลตเปล่า เริ่มโปรเจกต์ใหม่ได้ทันที
  • ../../../TH/ — คู่แปลไทยของเทมเพลต โครงสร้างเดียวกัน

เริ่มจากเทมเพลตแล้วปรับ — อย่าเขียน CLAUDE.md จากศูนย์ ก็อป EN/CLAUDE.template.md มาเป็นจุดตั้งต้น ลบส่วนที่ไม่ใช้ แล้วเติมของจริงของโปรเจกต์คุณ เร็วกว่าและครบกว่า

🎯 แบบฝึกหัด
  1. เปิด เทมเพลต แล้วร่าง CLAUDE.md ของโปรเจกต์จริงที่คุณทำอยู่ (NestJS หรือ Go ก็ได้) — ให้มีครบ 5 ส่วน: โปรเจกต์คืออะไร, tech stack, วิธีรัน/เทสต์, conventions, guardrails ระวังข้อ "เป็นจริง" — คำสั่งรัน/เทสต์ต้องตรงกับของจริง
  2. เขียน 1 slash command ใน .claude/commands/ ของโปรเจกต์นั้น เช่น /review (รีวิวโค้ดตาม convention) หรือ /newmodule (สร้างโครง NestJS module) — ใส่ frontmatter description ให้เรียบร้อย
  3. บอกมา 1 ตัวอย่างว่า MCP server ตัวไหนจะมีประโยชน์กับงานคุณ และช่วยเรื่องอะไร

ทำเสร็จแล้วพิมพ์ /quiz FT-3 เพื่อทดสอบความเข้าใจ