[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ESY2ABB2JBYN4S5A6YAG5C":3,"skill-same:01M6ESY2ABB2JBYN4S5A6YAG5C":130},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6ESY2ABB2JBYN4S5A6YAG5C","backend-dev-guidelines",null,"Comprehensive backend development guide for Supabase Edge Functions + PostgreSQL. Use when working with Supabase (database, auth, storage, realtime), Edge Functions, PostgreSQL, Row-Level Security (RLS), Resend email, Stripe payments, or TypeScript backend patterns. Covers database design, auth flows, Edge Function patterns, RLS policies, email integration, payment processing, and deployment to Supabase.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"guidelines","dev","backend dev","backend dev guidelines","backend","flows","design","rls","processing","stripe payments","stripe","resend","edge functions","payments","supabase","postgresql","database","auth","storage","typescript","2026-11-10 10:12:30",false,"---\nname: backend-dev-guidelines\ndescription: Comprehensive backend development guide for Supabase Edge Functions + PostgreSQL. Use when working with Supabase (database, auth, storage, realtime), Edge Functions, PostgreSQL, Row-Level Security (RLS), Resend email, Stripe payments, or TypeScript backend patterns. Covers database design, auth flows, Edge Function patterns, RLS policies, email integration, payment processing, and deployment to Supabase.\n---\n\n> **? OPINIONATED SCAFFOLD**: Modern Supabase + Edge Functions stack\n>\n> **Default Stack**:\n> - **Backend**: Supabase Edge Functions (Deno runtime)\n> - **Database**: Supabase PostgreSQL + Row-Level Security\n> - **Auth**: Supabase Auth (JWT-based)\n> - **Storage**: Supabase Storage\n> - **Email**: Resend (transactional emails)\n> - **Payments**: Stripe (subscriptions + one-time)\n> - **Language**: TypeScript\n> - **Deployment**: Git push to Supabase\n>\n> **To customize**: Run `\u002Fcustomize-scaffold backend` or use the scaffold-customizer agent\n> to adapt for Express, NestJS, Fastify, Django, Rails, Go, or other frameworks.\n\n# Backend Development Guidelines\n\n## Purpose\n\nEstablish consistency and best practices for Supabase-powered backends using Edge Functions, PostgreSQL with Row-Level Security, and TypeScript. This skill covers database design, authentication flows, API patterns, email integration, and payment processing.\n\n## When to Use This Skill\n\nAutomatically activates when working on:\n- Creating or modifying Supabase Edge Functions\n- Designing PostgreSQL database schemas\n- Implementing Row-Level Security (RLS) policies\n- Building authentication flows with Supabase Auth\n- Integrating Supabase Storage for file uploads\n- Sending transactional emails with Resend\n- Processing payments with Stripe\n- Input validation with Zod\n- Testing with Supabase CLI\n- Backend deployment and configuration\n\n---\n\n## Quick Start\n\n### New Edge Function Checklist\n\n- [ ] **Function**: Create in `supabase\u002Ffunctions\u002F[name]\u002Findex.ts`\n- [ ] **Validation**: Zod schema for input\n- [ ] **Auth**: JWT verification with Supabase client\n- [ ] **Database**: Use Supabase client with RLS\n- [ ] **Error handling**: Try\u002Fcatch with proper responses\n- [ ] **CORS**: Configure allowed origins\n- [ ] **Tests**: Local testing with Supabase CLI\n- [ ] **Deploy**: `supabase functions deploy [name]`\n\n### New Feature Checklist\n\n- [ ] **Database**: Create migration with schema changes\n- [ ] **RLS**: Add appropriate security policies\n- [ ] **Edge Function**: Implement API endpoint\n- [ ] **Frontend Integration**: Update Supabase client calls\n- [ ] **Testing**: Test locally before deploy\n- [ ] **Monitoring**: Check logs after deployment\n\n---\n\n## Architecture Overview\n\n### Supabase Stack Architecture\n\n```\nHTTP Request\n    ↓\nEdge Function (Deno runtime)\n    ↓\nSupabase Client (Auth + validation)\n    ↓\nPostgreSQL Database (with RLS)\n    ↓\nResponse with JSON\n```\n\n**Key Principle:** Edge Functions are stateless, RLS enforces data security.\n\n**Integrations:**\n- **Supabase Auth** → JWT-based authentication\n- **Supabase Storage** → File uploads and CDN\n- **Supabase Realtime** → WebSocket subscriptions\n- **Resend** → Transactional emails\n- **Stripe** → Payment processing\n\nSee [architecture-overview.md](resources\u002Farchitecture-overview.md) for complete details.\n\n---\n\n## Directory Structure\n\n```\nproject\u002F\n├── supabase\u002F\n│   ├── functions\u002F           # Edge Functions\n│   │   ├── create-user\u002F\n│   │   │   └── index.ts\n│   │   ├── send-email\u002F\n│   │   │   └── index.ts\n│   │   └── process-payment\u002F\n│   │       └── index.ts\n│   ├── migrations\u002F          # Database migrations\n│   │   ├── 001_initial_schema.sql\n│   │   ├── 002_add_rls.sql\n│   │   └── 003_add_indexes.sql\n│   ├── seed.sql             # Test data\n│   └── config.toml          # Supabase config\n├── lib\u002F\n│   └── supabase\u002F\n│       ├── client.ts        # Supabase client setup\n│       ├── auth.ts          # Auth utilities\n│       └── types.ts         # Database types\n└── types\u002F\n    └── database.types.ts    # Generated from schema\n```\n\n**Naming Conventions:**\n- Edge Functions: `kebab-case` - `create-user`, `send-email`\n- Database tables: `snake_case` - `user_profiles`, `subscription_plans`\n- RLS policies: `snake_case` - `users_select_own`, `posts_insert_authenticated`\n- TypeScript types: `PascalCase` - `UserProfile`, `SubscriptionPlan`\n\n---\n\n## Core Principles (7 Key Rules)\n\n### 1. Edge Functions are Simple and Focused\n\n```typescript\n\u002F\u002F ❌ NEVER: 500-line Edge Function\nDeno.serve(async (req) => {\n    \u002F\u002F Massive logic...\n});\n\n\u002F\u002F ✅ ALWAYS: Focused, single-purpose functions\nDeno.serve(async (req) => {\n    const user = await getUserFromRequest(req);\n    const result = await createPost(user.id, req);\n    return new Response(JSON.stringify(result), { status: 201 });\n});\n```\n\n### 2. Always Verify JWT Tokens\n\n```typescript\nimport { createClient } from '@supabase\u002Fsupabase-js';\n\nconst supabase = createClient(\n    Deno.env.get('SUPABASE_URL')!,\n    Deno.env.get('SUPABASE_ANON_KEY')!,\n    {\n        global: {\n            headers: { Authorization: req.headers.get('Authorization')! }\n        }\n    }\n);\n\nconst { data: { user }, error } = await supabase.auth.getUser();\nif (error || !user) {\n    return new Response('Unauthorized', { status: 401 });\n}\n```\n\n### 3. Use RLS for Data Security\n\n```sql\n-- Enable RLS on all tables\nALTER TABLE posts ENABLE ROW LEVEL SECURITY;\n\n-- Users can only read their own data\nCREATE POLICY \"users_select_own\" ON posts\n    FOR SELECT\n    USING (auth.uid() = user_id);\n\n-- Users can only insert their own data\nCREATE POLICY \"posts_insert_own\" ON posts\n    FOR INSERT\n    WITH CHECK (auth.uid() = user_id);\n```\n\n### 4. Validate All Input with Zod\n\n```typescript\nimport { z } from 'zod';\n\nconst CreatePostSchema = z.object({\n    title: z.string().min(1).max(200),\n    content: z.string().min(1),\n    tags: z.array(z.string()).optional()\n});\n\nconst body = await req.json();\nconst validated = CreatePostSchema.parse(body); \u002F\u002F Throws if invalid\n```\n\n### 5. Use Environment Variables via Deno.env\n\n```typescript\n\u002F\u002F ❌ NEVER: Hardcode secrets\nconst apiKey = 'sk_live_abc123';\n\n\u002F\u002F ✅ ALWAYS: Use environment variables\nconst apiKey = Deno.env.get('STRIPE_API_KEY')!;\nconst resendKey = Deno.env.get('RESEND_API_KEY')!;\n```\n\n### 6. Handle Errors Gracefully\n\n```typescript\ntry {\n    const result = await performOperation();\n    return new Response(JSON.stringify({ success: true, data: result }), {\n        status: 200,\n        headers: { 'Content-Type': 'application\u002Fjson' }\n    });\n} catch (error) {\n    console.error('Operation failed:', error);\n    return new Response(JSON.stringify({\n        success: false,\n        error: error.message\n    }), {\n        status: 500,\n        headers: { 'Content-Type': 'application\u002Fjson' }\n    });\n}\n```\n\n### 7. Test Locally Before Deploying\n\n```bash\n# Start Supabase locally\nsupabase start\n\n# Test Edge Function locally\nsupabase functions serve create-user --env-file .env.local\n\n# Run tests\ncurl -i http:\u002F\u002Flocalhost:54321\u002Ffunctions\u002Fv1\u002Fcreate-user \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -d '{\"email\":\"test@example.com\"}'\n```\n\n---\n\n## Common Imports\n\n```typescript\n\u002F\u002F Supabase\nimport { createClient } from '@supabase\u002Fsupabase-js';\nimport type { Database } from '..\u002Ftypes\u002Fdatabase.types.ts';\n\n\u002F\u002F Validation\nimport { z } from 'zod';\n\n\u002F\u002F Email (Resend)\nimport { Resend } from 'resend';\n\n\u002F\u002F Payments (Stripe)\nimport Stripe from 'stripe';\n\n\u002F\u002F CORS helper\nimport { corsHeaders } from '..\u002F_shared\u002Fcors.ts';\n```\n\n---\n\n## Quick Reference\n\n### HTTP Status Codes\n\n| Code | Use Case |\n|------|----------|\n| 200 | Success |\n| 201 | Created |\n| 204 | No Content (DELETE success) |\n| 400 | Bad Request (validation error) |\n| 401 | Unauthorized (no\u002Finvalid token) |\n| 403 | Forbidden (valid token, no permission) |\n| 404 | Not Found |\n| 500 | Server Error |\n\n### Common Edge Function Patterns\n\n**Auth Check** → Verify JWT, get user\n**CRUD Operations** → Create, Read, Update, Delete with RLS\n**Email Sending** → Resend integration\n**Payment Processing** → Stripe webhooks and charges\n**File Upload** → Supabase Storage integration\n\n---\n\n## Anti-Patterns to Avoid\n\n❌ Skipping JWT verification\n❌ Querying database without RLS\n❌ No input validation\n❌ Exposing secrets in code\n❌ Missing error handling\n❌ Deploying without local testing\n❌ Direct database access (bypassing RLS)\n❌ console.log for production errors (use proper logging)\n\n---\n\n## Example Resource Files\n\n> **? Note**: This is a **scaffold skill** with example resources. The provided resources demonstrate the pattern - you should generate additional resources as needed for your specific project.\n\n### ✅ Provided Examples\n\n**[architecture-overview.md](resources\u002Farchitecture-overview.md)** - Complete Supabase stack architecture\n**[edge-functions-guide.md](resources\u002Fedge-functions-guide.md)** - Edge Function patterns and deployment\n**[database-and-rls.md](resources\u002Fdatabase-and-rls.md)** - Database design and RLS policies\n\n### ? Generate On-Demand\n\nWhen you need guidance on a specific topic, ask Claude to generate a resource file following the same pattern as the examples above. Common topics:\n\n- **Validation patterns** - Zod schemas and error handling\n- **Auth patterns** - JWT verification, session management\n- **Storage patterns** - File uploads, CDN, signed URLs\n- **Email integration** - Resend templates and sending\n- **Stripe integration** - Payments, subscriptions, webhooks\n- **Testing guide** - Local testing, integration tests\n- **Complete examples** - Full working Edge Function examples\n\n**How to request**: \"Generate a resource file for [topic] following the pattern in architecture-overview.md\"\n\n---\n\n## Customization Instructions\n\n### For Your Tech Stack\n\n**Not using Supabase?** Use the scaffold-customizer agent or manual replacement:\n\n```bash\n# Option 1: Automated\n# Claude will detect your stack and offer to customize\n\n# Option 2: Manual find-and-replace\nSupabase → Your database (Prisma, TypeORM, etc.)\nEdge Functions → Your backend (Express, NestJS, etc.)\nPostgreSQL → Your database (MySQL, MongoDB, etc.)\nRLS → Your auth strategy\n```\n\n### For Your Domain\n\nReplace the generic examples with your domain:\n- Update \"posts\" table → your entities\n- Update \"users\" → your user model\n- Update business logic examples\n\n### For Your Patterns\n\nAdapt the principles to your architecture:\n- Keep security-first approach\n- Keep validation patterns\n- Keep error handling patterns\n- Adjust structure to your needs\n\n---\n\n## Related Skills\n\n- **frontend-dev-guidelines** - Next.js + React patterns for Supabase integration\n- **memory-management** - Track architectural decisions\n- **skill-developer** - Meta-skill for creating and managing skills\n\n---\n\n**Skill Status**: SCAFFOLD ✅\n**Line Count**: \u003C 500 ✅\n**Progressive Disclosure**: Example resources + generation instructions ✅\n","> **? OPINIONATED SCAFFOLD**: Modern Supabase + Edge Functions stack\n>\n> **Default Stack**:\n> - **Backend**: Supabase Edge Functions (Deno runtime)\n> - **Database**: Supabase PostgreSQL + Row-Level Security\n> - **Auth**: Supabase Auth (JWT-based)\n> - **Storage**: Supabase Storage\n> - **Email**: Resend (transactional emails)\n> - **Payments**: Stripe (subscriptions + one-time)\n> - **Language**: TypeScript\n> - **Deployment**: Git push to Supabase\n>\n> **To customize**: Run `\u002Fcustomize-scaffold backend` or use the scaffold-customizer agent\n> to adapt for Express, NestJS, Fastify, Django, Rails, Go, or other frameworks.\n\n# Backend Development Guidelines\n\n## Purpose\n\nEstablish consistency and best practices for Supabase-powered backends using Edge Functions, PostgreSQL with Row-Level Security, and TypeScript. This skill covers database design, authentication flows, API patterns, email integration, and payment processing.\n\n## When to Use This Skill\n\nAutomatically activates when working on:\n- Creating or modifying Supabase Edge Functions\n- Designing PostgreSQL database schemas\n- Implementing Row-Level Security (RLS) policies\n- Building authentication flows with Supabase Auth\n- Integrating Supabase Storage for file uploads\n- Sending transactional emails with Resend\n- Processing payments with Stripe\n- Input validation with Zod\n- Testing with Supabase CLI\n- Backend deployment and configuration\n\n---\n\n## Quick Start\n\n### New Edge Function Checklist\n\n- [ ] **Function**: Create in `supabase\u002Ffunctions\u002F[name]\u002Findex.ts`\n- [ ] **Validation**: Zod schema for input\n- [ ] **Auth**: JWT verification with Supabase client\n- [ ] **Database**: Use Supabase client with RLS\n- [ ] **Error handling**: Try\u002Fcatch with proper responses\n- [ ] **CORS**: Configure allowed origins\n- [ ] **Tests**: Local testing with Supabase CLI\n- [ ] **Deploy**: `supabase functions deploy [name]`\n\n### New Feature Checklist\n\n- [ ] **Database**: Create migration with schema changes\n- [ ] **RLS**: Add appropriate security policies\n- [ ] **Edge Function**: Implement API endpoint\n- [ ] **Frontend Integration**: Update Supabase client calls\n- [ ] **Testing**: Test locally before deploy\n- [ ] **Monitoring**: Check logs after deployment\n\n---\n\n## Architecture Overview\n\n### Supabase Stack Architecture\n\n```\nHTTP Request\n    ↓\nEdge Function (Deno runtime)\n    ↓\nSupabase Client (Auth + validation)\n    ↓\nPostgreSQL Database (with RLS)\n    ↓\nResponse with JSON\n```\n\n**Key Principle:** Edge Functions are stateless, RLS enforces data security.\n\n**Integrations:**\n- **Supabase Auth** → JWT-based authentication\n- **Supabase Storage** → File uploads and CDN\n- **Supabase Realtime** → WebSocket subscriptions\n- **Resend** → Transactional emails\n- **Stripe** → Payment processing\n\nSee [architecture-overview.md](resources\u002Farchitecture-overview.md) for complete details.\n\n---\n\n## Directory Structure\n\n```\nproject\u002F\n├── supabase\u002F\n│   ├── functions\u002F           # Edge Functions\n│   │   ├── create-user\u002F\n│   │   │   └── index.ts\n│   │   ├── send-email\u002F\n│   │   │   └── index.ts\n│   │   └── process-payment\u002F\n│   │       └── index.ts\n│   ├── migrations\u002F          # Database migrations\n│   │   ├── 001_initial_schema.sql\n│   │   ├── 002_add_rls.sql\n│   │   └── 003_add_indexes.sql\n│   ├── seed.sql             # Test data\n│   └── config.toml          # Supabase config\n├── lib\u002F\n│   └── supabase\u002F\n│       ├── client.ts        # Supabase client setup\n│       ├── auth.ts          # Auth utilities\n│       └── types.ts         # Database types\n└── types\u002F\n    └── database.types.ts    # Generated from schema\n```\n\n**Naming Conventions:**\n- Edge Functions: `kebab-case` - `create-user`, `send-email`\n- Database tables: `snake_case` - `user_profiles`, `subscription_plans`\n- RLS policies: `snake_case` - `users_select_own`, `posts_insert_authenticated`\n- TypeScript types: `PascalCase` - `UserProfile`, `SubscriptionPlan`\n\n---\n\n## Core Principles (7 Key Rules)\n\n### 1. Edge Functions are Simple and Focused\n\n```typescript\n\u002F\u002F ❌ NEVER: 500-line Edge Function\nDeno.serve(async (req) => {\n    \u002F\u002F Massive logic...\n});\n\n\u002F\u002F ✅ ALWAYS: Focused, single-purpose functions\nDeno.serve(async (req) => {\n    const user = await getUserFromRequest(req);\n    const result = await createPost(user.id, req);\n    return new Response(JSON.stringify(result), { status: 201 });\n});\n```\n\n### 2. Always Verify JWT Tokens\n\n```typescript\nimport { createClient } from '@supabase\u002Fsupabase-js';\n\nconst supabase = createClient(\n    Deno.env.get('SUPABASE_URL')!,\n    Deno.env.get('SUPABASE_ANON_KEY')!,\n    {\n        global: {\n            headers: { Authorization: req.headers.get('Authorization')! }\n        }\n    }\n);\n\nconst { data: { user }, error } = await supabase.auth.getUser();\nif (error || !user) {\n    return new Response('Unauthorized', { status: 401 });\n}\n```\n\n### 3. Use RLS for Data Security\n\n```sql\n-- Enable RLS on all tables\nALTER TABLE posts ENABLE ROW LEVEL SECURITY;\n\n-- Users can only read their own data\nCREATE POLICY \"users_select_own\" ON posts\n    FOR SELECT\n    USING (auth.uid() = user_id);\n\n-- Users can only insert their own data\nCREATE POLICY \"posts_insert_own\" ON posts\n    FOR INSERT\n    WITH CHECK (auth.uid() = user_id);\n```\n\n### 4. Validate All Input with Zod\n\n```typescript\nimport { z } from 'zod';\n\nconst CreatePostSchema = z.object({\n    title: z.string().min(1).max(200),\n    content: z.string().min(1),\n    tags: z.array(z.string()).optional()\n});\n\nconst body = await req.json();\nconst validated = CreatePostSchema.parse(body); \u002F\u002F Throws if invalid\n```\n\n### 5. Use Environment Variables via Deno.env\n\n```typescript\n\u002F\u002F ❌ NEVER: Hardcode secrets\nconst apiKey = 'sk_live_abc123';\n\n\u002F\u002F ✅ ALWAYS: Use environment variables\nconst apiKey = Deno.env.get('STRIPE_API_KEY')!;\nconst resendKey = Deno.env.get('RESEND_API_KEY')!;\n```\n\n### 6. Handle Errors Gracefully\n\n```typescript\ntry {\n    const result = await performOperation();\n    return new Response(JSON.stringify({ success: true, data: result }), {\n        status: 200,\n        headers: { 'Content-Type': 'application\u002Fjson' }\n    });\n} catch (error) {\n    console.error('Operation failed:', error);\n    return new Response(JSON.stringify({\n        success: false,\n        error: error.message\n    }), {\n        status: 500,\n        headers: { 'Content-Type': 'application\u002Fjson' }\n    });\n}\n```\n\n### 7. Test Locally Before Deploying\n\n```bash\n# Start Supabase locally\nsupabase start\n\n# Test Edge Function locally\nsupabase functions serve create-user --env-file .env.local\n\n# Run tests\ncurl -i http:\u002F\u002Flocalhost:54321\u002Ffunctions\u002Fv1\u002Fcreate-user \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -d '{\"email\":\"test@example.com\"}'\n```\n\n---\n\n## Common Imports\n\n```typescript\n\u002F\u002F Supabase\nimport { createClient } from '@supabase\u002Fsupabase-js';\nimport type { Database } from '..\u002Ftypes\u002Fdatabase.types.ts';\n\n\u002F\u002F Validation\nimport { z } from 'zod';\n\n\u002F\u002F Email (Resend)\nimport { Resend } from 'resend';\n\n\u002F\u002F Payments (Stripe)\nimport Stripe from 'stripe';\n\n\u002F\u002F CORS helper\nimport { corsHeaders } from '..\u002F_shared\u002Fcors.ts';\n```\n\n---\n\n## Quick Reference\n\n### HTTP Status Codes\n\n| Code | Use Case |\n|------|----------|\n| 200 | Success |\n| 201 | Created |\n| 204 | No Content (DELETE success) |\n| 400 | Bad Request (validation error) |\n| 401 | Unauthorized (no\u002Finvalid token) |\n| 403 | Forbidden (valid token, no permission) |\n| 404 | Not Found |\n| 500 | Server Error |\n\n### Common Edge Function Patterns\n\n**Auth Check** → Verify JWT, get user\n**CRUD Operations** → Create, Read, Update, Delete with RLS\n**Email Sending** → Resend integration\n**Payment Processing** → Stripe webhooks and charges\n**File Upload** → Supabase Storage integration\n\n---\n\n## Anti-Patterns to Avoid\n\n❌ Skipping JWT verification\n❌ Querying database without RLS\n❌ No input validation\n❌ Exposing secrets in code\n❌ Missing error handling\n❌ Deploying without local testing\n❌ Direct database access (bypassing RLS)\n❌ console.log for production errors (use proper logging)\n\n---\n\n## Example Resource Files\n\n> **? Note**: This is a **scaffold skill** with example resources. The provided resources demonstrate the pattern - you should generate additional resources as needed for your specific project.\n\n### ✅ Provided Examples\n\n**[architecture-overview.md](resources\u002Farchitecture-overview.md)** - Complete Supabase stack architecture\n**[edge-functions-guide.md](resources\u002Fedge-functions-guide.md)** - Edge Function patterns and deployment\n**[database-and-rls.md](resources\u002Fdatabase-and-rls.md)** - Database design and RLS policies\n\n### ? Generate On-Demand\n\nWhen you need guidance on a specific topic, ask Claude to generate a resource file following the same pattern as the examples above. Common topics:\n\n- **Validation patterns** - Zod schemas and error handling\n- **Auth patterns** - JWT verification, session management\n- **Storage patterns** - File uploads, CDN, signed URLs\n- **Email integration** - Resend templates and sending\n- **Stripe integration** - Payments, subscriptions, webhooks\n- **Testing guide** - Local testing, integration tests\n- **Complete examples** - Full working Edge Function examples\n\n**How to request**: \"Generate a resource file for [topic] following the pattern in architecture-overview.md\"\n\n---\n\n## Customization Instructions\n\n### For Your Tech Stack\n\n**Not using Supabase?** Use the scaffold-customizer agent or manual replacement:\n\n```bash\n# Option 1: Automated\n# Claude will detect your stack and offer to customize\n\n# Option 2: Manual find-and-replace\nSupabase → Your database (Prisma, TypeORM, etc.)\nEdge Functions → Your backend (Express, NestJS, etc.)\nPostgreSQL → Your database (MySQL, MongoDB, etc.)\nRLS → Your auth strategy\n```\n\n### For Your Domain\n\nReplace the generic examples with your domain:\n- Update \"posts\" table → your entities\n- Update \"users\" → your user model\n- Update business logic examples\n\n### For Your Patterns\n\nAdapt the principles to your architecture:\n- Keep security-first approach\n- Keep validation patterns\n- Keep error handling patterns\n- Adjust structure to your needs\n\n---\n\n## Related Skills\n\n- **frontend-dev-guidelines** - Next.js + React patterns for Supabase integration\n- **memory-management** - Track architectural decisions\n- **skill-developer** - Meta-skill for creating and managing skills\n\n---\n\n**Skill Status**: SCAFFOLD ✅\n**Line Count**: \u003C 500 ✅\n**Progressive Disclosure**: Example resources + generation instructions ✅\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill backend-dev-guidelines",{"tool":64,"command":65},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill backend-dev-guidelines",{"tool":67,"command":68},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill backend-dev-guidelines","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002FSKILL.md",true,[72,78,82,86,90,94,98,102,106,110,114,118,122,126],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"resources\u002Farchitecture-overview.md","REFERENCE","参考文档",16702,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Farchitecture-overview.md",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"resources\u002Fasync-and-errors.md",6862,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fasync-and-errors.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"resources\u002Fcomplete-examples.md",16478,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fcomplete-examples.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"resources\u002Fconfiguration.md",5816,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fconfiguration.md",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"resources\u002Fdatabase-and-rls.md",5502,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fdatabase-and-rls.md",{"path":95,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":96,"sourceHtmlUrl":97},"resources\u002Fdatabase-patterns.md",4937,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fdatabase-patterns.md",{"path":99,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":100,"sourceHtmlUrl":101},"resources\u002Fedge-functions-guide.md",13992,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fedge-functions-guide.md",{"path":103,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":104,"sourceHtmlUrl":105},"resources\u002Fmiddleware-guide.md",5169,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fmiddleware-guide.md",{"path":107,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":108,"sourceHtmlUrl":109},"resources\u002Frouting-and-controllers.md",19930,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Frouting-and-controllers.md",{"path":111,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":112,"sourceHtmlUrl":113},"resources\u002Fsentry-and-monitoring.md",7753,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fsentry-and-monitoring.md",{"path":115,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":116,"sourceHtmlUrl":117},"resources\u002Fservices-and-repositories.md",22299,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fservices-and-repositories.md",{"path":119,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":120,"sourceHtmlUrl":121},"resources\u002Ftesting-guide.md",5420,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Ftesting-guide.md",{"path":123,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":124,"sourceHtmlUrl":125},"resources\u002Fvalidation-patterns.md",18038,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fresources\u002Fvalidation-patterns.md",{"path":127,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":128,"sourceHtmlUrl":129},"skill-report.json",12581,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdojocodinglabs\u002Fbackend-dev-guidelines\u002Fskill-report.json",[131,143,153,162,168,175],{"skillNo":132,"name":133,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":139,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[136],{"categoryNo":137,"categoryName":138,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[140,141,142],"model","model hierarchy","model hierarchy skill",{"skillNo":144,"name":145,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":149,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[148],{"categoryNo":137,"categoryName":138,"taxonomyType":21,"taxonomyTypeDesc":22},[150,151,152],"MCP","zoom","zoom mcp",{"skillNo":154,"name":155,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[159,160,161,151],"sdk","zoom apps sdk","apps",{"skillNo":163,"name":164,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[164],{"skillNo":169,"name":170,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[173],{"categoryNo":137,"categoryName":138,"taxonomyType":21,"taxonomyTypeDesc":22},[170],{"skillNo":176,"name":177,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[177]]