Claude-skill-registry design-schema
Design complete database schemas with tables, relationships, constraints, and indexes for Supabase. Triggers when user describes data models, entities, or requests schema design.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/design-schema" ~/.claude/skills/majiayu000-claude-skill-registry-design-schema && rm -rf "$T"
manifest:
skills/data/design-schema/SKILL.mdsource content
Schema Design Skill
Design comprehensive, normalized database schemas for Supabase applications.
Purpose
Create well-structured database schemas following best practices for normalization, relationships, constraints, and indexing.
When to Use
- User describes data requirements
- Requests database schema design
- Needs entity relationship modeling
- Asks about table structure
- Plans new feature requiring data storage
Instructions
-
Gather Requirements
- Identify all entities
- Understand relationships
- Determine data constraints
- Plan for future growth
-
Design Tables
- Choose appropriate column types
- Add NOT NULL constraints
- Define CHECK constraints
- Include timestamps
-
Map Relationships
- One-to-many with foreign keys
- Many-to-many with junction tables
- Self-referential if needed
-
Add Indexes
- Primary keys (automatic)
- Foreign keys
- Frequently queried columns
- Composite indexes for multi-column queries
-
Implement RLS
- Enable on all tables
- Create policies for each operation
- Test policy effectiveness
-
Generate Migration
- Complete SQL DDL
- Include all constraints
- Add helpful comments
Example Output
-- Users and Posts Schema -- ======================= CREATE TABLE public.users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT UNIQUE NOT NULL, username TEXT UNIQUE NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL, CONSTRAINT username_length CHECK (char_length(username) >= 3) ); CREATE TABLE public.posts ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), author_id UUID NOT NULL REFERENCES public.users(id) ON DELETE CASCADE, title TEXT NOT NULL, content TEXT NOT NULL, published BOOLEAN DEFAULT false, created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL, CONSTRAINT title_length CHECK (char_length(title) >= 3) ); CREATE INDEX idx_posts_author ON public.posts(author_id); CREATE INDEX idx_posts_published ON public.posts(published, created_at DESC) WHERE published = true; ALTER TABLE public.posts ENABLE ROW LEVEL SECURITY; CREATE POLICY "Published posts viewable by all" ON public.posts FOR SELECT USING (published = true);
Output Format
- Complete schema SQL
- ER diagram description
- Explanation of design decisions
- Migration file