บล็อก

ไฟล์คำสั่งเดียวสำหรับ Claude Code, Codex และ Cursor ในปี 2026

Markdown

แหล่งข้อมูลอ้างอิงเดียวสำหรับ Claude Code, Codex และ Cursor ในปี 2026: เมื่อ Claude Code อ่าน AGENTS.md เอง การนำเข้า @AGENTS.md ใน CLAUDE.md ลิงก์สัญลักษณ์ และ /init

อ่านบทความฉบับเต็ม

ดูข้อมูลเกี่ยวกับบริการได้ที่เอกสารประกอบของ Ailoot

เมื่อใช้ Claude Code, Codex และ Cursor ร่วมกัน มีอะไรเปลี่ยนไปบ้าง?

ประเด็นสำคัญ

ในปี 2026 การตั้งค่าทั่วไปของนักเขียนโค้ดแบบ vibe ไม่ได้มีเครื่องมือเดียว แต่มี 3–5 เครื่องมือ ใช้ Claude Code เป็นเครื่องมือหลัก ใช้ Codex ทำงานอัตโนมัติระยะยาว และใช้ Cursor แก้ไขอย่างรวดเร็วใน IDE แต่ละเครื่องมือมีไฟล์คำสั่งของตัวเอง ได้แก่ CLAUDE.md, AGENTS.md และ .cursorrules หากซิงก์ไฟล์เหล่านี้ด้วยตนเอง คุณต้องแก้บรรทัดเดียวกันในห้าตำแหน่ง ลืมอัปเดต Cursor แล้วหนึ่งสัปดาห์ต่อมา Claude กับ Codex ก็ให้ผลลัพธ์ต่างกันสำหรับพรอมป์ต์เดียวกัน

ในตัวอย่างที่กล่าวถึง Claude Code เป็นเครื่องมือหลัก ส่วน Codex และ Cursor ใช้กับงานเฉพาะอย่าง CLAUDE.md ของฉันมีคำสั่งประมาณ 250 บรรทัด เช่น ต้องอ่านอะไรและเรียงลำดับอย่างไร ห้ามแตะอะไร ใช้คำสั่งใดสำหรับการนำขึ้นใช้งาน และกฎการจัดรูปแบบ commit ตอนที่ฉันลองใช้ Codex CLI กับโปรเจ็กต์เป็นครั้งแรก มันไม่รู้กฎเหล่านี้เลย: มันรัน git push --force เข้าไปดู .env และเปลี่ยนชื่อไฟล์อย่างไม่ระมัดระวัง

ตอนแรกฉันคัดลอก CLAUDE.md ไปเป็น AGENTS.md ด้วยมือ สองสัปดาห์ต่อมา ฉันพบว่าในโปรเจ็กต์มีคำสั่งเดียวกันถึงสี่เวอร์ชัน ได้แก่ใน CLAUDE.md, AGENTS.md, .cursorrules และ .windsurf/rules/ โดยแต่ละไฟล์ต่างกันเล็กน้อย นี่ไม่ใช่ปัญหาของ Claude หรือ Cursor แต่เป็นกับดักพื้นฐานของทุกระบบที่มีแหล่งข้อมูลอ้างอิงหลายแห่ง ฉันอธิบายปัญหานี้เพิ่มเติมในคู่มือการทำงานแบบหลายเอเจนต์

ในเดือนมิถุนายน 2026 เอกสารหน่วยความจำของ Claude Code จาก Anthropic เสนอวิธีหนึ่ง: ใช้ไฟล์ร่วมกันและนำเข้า ตั้งแต่เดือนกันยายน 2026 เป็นต้นมา Claude Code อ่าน AGENTS.md เองได้หากโปรเจ็กต์ไม่มี CLAUDE.md และต้องนำเข้าเมื่อคุณมีกฎที่ใช้กับ Claude โดยเฉพาะ ด้านล่างนี้ ฉันจะอธิบายว่าเมื่อใดใช้ AGENTS.md เพียงไฟล์เดียวก็พอ วิธีตั้งค่าการนำเข้า และวิธีแยกกฎที่ใช้ร่วมกันออกจากกฎเฉพาะ Claude

Claude Code อ่าน AGENTS.md เองหรือไม่?

ประเด็นสำคัญ

อ่านได้ ตั้งแต่เวอร์ชัน 2.1.277 ซึ่งเผยแพร่เมื่อวันที่ 18 กันยายน 2026 แต่จะอ่านได้เฉพาะเมื่อไม่มี CLAUDE.md, .claude/CLAUDE.md หรือ CLAUDE.local.md ในไดเรกทอรีทำงานหรือไดเรกทอรีระดับบนขึ้นไป หากมี CLAUDE.md อยู่ Claude Code จะอ่านเฉพาะไฟล์นั้นตามค่าเริ่มต้น และจะรวม AGENTS.md ได้ด้วยบรรทัด @AGENTS.md ภายใน CLAUDE.md หรือด้วยลิงก์สัญลักษณ์ พฤติกรรมนี้เปลี่ยนได้ใน /config ภายใต้ Project instructions ก่อนเดือนกันยายน Claude Code ไม่อ่าน AGENTS.md เลย และการนำเข้าเป็นวิธีเดียวที่ทำได้

ก่อนเดือนกันยายน 2026 คำตอบคือ “ไม่” Issue #6235 ซึ่งร้องขอให้รองรับ AGENTS.md เปิดค้างมาตั้งแต่เดือนสิงหาคม 2025 และปิดเมื่อวันที่ 17 สิงหาคม 2026 ตลอดช่วงนั้น เอกสารหน่วยความจำระบุวิธีแก้ไว้แบบเดียว: สร้าง CLAUDE.md แล้วนำ AGENTS.md เข้าไปในไฟล์นั้น ตั้งแต่เวอร์ชัน 2.1.277 เอกสารระบุไว้ต่างออกไป:

Claude Code สามารถอ่าน AGENTS.md เป็นคำสั่งของโปรเจ็กต์ได้ ดังนั้นรีโพซิทอรีที่ตั้งค่าสำหรับเอเจนต์อื่นไว้แล้วจึงทำงานได้โดยไม่ต้องมี CLAUDE.md ไม่ต้องนำเข้า และไม่ต้องกำหนดค่า

— Anthropic, https://code.claude.com/docs/en/memory#agents-md

ไฟล์ใดมีอยู่ในโปรเจ็กต์จะเป็นตัวกำหนดว่า Claude Code อ่านอะไรบ้าง:

ไฟล์ในโปรเจ็กต์สิ่งที่ Claude Code อ่าน
AGENTS.md โดยไม่มี CLAUDE.md หรือ CLAUDE.local.md ในไดเรกทอรีทำงานหรือไดเรกทอรีระดับบนขึ้นไปAGENTS.md
AGENTS.md และ CLAUDE.md (หรือ CLAUDE.local.md) ในไดเรกทอรีทำงานหรือไดเรกทอรีระดับบนขึ้นไปอ่านเฉพาะ CLAUDE.md
CLAUDE.md ที่มีบรรทัด @AGENTS.mdCLAUDE.md และเนื้อหา AGENTS.md ที่นำเข้ามาอยู่ภายใน

สำหรับการตรวจสอบนี้ CLAUDE.md, .claude/CLAUDE.md และ CLAUDE.local.md ในไดเรกทอรีทำงานและทุกไดเรกทอรีระดับบนขึ้นไปจะนับด้วย ส่วน ~/.claude/CLAUDE.md ส่วนตัว ไฟล์ที่องค์กรจัดการ และกฎจาก .claude/rules/ จะไม่นับ เพราะโหลดควบคู่กับ AGENTS.md

เมื่อไม่มี CLAUDE.md Claude Code จะอ่านไฟล์ AGENTS.md และ .claude/AGENTS.md ทั้งหมดในไดเรกทอรีทำงานและระดับบนขึ้นไปเมื่อเริ่มทำงาน และจะอ่าน AGENTS.md ในไดเรกทอรีย่อยเมื่อเปิดไฟล์ในไดเรกทอรีนั้น การนำเข้า @path ภายใน AGENTS.md ก็ใช้ได้ Claude Code ไม่อ่าน AGENTS.local.md, AGENTS.override.md หรือเนื้อหาในไดเรกทอรี .agents/

ข้อควรระวังคือ CLAUDE.local.md ส่วนตัวก็นับด้วย หากสร้างไฟล์นี้เพื่อเก็บกฎที่ยังไม่ commit Claude Code จะหยุดอ่าน AGENTS.md โดยไม่แจ้งให้ทราบ การตั้งค่าด้านล่างเป็นวิธีแก้

พฤติกรรมนี้เปลี่ยนได้ใน /config ภายใต้ Project instructions:

การตั้งค่าสิ่งที่ Claude Code อ่าน
claude-md-or-agents-md (ค่าเริ่มต้น)CLAUDE.md หรือหากไม่มีทั้ง CLAUDE.md และ CLAUDE.local.md ก็อ่าน AGENTS.md
claude-md-and-agents-mdอ่านทั้งสองไฟล์: ในแต่ละไดเรกทอรี อ่าน CLAUDE.md ก่อน แล้วจึงอ่าน AGENTS.md
claude-mdอ่านเฉพาะ CLAUDE.md
managed-onlyอ่านเฉพาะ CLAUDE.md ที่องค์กรจัดการและหน่วยความจำอัตโนมัติ

หากต้องการเก็บ CLAUDE.local.md ไว้โดยยังอ่าน AGENTS.md ให้ตั้งค่า claude-md-and-agents-md จะไม่มีการอ่านซ้ำ: หาก AGENTS.md รวมอยู่แล้วผ่านบรรทัด @AGENTS.md หรือลิงก์สัญลักษณ์ Claude Code จะไม่โหลดไฟล์นั้นอีก ไม่ว่าการตั้งค่าจะเป็นอย่างไร

ตรวจได้ว่าอ่านไฟล์แล้วหรือไม่ด้วยคำสั่ง /memory: ตั้งแต่เวอร์ชัน 2.1.280 เป็นต้นไป รายการจะแสดงพาธของ AGENTS.md ในเวอร์ชันก่อน 2.1.277 และในเซสชันที่ปิดปลั๊กอิน agents-md ซึ่งมีมาในตัว Claude Code จะอ่านเฉพาะ CLAUDE.md และไม่มีรายการ Project instructions ใน /config ก่อนเวอร์ชัน 2.1.281 เซสชันผ่าน Amazon Bedrock และเซสชันที่ปิด telemetry ก็ทำงานแบบเดียวกัน ในเซสชันแรกหลังอัปเดตจากเวอร์ชันเก่า อาจยังอ่าน AGENTS.md ไม่ได้เช่นกัน แต่จะเริ่มทำงานตั้งแต่เซสชันถัดไป

แล้วการตั้งค่าที่มีไฟล์เดียวหมายความว่าอย่างไร? หากไม่มีกฎเฉพาะสำหรับ Claude ก็ข้าม CLAUDE.md ได้: ใช้ AGENTS.md ไฟล์เดียวก็พอ และ Claude Code, Codex กับ Cursor จะอ่านไฟล์นี้ หากมีกฎเฉพาะสำหรับ Claude (เช่น plan mode สำหรับไดเรกทอรีเสี่ยง, skills หรือ hooks) ก็ต้องมี CLAUDE.md และ Claude Code จะหยุดอ่าน AGENTS.md เอง จากนั้นให้นำ AGENTS.md เข้าไปใน CLAUDE.md ด้วยบรรทัด @AGENTS.md การตั้งค่านี้ยังทำงานเหมือนเดิมก่อนเดือนกันยายน และช่วยรองรับ Claude Code เวอร์ชันเก่าด้วย ฉันจะอธิบายโดยละเอียดด้านล่าง

จะนำเข้า @AGENTS.md ภายใน CLAUDE.md ได้อย่างไร?

ประเด็นสำคัญ

ต้องนำเข้าเมื่อโปรเจ็กต์มี CLAUDE.md: เมื่อมีไฟล์นี้ Claude Code จะไม่อ่าน AGENTS.md เองตามค่าเริ่มต้น หากต้องการตั้งค่า ให้เขียนบรรทัด @AGENTS.md ไว้ด้านบนสุดของไฟล์ CLAUDE.md เมื่อ Claude Code เริ่มเซสชัน ระบบจะแทรกเนื้อหาของ AGENTS.md แทนบรรทัดนั้น แล้วอ่านผลลัพธ์เป็นข้อความเดียว ใต้บรรทัดนำเข้า คุณเพิ่มหัวข้อ “Claude Code” พร้อมกฎที่ใช้กับ Claude เท่านั้นได้ การนำเข้าใช้ได้ทั้งพาธสัมพัทธ์และพาธสัมบูรณ์ และซ้อนกันได้ลึกสูงสุดสี่ระดับ

ตัวอย่างขั้นต่ำที่ใช้งานได้จากเอกสารทางการ:

@AGENTS.md

## Claude Code

Use plan mode for changes under `src/billing/`.

สิ่งที่เกิดขึ้นมีดังนี้ บรรทัดแรก @AGENTS.md เป็นคำสั่งนำเข้า เมื่อ Claude Code แยกวิเคราะห์ CLAUDE.md ตอนเริ่มเซสชัน จะพบคำสั่งนำเข้านี้และแทรกเนื้อหาทั้งหมดของ AGENTS.md ลงไปแทน จากนั้นเป็นหัวข้อ ## Claude Code: เป็นเพียง Markdown แต่ทำหน้าที่เป็นส่วน “ข้อกำหนดเพิ่มเติมเฉพาะ Claude” ใต้หัวข้อนี้มีกฎที่ใช้กับ Claude Code เท่านั้น นั่นคือให้ใช้ plan mode เมื่อแก้ไขไดเรกทอรี billing ส่วน Codex CLI หรือ Cursor จะไม่เปิดไฟล์นี้เลย แต่ใช้ AGENTS.md โดยตรง

ข้อความจากเอกสารเกี่ยวกับวิธีทำงานของการนำเข้า:

ไฟล์ CLAUDE.md สามารถนำเข้าไฟล์เพิ่มเติมโดยใช้ไวยากรณ์ @path/to/import ไฟล์ที่นำเข้าจะถูกขยายเนื้อหาและโหลดเข้าไปในบริบทเมื่อเริ่มเซสชัน พร้อมกับไฟล์ CLAUDE.md ที่อ้างถึงไฟล์เหล่านั้น

— Anthropic, https://code.claude.com/docs/en/memory

รายละเอียดที่ใช้ได้จริงบางประการ:

  • พาธสัมพัทธ์และสัมบูรณ์ @AGENTS.md เป็นพาธสัมพัทธ์กับไฟล์ที่มีคำสั่งนำเข้า ส่วน @/Users/me/shared/rules.md หรือ @~/.claude/personal.md เป็นพาธสัมบูรณ์ ฉันใช้ @~/.claude/personal.md เก็บความชอบส่วนตัวที่ไม่ต้องการใส่ไว้ในรีโพซิทอรี
  • ลึกได้สี่ระดับ AGENTS.md สามารถนำเข้า @docs/coding-style.md และ coding-style.md ก็นำเข้าไฟล์อื่นต่อได้ รวมความลึกสูงสุดสี่ระดับ ซึ่งเพียงพอสำหรับโครงสร้างจริงทุกรูปแบบ
  • แบ็กทิกปิดกั้นการนำเข้า หากข้อความเขียนว่า `@README` นั่นเป็นเพียงการกล่าวถึงชื่อ ไม่ใช่การนำเข้า วิธีนี้มีประโยชน์เมื่ออธิบายให้ผู้อ่านเข้าใจวิธีนำเข้าโดยไม่ทำให้เกิดการนำเข้าจริง
  • การอนุมัติสำหรับไฟล์นอกโปรเจ็กต์ หากคำสั่งนำเข้าชี้ออกนอกไดเรกทอรีทำงาน เช่น @~/.claude/personal.md Claude Code จะแสดงกล่องโต้ตอบพร้อมรายชื่อไฟล์เหล่านั้นในครั้งแรก หากปฏิเสธ การนำเข้าภายนอกจะยังคงปิดอยู่และจะไม่แสดงกล่องโต้ตอบอีก ส่วน @AGENTS.md ที่รากโปรเจ็กต์ไม่ทำให้มีกล่องโต้ตอบ วิธีนี้ช่วยป้องกันไม่ให้โหลดไฟล์ที่ไม่เกี่ยวข้องเข้าไปในบริบทโดยไม่ตั้งใจ

หลังจากเปลี่ยนมาใช้การตั้งค่านี้ในโปรเจ็กต์ที่กล่าวถึง CLAUDE.md ของฉันลดจาก 250 บรรทัดเหลือ 60 บรรทัด: มี @AGENTS.md และกฎอีกห้าถึงเจ็ดข้อที่ใช้กับ Claude Code เท่านั้น (plan mode สำหรับไดเรกทอรีเสี่ยง สิ่งที่ห้ามแตะในส่วนผู้ดูแลระบบ และวิธีเขียน commit) ทุกอย่างที่ใช้ร่วมกันอยู่ใน AGENTS.md ซึ่ง Codex และ Cursor อ่าน

ประเด็นสำคัญ

Anthropic มีสองวิธี: นำเข้าผ่าน @AGENTS.md หรือใช้ลิงก์สัญลักษณ์ ln -s AGENTS.md CLAUDE.md symlink ง่ายกว่า เพราะเป็นเพียงชื่อแทนและไม่ต้องแก้ไฟล์ แต่มีข้อเสียสามข้อ: Windows ต้องใช้สิทธิ์ผู้ดูแลระบบ คุณเพิ่มกฎเฉพาะ Claude ใน CLAUDE.md ไม่ได้ และบางครั้ง Git แสดง symlink เป็นขยะใน diff การนำเข้าเป็นวิธีที่ใช้ได้ทั่วไป หากไม่มีกฎเฉพาะสำหรับ Claude ตั้งแต่เวอร์ชัน 2.1.277 เป็นต้นไป ก็ไม่ต้องใช้ทั้งสองวิธี Claude Code จะอ่าน AGENTS.md เอง

เอกสารแสดงตัวเลือก symlink ดังนี้:

ln -s AGENTS.md CLAUDE.md

และเตือนเกี่ยวกับ Windows อย่างตรงไปตรงมาทันที:

หากคุณหรือใครก็ตามที่โคลนรีโพซิทอรีทำงานบน Windows ให้ใช้การนำเข้า `@AGENTS.md` การสร้างลิงก์สัญลักษณ์บน Windows ต้องใช้สิทธิ์ผู้ดูแลระบบหรือ Developer Mode และหาก Git ไม่ได้เปิดใช้ `core.symlinks` การ checkout ลิงก์ที่ commit ไว้จะกลายเป็นไฟล์ข้อความธรรมดา ทำให้มี `CLAUDE.md` เพียงบรรทัดเดียว แทนคำสั่งในสำเนานั้น

— Anthropic, https://code.claude.com/docs/en/memory

ตารางเปรียบเทียบ:

เกณฑ์การนำเข้า @AGENTS.mdsymlink ln -s
ใช้บน Windows โดยไม่ต้องมีสิทธิ์ผู้ดูแลระบบได้ไม่ได้ (ต้องใช้ Developer Mode)
เพิ่มกฎเฉพาะ Claude ได้ได้ ใต้บรรทัดนำเข้าไม่ได้ ไฟล์เหมือนกันทุกประการ
ปรากฏใน Git เป็น Markdown ปกติได้เป็นลิงก์ (ขึ้นอยู่กับ core.symlinks)
นำเข้าหลายไฟล์ได้ได้ ลึกสูงสุดสี่ระดับไม่ได้ หนึ่งต่อหนึ่ง
การแคช/การทำให้แคชเป็นโมฆะใน Claude Codeเป็นมาตรฐานสำหรับ CLAUDE.mdใช้ได้ แต่ symlink มีข้อผิดพลาดเกี่ยวกับข้อมูลเมตา
ตัวเลือกเริ่มต้นเหมาะกับทุกคนใช้เฉพาะเมื่อไม่จำเป็นต้องรองรับหลายแพลตฟอร์ม

ฉันใช้การนำเข้าในโปรเจ็กต์ที่กล่าวถึง ด้วยเหตุผลต่อไปนี้:

  1. ทีมใช้หลายแพลตฟอร์ม ฉันใช้ Mac; ในตัวอย่าง ทีมมีผู้ใช้ Windows และ Mac ในสัดส่วนใกล้เคียงกัน หากมี symlink ในรีโพซิทอรี ผู้ใช้ Windows ที่ไม่มี Developer Mode จะ checkout มันเป็นไฟล์ข้อความธรรมดาที่มีบรรทัดเดียวคือ AGENTS.md ซึ่งทำให้เกิดบั๊กแปลก ๆ: บางครั้งกฎก็ทำงาน บางครั้งก็ไม่ทำงาน และไม่รู้ว่าเพราะอะไร
  2. ฉันต้องการกฎเฉพาะ Claude ใต้ @AGENTS.md ใน CLAUDE.md ของฉันมีส่วน “Claude Code” พร้อมกฎ เช่น ใช้ --effort high สำหรับงานสถาปัตยกรรม รัน npm run build ก่อน git push และห้ามเรียก /api/v1/deploy ด้วยตนเอง Codex ไม่เข้าใจคำสั่งเหล่านี้
  3. แก้จุดบกพร่องได้ง่ายกว่า เมื่อเกิดปัญหา ฉันเปิด CLAUDE.md แล้วเห็นทั้งบรรทัดนำเข้าและข้อกำหนดเพิ่มเติมของฉัน ส่วน symlink ไม่มีข้อความว่า “เพิ่มสิ่งนี้ไว้ที่นี่” ดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้จุดบกพร่องของการตั้งค่า Claude Code ได้ในคู่มือ safe mode

หากไม่มีกฎเฉพาะสำหรับ Claude ตั้งแต่เวอร์ชัน 2.1.277 ก็ไม่จำเป็นต้องใช้ symlink อีกต่อไป: ลบ CLAUDE.md แล้ว Claude Code จะอ่าน AGENTS.md เอง เก็บ symlink ไว้เฉพาะเมื่อมีคนในทีมใช้เวอร์ชันเก่ากว่า 2.1.277 และอัปเดตไม่ได้ หากมีกฎเฉพาะสำหรับ Claude การนำเข้าสะดวกกว่าในเก้ากรณีจากสิบกรณี

Codex, Cursor, Copilot, Windsurf และ Gemini CLI อ่านไฟล์ใด?

ประเด็นสำคัญ

แต่ละเครื่องมืออ่านไฟล์ของตัวเอง บางครั้งอ่านมากกว่าหนึ่งไฟล์ Claude Code อ่าน CLAUDE.md และตั้งแต่เดือนกันยายน 2026 ก็อ่าน AGENTS.md ด้วย หากโปรเจ็กต์ไม่มี CLAUDE.md ส่วน Codex CLI อ่าน AGENTS.md และ AGENTS.override.md Cursor อ่านรูปแบบเก่า .cursorrules หรือรูปแบบใหม่ .cursor/rules/*.mdc และตั้งแต่ฤดูร้อนปี 2026 ก็อ่าน AGENTS.md ด้วย Copilot อ่าน .github/copilot-instructions.md หรือ .github/instructions/*.instructions.md Windsurf อ่าน .windsurfrules รูปแบบเก่า หรือ .windsurf/rules/ รูปแบบใหม่ Gemini CLI อ่าน GEMINI.md ส่วน Aider และ Cline รองรับ AGENTS.md แล้ว

แผนผังของเครื่องมือหลักทั้งเจ็ด (อ้างอิงเอกสารทางการของแต่ละเครื่องมือ):

เครื่องมือไฟล์คำสั่งหลักทางเลือกอื่นอ่าน AGENTS.md หรือไม่?
Claude CodeCLAUDE.md~/.claude/CLAUDE.md, ./.claude/CLAUDE.md, นโยบายที่องค์กรจัดการอ่าน หากโปรเจ็กต์ไม่มี CLAUDE.md (ตั้งแต่ 2.1.277) มิฉะนั้นอ่านผ่านการนำเข้า
Codex CLI (OpenAI)AGENTS.mdAGENTS.override.mdอ่าน (มีมาในตัว)
Cursor.cursor/rules/*.mdc.cursorrules (เลิกใช้แล้ว)อ่าน
GitHub Copilot.github/copilot-instructions.md.github/instructions/*.instructions.mdอ่านผ่านส่วนขยาย
Windsurf.windsurf/rules/.windsurfrules (เลิกใช้แล้ว)อ่าน
Gemini CLIGEMINI.md-ไม่อ่าน
Aider, Cline, opencodeAGENTS.md-อ่าน (มีมาในตัว)

สิ่งนี้หมายความว่าอย่างไร? หากรีโพซิทอรีมี AGENTS.md (พร้อม CLAUDE.md ที่นำเข้าไฟล์นี้เมื่อมีกฎเฉพาะ Claude) เครื่องมือห้าในเจ็ดตัวจะได้รับคำสั่งล่าสุดโดยอัตโนมัติ ส่วน Cursor และ Windsurf ซึ่งมีไฟล์เฉพาะของตัวเองอยู่แล้ว จะคงการตั้งค่าเดิมก็ได้ (AGENTS.md ก็ถูกอ่านโดยเครื่องมือเหล่านี้เช่นกัน) หรือเพิ่มการนำเข้า @AGENTS.md ก็ได้ แต่ไวยากรณ์ต่างกันและไม่ได้รองรับเสมอไป

แนวทางที่ง่ายที่สุดสำหรับโปรเจ็กต์ใหม่:

  1. ใส่กฎที่ใช้ร่วมกันทั้งหมดไว้ใน AGENTS.md — กฎ 95% ควรอยู่ที่นั่น
  2. สร้าง CLAUDE.md หากต้องการกฎเฉพาะ Claude: ใส่ @AGENTS.md ไว้บรรทัดแรก แล้วเพิ่มส่วนกฎเฉพาะ Claude ไว้ด้านล่าง หากไม่มีกฎดังกล่าวก็ไม่จำเป็นต้องมี CLAUDE.md; Claude Code อ่าน AGENTS.md เองตั้งแต่เวอร์ชัน 2.1.277
  3. เก็บ .cursor/rules/ ไว้สำหรับ Cursor ในกรณีที่พบไม่บ่อยและต้องใช้สิ่งเฉพาะของ Cursor เช่น คำสั่ง @Codebase และ @Docs
  4. ทำเช่นเดียวกันกับ Windsurf: เลิกใช้ .windsurfrules แบบเก่า และใช้ .windsurf/rules/ แบบใหม่เฉพาะเมื่อต้องการรูปแบบที่เข้ากับไวยากรณ์ของมัน

แนวทางนี้ให้ประโยชน์ 80% ด้วยงานเพียง 20% จากประสบการณ์ของฉัน ตอนจัดการทีมที่ใช้เครื่องมือปะปนกันใน “Antigravity” การดูแลแหล่งข้อมูลอ้างอิงเกินสองแห่ง (กฎร่วมและกฎเฉพาะ Claude) กลายเป็นเรื่องยุ่งยาก หากมีคนในทีมเพิ่มกฎลงใน .cursorrules แล้วลืมเพิ่มใน AGENTS.md หนึ่งสัปดาห์ต่อมา Cursor กับ Codex ก็จะให้ผลไม่ตรงกัน

/init ใน Claude Code นำ AGENTS.md ที่มีอยู่มาใช้ได้อย่างไร?

ประเด็นสำคัญ

/init สร้าง CLAUDE.md จากสิ่งที่มีอยู่ในรีโพซิทอรี และประหยัดงานด้วยตนเองได้ 20–30 นาที ตามค่าเริ่มต้นจะอ่านกฎ Cursor (.cursor/rules/, .cursorrules) และกฎ Copilot (.github/copilot-instructions.md) ส่วน AGENTS.md, .windsurfrules และ .clinerules จะอ่านในโหมด CLAUDE_CODE_NEW_INIT=1 โหมดนี้ยังเริ่มกระบวนการแบบอินเทอร์แอกทีฟหลายระยะ: ถามคำถาม สำรวจโค้ดผ่าน subagent และเสนอแผนก่อนเขียน ตั้งแต่เดือนกันยายน 2026 เป็นต้นมา /init มีข้อเสียเมื่อใช้ในโปรเจ็กต์ที่มี AGENTS.md: CLAUDE.md ที่สร้างขึ้นใหม่จะปิดการอ่าน AGENTS.md โดยตรง และทำให้กฎไปอยู่ในสองไฟล์

Anthropic อธิบาย /init ไว้ในเอกสารดังนี้:

เมื่อรัน /init ระบบจะอ่านไฟล์คำสั่งของเครื่องมืออื่น แล้วนำส่วนที่เกี่ยวข้องไปไว้ใน CLAUDE.md ที่สร้างขึ้น ได้แก่ กฎ Cursor จาก .cursor/rules/ หรือ .cursorrules กฎ Copilot จาก .github/copilot-instructions.md และเมื่อใช้ CLAUDE_CODE_NEW_INIT=1 ก็จะอ่าน AGENTS.md, .devin/rules/, .windsurf/rules/ หรือ .windsurfrules รวมถึง .clinerules ด้วย

— Anthropic, https://code.claude.com/docs/en/memory

ในทางปฏิบัติหมายความว่าอย่างไร? รีโพซิทอรีที่ฉันกล่าวถึงมี .cursorrules จากตอนที่ฉันลองใช้ Cursor (ประมาณ 80 บรรทัด) และ AGENTS.md (120 บรรทัด ซึ่งฉันรวบรวมด้วยมือ) เมื่อรัน claude /init คำสั่งจะอ่านทั้งสองไฟล์ ตัดกฎที่คล้ายกันออก แล้วประกอบเป็น CLAUDE.md ที่เป็นระเบียบภายในหนึ่งนาที ฉันตรวจดูไฟล์หลังจากนั้นและแก้เล็กน้อย เช่น ลบรายการที่ล้าสมัยและเพิ่มโครงสร้างหัวข้อ วิธีนี้เร็วกว่าการเขียนใหม่ตั้งแต่ต้น

เปิดโหมดอินเทอร์แอกทีฟที่ทำให้ /init อ่าน AGENTS.md ด้วยได้ผ่านตัวแปรสภาพแวดล้อม:

CLAUDE_CODE_NEW_INIT=1 claude

เมื่อ /init เริ่มทำงาน Claude จะถามคำถามเพื่อขอรายละเอียด เช่น ต้องการตั้งค่าอะไรบ้าง (CLAUDE.md, skills, hooks) โปรเจ็กต์ใช้ tech stack ใด และควรใช้คำสั่งใดสำหรับการทดสอบ จากนั้น subagent จะสำรวจโค้ดเบส โดยอ่าน package.json, README.md และไฟล์กำหนดค่าต่าง ๆ แล้วเติมส่วนที่ขาดให้ ตอนท้าย ระบบจะแสดงข้อเสนอให้คุณแก้ไขก่อนบันทึก หากต้องการทราบเพิ่มเติมเกี่ยวกับการตั้งค่า Claude Code ตอนเริ่มโปรเจ็กต์ โปรดดูคู่มือแยกต่างหาก

ต่อไปคือข้อเสีย หากโปรเจ็กต์มี AGENTS.md ที่ใช้งานอยู่แล้ว /init จะสร้าง CLAUDE.md ข้างไฟล์นั้น โดยมีสำเนากฎอยู่ ตั้งแต่นั้น Claude Code จะอ่านเฉพาะ CLAUDE.md ตามค่าเริ่มต้น ทำให้มีแหล่งข้อมูลอ้างอิงสองแห่งอีกครั้ง: คุณอัปเดต AGENTS.md แต่ Claude ยังทำงานจากสำเนาเก่า คำสั่ง /import ทำสิ่งคล้ายกัน โดยเพิ่มสำเนา AGENTS.md ลงใน CLAUDE.md เพียงครั้งเดียว หากต้องการคงแหล่งข้อมูลเดียว ให้ใส่การนำเข้า @AGENTS.md เป็นบรรทัดแรกของ CLAUDE.md หลังใช้ /init และลบเนื้อหาใน CLAUDE.md ที่ซ้ำกับ AGENTS.md

/init เป็นจุดเริ่มต้นที่เหมาะกับโปรเจ็กต์ใหม่ หรือโปรเจ็กต์ที่ย้ายมาจาก Cursor หรือ Copilot ไม่จำเป็นต้องค้นหา “เทมเพลต CLAUDE.md ที่ดีที่สุด” ทางออนไลน์ เพราะ Anthropic นำสิ่งที่มีในรีโพซิทอรีมาพิจารณาอยู่แล้ว หากโปรเจ็กต์มี AGENTS.md ที่ใช้งานอยู่และไม่มีกฎเฉพาะ Claude ก็ไม่จำเป็นต้องใช้ /init: Claude Code จะอ่าน AGENTS.md เอง

จะแยกคำสั่งที่ใช้ร่วมกันกับคำสั่งเฉพาะ Claude อย่างไร?

ประเด็นสำคัญ

ใส่กฎที่เอเจนต์ AI ทุกตัวเข้าใจได้ไว้ใน AGENTS.md: ห้ามแตะอะไร ตั้งชื่อ branch อย่างไร ระบุว่า .env มีความลับ และใช้คำสั่งใดสำหรับการทดสอบ ส่วนกฎเฉพาะ Claude Code ให้ใส่ใน CLAUDE.md (ใต้บรรทัดนำเข้า) เช่น plan mode, skills, hooks, การอ้างอิง skill และชื่อโมเดลตามเวอร์ชัน แยกง่าย ๆ คือ ถ้ากฎเริ่มด้วย “Claude ควร” ก็ให้อยู่ใน CLAUDE.md ถ้าเริ่มด้วย “เครื่องมือควร” ก็ให้อยู่ใน AGENTS.md

ฉันแยกกฎตามหลักนี้ กฎที่ใช้ร่วมกันและควรอยู่ใน AGENTS.md มีดังนี้:

  • สิ่งที่ห้ามแตะในโค้ด โฟลเดอร์ .env, node_modules, prisma/migrations (ให้แก้ผ่าน prisma migrate เท่านั้น), .next/ และ .git/
  • วิธีตั้งชื่อ branch: feat/, fix/, chore/ ส่วน commit ให้ขึ้นต้นด้วย feat:, fix: หรือ docs: แล้วตามด้วยคำอธิบายสั้น ๆ ไฟล์ component ใช้ชื่อแบบ kebab-case
  • คำสั่ง test/lint npm run build, npm run lint, npm test รวมถึงคำสั่งที่ต้องรันก่อน git push
  • หลักการด้านสถาปัตยกรรม อะไรควรอยู่ใน src/lib/ อะไรอยู่ใน src/components/ ตรรกะทางธุรกิจอยู่ที่ไหน และ UI อยู่ที่ไหน
  • ความปลอดภัย ห้าม commit ความลับ เข้าถึงฐานข้อมูล production ผ่าน prod-psql เท่านั้น เข้าถึง production ผ่าน SSH โดยใช้ alias prod เท่านั้น ห้ามใช้ root@IP

กฎเฉพาะ Claude ที่ควรอยู่ใน CLAUDE.md (ใต้ @AGENTS.md):

  • Plan mode ใช้ plan mode เมื่อแก้ไขไดเรกทอรีที่มีความเสี่ยง (เช่น src/billing/)
  • ระดับความพยายาม ใช้ --effort high สำหรับงานสถาปัตยกรรม และ medium สำหรับงานประจำ
  • Skills ควรเรียกใช้เอเจนต์ AI และ skill ใดในแต่ละสถานการณ์ ตัวอย่างเช่น “เมื่อทำงานกับคู่มือ ให้เรียกใช้ skill build-masterskaya-guide”
  • หน่วยความจำ Claude ควรใส่อะไรในหน่วยความจำอัตโนมัติ และอะไรใน CLAUDE.local.md ดูข้อมูลเพิ่มเติมเกี่ยวกับหน่วยความจำ Claude ได้ที่คู่มือ Memory และ CLAUDE.md
  • Hooks หากกำหนด hooks ไว้ใน .claude/settings.json ให้อธิบายใน CLAUDE.md ว่าทำอะไร (Codex และ Cursor ไม่รู้จัก hooks และไม่จำเป็นต้องรู้)
  • Skills และคำสั่ง รายการคำสั่ง slash ที่ฉันใช้บ่อย (/init, /cd, /memory, /plan)

ขอบเขตนี้ไม่ได้ชัดเจนเสมอไป ตัวอย่างเช่น “ห้ามรัน git push --force ไปยัง main” เป็นกฎร่วมอย่างชัดเจน จึงควรอยู่ใน AGENTS.md แต่ “เมื่อรัน git push ไปยัง branch ที่กำลังพัฒนา ให้ใช้ plan mode ก่อน” เป็นกฎเฉพาะ Claude Code จึงควรอยู่ใน CLAUDE.md วิธีทดสอบคือ “ถ้าพรุ่งนี้ฉันเอา Claude Code ออกและเหลือแค่ Codex กฎนี้ยังใช้ได้ไหม?” ถ้าใช่ ให้ใส่ไว้ใน AGENTS.md ถ้าไม่ ให้ใส่ไว้ใน CLAUDE.md

อะไรควรอยู่ใน AGENTS.md และอะไรควรอยู่ใน CLAUDE.md หรือ .claude/rules?

ประเด็นสำคัญ

สำหรับโปรเจ็กต์ขนาดใหญ่ AGENTS.md ไฟล์เดียวไม่เพียงพอ เพราะจะยาวเกินไป และเอเจนต์ทุกตัวจะดึงเนื้อหาที่ไม่จำเป็นเข้าไปในบริบท วิธีแก้คือสร้างไดเรกทอรี .claude/rules/ แล้วแยกไฟล์ตามหัวข้อ พร้อม YAML frontmatter paths: สำหรับเรียกใช้ตามพาธ ตัวอย่างเช่น กฎ API จะมีผลเฉพาะเมื่อ Claude ทำงานใน src/api/ วิธีนี้ช่วยประหยัดพื้นที่ context window ได้มาก ส่วน Cursor และ Windsurf ใช้ .cursor/rules/ และ .windsurf/rules/ ในลักษณะเดียวกัน

หากกฎมีเกิน 200 บรรทัด ก็ถึงเวลาแยกไฟล์ เอกสารของ Anthropic แนะนำให้ตั้งเป้าประมาณ 200 บรรทัดต่อไฟล์ เพราะไฟล์ CLAUDE.md ที่ยาวทำให้ Claude ปฏิบัติตามคำสั่งน้อยลงโดยไม่มีสัญญาณเตือน: ดูเหมือนว่า Claude อ่านไฟล์ แต่ทำตามคำสั่งน้อยลง

โครงสร้างสำหรับโปรเจ็กต์ขนาดใหญ่ที่ใช้ได้ผลสำหรับฉัน:

my-project/
├── AGENTS.md                    # 100-150 lines, shared
├── CLAUDE.md                    # 30-50 lines: @AGENTS.md + Claude-only
└── .claude/
    ├── CLAUDE.md                # alternative to root file, same file
    └── rules/
        ├── api.md               # with paths: ['src/api/**']
        ├── components.md        # with paths: ['src/components/**']
        ├── testing.md           # without paths, always active
        └── security.md          # without paths, always active

ไฟล์แต่ละไฟล์ใน .claude/rules/ สามารถมี frontmatter ได้ดังนี้:

---
paths:
  - "src/api/**/*.ts"
---

# API rules
- Every endpoint validates input with zod
- Errors use the standard `{error, code}` format
- OpenAPI comments are required

Claude โหลดกฎเหล่านี้เฉพาะเมื่อทำงานกับไฟล์ที่ตรงกับรูปแบบนี้ หากแตะ src/components/Button.tsx กฎ API จะไม่ถูกเพิ่มเข้าไปในบริบท วิธีนี้ทำให้ใช้ context window เฉพาะกับสิ่งที่เกี่ยวข้อง ไดเรกทอรี .claude/rules/ ยังใช้ได้แม้ไม่มี CLAUDE.md: หากโปรเจ็กต์มีเพียง AGENTS.md กฎจะโหลดควบคู่กันโดยไม่ปิดการอ่าน AGENTS.md โดยตรง

Cursor และ Windsurf รองรับแนวทางเดียวกันผ่านไดเรกทอรี .cursor/rules/ และ .windsurf/rules/ มาตรฐาน AGENTS.md สามารถอ้างถึงไดเรกทอรีเหล่านี้ได้ แต่ไวยากรณ์ข้ามเครื่องมือยังไม่เสถียรทั้งหมด จึงปลอดภัยกว่าหากเก็บกฎร่วมไว้ใน AGENTS.md และทำสำเนากฎที่จำกัดตามพาธไว้ใน .claude/rules/ และ .cursor/rules/ — กรณีเฉพาะเช่นนี้พบไม่บ่อยและไม่ใช่กฎส่วนใหญ่

ตำแหน่งที่ใช้ได้สำหรับ CLAUDE.md (เรียงจากขอบเขตกว้างที่สุดไปแคบที่สุด):

ระดับตำแหน่งจุดประสงค์
นโยบายที่องค์กรจัดการ/Library/Application Support/ClaudeCode/CLAUDE.md (Mac), /etc/claude-code/CLAUDE.md (Linux)กฎองค์กร, IT/DevOps
ผู้ใช้~/.claude/CLAUDE.mdความชอบส่วนตัวที่ใช้กับทุกโปรเจ็กต์
โปรเจ็กต์./CLAUDE.md หรือ ./.claude/CLAUDE.mdกฎของทีมโปรเจ็กต์
เฉพาะเครื่อง./CLAUDE.local.md (ใน .gitignore)ความชอบส่วนตัวสำหรับโปรเจ็กต์หนึ่ง ๆ

ตัวอย่าง ~/.claude/CLAUDE.md อาจมีกฎสองข้อ: “ตอบกลับด้วยภาษาที่ผู้ใช้ต้องการ” และ “สะกด Ailoot ตามนี้ทุกครั้ง” กฎเหล่านี้ใช้กับทุกโปรเจ็กต์ จึงไม่จำเป็นต้องทำซ้ำในแต่ละรีโพซิทอรี

ในสี่ระดับนี้ มีเพียง CLAUDE.md ระดับโปรเจ็กต์และ CLAUDE.local.md ที่ปิดการอ่าน AGENTS.md โดยตรง ส่วน ~/.claude/CLAUDE.md ส่วนตัวและนโยบายที่องค์กรจัดการจะไม่ขัดขวาง Claude Code อ่านไฟล์เหล่านั้นควบคู่กับ AGENTS.md

หาก AGENTS.md ในโปรเจ็กต์ล้าสมัยอยู่แล้ว ควรทำอย่างไร?

ประเด็นสำคัญ

หากสร้าง AGENTS.md ไว้ตั้งแต่ปี 2025 สำหรับ Codex หรือ Aider และไม่ได้แก้ไขตั้งแต่นั้น ให้เปิดโปรเจ็กต์ใน Claude Code แล้วขอให้ Claude แก้ไขไฟล์ AGENTS.md เป็นเอกสารที่ปรับปรุงอยู่เสมอ และข้อกำหนดของ Linux Foundation ก็มีการอัปเดต หลักสำคัญในการดูแลให้เป็นปัจจุบันคือ ทุกกฎต้องตอบคำถามว่า “ฉันเบื่อที่จะต้องคอยบอก Claude/Codex เรื่องอะไร?” หากตอบไม่ได้ ให้เก็บเข้าคลัง

ในโปรเจ็กต์ที่ฉันกล่าวถึง ฉันมี AGENTS.md ตั้งแต่เดือนพฤษภาคม 2025 ยาว 180 บรรทัด และหลายส่วนล้าสมัย (กล่าวถึงจุดเชื่อมต่อ Anthropic API ที่เปลี่ยนไปแล้ว ตัวอย่างไวยากรณ์ claude --tools ที่ไม่มีอยู่อีกต่อไป และกฎเกี่ยวกับ ~/.claude/projects/ ที่ใช้โครงสร้างเก่า)

แผนที่ฉันใช้ปรับปรุงไฟล์:

  1. ตรวจทานด้วย claude ใน plan mode ฉันเปิดรีโพซิทอรี รัน claude --safe-mode แล้วขอว่า “อ่าน AGENTS.md อีกครั้ง แล้วเสนอรายการสิ่งที่ล้าสมัยหรือซ้ำกัน อย่าแก้ไขไฟล์ ให้แสดงเฉพาะรายการเท่านั้น” ภายในสองนาที ฉันได้รายการ 23 ข้อให้ตรวจสอบ
  2. ลบรายการที่เห็นชัดว่าล้าสมัย จาก 23 ข้อ มี 9 ข้อที่ล้าสมัยอย่างชัดเจน ทั้งไวยากรณ์คำสั่ง จุดเชื่อมต่อ และชื่อ flag ฉันลบบรรทัดเหล่านั้น
  3. รวมเนื้อหาซ้ำกัน อีก 6 ข้อกล่าวซ้ำด้วยถ้อยคำต่างกัน (“อย่า force-push”, “ห้ามใช้ --force”, “หลีกเลี่ยง git push -f”) ฉันรวมให้เหลือบรรทัดเดียว
  4. เพิ่มรายการใหม่ ฉันเพิ่มสิ่งที่สังเกตว่า Claude/Codex ทำผิดเป็นประจำในเดือนที่ผ่านมา โดยยึดกฎ “หนึ่งบรรทัดต่อรูปแบบข้อผิดพลาดหนึ่งแบบ” ผลคือมีรายการใหม่ 8 ข้อ
  5. ให้ subagent ตรวจทานรอบสุดท้าย ฉันขอให้ Claude ตรวจหาข้อขัดแย้ง ความกำกวม และเนื้อหาซ้ำ พบถ้อยคำสามจุดที่ทำให้ชัดเจนขึ้นได้ ฉันจึงแก้ไข

หลังผ่านไปหนึ่งชั่วโมง AGENTS.md มี 110 บรรทัด เป็นปัจจุบัน และฉันรู้จักทุกบรรทัดเป็นอย่างดี การสร้าง CLAUDE.md 30 บรรทัดจากไฟล์นี้ทำได้ง่าย หลังจากนั้น Codex ก็ระมัดระวังเรื่องการทดสอบมากขึ้นอย่างเห็นได้ชัด ฉันสงสัยว่าการตัดสินใจ “แปลก ๆ” บางอย่างเกิดจากกฎเก่าที่มันทำตามโดยสุจริต

หลักการสำคัญสำหรับ AGENTS.md ที่มีการดูแลอยู่เสมอ:

  • ทุกกฎตอบโจทย์ข้อผิดพลาดที่เกิดซ้ำ หากตลอดทั้งเดือนไม่มีสักครั้งที่ฉันนึกถึงกฎข้อนั้น ก็ไม่มีเหตุผลต้องเก็บไว้
  • เขียนกฎเป็นคำสั่ง ไม่ใช่ทฤษฎี “ใช้ช่องว่างสองตัว” เป็นกฎ ส่วน “จัดรูปแบบโค้ดให้เรียบร้อย” ไม่ใช่
  • ระบุรายละเอียดให้ชัดเจน “รัน npm run build ก่อน git push” เป็นกฎ ส่วน “ทดสอบการเปลี่ยนแปลง” ไม่ใช่

อะไรที่ใช้ไม่ได้กับการตั้งค่านี้อย่างแน่นอน?

ประเด็นสำคัญ

การนำเข้า @AGENTS.md ไม่ได้ทำให้เครื่องมือต่าง ๆ มีพฤติกรรมเหมือนกัน เครื่องมือแต่ละตัวมีข้อจำกัดของตนเอง: Codex CLI ไม่รู้จัก .claude/rules/ หรือ hooks ส่วน Cursor มีเครื่องมือเติมข้อความอัตโนมัติของตัวเอง ซึ่งไม่อ่าน CLAUDE.md ขณะเติมข้อความ Copilot ทำตาม .github/copilot-instructions.md และกฎใน AGENTS.md เพียงอย่างเดียวไม่พอสำหรับ Copilot นี่ไม่ใช่ “ไฟล์เดียว = พฤติกรรมเดียว” แต่คือ “แหล่งข้อมูลเดียวสำหรับกฎพื้นฐาน แล้วแต่ละเครื่องมือมีกฎเพิ่มเติมของตัวเอง”

สิ่งที่ฉันได้เรียนรู้ด้วยประสบการณ์ตรงระหว่างทำงานกับการตั้งค่านี้เป็นเวลาหกเดือน:

1. การเติมข้อความอัตโนมัติของ Cursor ไม่ใช้ AGENTS.md เมื่อ Cursor เสนอให้เติมบรรทัดในเอดิเตอร์ มันไม่ได้อ่าน AGENTS.md แบบเรียลไทม์ เพราะมีเครื่องมือความเร็วสูงแยกต่างหากทำงานอยู่ กฎใน AGENTS.md มีผลเฉพาะเมื่อส่งคำขอแชตภายใน Cursor ดังนั้น การเขียนว่า “อย่าใช้ var ให้ใช้ const” ใน AGENTS.md จะไม่ส่งผลต่อการเติมข้อความอัตโนมัติ คุณต้องตั้งค่านี้ผ่าน ESLint หรือการกำหนดค่า TypeScript

2. Hooks ของ Claude Code ใน AGENTS.md ใช้กับ Codex ไม่ได้ หากตั้งค่า hook แบบ PreToolUse ใน .claude/settings.json เพื่อบล็อกการกระทำบางอย่าง ข้อมูลนี้มีประโยชน์กับ Claude เท่านั้น Codex ไม่รู้จัก hooks; สำหรับมัน เรื่องนี้คือ “เครื่องมือตัดสินใจเอง” การเขียนว่า “ห้ามทำ X” ใน AGENTS.md และเขียนว่า “มี hook ที่บล็อก X โดยตรง” ไว้ใน CLAUDE.md ใต้บรรทัดนำเข้าจึงเป็นวิธีที่เหมาะสม

3. Copilot และ .github/copilot-instructions.md GitHub Copilot อ่านไฟล์ของตัวเอง และยังอ่าน AGENTS.md ได้ไม่ดีนัก หากทีมของคุณใช้ Copilot อยู่เป็นประจำ ให้เพิ่ม .github/copilot-instructions.md แยกต่างหากพร้อมกฎฉบับย่อ หรือใช้ Copilot Extensions ที่รู้จัก AGENTS.md เรื่องนี้เปลี่ยนแปลงอย่างรวดเร็ว ภาพรวมจึงอาจต่างออกไปในอีกสามถึงหกเดือน

4. Git ไม่ติดตาม symlink ในฐานะการเปลี่ยนแปลงของ CLAUDE.md หากรัน ln -s AGENTS.md CLAUDE.md แล้วอัปเดต AGENTS.md หนึ่งสัปดาห์ต่อมา Git จะแสดง diff เฉพาะ AGENTS.md ซึ่งเป็นเรื่องปกติ แต่เพื่อนร่วมงานที่ตรวจ PR อาจไม่รู้ว่า CLAUDE.md ได้รับการอัปเดตผ่าน symlink ด้วย วิธีแก้คือระบุอย่างชัดเจนในคำอธิบาย PR ว่า “อัปเดต AGENTS.md แล้ว; Claude Code เห็นไฟล์เดียวกันผ่าน symlink”

5. การนำเข้าซ้อนลึกแก้จุดบกพร่องได้ยาก หาก AGENTS.md นำเข้า @docs/coding-style.md ซึ่งนำเข้า @docs/typescript.md ต่อ และมีกฎข้อหนึ่งขัดแย้งกับอีกข้อ การแก้จุดบกพร่องจะทำได้ยาก ฉันจำกัดการนำเข้าไว้เพียงระดับเดียว (CLAUDE.md → AGENTS.md) และไม่ซ้อนลึกกว่านั้น Anthropic มี hook InstructionsLoaded ที่บันทึกว่าโหลดไฟล์ใดบ้าง ซึ่งมีประโยชน์เมื่อต้องแก้จุดบกพร่องของการตั้งค่าแบบหลายชั้น หมายเหตุ: hook นี้ทำงานกับ AGENTS.md ที่รวมผ่านการนำเข้าหรือ symlink แต่ไม่ทำงานกับ AGENTS.md ที่ Claude Code อ่านเอง

แหล่งที่มา

ทำความรู้จักกับ Ailoot

รายละเอียดเพิ่มเติม

คำถามที่พบบ่อย

ใช้ @AGENTS.md ใน CLAUDE.md เมื่อต้องเพิ่มคำสั่งเฉพาะ Claude หรือมีเพื่อนร่วมทีมใช้ Windows symlink ทำให้สองชื่อชี้เนื้อหาเดียวกัน จึงเพิ่มส่วนเฉพาะ Claude แยกไม่ได้

ตรวจได้อย่างไรว่าโหลดคำสั่งร่วมแล้ว?

รัน /memory และดูไฟล์คำสั่งที่แสดง หาก CLAUDE.md หรือ CLAUDE.local.md กันการโหลด AGENTS.md โดยตรง ให้เพิ่ม import หรือเลือกค่าให้โหลดทั้งคู่ แล้วเริ่มเซสชันใหม่

บทความทั้งหมด