Knowledge Hub

โครงสร้างโปรเจกต์ Claude Code: ไฟล์ไหนทำหน้าที่อะไร

เรียนรู้วิธีจัดโครงสร้างโปรเจกต์ Claude Code ให้ไฟล์ context, settings, rules, commands, skills, sub-agents และ hooks อยู่ถูกที่ ทีมใช้ร่วมกันได้ และมีเช็กลิสต์กับแบบทดสอบให้ลงมือทำ

AI-Toolsอ่าน 11 นาทีเผยแพร่ 14 ตุลาคม 2569

ป้ายกำกับที่ใช้ในหน้านี้: จากภาพ คือสิ่งที่เห็นในภาพโดยตรง, ตีความ คือข้อสรุปของเราเอง, ความรู้ทั่วไป คือข้อมูลที่ภาพไม่ได้ให้, ยังไม่ทดสอบ คือสิ่งที่ยังไม่ได้ลองใช้จริง ข้อความที่อ่านไม่ออกจะระบุไว้ตรงจุด

🎯 แก่นของเรื่อง

ความคิดหลักคือแยกความรู้ของโปรเจกต์ออกเป็นไฟล์ตามหน้าที่ ได้แก่ context, การตั้งค่า, กฎ, งานซ้ำ, ความสามารถเฉพาะทาง, ผู้ช่วยเฉพาะทาง และการตรวจอัตโนมัติ Claude Code จะอ่านไฟล์เหล่านี้เองทุกครั้ง คุณไม่ต้องอธิบายซ้ำทุกแชต

ทำไมถึงได้ผล (ตีความ)

  • ไฟล์ที่อยู่ใน repo ถูกโหลดอัตโนมัติ ทุกครั้งที่เริ่มงานโมเดลจึงเริ่มจากความรู้ชุดเดียวกัน ผลลัพธ์จึงคาดเดาได้มากขึ้น
  • ไฟล์ที่ commit เข้า repo ทุกคนในทีมได้ชุดเดียวกัน ส่วนไฟล์ .local ที่ git ไม่ติดตามเก็บความชอบส่วนตัวไว้โดยไม่กระทบคนอื่น
  • Hooks เป็นสคริปต์ ผลของมันจึงแน่นอน ส่วนกฎในไฟล์ markdown เป็นคำแนะนำที่โมเดลอ่านแล้วทำตาม (ตีความ)

20% ที่สำคัญที่สุด

ลำดับ ทำก่อน รอได้
1 CLAUDE.md ที่รากโปรเจกต์: ภาพรวมและแนวทางเขียนโค้ด agents, hooks
2 .claude/settings.json สำหรับการตั้งค่าร่วมของทีม skills ที่ซับซ้อน
3 .claude/rules/ แยกกฎเป็นเรื่อง ๆ เมื่อ CLAUDE.md ยาวเกิน .mcp.json ถ้ายังไม่ต้องต่อเครื่องมือภายนอก
4 .claude/commands/ สำหรับงานที่ทำซ้ำบ่อย

📈 ช่วยให้ดีขึ้นอย่างไร

ภาพไม่มีตัวเลขวัดผล มีเพียงข้อความสรุปว่าได้ผลลัพธ์ "better, safer and faster" ซึ่งเป็นข้อความอ้าง ไม่ใช่ผลวัด ทุกแถวด้านล่างจึงยังไม่ใช่ค่าที่วัดแล้ว

สถานการณ์ ถ้าไม่มี ถ้ามี วัดอย่างไร สถานะ
เริ่มงานใหม่ ต้องเล่าภาพรวมโปรเจกต์ทุกครั้ง CLAUDE.md ให้ context ตั้งแต่ต้น จำนวนข้อความที่ต้องอธิบายก่อนได้งานที่ใช้ได้ ตีความ
มาตรฐานโค้ด แต่ละคนสั่งต่างกัน โค้ดไม่สม่ำเสมอ rules/ ชุดเดียวกันทั้งทีม จำนวนคอมเมนต์ใน review ที่เกี่ยวกับสไตล์ ตีความ
งานซ้ำ เช่น review พิมพ์ prompt ยาวใหม่ทุกครั้ง /review เรียกครั้งเดียว เวลาตั้งแต่เริ่มจนได้ผล review ตีความ
ความปลอดภัย คำสั่งอันตรายหลุดได้ hook ตรวจก่อนรันคำสั่ง จำนวนคำสั่งที่ถูกบล็อกหรือแจ้งเตือน ยังไม่ทดสอบ
ภาพรวมทั้งสาย ผลลัพธ์ผันแปรตามคนสั่ง ผลลัพธ์ดีขึ้น ปลอดภัยขึ้น เร็วขึ้น ต้องออกแบบการทดลองเอง จากภาพ (ข้อความอ้าง ไม่มีตัวเลข)

🧪 ลองใช้

ตัวอย่างประกอบ (ตัวเลขเป็นของเราเอง ไม่ได้มาจากภาพ)

สมมติทีมเขียน API 5 คน และใน review แต่ละ PR มีคอมเมนต์เรื่องสไตล์ เฉลี่ย 6 ข้อ

  1. เขียน rules/code-style.md ที่ระบุการตั้งชื่อและรูปแบบ
  2. วัด 10 PR ถัดไป สมมติได้เฉลี่ย 3 ข้อ
  3. การลดลง = (6 − 3) ÷ 6 = 50%
  4. เงื่อนไขผ่านที่ตั้งก่อนวัด: ลดลงอย่างน้อย 30% ผลสมมตินี้จึงผ่าน

เมื่อไรควรใช้

สถานการณ์ ใช้ ไม่ใช้ ข้อกำหนดก่อน
ทีมหลายคนใช้ Claude Code กับ repo เดียว ✅ ตกลงกันว่าไฟล์ไหน commit ไฟล์ไหนไม่ commit
โปรเจกต์ที่ใช้ยาวและมีงานซ้ำ ✅ รู้ว่างานซ้ำคืออะไร
สคริปต์ลองทำครั้งเดียวทิ้ง ❌ CLAUDE.md สั้น ๆ ก็พอ
ต้องการบังคับกฎแบบเด็ดขาด ใช้ hooks ไม่ใช่แค่ rules/ เขียนสคริปต์ตรวจเป็น
ต้องต่อเครื่องมือภายนอก ใช้ .mcp.json รู้ MCP server ที่จะต่อและไว้ใจมันได้

ก้าวแรกที่เล็กที่สุด

สร้าง CLAUDE.md ที่รากโปรเจกต์ ใส่ 3 เรื่อง: โปรเจกต์ทำอะไร คำสั่ง build/test คืออะไร และกฎโค้ด 3 ข้อที่ผิดบ่อยที่สุด

เช็กลิสต์ติดตั้งทีละชั้น

สถานะ รายการ
⚪ CLAUDE.md มีภาพรวมและแนวทางเขียนโค้ด
⚪ CLAUDE.local.md อยู่ใน .gitignore
⚪ .claude/settings.json สำหรับทีม และ settings.local.json อยู่ใน .gitignore
⚪ rules/ แยกเป็นไฟล์ตามเรื่อง
⚪ commands/ มีอย่างน้อยหนึ่งคำสั่งที่ใช้บ่อย
⚪ ทดสอบเรียกคำสั่งแล้วได้ผลตามคาด

วิธีเช็กว่าดีขึ้นจริง

  • ตัวชี้วัด: จำนวนคอมเมนต์สไตล์ต่อ PR หรือเวลาที่ใช้ต่อ task ซ้ำ
  • baseline: เก็บ 10 งานก่อนติดตั้ง
  • เงื่อนไขผ่าน: ตั้งก่อนวัด เช่น ลดลงอย่างน้อย 30% เมื่อวัด 10 งานหลังติดตั้ง

🧠 ทดสอบความเข้าใจ

คำถาม คำตอบ คำตอบที่มักผิด
ทำไมความชอบส่วนตัวควรอยู่ใน CLAUDE.local.md ไม่ใช่ CLAUDE.md CLAUDE.md ถูกแชร์ทั้งทีม ส่วน .local ไม่ถูก commit จึงไม่ไปบังคับคนอื่น "เพราะ .local โหลดก่อน" (ภาพไม่ได้บอกเรื่องลำดับ)
CLAUDE.md ยาว 800 บรรทัดแล้ว Claude ทำตามกฎไม่ครบ ควรทำอะไร แยกเป็นไฟล์ใน rules/ ตามเรื่อง และเหลือแต่แก่นใน CLAUDE.md (ตีความ) เพิ่มคำว่า "IMPORTANT" ให้ทุกบรรทัด
กฎ "ห้ามรันคำสั่งลบไฟล์" ควรไว้ที่ rules/ หรือ hook hook เพราะเป็นสคริปต์ที่ทำงานแน่นอน ส่วน rule โมเดลอาจพลาดได้ (ตีความ) rules/ เพียงพอเพราะ Claude อ่านเสมอ
/review กับ agent code-reviewer ต่างกันอย่างไร command คือ prompt ที่เรียกเอง ส่วน agent คือผู้ช่วยเฉพาะทางที่รับงานต่อ (ตีความ) ทั้งสองอย่างเดียวกัน
กับดัก: deploy/ ใน skills/ ต้องมีทั้ง SKILL.md และ deploy-step-by-step.md เสมอหรือไม่ ภาพเป็นแค่ตัวอย่าง SKILL.md อธิบายสกิล ไฟล์ขั้นตอนเป็นตัวเลือก (ตีความ ยังไม่ทดสอบ) ต้องมีชื่อและจำนวนไฟล์ตามภาพเป๊ะ
ถ้าวางไฟล์ครบตามภาพแล้ว จะรับประกันว่าผลลัพธ์ดีขึ้นหรือไม่ ไม่รับประกัน ภาพเป็นโครงสร้างแนะนำ ต้องวัดผลเอง "ครบตามภาพแล้ว ต้องดีขึ้นแน่"

🗂️ แผนผังโครงสร้าง

ภาพวาดโครงสร้างโดยมี project/ เป็นรากของ repo ตามตารางด้านล่าง

project/                    # repo root
├── CLAUDE.md               # project overview and coding guidelines
├── CLAUDE.local.md         # personal overrides (git-ignored)
├── .mcp.json               # MCP server configuration
└── .claude/                # Claude-specific config
    ├── settings.json       # team settings
    ├── settings.local.json # personal settings
    ├── rules/
    │   ├── code-style.md
    │   ├── testing.md
    │   └── api-conventions.md
    ├── commands/
    │   ├── review.md
    │   └── fix-issue.md
    ├── skills/
    │   └── deploy/
    │       ├── SKILL.md
    │       └── deploy-step-by-step.md
    ├── agents/
    │   ├── code-reviewer.md
    │   └── security-auditor.md
    └── hooks/
        └── validate-bash.sh

Note จุดที่ภาพกำกวม: เส้นเชื่อมของ rules/, commands/, skills/, agents/ และ hooks/ ในภาพอาจอ่านได้ว่าอยู่ใต้ .claude/ หรือเป็นพี่น้องกับมัน แผนผังข้างบนวางไว้ใต้ .claude/ ซึ่งเป็นการตีความ และตรงกับข้อความ "Claude specific config (keep here)" ที่ภาพเขียนไว้ข้าง .claude/ ควรตรวจกับเอกสารทางการของ Anthropic ก่อนใช้จริง

📄 รายละเอียดแต่ละส่วน

ไฟล์ที่รากโปรเจกต์ (Project config)

ไฟล์ หน้าที่ (จากภาพ) ใช้อย่างไร
CLAUDE.md ภาพรวมโปรเจกต์และแนวทางเขียนโค้ด commit เข้า repo ให้ทุกคนใช้
CLAUDE.local.md ค่าเฉพาะตัว ถูก git ละเว้น เพิ่มชื่อไฟล์ใน .gitignore
.mcp.json ตั้งค่า MCP server เชื่อมเครื่องมือภายนอกกับ Claude

Settings

  • settings.json: การตั้งค่าของทีม อยู่ใน .claude/ (จากภาพ)
  • settings.local.json: การตั้งค่าส่วนตัวที่ override ได้ (จากภาพ)
  • รูปแบบเดียวกับไฟล์ที่รากโปรเจกต์: ไฟล์ร่วมเข้า repo ไฟล์ .local เก็บเฉพาะตัว (ตีความ)

Rules

ไฟล์ เนื้อหา (จากภาพ)
code-style.md การจัดรูปแบบและการตั้งชื่อ
testing.md วิธีเขียนเทสต์
api-conventions.md endpoint และรูปแบบ error

Custom commands

ไฟล์ คำสั่ง ผล (จากภาพ)
review.md /review ทำ code review
fix-issue.md /fix-issue แก้บั๊ก

เหตุผลที่ใช้ (จากภาพ): นิยามคำสั่ง slash ที่ใช้ซ้ำได้ เร่งเวิร์กโฟลว์ที่ทำบ่อย และให้ทีมทำงานแบบเดียวกัน

Skills

  • skills/deploy/ เป็นตัวอย่างสกิลสำหรับ deploy (จากภาพ)
  • SKILL.md อธิบายว่าสกิลทำอะไร และ deploy-step-by-step.md เก็บขั้นตอนทีละข้อ (จากภาพ)
  • สกิลถูกโหลดอัตโนมัติ และแต่ละสกิลมีคำสั่งที่ชัดเจน (จากภาพ ส่วนท้ายของข้อความถูกปุ่มของแอปบังจนอ่านไม่ครบ)

Sub-agents

ไฟล์ หน้าที่ (จากภาพ)
code-reviewer.md ตรวจ PR และสไตล์
security-auditor.md หาช่องโหว่

หลักการที่ภาพให้: ใช้ agent ที่เหมาะกับงาน เช่น code review และ security

Hooks

  • hooks/validate-bash.sh ทำ pre-commit และ pre-run checks (จากภาพ)
  • ใช้รันสคริปต์ก่อนหรือหลังการกระทำ ตรวจ lint เทสต์ หรือ deploy และช่วยให้โค้ดปลอดภัย (จากภาพ ข้อความท้ายบางคำอ่านไม่ครบ)
  • ความรู้ทั่วไป: การผูกสคริปต์เข้ากับเหตุการณ์ตามปกติตั้งค่าในไฟล์ settings ไม่ใช่เพียงวางสคริปต์ในโฟลเดอร์ hooks/ รายละเอียดให้ตรวจกับเอกสารทางการ (ยังไม่ทดสอบ)

🔄 ลำดับการทำงานทั้งสาย (How it all works)

หกขั้นตอนตามภาพ ซ้ายไปขวา

flowchart LR
    A[1 อ่าน CLAUDE.md] --> B[2 โหลด settings, rules, skills]
    B --> C[3 ใช้ commands และ sub-agents]
    C --> D[4 ต่อเครื่องมือผ่าน MCP]
    D --> E[5 รัน hooks และ validations]
    E --> F[6 ได้ผลลัพธ์ดีขึ้น ปลอดภัยขึ้น เร็วขึ้น]
ขั้น เกิดอะไรขึ้น ไฟล์ที่เกี่ยว
1 Claude อ่าน context ของโปรเจกต์ CLAUDE.md
2 โหลดการตั้งค่า กฎ และสกิล settings.json, rules/, skills/
3 ใช้คำสั่งและ sub-agent ตามงาน commands/, agents/
4 เชื่อมเครื่องมือภายนอก .mcp.json
5 รันสคริปต์ตรวจก่อน/หลังการกระทำ hooks/
6 ได้ผลลัพธ์ (ผลลัพธ์ที่ภาพอ้าง ยังไม่ได้วัด)

⚠️ Risks

Warning อย่า commit ไฟล์ส่วนตัวหรือความลับ ใน CLAUDE.local.md และ settings.local.json ต้องอยู่ใน .gitignore ตั้งแต่แรก และอย่าใส่ API key ในไฟล์ที่ commit รวมถึง .mcp.json

ความเสี่ยง / ข้อผิดพลาดที่พบบ่อย ผลที่ตามมา วิธีป้องกัน
CLAUDE.md ยาวและซ้ำซ้อน กฎสำคัญถูกมองข้าม (ตีความ) แยกเป็น rules/ เก็บแค่แก่น
กฎขัดกันระหว่างไฟล์ พฤติกรรมไม่แน่นอน ตรวจทานเป็นรอบ ๆ
.mcp.json ต่อ MCP server ที่ไม่น่าไว้ใจ เครื่องมือภายนอกเข้าถึงข้อมูลได้ ตรวจที่มาและสิทธิ์ก่อนเชื่อมต่อ
สคริปต์ hook มีบั๊ก บล็อกงานปกติหรือปล่อยคำสั่งอันตรายผ่าน ทดสอบสคริปต์แยกก่อนเปิดใช้
ทำตามภาพทุกไฟล์โดยไม่จำเป็น ดูแลไฟล์เกินความต้องการ เริ่มจากน้อยแล้วเพิ่มตามงาน

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

✅ Decision / next steps

Recommendation เริ่มจาก CLAUDE.md ก่อน แล้วเพิ่มทีละชั้นเมื่อพบปัญหาจริง: กฎซ้ำ → rules/, prompt ซ้ำ → commands/, ต้องบังคับ → hooks

  1. สร้าง CLAUDE.md และใส่ไฟล์ .local ใน .gitignore
  2. วัด baseline 10 งาน
  3. เพิ่ม rules/ และ commands/ แล้ววัดซ้ำ
  4. ตรวจรายละเอียดรูปแบบไฟล์กับเอกสารทางการของ Anthropic ก่อนใช้ hooks และ skills จริง

📖 ศัพท์เฉพาะ

คำ ความหมาย
repo root โฟลเดอร์บนสุดของ repository
slash command คำสั่งที่พิมพ์ขึ้นต้นด้วย / เพื่อเรียก prompt ที่เตรียมไว้
sub-agent ผู้ช่วยเฉพาะทางที่รับงานบางประเภทแยกจากผู้ช่วยหลัก
hook สคริปต์ที่รันก่อนหรือหลังการกระทำ
git-ignored ไฟล์ที่ git ไม่ติดตามและไม่ถูก commit

🔤 ตัวย่อที่ใช้ในหน้านี้

ตัวย่อ ชื่อเต็ม คืออะไร อ่านค่าอย่างไร
MCP Model Context Protocol มาตรฐานเชื่อมโมเดลกับเครื่องมือภายนอก (ชื่อเต็มเป็นความรู้ทั่วไป) .mcp.json คือไฟล์ตั้งค่า MCP server
MD Markdown นามสกุลไฟล์ข้อความที่มีรูปแบบ (ความรู้ทั่วไป) review.md คือไฟล์ Markdown ชื่อ review
JSON JavaScript Object Notation รูปแบบไฟล์ข้อมูลแบบคีย์-ค่า (ความรู้ทั่วไป) settings.json คือไฟล์ตั้งค่าแบบ JSON
SH Shell script สคริปต์รันในเชลล์ (ความรู้ทั่วไป) validate-bash.sh คือสคริปต์ bash
API Application Programming Interface ช่องทางให้โปรแกรมคุยกัน (ความรู้ทั่วไป) api-conventions.md คือกติกาออกแบบ endpoint
PR Pull Request คำขอรวมโค้ดเข้า branch หลัก (ความรู้ทั่วไป) "ตรวจ PR" คือไล่ดูโค้ดที่ขอรวม

หมายเหตุ: ชื่อเต็มของทุกแถวเป็นความรู้ทั่วไป ภาพไม่ได้ให้ชื่อเต็มไว้ ส่วนชื่อไฟล์ CLAUDE.md และ SKILL.md เป็นชื่อไฟล์ ไม่ใช่ตัวย่อ

📌 Summary

  • โครงสร้างแยกหน้าที่เป็นเจ็ดกลุ่ม: project config, settings, rules, commands, skills, agents, hooks (จากภาพ)
  • ไฟล์ร่วมเข้า repo ไฟล์ .local เก็บเฉพาะตัวและต้องถูก git ละเว้น (จากภาพ)
  • ลำดับการทำงานมีหกขั้น ตั้งแต่อ่าน CLAUDE.md จนถึงรัน hooks (จากภาพ)
  • ผลลัพธ์ที่ดีขึ้นยังเป็นข้อความอ้าง ไม่มีตัวเลขวัด จึงต้องวัดเองด้วย baseline
  • ตำแหน่งโฟลเดอร์ย่อยและวิธีผูก hooks ต้องตรวจกับเอกสารทางการก่อนใช้