- AI 코딩 에이전트가 Postgres를 올바르게 다루지 못하는 문제를 해결하기 위해, 데이터베이스 규칙을 명시적으로 제공하는 Agent Skills 공개
- Postgres는 수십 년간 축적된 기능, 엣지 케이스, 성능 특성이 있어 에이전트가 작동하지만 전체 테이블 스캔을 유발하거나 보안 정책을 누락하는 코드를 생성할 수 있음
-
총 8개 카테고리, 30개 규칙으로 구성되며 쿼리 성능, 연결 관리, 보안 및 RLS, 스키마 설계 등 영향도 기준 우선순위별로 정리
- 사람이 읽는 문서가 아닌, AI 에이전트가 직접 참조하는 규칙 집합 형태로 제공
- MCP 서버와 결합 시, 실행 능력과 판단 기준을 동시에 갖춘 실전형 데이터베이스 에이전트 구성 가능
문제 인식: AI는 코드를 쓰지만 시스템을 이해하지 못함
- AI 코딩 에이전트는 문법적으로는 올바른 코드를 생성하지만, Postgres의 내부 특성과 운영 리스크를 고려하지 못하는 한계 존재
- 전체 테이블 스캔을 유발하는 쿼리, 쓰기 성능을 저하시킬 인덱스 제안, Row Level Security 누락 같은 문제가 반복적으로 발생
- 프로덕션 환경에서 중요한 성능, 보안, 안정성 요소를 에이전트가 놓치는 사례 다수 확인됨
Postgres Agent Skills 개요
- AI 에이전트가 Postgres 코드를 작성할 때 참고하도록 만든 규칙 기반 지식 저장소
- 총 30개 규칙, 영향도 기준으로 정렬된 8개 카테고리로 구성
- 각 규칙은 제목, 우선순위, 중요성 설명, 올바른/잘못된 코드 예제를 포함
8개 규칙 카테고리 구성
- 각 규칙은 일관된 형식을 따르며, 제목, 영향도, 설명, 태그 포함
-
Query Performance (Critical): 전체 테이블 스캔 방지, 효율적인 쿼리 작성 규칙
-
Connection Management (Critical): 커넥션 풀링, 클라이언트 수명 관리, 리소스 제한
-
Security and RLS (Critical): Row Level Security 정책, 접근 제어 패턴
-
Schema Design (High): 테이블 구조, 데이터 타입, 정규화 판단
-
Concurrency and Locking (Medium-High): 트랜잭션 격리, 데드락 방지, 락 관리
-
Data Access Patterns (Medium): 페이지네이션, 벌크 작업, 접근 패턴 설계
-
Monitoring and Diagnostics (Low-Medium): 쿼리 분석, 성능 추적, 디버깅
-
Advanced Features (Low): CTE, 윈도우 함수, 확장 기능 등 Postgres 고유 기능
Row Level Security 규칙의 예시
-
잘못된 방식: 애플리케이션 레벨 필터링만 의존할 경우, 버그나 우회로 인해 전체 데이터 노출 위험 존재
-
select * from orders where user_id = $current_user_id; 형태로 작성하면 바이패스 시 전체 주문 반환
-
올바른 방식: 데이터베이스 수준에서 RLS 강제 적용
-
alter table orders enable row level security;로 RLS 활성화
-
create policy로 사용자가 자신의 데이터만 볼 수 있도록 정책 생성
-
alter table orders force row level security;로 테이블 소유자에게도 RLS 강제
- 인증된 역할을 위한 정책 예시:
create policy orders_user_policy on orders for all to authenticated using (user_id = auth.uid());
Agent Skills 포맷과 생태계
- Agent Skills는 에이전트에게 도메인 전문성을 제공하는 오픈 표준 형식의 AI 에이전트 전용 문서 포맷, 필요 시 에이전트가 직접 읽고 적용
- Claude Code, Cursor, GitHub Copilot, VS Code, Gemini CLI 등과 호환
- 에이전트가 필요할 때 발견하고 사용할 수 있는 지침과 예제가 담긴 폴더 형태
- 훈련 데이터에서 올바른 패턴을 학습했기를 기대하는 대신 명시적 규칙을 제공
- Anthropic이 정의한 오픈 표준으로, 업계 전반에서 채택 중
- Vercel은 10년간의 React 및 Next.js 최적화 지식을 40개 규칙으로 패키징한 react-best-practices 공개
- Cloudflare는 Workers, Pages, D1, R2 등 40개 이상 서비스에 대한 Skills 공개
Supabase가 이 규칙을 만든 이유
- Supabase는 수십만 개 프로젝트에서 Postgres를 운영하며 동일한 실수가 반복되는 것을 목격
- Foreign 키에 인덱스 누락
- 실수로 RLS를 우회하는 쿼리
- 프로덕션에서 테이블을 잠그는 마이그레이션
- 잘못 관리된 클라이언트로 인한 연결 풀 고갈
- ORM 뒤에 숨겨진 전체 테이블 스캔
- 지원팀, 데이터베이스 어드바이저, 문서에 이미 존재하는 지식을 에이전트 친화적 형태로 재구성하여 패키징
MCP 서버와의 관계
-
Supabase MCP 서버는 AI 에이전트가 Supabase 프로젝트에 직접 연결하여 테이블 생성, 쿼리 실행, 스키마 관리, 설정 구성을 자연어로 수행 가능하게 함
- MCP 서버는 에이전트에게 데이터베이스 작업 능력을 부여하고, 모범 사례는 올바르게 수행하도록 교육
- 비유: MCP 서버는 핸들, 모범 사례는 운전 교습
- MCP 접근 권한만 있는 에이전트는 요청받은 모든 쿼리 실행 가능
- MCP 접근 권한과 규칙을 모두 갖춘 에이전트는 테이블을 잠그는 인덱스 생성 전 경고, 안전하지 않은 코드 배포 전 RLS 정책 제안, 성능 문제를 피하는 쿼리 구조화 수행
- MCP 서버는 연결과 실행 담당, 이 모범 사례는 판단을 담당
- Agent Skills는 실행 이전에 위험 요소를 경고하고 더 나은 선택을 유도
- 실행 능력과 판단 기준을 분리해, 안전하고 신뢰 가능한 자동화 환경 구성
설치 방법
- 저장소 위치: github.com/supabase/agent-skills
-
Vercel의 skills npm 패키지를 사용하여 대화형으로 설치 가능
-
npx skills add supabase/agent-skills
-
Claude Code 사용 시 플러그인으로 설치 가능
-
/plugin marketplace add supabase/agent-skills
-
/plugin install postgres-best-practices@supabase-agent-skills