- เปิดตัว Agent Skills ที่ระบุกฎของฐานข้อมูลอย่างชัดเจน เพื่อแก้ปัญหาที่ AI coding agent จัดการ Postgres ได้ไม่ถูกต้อง
- Postgres มีทั้ง ฟีเจอร์ที่สั่งสมมาหลายทศวรรษ, edge case, และลักษณะด้านประสิทธิภาพ ทำให้เอเจนต์อาจสร้างโค้ดที่ใช้งานได้ แต่ ก่อให้เกิด full table scan หรือข้ามนโยบายความปลอดภัย ได้
- ประกอบด้วย 8 หมวดหมู่ 30 กฎ จัดลำดับตามความสำคัญของผลกระทบ ครอบคลุมประสิทธิภาพคิวรี การจัดการการเชื่อมต่อ ความปลอดภัยและ RLS การออกแบบสคีมา ฯลฯ
- ไม่ได้มาในรูปเอกสารสำหรับมนุษย์อ่าน แต่เป็น ชุดกฎที่ AI agent อ้างอิงได้โดยตรง
- เมื่อนำไปรวมกับ MCP server ก็สามารถสร้าง database agent สำหรับใช้งานจริง ที่มีทั้งความสามารถในการลงมือทำและหลักเกณฑ์ในการตัดสินใจ
การมองปัญหา: AI เขียนโค้ดได้ แต่ไม่เข้าใจระบบ
- AI coding agent สร้างโค้ดที่ถูกต้องตามไวยากรณ์ได้ แต่ยังมี ข้อจำกัดในการคำนึงถึงคุณลักษณะภายในของ Postgres และความเสี่ยงในการปฏิบัติการ
- ปัญหาอย่างคิวรีที่ทำให้เกิด full table scan, การเสนอ index ที่ทำให้ประสิทธิภาพการเขียนลดลง, หรือการ ละเลย Row Level Security เกิดซ้ำอยู่บ่อยครั้ง
- มีการยืนยันหลายกรณีว่าเอเจนต์ มองข้ามปัจจัยด้านประสิทธิภาพ ความปลอดภัย และความเสถียร ที่สำคัญในสภาพแวดล้อม production
ภาพรวมของ Postgres Agent Skills
- เป็น คลังความรู้แบบอิงกฎ ที่สร้างขึ้นเพื่อให้ AI agent ใช้อ้างอิงเมื่อเขียนโค้ด Postgres
- ประกอบด้วย 30 กฎ ใน 8 หมวดหมู่ ที่เรียงตามระดับผลกระทบ
- แต่ละกฎมีชื่อ ลำดับความสำคัญ คำอธิบายว่าเหตุใดจึงสำคัญ และตัวอย่างโค้ดที่ถูกต้อง/ไม่ถูกต้อง
โครงสร้าง 8 หมวดหมู่ของกฎ
- แต่ละกฎใช้รูปแบบที่สม่ำเสมอ โดยมีชื่อ ระดับผลกระทบ คำอธิบาย และแท็ก
- Query Performance (Critical): กฎสำหรับป้องกัน full table scan และการเขียนคิวรีอย่างมีประสิทธิภาพ
- Connection Management (Critical): connection pooling, การจัดการอายุของ client, ข้อจำกัดด้านทรัพยากร
- Security and RLS (Critical): นโยบาย Row Level Security และแพตเทิร์นการควบคุมการเข้าถึง
- Schema Design (High): โครงสร้างตาราง ชนิดข้อมูล และการตัดสินใจเรื่อง normalization
- Concurrency and Locking (Medium-High): transaction isolation, การป้องกัน deadlock, การจัดการ lock
- Data Access Patterns (Medium): pagination, งานแบบ bulk, การออกแบบรูปแบบการเข้าถึงข้อมูล
- Monitoring and Diagnostics (Low-Medium): การวิเคราะห์คิวรี การติดตามประสิทธิภาพ และการดีบัก
- Advanced Features (Low): CTE, window function, ส่วนขยาย และความสามารถเฉพาะของ Postgres อื่น ๆ
ตัวอย่างกฎของ Row Level Security
- วิธีที่ไม่ถูกต้อง: หากพึ่งพาการกรองระดับแอปพลิเคชันอย่างเดียว จะมี ความเสี่ยงที่ข้อมูลทั้งหมดถูกเปิดเผยจากบั๊กหรือการเลี่ยงข้อกำหนด
- หากเขียนในรูป
select * from orders where user_id = $current_user_id; เมื่อถูก bypass ก็อาจคืนค่าคำสั่งซื้อทั้งหมด
- วิธีที่ถูกต้อง: บังคับใช้ RLS ที่ระดับฐานข้อมูล
- เปิดใช้ RLS ด้วย
alter table orders enable row level security;
- สร้างนโยบายด้วย
create policy เพื่อให้ผู้ใช้มองเห็นได้เฉพาะข้อมูลของตนเอง
- บังคับใช้ RLS แม้กับเจ้าของตารางด้วย
alter table orders force row level security;
- ตัวอย่างนโยบายสำหรับ role ที่ยืนยันตัวตนแล้ว:
create policy orders_user_policy on orders for all to authenticated using (user_id = auth.uid());
ฟอร์แมตของ Agent Skills และระบบนิเวศ
- Agent Skills คือ ฟอร์แมตเอกสารสำหรับ AI agent โดยเฉพาะ ในรูปแบบมาตรฐานเปิดที่มอบความเชี่ยวชาญเฉพาะด้านให้เอเจนต์ โดยเอเจนต์สามารถอ่านและนำไปใช้ได้โดยตรงเมื่อจำเป็น
- ใช้งานร่วมกับ Claude Code, Cursor, GitHub Copilot, VS Code, Gemini CLI ฯลฯ ได้
- อยู่ในรูปโฟลเดอร์ที่บรรจุคำแนะนำและตัวอย่างที่เอเจนต์ค้นพบและใช้งานได้เมื่อจำเป็น
- แทนที่จะคาดหวังให้เรียนรู้แพตเทิร์นที่ถูกต้องจากข้อมูลฝึกสอน ก็ให้ กฎที่ระบุอย่างชัดเจน แก่เอเจนต์
- เป็นมาตรฐานเปิดที่ Anthropic กำหนด และกำลังได้รับการยอมรับในวงกว้างในอุตสาหกรรม
- Vercel เปิดตัว react-best-practices ที่แพ็กความรู้ด้านการเพิ่มประสิทธิภาพ React และ Next.js ตลอด 10 ปีไว้ใน 40 กฎ
- Cloudflare เปิดตัว Skills สำหรับบริการ มากกว่า 40 รายการ เช่น Workers, Pages, D1 และ R2
เหตุผลที่ Supabase สร้างกฎชุดนี้
- Supabase ดูแล Postgres ในหลายแสนโปรเจกต์ และพบว่าความผิดพลาดเดิม ๆ เกิดซ้ำอยู่เสมอ
- ไม่มี index บน foreign key
- คิวรีที่เผลอ bypass RLS
- migration ที่ทำให้ตารางถูก lock ใน production
- connection pool หมด จากการจัดการ client ที่ไม่ถูกต้อง
- full table scan ที่ถูกซ่อนอยู่หลัง ORM
- จึงนำความรู้ที่มีอยู่แล้วในทีมสนับสนุน database advisor และเอกสารต่าง ๆ มา จัดโครงใหม่ให้อยู่ในรูปแบบที่เป็นมิตรกับเอเจนต์ และแพ็กเป็นชุดเดียว
ความสัมพันธ์กับ MCP server
- Supabase MCP server ช่วยให้ AI agent เชื่อมต่อกับโปรเจกต์ Supabase ได้โดยตรง และทำงานอย่างการสร้างตาราง รันคิวรี จัดการสคีมา และตั้งค่าคอนฟิกด้วยภาษาธรรมชาติ
- MCP server มอบ ความสามารถ ในการทำงานกับฐานข้อมูลให้เอเจนต์ ส่วนแนวปฏิบัติที่ดีที่สุดจะสอนให้ทำอย่าง ถูกต้อง
- เปรียบเทียบได้ว่า MCP server คือ พวงมาลัย ส่วนแนวปฏิบัติที่ดีที่สุดคือ การเรียนขับรถ
- เอเจนต์ที่มีเพียงสิทธิ์เข้าถึง MCP สามารถรันทุกคิวรีที่ถูกร้องขอได้
- แต่เอเจนต์ที่มีทั้งสิทธิ์ MCP และกฎเหล่านี้ จะสามารถเตือนก่อนสร้าง index ที่อาจ lock ตาราง เสนอ RLS policy ก่อน deploy โค้ดที่ไม่ปลอดภัย และจัดโครงสร้างคิวรีเพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพได้
- MCP server รับผิดชอบเรื่องการเชื่อมต่อและการรันคำสั่ง ส่วนแนวปฏิบัติชุดนี้รับผิดชอบเรื่อง การตัดสินใจ
- Agent Skills จะ เตือนความเสี่ยงและชี้นำไปสู่ตัวเลือกที่ดีกว่า ก่อนลงมือทำ
- การแยกความสามารถในการลงมือทำออกจากเกณฑ์การตัดสินใจ ช่วยสร้าง สภาพแวดล้อมอัตโนมัติที่ปลอดภัยและเชื่อถือได้
วิธีติดตั้ง
- ที่เก็บซอร์ส: github.com/supabase/agent-skills
- ติดตั้งแบบโต้ตอบได้ด้วย แพ็กเกจ npm ชื่อ skills ของ Vercel
npx skills add supabase/agent-skills
- หากใช้ Claude Code สามารถติดตั้งเป็นปลั๊กอินได้
/plugin marketplace add supabase/agent-skills
/plugin install postgres-best-practices@supabase-agent-skills
ยังไม่มีความคิดเห็น