ai-rules-sync เขียนกฎ AI agent ครั้งเดียวใน AGENTS.md แล้วซิงก์เป็น CLAUDE.md · .cursorrules · copilot ให้เอง
ai-rules-sync คือ CLI ตัวเล็กที่ใช้ AGENTS.md เป็นไฟล์กฎต้นทางไฟล์เดียว แล้วแปลงเป็นกฎของ Claude Code · Cursor · Copilot ให้อัตโนมัติ เขียนกฎครั้งเดียว เครื่องมือทุกตัวก็ใช้กฎชุดเดียวกัน ไม่ต้องก๊อปวางทีละไฟล์

ใครที่ทำงานสลับไปมาระหว่าง AI coding agent หลายตัว น่าจะเจอปัญหานี้ ในทีมคนหนึ่งใช้ Claude Code อีกคนถนัด Cursor ส่วนใน CI มี Copilot คอยรีวิว กฎของโปรเจกต์จึงต้องเขียนซ้ำในไฟล์ของแต่ละตัว เพราะแต่ละ agent อ่านไฟล์คนละชื่อ: Claude Code อ่าน CLAUDE.md · Cursor อ่าน .cursorrules · Copilot อ่าน .github/copilot-instructions.md · ส่วน Codex อ่าน AGENTS.md พอแก้กฎที ก็ต้องไล่แก้ทุกไฟล์ให้ตรงกัน ถ้าลืมไฟล์ไหน กฎก็เริ่มเพี้ยนกันเงียบๆ
ai-rules-sync คือ CLI ตัวเล็กที่เกิดมาแก้เรื่องนี้โดยเฉพาะ แนวคิดตรงไปตรงมา: เขียนกฎไว้ใน AGENTS.md ไฟล์เดียวเป็นต้นทาง แล้วให้เครื่องมือแปลงไฟล์นั้นเป็นกฎของ agent ตัวอื่นทั้งหมด แก้รอบเดียวที่เดียว เครื่องมือทุกตัวก็ได้กฎชุดเดียวกัน นี่คือวิธีที่มันทำงานและวิธีเริ่มใช้จริง
ปัญหาคือไฟล์กฎที่เพี้ยนกันเงียบๆ
รากของปัญหาไม่ใช่การเขียนกฎยาก แต่อยู่ที่การ ดูแลให้ทุกไฟล์ตรงกัน เมื่อกฎชุดเดียวต้องอยู่ในหลายไฟล์ การซิงก์ด้วยมือก็กลายเป็นการก๊อปวางวนซ้ำทุกครั้งที่เปลี่ยนแนวทางสักข้อ
ปัญหาคือคนเรามักลืม แก้ CLAUDE.md แล้วลืม .cursorrules สุดท้ายแต่ละ agent ก็ทำงานตามกฎคนละเวอร์ชัน บางตัวรู้ว่าห้าม commit ตรงเข้า main บางตัวไม่รู้ ความเพี้ยนแบบนี้ไม่มีใครเห็นจนกว่าจะมีปัญหา เพราะไม่มี error ฟ้อง มันแค่ค่อยๆ คลาดกันทีละนิด
ต้นทางไฟล์เดียว แล้วแปลงให้เอง

หัวใจของ ai-rules-sync คือยกให้ AGENTS.md เป็นไฟล์ต้นทางตัวเดียว ส่วนไฟล์ของ agent ตัวอื่นทั้งหมดเป็น ไฟล์ที่สร้างจากต้นทาง ไม่ใช่ไฟล์ที่ต้องไปแก้เอง ตามที่ตัวโปรเจกต์สรุปไว้สั้นๆ ว่าจากนี้แก้แค่ AGENTS.md พอ ไฟล์อื่นเป็นของที่ generate ออกมา
เบื้องหลังมันไม่ได้แค่ก๊อปข้อความข้ามไฟล์ แต่จะอ่านกฎทั้งหมดเป็นโครงสร้างกลางชุดเดียวก่อน แยกเป็นหัวข้อ · เนื้อกฎ · ขอบเขตไฟล์ · คำเตือน แล้วค่อย render โครงนั้นออกมาเป็นฟอร์แมตของแต่ละ agent ผลที่ได้คือกฎชุดเดียวกันในรูปแบบที่แต่ละเครื่องมืออ่านได้ถูกต้อง
ที่น่าสนใจกว่านั้นคือมันฉลาดพอจะ จัดระเบียบให้ ถ้าไฟล์กฎเดิมเป็นข้อความเรียงยาวๆ ไม่มีหัวข้อ มันจะอ่านความหมายแล้วจัดเข้าหมวด บรรทัดที่เป็นคำสั่งไปอยู่ Build & test commands · โน้ตเรื่องสไตล์ไปอยู่ Code style · ข้อห้ามไปอยู่ Do not แทนที่จะกองรวมเป็นก้อนเดียว
กฎที่แปลงไม่ได้ จะไม่หายเงียบ
จุดที่ทำให้เครื่องมือซิงก์กฎส่วนใหญ่ใช้จริงไม่ได้ คือบางกฎเป็นของเฉพาะแต่ละเครื่องมือ Cursor มี glob กับ frontmatter เป็นของตัวเอง · Claude มี @path สำหรับ import ไฟล์ ของพวกนี้ไม่มีรูปแบบที่เทียบกันได้ในฟอร์แมตอื่น
ai-rules-sync ไม่แกล้งทำเป็นว่าแปลงได้ทุกอย่าง เมื่อเจอกฎที่ข้ามฟอร์แมตไม่ได้ มันจะแสดง warning ให้เห็น แทนที่จะตัดทิ้งเงียบๆ ความต่างตรงนี้สำคัญ เพราะกฎที่หายไปโดยไม่มีใครรู้ อันตรายกว่ากฎที่บอกตรงๆ ว่าแปลงให้ไม่ได้
เริ่มจากคำสั่งเดียวก็พอ

ทางที่เร็วที่สุดคือไม่ต้องตั้งค่าเอง แค่สั่ง agentsync setup ครั้งเดียวในโปรเจกต์ มันจะทำสามอย่างให้พร้อมกัน
- สแกนโปรเจกต์แล้วสร้าง
AGENTS.mdให้จากกฎที่มีอยู่ - เขียนไฟล์ตั้งค่า
agentsync.jsonพร้อมซิงก์ออกทุกฟอร์แมตรอบแรกให้เลย - ติดตั้ง git pre-commit hook ไว้ ทุกครั้งที่ commit ระบบจะซิงก์ไฟล์ให้ตรงกันอัตโนมัติ
หลังจากนั้นงานเหลือแค่ขั้นตอนเดียว แก้กฎที่ AGENTS.md แล้ว commit ตามปกติ ไฟล์ที่เหลือจะอัปเดตตามให้เอง ไม่ต้องจำว่ามีไฟล์ไหนต้องไล่แก้บ้างอีกแล้ว
ติดตั้งตัวเครื่องมือเองก็มีหลายทาง ลงแบบ global ด้วย npm install -g @panishandsome/agentsync หรือเรียกผ่าน npx @panishandsome/agentsync --help โดยไม่ต้องลงอะไรเลยก็ได้
ถ้าอยากเห็นว่ามันแปลงไฟล์ออกมาหน้าตาแบบไหนก่อนลงเครื่อง ลองเล่นได้ที่ playground บนเบราว์เซอร์ วางไฟล์กฎฝั่งซ้ายแล้วเห็นผลลัพธ์ฝั่งขวาทันที ทุกอย่างทำงานในเครื่องของเราเอง ไฟล์ไม่ถูกอัปโหลดขึ้นเซิร์ฟเวอร์ จึงลองได้สบายใจแม้เป็นกฎของโปรเจกต์จริง
คุมเองได้ ถ้าอยากคุม
ถ้าไม่อยากให้ hook มาแตะตอน commit ai-rules-sync ก็เลือกคุมเองได้ทุกขั้น เริ่มด้วย agentsync sync --init เพื่อเขียน agentsync.json ที่ระบุไฟล์ต้นทางกับรายการไฟล์ปลายทาง จากนั้นเลือกได้ว่าจะซิงก์ตอนไหน
agentsync syncสั่งซิงก์ทีละครั้งเมื่อพร้อมagentsync sync --watchซิงก์ให้ทุกครั้งที่เซฟไฟล์ เหมาะตอนนั่งแก้กฎรัวๆagentsync sync --checkไม่แก้ไฟล์ แค่เช็กว่าตรงกันไหม ถ้าไม่ตรงจะคืนค่าไม่เป็นศูนย์ เอาไปวางใน CI เพื่อกันกฎเพี้ยนหลุดเข้า repo ได้
อีกโหมดที่ช่วยเวลาเผลอไปแก้ไฟล์ปลายทางคือ agentsync sync --auto มันจำสภาพไฟล์ล่าสุดไว้ใน .agentsync-state.json แล้วดูว่าไฟล์ไหนเพิ่งเปลี่ยน จากนั้น generate ไฟล์ที่เหลือตามต้นทางนั้น แต่ถ้ามีสองไฟล์เปลี่ยนพร้อมกันจนไม่รู้ว่าใครเป็นต้นทาง มันจะหยุดแล้วถามให้ระบุ --source <ไฟล์> แทนที่จะเดาเองแล้วทับกฎผิดตัว
ของเดิมมีอยู่แล้ว ก็รวบเข้ามาได้
ปัญหาที่หลายคนกลัวคือ "แล้วกฎที่กระจายอยู่ในหลายไฟล์ตอนนี้ล่ะ" จุดนี้มีคำสั่ง agentsync merge ช่วยจัดการ เช่น agentsync merge CLAUDE.md .cursorrules -o AGENTS.md จะรวบกฎจากไฟล์เดิมทั้งหมดมารวมเป็น AGENTS.md ไฟล์เดียว ได้ต้นทางสำหรับเริ่มใช้โดยไม่ต้องนั่งพิมพ์ใหม่
ส่วนโปรเจกต์ที่เริ่มจากศูนย์ ใช้ agentsync generate สร้าง AGENTS.md ใหม่จากสเปคสั้นๆ ได้เลย เช่นบอกชื่อโปรเจกต์ · ภาษา · เฟรมเวิร์ก · เครื่องมือเทสต์ แล้วได้โครงกฎออกมาให้ปรับต่อ
โปรเจกต์นี้ก็ใช้วิธีเดียวกันกับตัวเอง ไฟล์ AGENTS.md ของ repo นี้สร้างด้วย agentsync generate ดังนั้น coding agent ที่เข้ามาทำงานในโปรเจกต์จึงรับกฎไปก่อนจะแตะโค้ดสักบรรทัด
เบาเครื่องเพราะไม่มี dependency
จุดเล็กที่น่าพูดถึงคือ ai-rules-sync เป็น zero-dependency ไม่ลากแพ็กเกจอื่นพ่วงเข้ามาในโปรเจกต์เลย กลไกตัวเดียวกับที่อยู่เบื้องหลัง CLI ยังเป็นตัวที่รัน playground บนเบราว์เซอร์ด้วย จึงเบาและคาดเดาพฤติกรรมได้ง่าย ซึ่งสำคัญกับเครื่องมือที่จะอยู่ใน workflow ของทุก commit
แน่นอนว่ามันมีเงื่อนไข การให้ AGENTS.md เป็นไฟล์ต้นทางไฟล์เดียวแปลว่าทั้งทีมต้องเลิกแก้ไฟล์ปลายทางเอง ใครเผลอไปแก้ CLAUDE.md ตรงๆ รอบหน้าที่ซิงก์ก็โดนเขียนทับ เรื่องนี้จึงต้องเป็นข้อตกลงร่วมของทีม ไม่ใช่แค่ลงเครื่องมือแล้วจบ
แต่ถ้ายอมรับข้อตกลงข้อนั้นได้ สิ่งที่ได้กลับมาคือกฎของทุก agent ที่ตรงกันตลอดเวลา โดยไม่ต้องคอยนึกถึงเรื่องนี้อีก คุณค่าที่แท้จริงของเครื่องมือแบบนี้จึงไม่ใช่การแปลงไฟล์ได้หลายฟอร์แมต แต่คือการทำให้ "ไฟล์กฎเพี้ยนกัน" หายไปจากงานประจำจนลืมว่าเคยเป็นปัญหา
ที่มา: ai-rules-sync จาก GitHub



