[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R7K6Y6YP2HWTY18Y3MZYHV":3,"skill-same:01M6R7K6Y6YP2HWTY18Y3MZYHV":207},{"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":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":14,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6R7K6Y6YP2HWTY18Y3MZYHV","supabase-postgres-best-practices",null,"Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.","Ahmed2020SE\u002Fdotfiles","Ahmed2020SE","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F36050778?v=4","01M6R5NQQQ2F5VVCQY0GZ22JC0","Ahmed Abdel Gawad","01M6R5NQVJ6T307TJYWZVTBY7X",0,"MIT","https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"best practices","supabase postgres best practices","supabase","postgres best practices","postgres","writing","performance","database","Optimization","performance optimization","use","schema","queries","postgres performance","when","2026-11-10 10:12:30",false,"---\nname: supabase-postgres-best-practices\ndescription: Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.\nlicense: MIT\nmetadata:\n  author: supabase\n  version: \"1.0.0\"\n---\n\n# Supabase Postgres Best Practices\n\nComprehensive performance optimization guide for Postgres, maintained by Supabase. Contains rules across 8 categories, prioritized by impact to guide automated query optimization and schema design.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing SQL queries or designing schemas\n- Implementing indexes or query optimization\n- Reviewing database performance issues\n- Configuring connection pooling or scaling\n- Optimizing for Postgres-specific features\n- Working with Row-Level Security (RLS)\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Query Performance | CRITICAL | `query-` |\n| 2 | Connection Management | CRITICAL | `conn-` |\n| 3 | Security & RLS | CRITICAL | `security-` |\n| 4 | Schema Design | HIGH | `schema-` |\n| 5 | Concurrency & Locking | MEDIUM-HIGH | `lock-` |\n| 6 | Data Access Patterns | MEDIUM | `data-` |\n| 7 | Monitoring & Diagnostics | LOW-MEDIUM | `monitor-` |\n| 8 | Advanced Features | LOW | `advanced-` |\n\n## How to Use\n\nRead individual rule files for detailed explanations and SQL examples:\n\n```\nrules\u002Fquery-missing-indexes.md\nrules\u002Fschema-partial-indexes.md\nrules\u002F_sections.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect SQL example with explanation\n- Correct SQL example with explanation\n- Optional EXPLAIN output or metrics\n- Additional context and references\n- Supabase-specific notes (when applicable)\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n","# Supabase Postgres Best Practices\n\nComprehensive performance optimization guide for Postgres, maintained by Supabase. Contains rules across 8 categories, prioritized by impact to guide automated query optimization and schema design.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing SQL queries or designing schemas\n- Implementing indexes or query optimization\n- Reviewing database performance issues\n- Configuring connection pooling or scaling\n- Optimizing for Postgres-specific features\n- Working with Row-Level Security (RLS)\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Query Performance | CRITICAL | `query-` |\n| 2 | Connection Management | CRITICAL | `conn-` |\n| 3 | Security & RLS | CRITICAL | `security-` |\n| 4 | Schema Design | HIGH | `schema-` |\n| 5 | Concurrency & Locking | MEDIUM-HIGH | `lock-` |\n| 6 | Data Access Patterns | MEDIUM | `data-` |\n| 7 | Monitoring & Diagnostics | LOW-MEDIUM | `monitor-` |\n| 8 | Advanced Features | LOW | `advanced-` |\n\n## How to Use\n\nRead individual rule files for detailed explanations and SQL examples:\n\n```\nrules\u002Fquery-missing-indexes.md\nrules\u002Fschema-partial-indexes.md\nrules\u002F_sections.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect SQL example with explanation\n- Correct SQL example with explanation\n- Optional EXPLAIN output or metrics\n- Additional context and references\n- Supabase-specific notes (when applicable)\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n",{"name":5,"license":15,"metadata":39,"description":7},{"author":21,"version":40},"1.0.0","main","b6b0a28b9857746ce09f588bfb5c308a7d4a9395","dot_claude\u002Fskills\u002Fpostgres-best-practices","https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002FAhmed2020SE","I'm Senior software engineer seeking to learn and improve, i wish someday i will develop something that will be a good use to the community. ","2026-04-12 07:11:28",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add Ahmed2020SE\u002Fdotfiles --skill supabase-postgres-best-practices",{"tool":54,"command":55},"bunx","bunx skills add Ahmed2020SE\u002Fdotfiles --skill supabase-postgres-best-practices",{"tool":57,"command":58},"pnpm","pnpm dlx skills add Ahmed2020SE\u002Fdotfiles --skill supabase-postgres-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002FSKILL.md",true,[62,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,163,167,171,175,179,183,187,191,195,199,203],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"AGENTS.md","REFERENCE","参考文档",44927,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002FAGENTS.md",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"metadata.json",818,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Fmetadata.json",{"path":73,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":74,"sourceHtmlUrl":75},"README.md",3173,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002FREADME.md",{"path":77,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":78,"sourceHtmlUrl":79},"rules\u002F_contributing.md",4147,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002F_contributing.md",{"path":81,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":82,"sourceHtmlUrl":83},"rules\u002F_sections.md",1682,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002F_sections.md",{"path":85,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":86,"sourceHtmlUrl":87},"rules\u002F_template.md",1040,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002F_template.md",{"path":89,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":90,"sourceHtmlUrl":91},"rules\u002Fadvanced-full-text-search.md",1468,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fadvanced-full-text-search.md",{"path":93,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":94,"sourceHtmlUrl":95},"rules\u002Fadvanced-jsonb-indexing.md",1444,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fadvanced-jsonb-indexing.md",{"path":97,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":98,"sourceHtmlUrl":99},"rules\u002Fconn-idle-timeout.md",1282,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fconn-idle-timeout.md",{"path":101,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":102,"sourceHtmlUrl":103},"rules\u002Fconn-limits.md",1325,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fconn-limits.md",{"path":105,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":106,"sourceHtmlUrl":107},"rules\u002Fconn-pooling.md",1382,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fconn-pooling.md",{"path":109,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":110,"sourceHtmlUrl":111},"rules\u002Fconn-prepared-statements.md",1529,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fconn-prepared-statements.md",{"path":113,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":114,"sourceHtmlUrl":115},"rules\u002Fdata-batch-inserts.md",1287,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fdata-batch-inserts.md",{"path":117,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":118,"sourceHtmlUrl":119},"rules\u002Fdata-n-plus-one.md",1361,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fdata-n-plus-one.md",{"path":121,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":122,"sourceHtmlUrl":123},"rules\u002Fdata-pagination.md",1358,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fdata-pagination.md",{"path":125,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":126,"sourceHtmlUrl":127},"rules\u002Fdata-upsert.md",1390,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fdata-upsert.md",{"path":129,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":130,"sourceHtmlUrl":131},"rules\u002Flock-advisory.md",1531,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Flock-advisory.md",{"path":133,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":134,"sourceHtmlUrl":135},"rules\u002Flock-deadlock-prevention.md",1855,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Flock-deadlock-prevention.md",{"path":137,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":138,"sourceHtmlUrl":139},"rules\u002Flock-short-transactions.md",1350,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Flock-short-transactions.md",{"path":141,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":142,"sourceHtmlUrl":143},"rules\u002Flock-skip-locked.md",1353,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Flock-skip-locked.md",{"path":145,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":146,"sourceHtmlUrl":147},"rules\u002Fmonitor-explain-analyze.md",1441,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fmonitor-explain-analyze.md",{"path":149,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":150,"sourceHtmlUrl":151},"rules\u002Fmonitor-pg-stat-statements.md",1418,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fmonitor-pg-stat-statements.md",{"path":153,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":154,"sourceHtmlUrl":155},"rules\u002Fmonitor-vacuum-analyze.md",1506,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fmonitor-vacuum-analyze.md",{"path":157,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":158,"sourceHtmlUrl":159},"rules\u002Fquery-composite-indexes.md",1454,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fquery-composite-indexes.md",{"path":161,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":114,"sourceHtmlUrl":162},"rules\u002Fquery-covering-indexes.md","https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fquery-covering-indexes.md",{"path":164,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":165,"sourceHtmlUrl":166},"rules\u002Fquery-index-types.md",1385,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fquery-index-types.md",{"path":168,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":169,"sourceHtmlUrl":170},"rules\u002Fquery-missing-indexes.md",1218,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fquery-missing-indexes.md",{"path":172,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":173,"sourceHtmlUrl":174},"rules\u002Fquery-partial-indexes.md",1347,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fquery-partial-indexes.md",{"path":176,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":177,"sourceHtmlUrl":178},"rules\u002Fschema-data-types.md",1453,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fschema-data-types.md",{"path":180,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":181,"sourceHtmlUrl":182},"rules\u002Fschema-foreign-key-indexes.md",1679,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fschema-foreign-key-indexes.md",{"path":184,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":185,"sourceHtmlUrl":186},"rules\u002Fschema-lowercase-identifiers.md",1728,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fschema-lowercase-identifiers.md",{"path":188,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":189,"sourceHtmlUrl":190},"rules\u002Fschema-partitioning.md",1548,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fschema-partitioning.md",{"path":192,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":193,"sourceHtmlUrl":194},"rules\u002Fschema-primary-keys.md",1821,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fschema-primary-keys.md",{"path":196,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":197,"sourceHtmlUrl":198},"rules\u002Fsecurity-privileges.md",1566,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fsecurity-privileges.md",{"path":200,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":201,"sourceHtmlUrl":202},"rules\u002Fsecurity-rls-basics.md",1372,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fsecurity-rls-basics.md",{"path":204,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":205,"sourceHtmlUrl":206},"rules\u002Fsecurity-rls-performance.md",1493,"https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fpostgres-best-practices\u002Frules\u002Fsecurity-rls-performance.md",[208],{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":222,"publishedAt":34},"01M6R80JM63SNQET74RDW8BWA9","solution-documentation","Use this skill whenever the user wants to create a solution documentation or technical specification document. Triggers include: 'create solution doc', 'create solution documentation', 'write solution documentation' , 'write technical spec', 'document this feature', 'create implementation plan', 'write solution approach', or any request to document a set of backend\u002Ffrontend changes, API modifications, database changes, or system enhancements. The output follows a structured, numbered-section format with Objective\u002FAction breakdown, API endpoints, DB changes, and job references. Do NOT use for README files, API reference docs, changelogs, or user-facing manuals.","https:\u002F\u002Fgithub.com\u002FAhmed2020SE\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot_claude\u002Fskills\u002Fsolution-documentation\u002FSKILL.md",[214,219],{"categoryNo":215,"categoryName":216,"taxonomyType":217,"taxonomyTypeDesc":218},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":220,"categoryName":221,"taxonomyType":217,"taxonomyTypeDesc":218},"01JBSEEDCAT000000000000010","后端与接口",[223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,26],"documentation","solution documentation","specification","frontend","request","implementation plan","action","technical specification","db","feature","do","create","references","files","write","plan","api","doc","SET"]