skills/dev-supabase/SKILL.md
Supabase development guidelines for Next.js applications. Use when working with Supabase Auth SSR, database migrations, RLS policies, database functions, Edge Functions, or declarative schema management. Covers @supabase/ssr patterns, PostgreSQL best practices, and Deno-based Edge Functions.
npx skillsauth add seungwonme/.claude supabase-devInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Always use @supabase/ssr with getAll/setAll cookie methods:
// Browser client - src/shared/api/supabase/client.ts
import { createBrowserClient } from '@supabase/ssr';
export function createClient() {
return createBrowserClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
);
}
// Server client - src/shared/api/supabase/server.ts
import { createServerClient } from '@supabase/ssr';
import { cookies } from 'next/headers';
export async function createClient() {
const cookieStore = await cookies();
return createServerClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
{
cookies: {
getAll() { return cookieStore.getAll(); },
setAll(cookiesToSet) {
try {
cookiesToSet.forEach(({ name, value, options }) =>
cookieStore.set(name, value, options));
} catch { /* Server Component - middleware handles this */ }
},
},
},
);
}
Never use: @supabase/auth-helpers-nextjs, individual get/set/remove cookie methods.
YYYYMMDDHHmmss_short_description.sql
# Example: 20240906123045_create_profiles.sql
create table public.books (
id bigint generated always as identity primary key,
title text not null,
author_id bigint references public.authors (id)
);
alter table public.books enable row level security;
comment on table public.books is 'A list of all the books in the library.';
-- Separate policies for each operation
create policy "Users can view their own data"
on public.profiles for select
to authenticated
using ((select auth.uid()) = user_id);
create policy "Users can update their own data"
on public.profiles for update
to authenticated
using ((select auth.uid()) = user_id)
with check ((select auth.uid()) = user_id);
create or replace function public.my_function()
returns text
language plpgsql
security invoker
set search_path = ''
as $$
begin
return 'result';
end;
$$;
tools
유튜브 콘텐츠 기획 및 알고리즘 전문가. 영상 주제 기획, 아웃라이어 전략, 시청자 풀 분석, 알고리즘 치트키가 필요할 때 사용.
research
유튜브 채널 운영 전문가. 콘텐츠 기획부터 제목/썸네일, 영상 제작, 채널 관리, 수익화, 영상 요약까지 전 영역 지원. Routes to the appropriate sub-skill. Trigger on "유튜브", "YouTube", "영상 기획", "콘텐츠 기획", "아웃라이어", "알고리즘", "썸네일", "제목 공식", "클릭률", "영상 제작", "원고", "인트로", "편집", "채널 브랜딩", "댓글 관리", "수익화", "키 콘텐츠", "풀링 콘텐츠", "객단가", "유튜브 정리", "영상 요약", "transcript 번역", "YouTube digest", "영상 퀴즈". Sub-skills — 기획 (콘텐츠 기획, 알고리즘 전략, 아웃라이어 제작, 시청자 풀 분석), 썸네일 (제목/썸네일 제작, 19가지 제목 공식, A/B 테스트), 제작 (원고 작성, 인트로 구성, 편집 기법, 시청자 참여 유도), 채널 (채널 브랜딩, 이미지 관리, 댓글 관리), 수익화 (키/풀링 콘텐츠, 상품 판매 전략, 객단가 최적화), 요약 (YouTube 영상 분석, transcript 추출/번역, 퀴즈, Deep Research).
development
Spec-driven development: interview the user in depth to produce a comprehensive technical spec. Use when the user says "spec", "스펙", "스펙 작성", "기능 정의", "요구사항 정리", "interview me", "spec this out", "feature spec", or wants to define a feature/project before implementation. Also triggers when a SPEC.md file is referenced.
tools
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.