{"id":"f71ac26f-a433-4d2b-baaa-4246c97304fe","shortId":"XQjwPQ","kind":"skill","title":"postgresql-optimization","tagline":"PostgreSQL-specific development assistant focusing on unique PostgreSQL features, advanced data types, and PostgreSQL-exclusive capabilities. Covers JSONB operations, array types, custom types, range/geometric types, full-text search, window functions, and PostgreSQL extensions e","description":"# PostgreSQL Development Assistant\n\nExpert PostgreSQL guidance for ${selection} (or entire project if no selection). Focus on PostgreSQL-specific features, optimization patterns, and advanced capabilities.\n\n## � PostgreSQL-Specific Features\n\n### JSONB Operations\n```sql\n-- Advanced JSONB queries\nCREATE TABLE events (\n    id SERIAL PRIMARY KEY,\n    data JSONB NOT NULL,\n    created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- GIN index for JSONB performance\nCREATE INDEX idx_events_data_gin ON events USING gin(data);\n\n-- JSONB containment and path queries\nSELECT * FROM events \nWHERE data @> '{\"type\": \"login\"}'\n  AND data #>> '{user,role}' = 'admin';\n\n-- JSONB aggregation\nSELECT jsonb_agg(data) FROM events WHERE data ? 'user_id';\n```\n\n### Array Operations\n```sql\n-- PostgreSQL arrays\nCREATE TABLE posts (\n    id SERIAL PRIMARY KEY,\n    tags TEXT[],\n    categories INTEGER[]\n);\n\n-- Array queries and operations\nSELECT * FROM posts WHERE 'postgresql' = ANY(tags);\nSELECT * FROM posts WHERE tags && ARRAY['database', 'sql'];\nSELECT * FROM posts WHERE array_length(tags, 1) > 3;\n\n-- Array aggregation\nSELECT array_agg(DISTINCT category) FROM posts, unnest(categories) as category;\n```\n\n### Window Functions & Analytics\n```sql\n-- Advanced window functions\nSELECT \n    product_id,\n    sale_date,\n    amount,\n    -- Running totals\n    SUM(amount) OVER (PARTITION BY product_id ORDER BY sale_date) as running_total,\n    -- Moving averages\n    AVG(amount) OVER (PARTITION BY product_id ORDER BY sale_date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as moving_avg,\n    -- Rankings\n    DENSE_RANK() OVER (PARTITION BY EXTRACT(month FROM sale_date) ORDER BY amount DESC) as monthly_rank,\n    -- Lag/Lead for comparisons\n    LAG(amount, 1) OVER (PARTITION BY product_id ORDER BY sale_date) as prev_amount\nFROM sales;\n```\n\n### Full-Text Search\n```sql\n-- PostgreSQL full-text search\nCREATE TABLE documents (\n    id SERIAL PRIMARY KEY,\n    title TEXT,\n    content TEXT,\n    search_vector tsvector\n);\n\n-- Update search vector\nUPDATE documents \nSET search_vector = to_tsvector('english', title || ' ' || content);\n\n-- GIN index for search performance\nCREATE INDEX idx_documents_search ON documents USING gin(search_vector);\n\n-- Search queries\nSELECT * FROM documents \nWHERE search_vector @@ plainto_tsquery('english', 'postgresql database');\n\n-- Ranking results\nSELECT *, ts_rank(search_vector, plainto_tsquery('postgresql')) as rank\nFROM documents \nWHERE search_vector @@ plainto_tsquery('postgresql')\nORDER BY rank DESC;\n```\n\n## � PostgreSQL Performance Tuning\n\n### Query Optimization\n```sql\n-- EXPLAIN ANALYZE for performance analysis\nEXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) \nSELECT u.name, COUNT(o.id) as order_count\nFROM users u\nLEFT JOIN orders o ON u.id = o.user_id\nWHERE u.created_at > '2024-01-01'::date\nGROUP BY u.id, u.name;\n\n-- Identify slow queries from pg_stat_statements\nSELECT query, calls, total_time, mean_time, rows,\n       100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent\nFROM pg_stat_statements \nORDER BY total_time DESC \nLIMIT 10;\n```\n\n### Index Strategies\n```sql\n-- Composite indexes for multi-column queries\nCREATE INDEX idx_orders_user_date ON orders(user_id, order_date);\n\n-- Partial indexes for filtered queries\nCREATE INDEX idx_active_users ON users(created_at) WHERE status = 'active';\n\n-- Expression indexes for computed values\nCREATE INDEX idx_users_lower_email ON users(lower(email));\n\n-- Covering indexes to avoid table lookups\nCREATE INDEX idx_orders_covering ON orders(user_id, status) INCLUDE (total, created_at);\n```\n\n### Connection & Memory Management\n```sql\n-- Check connection usage\nSELECT count(*) as connections, state \nFROM pg_stat_activity \nGROUP BY state;\n\n-- Monitor memory usage\nSELECT name, setting, unit \nFROM pg_settings \nWHERE name IN ('shared_buffers', 'work_mem', 'maintenance_work_mem');\n```\n\n## �️ PostgreSQL Advanced Data Types\n\n### Custom Types & Domains\n```sql\n-- Create custom types\nCREATE TYPE address_type AS (\n    street TEXT,\n    city TEXT,\n    postal_code TEXT,\n    country TEXT\n);\n\nCREATE TYPE order_status AS ENUM ('pending', 'processing', 'shipped', 'delivered', 'cancelled');\n\n-- Use domains for data validation\nCREATE DOMAIN email_address AS TEXT \nCHECK (VALUE ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$');\n\n-- Table using custom types\nCREATE TABLE customers (\n    id SERIAL PRIMARY KEY,\n    email email_address NOT NULL,\n    address address_type,\n    status order_status DEFAULT 'pending'\n);\n```\n\n### Range Types\n```sql\n-- PostgreSQL range types\nCREATE TABLE reservations (\n    id SERIAL PRIMARY KEY,\n    room_id INTEGER,\n    reservation_period tstzrange,\n    price_range numrange\n);\n\n-- Range queries\nSELECT * FROM reservations \nWHERE reservation_period && tstzrange('2024-07-20', '2024-07-25');\n\n-- Exclude overlapping ranges\nALTER TABLE reservations \nADD CONSTRAINT no_overlap \nEXCLUDE USING gist (room_id WITH =, reservation_period WITH &&);\n```\n\n### Geometric Types\n```sql\n-- PostgreSQL geometric types\nCREATE TABLE locations (\n    id SERIAL PRIMARY KEY,\n    name TEXT,\n    coordinates POINT,\n    coverage CIRCLE,\n    service_area POLYGON\n);\n\n-- Geometric queries\nSELECT name FROM locations \nWHERE coordinates <-> point(40.7128, -74.0060) < 10; -- Within 10 units\n\n-- GiST index for geometric data\nCREATE INDEX idx_locations_coords ON locations USING gist(coordinates);\n```\n\n## 📊 PostgreSQL Extensions & Tools\n\n### Useful Extensions\n```sql\n-- Enable commonly used extensions\nCREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";    -- UUID generation\nCREATE EXTENSION IF NOT EXISTS \"pgcrypto\";     -- Cryptographic functions\nCREATE EXTENSION IF NOT EXISTS \"unaccent\";     -- Remove accents from text\nCREATE EXTENSION IF NOT EXISTS \"pg_trgm\";      -- Trigram matching\nCREATE EXTENSION IF NOT EXISTS \"btree_gin\";    -- GIN indexes for btree types\n\n-- Using extensions\nSELECT uuid_generate_v4();                     -- Generate UUIDs\nSELECT crypt('password', gen_salt('bf'));      -- Hash passwords\nSELECT similarity('postgresql', 'postgersql'); -- Fuzzy matching\n```\n\n### Monitoring & Maintenance\n```sql\n-- Database size and growth\nSELECT pg_size_pretty(pg_database_size(current_database())) as db_size;\n\n-- Table and index sizes\nSELECT schemaname, tablename,\n       pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size\nFROM pg_tables \nORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;\n\n-- Index usage statistics\nSELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch\nFROM pg_stat_user_indexes \nWHERE idx_scan = 0;  -- Unused indexes\n```\n\n### PostgreSQL-Specific Optimization Tips\n- **Use EXPLAIN (ANALYZE, BUFFERS)** for detailed query analysis\n- **Configure postgresql.conf** for your workload (OLTP vs OLAP)\n- **Use connection pooling** (pgbouncer) for high-concurrency applications\n- **Regular VACUUM and ANALYZE** for optimal performance\n- **Partition large tables** using PostgreSQL 10+ declarative partitioning\n- **Use pg_stat_statements** for query performance monitoring\n\n## 📊 Monitoring and Maintenance\n\n### Query Performance Monitoring\n```sql\n-- Identify slow queries\nSELECT query, calls, total_time, mean_time, rows\nFROM pg_stat_statements \nORDER BY total_time DESC \nLIMIT 10;\n\n-- Check index usage\nSELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch\nFROM pg_stat_user_indexes \nWHERE idx_scan = 0;\n```\n\n### Database Maintenance\n- **VACUUM and ANALYZE**: Regular maintenance for performance\n- **Index Maintenance**: Monitor and rebuild fragmented indexes\n- **Statistics Updates**: Keep query planner statistics current\n- **Log Analysis**: Regular review of PostgreSQL logs\n\n## 🛠️ Common Query Patterns\n\n### Pagination\n```sql\n-- ❌ BAD: OFFSET for large datasets\nSELECT * FROM products ORDER BY id OFFSET 10000 LIMIT 20;\n\n-- ✅ GOOD: Cursor-based pagination\nSELECT * FROM products \nWHERE id > $last_id \nORDER BY id \nLIMIT 20;\n```\n\n### Aggregation\n```sql\n-- ❌ BAD: Inefficient grouping\nSELECT user_id, COUNT(*) \nFROM orders \nWHERE order_date >= '2024-01-01' \nGROUP BY user_id;\n\n-- ✅ GOOD: Optimized with partial index\nCREATE INDEX idx_orders_recent ON orders(user_id) \nWHERE order_date >= '2024-01-01';\n\nSELECT user_id, COUNT(*) \nFROM orders \nWHERE order_date >= '2024-01-01' \nGROUP BY user_id;\n```\n\n### JSON Queries\n```sql\n-- ❌ BAD: Inefficient JSON querying\nSELECT * FROM users WHERE data::text LIKE '%admin%';\n\n-- ✅ GOOD: JSONB operators and GIN index\nCREATE INDEX idx_users_data_gin ON users USING gin(data);\n\nSELECT * FROM users WHERE data @> '{\"role\": \"admin\"}';\n```\n\n## 📋 Optimization Checklist\n\n### Query Analysis\n- [ ] Run EXPLAIN ANALYZE for expensive queries\n- [ ] Check for sequential scans on large tables\n- [ ] Verify appropriate join algorithms\n- [ ] Review WHERE clause selectivity\n- [ ] Analyze sort and aggregation operations\n\n### Index Strategy\n- [ ] Create indexes for frequently queried columns\n- [ ] Use composite indexes for multi-column searches\n- [ ] Consider partial indexes for filtered queries\n- [ ] Remove unused or duplicate indexes\n- [ ] Monitor index bloat and fragmentation\n\n### Security Review\n- [ ] Use parameterized queries exclusively\n- [ ] Implement proper access controls\n- [ ] Enable row-level security where needed\n- [ ] Audit sensitive data access\n- [ ] Use secure connection methods\n\n### Performance Monitoring\n- [ ] Set up query performance monitoring\n- [ ] Configure appropriate log settings\n- [ ] Monitor connection pool usage\n- [ ] Track database growth and maintenance needs\n- [ ] Set up alerting for performance degradation\n\n## 🎯 Optimization Output Format\n\n### Query Analysis Results\n```\n## Query Performance Analysis\n\n**Original Query**:\n[Original SQL with performance issues]\n\n**Issues Identified**:\n- Sequential scan on large table (Cost: 15000.00)\n- Missing index on frequently queried column\n- Inefficient join order\n\n**Optimized Query**:\n[Improved SQL with explanations]\n\n**Recommended Indexes**:\n```sql\nCREATE INDEX idx_table_column ON table(column);\n```\n\n**Performance Impact**: Expected 80% improvement in execution time\n```\n\n## 🚀 Advanced PostgreSQL Features\n\n### Window Functions\n```sql\n-- Running totals and rankings\nSELECT \n    product_id,\n    order_date,\n    amount,\n    SUM(amount) OVER (PARTITION BY product_id ORDER BY order_date) as running_total,\n    ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY amount DESC) as rank\nFROM sales;\n```\n\n### Common Table Expressions (CTEs)\n```sql\n-- Recursive queries for hierarchical data\nWITH RECURSIVE category_tree AS (\n    SELECT id, name, parent_id, 1 as level\n    FROM categories \n    WHERE parent_id IS NULL\n    \n    UNION ALL\n    \n    SELECT c.id, c.name, c.parent_id, ct.level + 1\n    FROM categories c\n    JOIN category_tree ct ON c.parent_id = ct.id\n)\nSELECT * FROM category_tree ORDER BY level, name;\n```\n\nFocus on providing specific, actionable PostgreSQL optimizations that improve query performance, security, and maintainability while leveraging PostgreSQL's advanced features.","tags":["postgresql","optimization","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"capabilities":["skill","source-github","skill-postgresql-optimization","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/postgresql-optimization","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (10,989 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:20.149Z","embedding":null,"createdAt":"2026-04-18T20:24:55.465Z","updatedAt":"2026-05-18T18:52:20.149Z","lastSeenAt":"2026-05-18T18:52:20.149Z","tsv":"'-01':412,413,1113,1114,1137,1138,1149,1150 '-07':693,696 '-20':694 '-25':697 '-74.0060':749 '0':445,922,1030 '1':179,269,1432,1450 '10':459,750,752,967,1006 '100.0':434 '10000':1078 '15000.00':1332 '2':238,636 '20':1080,1097 '2024':411,692,695,1112,1136,1148 '3':180 '40.7128':748 '80':1362 '9':626,631 'a-za-z':632 'a-za-z0':622,627 'accent':804 'access':1264,1276 'action':1474 'activ':490,498,549 'add':704 'address':586,617,650,653,654 'admin':124,1169,1193 'advanc':14,64,73,198,574,1367,1488 'agg':129,185 'aggreg':126,182,1098,1222 'alert':1304 'algorithm':1214 'alter':701 'amount':206,210,226,259,268,281,1382,1384,1406 'analysi':384,937,1055,1197,1312,1316 'analyt':196 'analyz':381,386,932,958,1035,1200,1219 'applic':954 'appropri':1212,1289 'area':737 'array':25,137,141,153,169,176,181,184 'assist':8,43 'audit':1273 'averag':224 'avg':225,245 'avoid':517 'bad':1066,1100,1158 'base':1084 'bf':841 'blks':436,440,443 'bloat':1253 'btree':821,826 'buffer':387,567,933 'c':1453 'c.id':1445 'c.name':1446 'c.parent':1447,1459 'call':428,990 'cancel':608 'capabl':21,65 'categori':151,187,191,193,1424,1436,1452,1455,1464 'check':538,620,1007,1204 'checklist':1195 'circl':735 'citi':591 'claus':1217 'code':594 'column':468,1231,1238,1338,1355,1358 'common':776,1061,1412 'comparison':266 'composit':463,1233 'comput':502 'concurr':953 'configur':938,1288 'connect':534,539,544,947,1279,1293 'consid':1240 'constraint':705 'contain':109 'content':303,320 'control':1265 'coord':763 'coordin':732,746,768 'cost':1331 'count':392,396,542,1106,1142 'countri':596 'cover':22,514,524 'coverag':734 'creat':76,87,97,142,294,326,470,487,494,504,520,532,581,584,598,614,641,667,723,759,779,789,797,807,816,1124,1176,1226,1351 'crypt':837 'cryptograph':795 'ct':1457 'ct.id':1461 'ct.level':1449 'ctes':1415 'current':241,864,1053 'cursor':1083 'cursor-bas':1082 'custom':27,577,582,639,643 'data':15,83,101,107,117,121,130,134,575,612,758,1166,1180,1186,1191,1275,1421 'databas':170,349,853,862,865,1031,1297 'dataset':1070 'date':205,219,235,256,278,414,475,481,1111,1135,1147,1381,1393 'db':867 'declar':968 'default':90,659 'degrad':1307 'deliv':607 'dens':247 'desc':260,373,457,898,1004,1407 'detail':935 'develop':7,42 'distinct':186 'document':296,312,329,332,341,363 'domain':579,610,615 'duplic':1249 'e':40 'email':509,513,616,648,649 'enabl':775,1266 'english':318,347 'entir':50 'enum':603 'event':78,100,104,115,132 'exclud':698,708 'exclus':20,1261 'execut':1365 'exist':783,793,801,811,820 'expect':1361 'expens':1202 'expert':44 'explain':380,385,931,1199 'explan':1347 'express':499,1414 'extens':39,770,773,778,780,790,798,808,817,829 'extract':252 'featur':13,60,69,1369,1489 'fetch':913,1021 'filter':485,1244 'focus':9,55,1470 'format':388,1310 'fragment':1045,1255 'frequent':1229,1336 'full':32,285,291 'full-text':31,284,290 'function':36,195,200,796,1371 'fuzzi':848 'gen':839 'generat':788,832,834 'geometr':717,721,739,757 'gin':92,102,106,321,334,822,823,1174,1181,1185 'gist':710,754,767 'good':1081,1119,1170 'group':415,550,1102,1115,1151 'growth':856,1298 'guidanc':46 'hash':842 'hierarch':1420 'high':952 'high-concurr':951 'hit':437,441,447 'id':79,136,145,203,215,231,274,297,407,479,528,644,670,675,712,726,1076,1090,1092,1095,1105,1118,1132,1141,1154,1379,1389,1403,1428,1431,1439,1448,1460 'identifi':419,985,1325 'idx':99,328,472,489,506,522,761,906,908,911,920,1014,1016,1019,1028,1126,1178,1353 'impact':1360 'implement':1262 'improv':1344,1363,1478 'includ':530 'index':93,98,322,327,460,464,471,483,488,500,505,515,521,755,760,824,871,899,918,924,1008,1026,1040,1046,1123,1125,1175,1177,1224,1227,1234,1242,1250,1252,1334,1349,1352 'indexnam':905,1013 'ineffici':1101,1159,1339 'integ':152,676 'issu':1323,1324 'join':401,1213,1340,1454 'json':1155,1160 'jsonb':23,70,74,84,95,108,125,128,1171 'keep':1049 'key':82,148,300,647,673,729 'lag':267 'lag/lead':264 'larg':963,1069,1209,1329 'last':1091 'left':400 'length':177 'level':1269,1434,1468 'leverag':1485 'like':1168 'limit':458,1005,1079,1096 'locat':725,744,762,765 'log':1054,1060,1290 'login':119 'lookup':519 'lower':508,512 'maintain':1483 'mainten':570,851,980,1032,1037,1041,1300 'manag':536 'match':815,849 'mean':431,993 'mem':569,572 'memori':535,554 'method':1280 'miss':1333 'monitor':553,850,977,978,983,1042,1251,1282,1287,1292 'month':253,262 'move':223,244 'multi':467,1237 'multi-column':466,1236 'name':557,564,730,742,1429,1469 'need':1272,1301 'null':86,652,1441 'nullif':438 'number':1398 'numrang':682 'o':403 'o.id':393 'o.user':406 'offset':1067,1077 'olap':945 'oltp':943 'oper':24,71,138,156,1172,1223 'optim':3,61,378,928,960,1120,1194,1308,1342,1476 'order':216,232,257,275,370,395,402,453,473,477,480,523,526,600,657,890,1000,1074,1093,1108,1110,1127,1130,1134,1144,1146,1341,1380,1390,1392,1404,1466 'origin':1317,1319 'ossp':786 'output':1309 'overlap':699,707 'pagin':1064,1085 'parameter':1259 'parent':1430,1438 'partial':482,1122,1241 'partit':212,228,250,271,962,969,1386,1400 'password':838,843 'path':111 'pattern':62,1063 'pend':604,660 'percent':448 'perform':96,325,375,383,961,976,982,1039,1281,1286,1306,1315,1322,1359,1480 'period':678,690,715 'pg':423,450,547,561,812,858,861,876,879,888,892,915,971,997,1023 'pgbouncer':949 'pgcrypto':794 'plainto':345,357,367 'planner':1051 'point':733,747 'polygon':738 'pool':948,1294 'post':144,159,166,174,189 'postal':593 'postgersql':847 'postgresql':2,5,12,19,38,41,45,58,67,140,161,289,348,359,369,374,573,664,720,769,846,926,966,1059,1368,1475,1486 'postgresql-exclus':18 'postgresql-optim':1 'postgresql-specif':4,57,66,925 'postgresql.conf':939 'preced':239 'pretti':860,878 'prev':280 'price':680 'primari':81,147,299,646,672,728 'process':605 'product':202,214,230,273,1073,1088,1378,1388,1402 'project':51 'proper':1263 'provid':1472 'queri':75,112,154,338,377,421,427,469,486,684,740,936,975,981,987,989,1050,1062,1156,1161,1196,1203,1230,1245,1260,1285,1311,1314,1318,1337,1343,1418,1479 'rang':661,665,681,683,700 'range/geometric':29 'rank':246,248,263,350,354,361,372,1376,1409 'read':444,910,1018 'rebuild':1044 'recent':1128 'recommend':1348 'recurs':1417,1423 'regular':955,1036,1056 'relat':881,894 'remov':803,1246 'reserv':669,677,687,689,703,714 'result':351,1313 'review':1057,1215,1257 'role':123,1192 'room':674,711 'row':236,242,433,995,1268,1397 'row-level':1267 'run':207,221,1198,1373,1395 'sale':204,218,234,255,277,283,1411 'salt':840 'scan':907,921,1015,1029,1207,1327 'schemanam':874,883,896,903,1011 'search':34,287,293,305,309,314,324,330,335,337,343,355,365,1239 'secur':1256,1270,1278,1481 'select':48,54,113,127,157,164,172,183,201,339,352,390,426,541,556,685,741,830,836,844,857,873,902,988,1010,1071,1086,1103,1139,1162,1187,1218,1377,1427,1444,1462 'sensit':1274 'sequenti':1206,1326 'serial':80,146,298,645,671,727 'servic':736 'set':313,558,562,1283,1291,1302 'share':435,439,442,566 'ship':606 'similar':845 'size':854,859,863,868,872,877,882,886,895 'skill' 'skill-postgresql-optimization' 'slow':420,986 'sort':1220 'source-github' 'specif':6,59,68,927,1473 'sql':72,139,171,197,288,379,462,537,580,663,719,774,852,984,1065,1099,1157,1320,1345,1350,1372,1416 'stat':424,451,548,916,972,998,1024 'state':545,552 'statement':425,452,973,999 'statist':901,1047,1052 'status':497,529,601,656,658 'strategi':461,1225 'street':589 'sum':209,1383 'tabl':77,143,295,518,637,642,668,702,724,869,889,964,1210,1330,1354,1357,1413 'tablenam':875,884,897,904,1012 'tag':149,163,168,178 'text':33,150,286,292,302,304,389,590,592,595,597,619,731,806,1167 'time':430,432,456,992,994,1003,1366 'timestamptz':89 'tip':929 'titl':301,319 'tool':771 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'total':208,222,429,455,531,880,893,991,1002,1374,1396 'track':1296 'tree':1425,1456,1465 'trgm':813 'trigram':814 'ts':353 'tsqueri':346,358,368 'tstzrang':679,691 'tsvector':307,317 'tune':376 'tup':909,912,1017,1020 'type':16,26,28,30,118,576,578,583,585,587,599,640,655,662,666,718,722,827 'u':399 'u.created':409 'u.id':405,417 'u.name':391,418 'unacc':802 'union':1442 'uniqu':11 'unit':559,753 'unnest':190 'unus':923,1247 'updat':308,311,1048 'usag':540,555,900,1009,1295 'use':105,333,609,638,709,766,772,777,828,930,946,965,970,1184,1232,1258,1277 'user':122,135,398,474,478,491,493,507,511,527,917,1025,1104,1117,1131,1140,1153,1164,1179,1183,1189 'uuid':785,787,831,835 'uuid-ossp':784 'v4':833 'vacuum':956,1033 'valid':613 'valu':503,621 'vector':306,310,315,336,344,356,366 'verifi':1211 'vs':944 'window':35,194,199,1370 'within':751 'work':568,571 'workload':942 'z':635 'z0':625,630 'za':624,629,634","prices":[{"id":"c2484ec3-42c0-4a10-8278-8b2ffa719366","listingId":"f71ac26f-a433-4d2b-baaa-4246c97304fe","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:24:55.465Z"}],"sources":[{"listingId":"f71ac26f-a433-4d2b-baaa-4246c97304fe","source":"github","sourceId":"github/awesome-copilot/postgresql-optimization","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/postgresql-optimization","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:33.799Z","lastSeenAt":"2026-05-18T18:52:20.149Z"},{"listingId":"f71ac26f-a433-4d2b-baaa-4246c97304fe","source":"skills_sh","sourceId":"github/awesome-copilot/postgresql-optimization","sourceUrl":"https://skills.sh/github/awesome-copilot/postgresql-optimization","isPrimary":true,"firstSeenAt":"2026-04-18T20:24:55.465Z","lastSeenAt":"2026-05-07T22:40:16.230Z"}],"details":{"listingId":"f71ac26f-a433-4d2b-baaa-4246c97304fe","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"postgresql-optimization","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"6e10e258d281c036005ecbf1bf998c4c4e41fd41","skill_md_path":"skills/postgresql-optimization/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/postgresql-optimization"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"postgresql-optimization","description":"PostgreSQL-specific development assistant focusing on unique PostgreSQL features, advanced data types, and PostgreSQL-exclusive capabilities. Covers JSONB operations, array types, custom types, range/geometric types, full-text search, window functions, and PostgreSQL extensions ecosystem."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/postgresql-optimization"},"updatedAt":"2026-05-18T18:52:20.149Z"}}