วิเคราะห์โครงสร้างโฟลเดอร์ .claude/
(blog.dailydoseofds.com)- โฟลเดอร์
.claude/คือ ไดเรกทอรีควบคุมหลักของ Claude Code ที่ใช้จัดการกฎ คำสั่ง สิทธิ์ และสถานะหน่วยความจำของแต่ละโปรเจ็กต์ CLAUDE.mdคือ ไฟล์ศูนย์กลางที่กำหนดหลักการทำงานและกฎของโปรเจ็กต์สำหรับ Claude โดยจะรวมและนำการตั้งค่าหลายชั้นมาใช้ร่วมกัน- โฟลเดอร์
commands/,skills/,agents/ใช้สำหรับจัดองค์ประกอบ คำสั่งกำหนดเอง เวิร์กโฟลว์อัตโนมัติ และซับเอเจนต์เฉพาะทาง ตามลำดับ เพื่อเพิ่มประสิทธิภาพการทำงานร่วมกัน settings.jsonใช้ควบคุม สิทธิ์ในการรันคำสั่งและขอบเขตการเข้าถึงไฟล์ และสามารถ override รายบุคคลได้ด้วยsettings.local.json- โครงสร้างทั้งหมดทำหน้าที่เป็น โปรโตคอลที่ส่งต่ออัตลักษณ์และกฎของโปรเจ็กต์ให้ Claude ซึ่งการตั้งค่าที่ชัดเจนจะช่วยเพิ่มทั้งประสิทธิภาพการทำงานและการทำงานร่วมกันให้สูงสุด
โครงสร้างและองค์ประกอบของโฟลเดอร์ .claude/
- โฟลเดอร์
.claude/คือ ไดเรกทอรีหลักที่ควบคุมการทำงานของ Claude Code ใช้จัดการกฎ คำสั่ง สิทธิ์ และสถานะหน่วยความจำของแต่ละโปรเจ็กต์ - โฟลเดอร์ใน root ของโปรเจ็กต์จะเก็บ การตั้งค่าระดับทีม และถูก commit เข้า Git
- โฟลเดอร์ใน home directory (
~/.claude/) จะเก็บ การตั้งค่าส่วนตัวและประวัติเซสชัน รวมถึงหน่วยความจำอัตโนมัติและคำสั่งส่วนตัว -
CLAUDE.md — คู่มือคำสั่งของ Claude
- เป็นไฟล์ที่ Claude Code อ่านเป็นลำดับแรกเมื่อเริ่มเซสชัน และใช้ กำหนดหลักการทำงานของ Claude และกฎของโปรเจ็กต์
CLAUDE.mdใน root ของโปรเจ็กต์ใช้สำหรับกฎร่วมของทีม,~/.claude/CLAUDE.mdใช้สำหรับ กฎส่วนตัวแบบ global, และCLAUDE.mdในโฟลเดอร์ย่อยใช้สำหรับ กฎเฉพาะโฟลเดอร์- Claude จะ รวมและใช้งาน
CLAUDE.mdหลายไฟล์ร่วมกัน - เนื้อหาที่แนะนำให้ใส่ ได้แก่ คำสั่ง build/test, การตัดสินใจด้านสถาปัตยกรรมที่สำคัญ, ข้อจำกัดที่ไม่ชัดเจนในตัวเอง, กฎการตั้งชื่อและการจัดการข้อผิดพลาด เป็นต้น
- แนะนำให้ รักษาความยาวไม่เกิน 200 บรรทัด เพราะหากยาวเกินไปจะทำให้อัตราการทำตามคำสั่งของ Claude ลดลง
-
CLAUDE.local.md — การ override รายบุคคล
- เป็นไฟล์ที่ใช้ สะท้อนความชอบส่วนตัว แยกจากกฎร่วมของทีม
- หากสร้าง
CLAUDE.local.mdไว้ที่ root ของโปรเจ็กต์ Claude จะอ่านไฟล์นี้ร่วมด้วย - ไฟล์นี้จะถูกใส่ใน
.gitignoreโดยอัตโนมัติ จึง ไม่ถูก commit เข้า repository
-
rules/ โฟลเดอร์ — การจัดการกฎแบบโมดูลาร์
- หาก
CLAUDE.mdมีขนาดใหญ่ขึ้น สามารถแยกไปจัดการในโฟลเดอร์.claude/rules/ได้ - แต่ละไฟล์กฎจะถูก แยกตามหัวข้อ ทำให้ดูแลรักษาได้ง่าย
- ตัวอย่าง:
code-style.md,testing.md,api-conventions.md,security.md
- ตัวอย่าง:
- หากใช้ฟิลด์
pathsใน YAML frontmatter จะสามารถกำหนด กฎที่ใช้เฉพาะบาง path ได้- ตัวอย่าง: ใช้กฎ API เฉพาะ path
src/api/**/*.ts
- ตัวอย่าง: ใช้กฎ API เฉพาะ path
- กฎที่ไม่ระบุ path จะถูกโหลดในทุกเซสชันเสมอ
- หาก
-
commands/ โฟลเดอร์ — คำสั่ง slash แบบกำหนดเอง
- แต่ละไฟล์ Markdown ในโฟลเดอร์
.claude/commands/จะถูกลงทะเบียนเป็น คำสั่ง slash (/)- ตัวอย่าง:
review.md→/project:review,fix-issue.md→/project:fix-issue
- ตัวอย่าง:
- สามารถใช้ไวยากรณ์ backtick พร้อม
!เพื่อ แทรกผลลัพธ์จากการรัน shell command เข้าไปใน prompt ของ Claude ได้- ตัวอย่าง:
!git diff main...HEAD
- ตัวอย่าง:
- สามารถส่ง อาร์กิวเมนต์ ตอนรันคำสั่งได้ด้วยตัวแปร
$ARGUMENTS- ตัวอย่าง:
/project:fix-issue 234→ โหลดรายละเอียด GitHub issue 234 อัตโนมัติ
- ตัวอย่าง:
- คำสั่งระดับโปรเจ็กต์สามารถแชร์กับทีมได้ ส่วนคำสั่งส่วนตัวจะถูกเก็บใน
~/.claude/commands/และ ใช้ได้กับทุกโปรเจ็กต์
- แต่ละไฟล์ Markdown ในโฟลเดอร์
-
skills/ โฟลเดอร์ — เวิร์กโฟลว์ที่รันอัตโนมัติ
- ทำงานเป็น เวิร์กโฟลว์ที่คล้ายคำสั่ง แต่ถูก trigger อัตโนมัติ
- Claude จะวิเคราะห์บทสนทนาและ รันโดยอัตโนมัติในสถานการณ์ที่เหมาะสม
- แต่ละ skill จะถูกกำหนดด้วยไฟล์
SKILL.mdในโฟลเดอร์ย่อย และใช้ YAML frontmatter เพื่อระบุ เงื่อนไข trigger และเครื่องมือที่อนุญาต- ตัวอย่าง: skill
security-reviewจะรันอัตโนมัติเมื่อมีบทสนทนาเกี่ยวกับความปลอดภัย
- ตัวอย่าง: skill
- ในโฟลเดอร์ skill สามารถมี เอกสารเสริมหรือไฟล์ template เช่น
DETAILED_GUIDE.mdได้ - skill ส่วนตัวจะถูกเก็บใน
~/.claude/skills/และใช้งานได้แบบ global
-
agents/ โฟลเดอร์ — ซับเอเจนต์เฉพาะทาง
- ในโฟลเดอร์
.claude/agents/จะใช้กำหนด ซับเอเจนต์ (persona) ที่ทำหน้าที่เฉพาะด้าน - เอเจนต์แต่ละตัวมี system prompt, โมเดล และสิทธิ์เข้าถึงเครื่องมือเป็นของตัวเองอย่างอิสระ
- ตัวอย่าง:
code-reviewer.md,security-auditor.md
- ตัวอย่าง:
- สามารถจำกัดเครื่องมือที่เข้าถึงได้ด้วยฟิลด์
toolsเพื่อให้เกิด ความปลอดภัยและการแยกบทบาท - สามารถเลือก Claude model ที่เหมาะกับงานได้ด้วยฟิลด์
model(เช่น Haiku, Sonnet, Opus) - เมื่อจำเป็น Claude จะ รันเอเจนต์นั้นในคอนเท็กซ์แยกต่างหาก แล้วสรุปผลลัพธ์กลับมาเท่านั้น
- ในโฟลเดอร์
-
settings.json — สิทธิ์และการตั้งค่าโปรเจ็กต์
.claude/settings.jsonใช้กำหนด สิทธิ์ในการรันคำสั่งและขอบเขตการเข้าถึงไฟล์ ของ Claude- ฟิลด์
$schemaรองรับ auto-complete และการตรวจสอบความถูกต้อง ใน VS Code เป็นต้น - รายการ
allowใช้กำหนด คำสั่งที่อนุมัติอัตโนมัติ ส่วนรายการdenyใช้กำหนด คำสั่งที่บล็อกโดยสมบูรณ์- ตัวอย่าง: อนุญาต —
Bash(npm run *),Read,Write,Edit - บล็อก —
Bash(rm -rf *),Bash(curl *), การอ่านไฟล์.env
- ตัวอย่าง: อนุญาต —
- คำสั่งที่ไม่อยู่ในรายการจะต้อง ขอให้ผู้ใช้ยืนยันก่อนรัน
- การเปลี่ยนสิทธิ์รายบุคคลจะถูกเก็บใน
.claude/settings.local.jsonและไม่รวมใน Git
-
~/.claude/ โฟลเดอร์ — การตั้งค่า global และหน่วยความจำ
~/.claude/CLAUDE.mdคือ คำสั่งส่วนตัวที่ใช้ร่วมกันกับทุกโปรเจ็กต์~/.claude/projects/ใช้เก็บ ประวัติเซสชันและหน่วยความจำอัตโนมัติของแต่ละโปรเจ็กต์- เก็บคำสั่ง แพตเทิร์น และ insight เชิงโครงสร้างที่ Claude เรียนรู้ไว้
- สามารถดูและแก้ไขได้ด้วยคำสั่ง
/memory
~/.claude/commands/,~/.claude/skills/,~/.claude/agents/เป็นที่เก็บ คำสั่ง, skill และเอเจนต์ส่วนตัวแบบ global
-
ตัวอย่างโครงสร้างทั้งหมด
your-project/ ├── CLAUDE.md ├── CLAUDE.local.md └── .claude/ ├── settings.json ├── settings.local.json ├── commands/ ├── rules/ ├── skills/ └── agents/ ~/.claude/ ├── CLAUDE.md ├── settings.json ├── commands/ ├── skills/ ├── agents/ └── projects/ -
ขั้นตอนการตั้งค่าเริ่มต้น
- ขั้นตอนที่ 1: สร้าง
CLAUDE.mdพื้นฐานด้วยคำสั่ง/initแล้วคงไว้เฉพาะเนื้อหาหลักที่จำเป็น - ขั้นตอนที่ 2: เขียน
.claude/settings.jsonและกำหนดกฎการอนุญาต/บล็อกการรัน -
ขั้นตอนที่ 3:เพิ่มคำสั่งให้เหมาะกับเวิร์กโฟลว์ที่ใช้บ่อย (เช่น code review, การแก้ issue)
- ขั้นตอนที่ 4: หาก
CLAUDE.mdเริ่มใหญ่ ให้แยกไปไว้ใน.claude/rules/ - ขั้นตอนที่ 5: เพิ่มกฎความชอบส่วนตัวใน
~/.claude/CLAUDE.md
- ขั้นตอนที่ 4: หาก
- ขั้นตอนที่ 1: สร้าง
อินไซต์สำคัญ
- โฟลเดอร์
.claude/คือ โปรโตคอลที่ใช้ถ่ายทอดอัตลักษณ์และกฎของโปรเจ็กต์ให้ Claude CLAUDE.mdคือไฟล์ที่สำคัญที่สุด และยิ่งกำหนดได้ชัดเจนมากเท่าไร ประสิทธิภาพของ Claude ก็จะยิ่งสูงสุด- องค์ประกอบอื่น ๆ เป็นชั้นสำหรับการเสริมและปรับแต่ง ซึ่งสามารถขยายเพิ่มได้แบบค่อยเป็นค่อยไป
- การตั้งค่าที่ชัดเจนจะนำไปสู่ การลดคำขอให้แก้ซ้ำจาก Claude และการทำงานร่วมกันที่มีประสิทธิภาพ
ประเด็นอภิปรายเพิ่มเติม
- รายการ deny ใน
settings.jsonอาจปลอดภัยเมื่อมนุษย์เป็นผู้ใช้ แต่ในโหมดเอเจนต์ยังต้องมีการป้องกันเพิ่มเติม เพราะยังมีการเข้าถึง Bash ได้ - OneCLI มี ชั้น proxy ระดับเครือข่ายที่ใช้แทน credential token เพื่อป้องกันการเปิดเผยข้อมูลลับ
- มีการตั้งคำถามถึงความจำเป็นของ การตั้งค่า .claude แยกสำหรับโหมดเอเจนต์ในอนาคต (เช่น แยกกฎ สิทธิ์ และ skill)
- ตามเอกสารล่าสุด คำสั่ง (commands) และ skills ถูกรวมเข้าด้วยกันแล้ว โดย
.claude/commands/deploy.mdและ.claude/skills/deploy/SKILL.mdสามารถสร้างคำสั่ง/deployแบบเดียวกันได้ และ skill รองรับความสามารถเพิ่ม เช่น ไฟล์เสริมและการ trigger อัตโนมัติ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การสร้าง toolkit สำหรับ AI agent ให้ความรู้สึกเหมือนการไล่หาชุดตั้งค่าเพิ่มประสิทธิภาพการทำงานที่สมบูรณ์แบบ
ดูบทความบล็อกกับ YouTube เพื่อจัดรูทีนขึ้นมา แต่สุดท้ายคนที่ทำงานสม่ำเสมอด้วย รายการสิ่งที่ต้องทำ แบบเรียบง่ายกลับไปได้ไกลกว่า
จากประสบการณ์ของฉัน วิธีที่เรียบง่ายอย่างให้ Plain Claude วางแผน ตรวจทาน แล้วค่อยลงมือทำ ยังใช้ได้ผลดีที่สุดอยู่ดี
ทักษะทางเทคนิคที่ให้ agent คอย pipeline ข้อมูล สร้างคำขอ ติดตามระบบ และอัปเดตโค้ด ช่วยเพิ่มประสิทธิภาพการพัฒนาได้อย่างก้าวกระโดด
ในโค้ดระดับ 10 ล้านบรรทัด ผลิตภาพดีขึ้นมาก และส่วนที่เป็นการ generate โค้ดจริง ๆ มีไม่ถึง 5%
ที่เหลือส่วนใหญ่คือความสามารถในการสร้าง toolchain สำหรับทดสอบและตรวจสอบได้อย่างรวดเร็ว
จริง ๆ แล้วถ้าคุณ รู้ชัดว่าต้องการอะไรและสื่อสารมันได้ดี ก็ใช้ AI ทำงานได้เยอะมากแล้ว
คนส่วนใหญ่ไม่รู้สิ่งนั้น เลยทำให้กระบวนการบังคับให้วางแผนกลายเป็น ทางลัด เพื่อให้เกิดความเข้าใจ
แต่ก็มีความไร้ประสิทธิภาพจากการต้องย้ำ context ทุก session และคัดลอกไฟล์
.mdเป้าหมายตอนนี้คือการ กำจัดงานซ้ำแบบนี้
ฉันอยากรู้ว่าคนอื่นจัดการ
context bankที่สะสม context กันอย่างไร — เช่นข้อมูลพื้นฐานอย่าง “บทบาทของฉัน ผลิตภัณฑ์ที่รับผิดชอบ เอกสารล่าสุด”เอกสารก็ซ้ำและเก่าเยอะ เลยเอา Drive ทั้งหมดมาต่อไม่ได้ง่าย ๆ
ถ้า context เดิม ๆ โผล่มาเกินสองครั้ง ควรให้สร้างไฟล์ Skill เลยไหม หรือควรรวบเอกสารมาไว้ในโฟลเดอร์เดียวเพื่อจัดการดี กำลังคิดอยู่
การตั้งค่าเกินจำเป็น (over-configuration) ทำให้คุณภาพตกและเกิดปัญหาลูป
เพราะโมเดลดีขึ้นเรื่อย ๆ คำสั่งที่เมื่อก่อนจำเป็น บางทีตอนนี้กลับ ขัดขวางประสิทธิภาพ
ฉันยังเคยได้ยินมาด้วยว่าทีม Anthropic จะล้าง
claude.mdทุก ๆ 30 วันเลยให้ Claude สร้าง MCP server ขึ้นมา และตอนนี้มันจัดการงานบัญชีแบบอัตโนมัติได้แล้ว
หลังปิดบัญชีสิ้นเดือน ฉันให้ Claude ดึงงานสำคัญออกมาทำเป็น Skill แล้วมันก็ทำงานเหมือนมี นักบัญชีจูเนียร์ เพิ่มมา
ฉันรู้สึกว่า custom MCP กับ Skill มีประโยชน์มากจริง ๆ
หลายคนเหมือนสร้างกำแพงการตั้งค่าขนาดยักษ์ก่อนจะเริ่ม agentic coding
แต่จริง ๆ ตอนเริ่มควรเริ่มจาก
.claudeว่าง ๆ และAGENTS.mdแล้วเรียนรู้วิธีควบคุมมันด้วยตัวเองถ้าติดตั้ง skill ของคนอื่นมั่ว ๆ จะเพิ่ม ความไม่เป็นกำหนดแน่นอน (nondeterminism) และยังเปลือง context window
ข้อยกเว้นเดียวที่ฉันแนะนำให้ติดตั้งจากภายนอกคือ
playwright-cliตัวอย่างเช่น ถ้าตั้งให้ตรวจสอบเงื่อนไขล่วงหน้าตาม กฎนี้ ก็จะเสถียรกว่า
ฉันคิดว่าทีมความปลอดภัยก็น่าจะชอบแนวทางนี้
ฉันเองก็กำหนดกฎไว้เหมือนกัน เพื่อไม่ให้ Claude commit โดยไม่มี GPG signature
แต่กฎพวกนี้ก็ไม่ใช่อะไรที่ตายตัว มันต้องพัฒนาต่อเนื่อง
ตรงกันข้าม มันย้ำซ้ำ ๆ ว่าควร เริ่มเล็กและทำให้สั้น
ต่อให้เป็นมือใหม่ แค่เพิ่มไม่กี่บรรทัดใน
AGENTS.mdAI ก็เข้าใจเจตนาของผู้ใช้ได้ดีขึ้นการตั้งค่าเรียบง่ายช่วยลด อาการทำงานเพี้ยนของ AI ได้มาก
ถ้าแต่ละนักพัฒนาใช้เครื่องมือแบบ agentic วิธีการร่วมงานกันทั้งทีมก็จะเปลี่ยนไปด้วย
การถกเรื่องการตั้งค่าซับซ้อนแบบนี้น่าจะหายไปเกือบหมดใน 1 ปี เมื่อโมเดลพัฒนาไปอีก
โฟลเดอร์
~/.claude/projectsนี่แหละคือส่วนที่น่าสนใจจริง ๆฉันพบว่ายิ่งมีการตั้งค่าที่ไม่จำเป็นน้อยเท่าไร ผลลัพธ์ยิ่งดี
คนเรามักกำหนดรายละเอียดในเอกสารมากเกินไป แต่ AI ก็เหมือน ผู้ใหญ่ที่เก่งแต่กำลังกังวล
ถ้าให้คำสั่งมากเกินไป มันจะยิ่งโง่ลง
บทความนี้ให้ความรู้สึกเหมือนถูก generate มากกว่าจะมาจากประสบการณ์จริง
Claude.mdควร สั้น ๆ แล้วใส่ลิงก์ไว้ไม่กี่อันก็พอพอ context สะสมมากขึ้น ประสิทธิภาพจะลดลง ดังนั้นควร แยกการวางแผนกับการลงมือทำ และรีเซ็ตทุกครั้ง
ยังไม่ชัดว่า skill อยู่ใน context ตลอดเวลา ส่วน command ต้องเรียกใช้เองเท่านั้นหรือเปล่า
อยากให้ผู้ให้บริการโมเดลทุกเจ้ามีชุดไฟล์มาตรฐานร่วมกัน
แบบนั้นการสลับไปมาระหว่าง Claude, Codex, Cursor, Opencode ก็คงง่ายขึ้น
ต่อให้เป็น prompt เดียวกัน แต่แต่ละโมเดลก็ตอบสนองไม่เหมือนกัน ดังนั้น การปรับแต่ง prompt ต้องต่างกันไปตามแต่ละโมเดล
agents.mdไฟล์เดียว แล้วให้Claude.mdอ้างอิงมัน จากนั้นเชื่อมแต่ละโฟลเดอร์ด้วย symlink (sync) ได้มันไม่สมบูรณ์แบบ แต่ใช้งานได้ค่อนข้างดี
เพราะงั้นความหลากหลายในตอนนี้จึงอาจเป็นเรื่องดีเสียด้วยซ้ำ
เอกสารทางเลือก ของ Claude Fast มีประโยชน์มาก
ฉันไม่เข้าใจเลยว่าจะมีเหตุผลอะไรให้เกลียดนิยามของโฟลเดอร์
.claudeคุณสามารถให้ main agent เขียนไฟล์เอง อัปเดตซ้ำไปเรื่อย ๆ และสร้าง ระบบที่พัฒนาตัวเองได้
ตอนนี้
.claudeกำลังคัดลอกตัวเอง ประเมินตัวเอง และอัปเดตตัวเอง — ฉันไม่ได้เขียนโค้ด แต่กำลัง เขียน.claudeต่างหากCLAUDE.mdไม่ใช่แค่เอกสารธรรมดา แต่เป็น ระบบปฏิบัติการของ Claudeมันกำหนดพฤติกรรม มอบหมายความรู้ให้กับ skill และสร้างระบบที่ค่อย ๆ พัฒนาตัวเองตามเวลา
กำแพงที่คนส่วนใหญ่ไม่รู้คือ ต่อให้ให้ Claude แก้ไฟล์แล้ว ถ้า ไม่ได้สั่งให้อ่านใหม่อย่างชัดเจน มันก็จะไม่สะท้อนการเปลี่ยนแปลงนั้น
เช่น ถ้าเพิ่งเขียน
CLAUDE.mdใหม่ ก็ต้อง reload ให้ Claude รับรู้มันเป็นคำสั่งใหม่ด้วยโฟลเดอร์
~/.claude/plansจะเก็บ ไฟล์แผนที่ถูกสร้างตอนรัน plan modeฉันเปิดไดเรกทอรีนี้บ่อย ๆ เพื่อสำรองข้อมูลหรือดูอ้างอิง
ฉันจัดระบบโดยยึด global MCP server กับ composite agent เป็นหลัก
MCP server แต่ละตัวกำหนดชุดเครื่องมือไว้ ส่วน agent ก็ ทำงานได้อย่างอิสระ ภายในนั้น
.agent.mdเป็นแค่เอกสารอธิบายเครื่องมือที่ใช้ได้ ไม่จำเป็นต้องมีการตั้งค่าซับซ้อนฉันรู้สึกว่า skill หรือ prompt ที่นำกลับมาใช้ซ้ำได้มีคุณค่าน้อย
โมเดลฉลาดพออยู่แล้ว สิ่งที่ต้องมีจริง ๆ คือ การชี้ทิศทาง (orientation)