{"id":"3108d82d-a5c4-4654-9f32-04b7d4d1c291","shortId":"Cpnqhu","kind":"skill","title":"prisma-expert","tagline":"You are an expert in Prisma ORM with deep knowledge of schema design, migrations, query optimization, relations modeling, and database operations across PostgreSQL, MySQL, and SQLite.","description":"# Prisma Expert\n\nYou are an expert in Prisma ORM with deep knowledge of schema design, migrations, query optimization, relations modeling, and database operations across PostgreSQL, MySQL, and SQLite.\n\n## When Invoked\n\n### Step 0: Recommend Specialist and Stop\nIf the issue is specifically about:\n- **Raw SQL optimization**: Stop and recommend postgres-expert or mongodb-expert\n- **Database server configuration**: Stop and recommend database-expert\n- **Connection pooling at infrastructure level**: Stop and recommend devops-expert\n\n### Environment Detection\n```bash\n# Check Prisma version\nnpx prisma --version 2>/dev/null || echo \"Prisma not installed\"\n\n# Check database provider\ngrep \"provider\" prisma/schema.prisma 2>/dev/null | head -1\n\n# Check for existing migrations\nls -la prisma/migrations/ 2>/dev/null | head -5\n\n# Check Prisma Client generation status\nls -la node_modules/.prisma/client/ 2>/dev/null | head -3\n```\n\n### Apply Strategy\n1. Identify the Prisma-specific issue category\n2. Check for common anti-patterns in schema or queries\n3. Apply progressive fixes (minimal → better → complete)\n4. Validate with Prisma CLI and testing\n\n## Problem Playbooks\n\n### Schema Design\n**Common Issues:**\n- Incorrect relation definitions causing runtime errors\n- Missing indexes for frequently queried fields\n- Enum synchronization issues between schema and database\n- Field type mismatches\n\n**Diagnosis:**\n```bash\n# Validate schema\nnpx prisma validate\n\n# Check for schema drift\nnpx prisma migrate diff --from-schema-datamodel prisma/schema.prisma --to-schema-datasource prisma/schema.prisma\n\n# Format schema\nnpx prisma format\n```\n\n**Prioritized Fixes:**\n1. **Minimal**: Fix relation annotations, add missing `@relation` directives\n2. **Better**: Add proper indexes with `@@index`, optimize field types\n3. **Complete**: Restructure schema with proper normalization, add composite keys\n\n**Best Practices:**\n```prisma\n// Good: Explicit relations with clear naming\nmodel User {\n  id        String   @id @default(cuid())\n  email     String   @unique\n  posts     Post[]   @relation(\"UserPosts\")\n  profile   Profile? @relation(\"UserProfile\")\n  \n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n  \n  @@index([email])\n  @@map(\"users\")\n}\n\nmodel Post {\n  id       String @id @default(cuid())\n  title    String\n  author   User   @relation(\"UserPosts\", fields: [authorId], references: [id], onDelete: Cascade)\n  authorId String\n  \n  @@index([authorId])\n  @@map(\"posts\")\n}\n```\n\n**Resources:**\n- https://www.prisma.io/docs/concepts/components/prisma-schema\n- https://www.prisma.io/docs/concepts/components/prisma-schema/relations\n\n### Migrations\n**Common Issues:**\n- Migration conflicts in team environments\n- Failed migrations leaving database in inconsistent state\n- Shadow database issues during development\n- Production deployment migration failures\n\n**Diagnosis:**\n```bash\n# Check migration status\nnpx prisma migrate status\n\n# View pending migrations\nls -la prisma/migrations/\n\n# Check migration history table\n# (use database-specific command)\n```\n\n**Prioritized Fixes:**\n1. **Minimal**: Reset development database with `prisma migrate reset`\n2. **Better**: Manually fix migration SQL, use `prisma migrate resolve`\n3. **Complete**: Squash migrations, create baseline for fresh setup\n\n**Safe Migration Workflow:**\n```bash\n# Development\nnpx prisma migrate dev --name descriptive_name\n\n# Production (never use migrate dev!)\nnpx prisma migrate deploy\n\n# If migration fails in production\nnpx prisma migrate resolve --applied \"migration_name\"\n# or\nnpx prisma migrate resolve --rolled-back \"migration_name\"\n```\n\n**Resources:**\n- https://www.prisma.io/docs/concepts/components/prisma-migrate\n- https://www.prisma.io/docs/guides/deployment/deploy-database-changes\n\n### Query Optimization\n**Common Issues:**\n- N+1 query problems with relations\n- Over-fetching data with excessive includes\n- Missing select for large models\n- Slow queries without proper indexing\n\n**Diagnosis:**\n```bash\n# Enable query logging\n# In schema.prisma or client initialization:\n# log: ['query', 'info', 'warn', 'error']\n```\n\n```typescript\n// Enable query events\nconst prisma = new PrismaClient({\n  log: [\n    { emit: 'event', level: 'query' },\n  ],\n});\n\nprisma.$on('query', (e) => {\n  console.log('Query: ' + e.query);\n  console.log('Duration: ' + e.duration + 'ms');\n});\n```\n\n**Prioritized Fixes:**\n1. **Minimal**: Add includes for related data to avoid N+1\n2. **Better**: Use select to fetch only needed fields\n3. **Complete**: Use raw queries for complex aggregations, implement caching\n\n**Optimized Query Patterns:**\n```typescript\n// BAD: N+1 problem\nconst users = await prisma.user.findMany();\nfor (const user of users) {\n  const posts = await prisma.post.findMany({ where: { authorId: user.id } });\n}\n\n// GOOD: Include relations\nconst users = await prisma.user.findMany({\n  include: { posts: true }\n});\n\n// BETTER: Select only needed fields\nconst users = await prisma.user.findMany({\n  select: {\n    id: true,\n    email: true,\n    posts: {\n      select: { id: true, title: true }\n    }\n  }\n});\n\n// BEST for complex queries: Use $queryRaw\nconst result = await prisma.$queryRaw`\n  SELECT u.id, u.email, COUNT(p.id) as post_count\n  FROM users u\n  LEFT JOIN posts p ON p.author_id = u.id\n  GROUP BY u.id\n`;\n```\n\n**Resources:**\n- https://www.prisma.io/docs/guides/performance-and-optimization\n- https://www.prisma.io/docs/concepts/components/prisma-client/raw-database-access\n\n### Connection Management\n**Common Issues:**\n- Connection pool exhaustion\n- \"Too many connections\" errors\n- Connection leaks in serverless environments\n- Slow initial connections\n\n**Diagnosis:**\n```bash\n# Check current connections (PostgreSQL)\npsql -c \"SELECT count(*) FROM pg_stat_activity WHERE datname = 'your_db';\"\n```\n\n**Prioritized Fixes:**\n1. **Minimal**: Configure connection limit in DATABASE_URL\n2. **Better**: Implement proper connection lifecycle management\n3. **Complete**: Use connection pooler (PgBouncer) for high-traffic apps\n\n**Connection Configuration:**\n```typescript\n// For serverless (Vercel, AWS Lambda)\nimport { PrismaClient } from '@prisma/client';\n\nconst globalForPrisma = global as unknown as { prisma: PrismaClient };\n\nexport const prisma =\n  globalForPrisma.prisma ||\n  new PrismaClient({\n    log: process.env.NODE_ENV === 'development' ? ['query'] : [],\n  });\n\nif (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;\n\n// Graceful shutdown\nprocess.on('beforeExit', async () => {\n  await prisma.$disconnect();\n});\n```\n\n```env\n# Connection URL with pool settings\nDATABASE_URL=\"postgresql://user:pass@host:5432/db?connection_limit=5&pool_timeout=10\"\n```\n\n**Resources:**\n- https://www.prisma.io/docs/guides/performance-and-optimization/connection-management\n- https://www.prisma.io/docs/guides/deployment/deployment-guides/deploying-to-vercel\n\n### Transaction Patterns\n**Common Issues:**\n- Inconsistent data from non-atomic operations\n- Deadlocks in concurrent transactions\n- Long-running transactions blocking reads\n- Nested transaction confusion\n\n**Diagnosis:**\n```typescript\n// Check for transaction issues\ntry {\n  const result = await prisma.$transaction([...]);\n} catch (e) {\n  if (e.code === 'P2034') {\n    console.log('Transaction conflict detected');\n  }\n}\n```\n\n**Transaction Patterns:**\n```typescript\n// Sequential operations (auto-transaction)\nconst [user, profile] = await prisma.$transaction([\n  prisma.user.create({ data: userData }),\n  prisma.profile.create({ data: profileData }),\n]);\n\n// Interactive transaction with manual control\nconst result = await prisma.$transaction(async (tx) => {\n  const user = await tx.user.create({ data: userData });\n  \n  // Business logic validation\n  if (user.email.endsWith('@blocked.com')) {\n    throw new Error('Email domain blocked');\n  }\n  \n  const profile = await tx.profile.create({\n    data: { ...profileData, userId: user.id }\n  });\n  \n  return { user, profile };\n}, {\n  maxWait: 5000,  // Wait for transaction slot\n  timeout: 10000, // Transaction timeout\n  isolationLevel: 'Serializable', // Strictest isolation\n});\n\n// Optimistic concurrency control\nconst updateWithVersion = await prisma.post.update({\n  where: { \n    id: postId,\n    version: currentVersion  // Only update if version matches\n  },\n  data: {\n    content: newContent,\n    version: { increment: 1 }\n  }\n});\n```\n\n**Resources:**\n- https://www.prisma.io/docs/concepts/components/prisma-client/transactions\n\n## Code Review Checklist\n\n### Schema Quality\n- [ ] All models have appropriate `@id` and primary keys\n- [ ] Relations use explicit `@relation` with `fields` and `references`\n- [ ] Cascade behaviors defined (`onDelete`, `onUpdate`)\n- [ ] Indexes added for frequently queried fields\n- [ ] Enums used for fixed value sets\n- [ ] `@@map` used for table naming conventions\n\n### Query Patterns\n- [ ] No N+1 queries (relations included when needed)\n- [ ] `select` used to fetch only required fields\n- [ ] Pagination implemented for list queries\n- [ ] Raw queries used for complex aggregations\n- [ ] Proper error handling for database operations\n\n### Performance\n- [ ] Connection pooling configured appropriately\n- [ ] Indexes exist for WHERE clause fields\n- [ ] Composite indexes for multi-column queries\n- [ ] Query logging enabled in development\n- [ ] Slow queries identified and optimized\n\n### Migration Safety\n- [ ] Migrations tested before production deployment\n- [ ] Backward-compatible schema changes (no data loss)\n- [ ] Migration scripts reviewed for correctness\n- [ ] Rollback strategy documented\n\n## Anti-Patterns to Avoid\n\n1. **Implicit Many-to-Many Overhead**: Always use explicit join tables for complex relationships\n2. **Over-Including**: Don't include relations you don't need\n3. **Ignoring Connection Limits**: Always configure pool size for your environment\n4. **Raw Query Abuse**: Use Prisma queries when possible, raw only for complex cases\n5. **Migration in Production Dev Mode**: Never use `migrate dev` in production\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["prisma","expert","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-prisma-expert","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/prisma-expert","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 35034 github stars · SKILL.md body (10,381 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-04-25T12:51:12.243Z","embedding":null,"createdAt":"2026-04-18T20:28:05.867Z","updatedAt":"2026-04-25T12:51:12.243Z","lastSeenAt":"2026-04-25T12:51:12.243Z","tsv":"'+1':481,554,580,998 '-1':129 '-3':153 '-5':140 '/dev/null':115,127,138,151 '/docs/concepts/components/prisma-client/raw-database-access':667 '/docs/concepts/components/prisma-client/transactions':949 '/docs/concepts/components/prisma-migrate':472 '/docs/concepts/components/prisma-schema':344 '/docs/concepts/components/prisma-schema/relations':347 '/docs/guides/deployment/deploy-database-changes':475 '/docs/guides/deployment/deployment-guides/deploying-to-vercel':802 '/docs/guides/performance-and-optimization':664 '/docs/guides/performance-and-optimization/connection-management':799 '0':61 '1':156,249,398,544,707,945,1084 '10':795 '10000':916 '2':114,126,137,150,164,258,407,555,715,1099 '3':175,268,417,564,722,1111 '4':182,1122 '5':792,1136 '5000':910 '5432/db':789 'abus':1125 'across':25,53 'action':1160 'activ':700 'ad':977 'add':254,260,275,546 'aggreg':571,1021 'alway':1091,1115 'annot':253 'anti':169,1080 'anti-pattern':168,1079 'app':732 'appli':154,176,456 'applic':1154 'appropri':958,1032 'ask':1198 'async':774,878 'atom':812 'author':325 'authorid':330,335,338,596 'auto':854 'auto-transact':853 'avoid':552,1083 'aw':739 'await':584,593,603,615,636,775,836,859,875,882,900,928 'back':466 'backward':1064 'backward-compat':1063 'bad':578 'baselin':422 'bash':107,218,373,429,504,688 'beforeexit':773 'behavior':972 'best':278,628 'better':180,259,408,556,608,716 'block':822,897 'blocked.com':891 'boundari':1206 'busi':886 'c':694 'cach':573 'cascad':334,971 'case':1135 'catch':839 'categori':163 'caus':198 'chang':1067 'check':108,120,130,141,165,224,374,387,689,829 'checklist':952 'clarif':1200 'claus':1037 'clear':285,1173 'cli':186 'client':143,511 'code':950 'column':1044 'command':395 'common':167,193,349,478,670,805 'compat':1065 'complet':181,269,418,565,723 'complex':570,630,1020,1097,1134 'composit':276,1039 'concurr':816,924 'configur':87,709,734,1031,1116 'conflict':352,846 'confus':826 'connect':94,668,672,677,679,686,691,710,719,725,733,779,790,1029,1113 'console.log':535,538,844 'const':522,582,587,591,601,613,634,745,754,834,856,873,880,898,926 'content':941 'control':872,925 'convent':993 'correct':1075 'count':642,646,696 'creat':421 'createdat':305 'criteria':1209 'cuid':293,322 'current':690 'currentvers':934 'data':489,550,808,863,866,884,902,940,1069 'databas':23,51,85,92,121,213,359,364,393,402,713,784,1026 'database-expert':91 'database-specif':392 'datamodel':235 'datasourc':240 'datetim':306,310 'datnam':702 'db':704 'deadlock':814 'deep':12,40 'default':292,307,321 'defin':973 'definit':197 'deploy':369,446,1062 'describ':1161,1177 'descript':436 'design':16,44,192 'detect':106,847 'dev':434,442,1140,1145 'develop':367,401,430,762,1050 'devop':103 'devops-expert':102 'diagnosi':217,372,503,687,827 'diff':231 'direct':257 'disconnect':777 'document':1078 'domain':896 'drift':227 'durat':539 'e':534,840 'e.code':842 'e.duration':540 'e.query':537 'echo':116 'email':294,313,620,895 'emit':527 'enabl':505,519,1048 'enum':207,982 'env':761,766,778 'environ':105,355,683,1121,1189 'environment-specif':1188 'error':200,517,678,894,1023 'event':521,528 'excess':491 'execut':1156 'exhaust':674 'exist':132,1034 'expert':3,7,31,35,80,84,93,104,1194 'explicit':282,965,1093 'export':753 'fail':356,449 'failur':371 'fetch':488,560,1007 'field':206,214,266,329,563,612,968,981,1010,1038 'fix':178,248,251,397,410,543,706,985 'format':242,246 'frequent':204,979 'fresh':424 'from-schema-datamodel':232 'generat':144 'global':747 'globalforprisma':746 'globalforprisma.prisma':756,768 'good':281,598 'grace':770 'grep':123 'group':658 'handl':1024 'head':128,139,152 'high':730 'high-traff':729 'histori':389 'host':788 'id':289,291,318,320,332,618,624,656,931,959 'identifi':157,1053 'ignor':1112 'implement':572,717,1012 'implicit':1085 'import':741 'includ':492,547,599,605,1001,1102,1105 'inconsist':361,807 'incorrect':195 'increment':944 'index':202,262,264,312,337,502,976,1033,1040 'info':515 'infrastructur':97 'initi':512,685 'input':1203 'instal':119 'interact':868 'invok':59 'isol':922 'isolationlevel':919 'issu':68,162,194,209,350,365,479,671,806,832 'join':651,1094 'key':277,962 'knowledg':13,41 'la':135,147,385 'lambda':740 'larg':496 'leak':680 'leav':358 'left':650 'level':98,529 'lifecycl':720 'limit':711,791,1114,1165 'list':1014 'log':507,513,526,759,1047 'logic':887 'long':819 'long-run':818 'loss':1070 'ls':134,146,384 'manag':669,721 'mani':676,1087,1089 'manual':409,871 'many-to-mani':1086 'map':314,339,988 'match':939,1174 'maxwait':909 'migrat':17,45,133,230,348,351,357,370,375,379,383,388,405,411,415,420,427,433,441,445,448,454,457,462,467,1056,1058,1071,1137,1144 'minim':179,250,399,545,708 'mismatch':216 'miss':201,255,493,1211 'mode':1141 'model':21,49,287,316,497,956 'modules/.prisma/client':149 'mongodb':83 'mongodb-expert':82 'ms':541 'multi':1043 'multi-column':1042 'mysql':27,55 'n':480,553,579,997 'name':286,435,437,458,468,992 'need':562,611,1003,1110 'nest':824 'never':439,1142 'new':524,757,893 'newcont':942 'node':148 'non':811 'non-atom':810 'normal':274 'npx':111,221,228,244,377,431,443,452,460 'ondelet':333,974 'onupd':975 'oper':24,52,813,852,1027 'optim':19,47,74,265,477,574,1055 'optimist':923 'orm':10,38 'output':1183 'over-fetch':486 'over-includ':1100 'overhead':1090 'overview':1164 'p':653 'p.author':655 'p.id':643 'p2034':843 'pagin':1011 'pass':787 'pattern':170,576,804,849,995,1081 'pend':382 'perform':1028 'permiss':1204 'pg':698 'pgbouncer':727 'playbook':190 'pool':95,673,782,793,1030,1117 'pooler':726 'possibl':1130 'post':297,298,317,340,592,606,622,645,652 'postgr':79 'postgres-expert':78 'postgresql':26,54,692 'postid':932 'practic':279 'primari':961 'priorit':247,396,542,705 'prisma':2,9,30,37,109,112,117,142,160,185,222,229,245,280,378,404,414,432,444,453,461,523,531,637,751,755,769,776,837,860,876,1127 'prisma-expert':1 'prisma-specif':159 'prisma.post.findmany':594 'prisma.post.update':929 'prisma.profile.create':865 'prisma.user.create':862 'prisma.user.findmany':585,604,616 'prisma/client':744 'prisma/migrations':136,386 'prisma/schema.prisma':125,236,241 'prismacli':525,742,752,758 'problem':189,483,581 'process.env.node':760,765 'process.on':772 'product':368,438,451,767,1061,1139,1147 'profil':301,302,858,899,908 'profiledata':867,903 'progress':177 'proper':261,273,501,718,1022 'provid':122,124 'psql':693 'qualiti':954 'queri':18,46,174,205,476,482,499,506,514,520,530,533,536,568,575,631,763,980,994,999,1015,1017,1045,1046,1052,1124,1128 'queryraw':633,638 'raw':72,567,1016,1123,1131 'read':823 'recommend':62,77,90,101 'refer':331,970 'relat':20,48,196,252,256,283,299,303,327,485,549,600,963,966,1000,1106 'relationship':1098 'requir':1009,1202 'reset':400,406 'resolv':416,455,463 'resourc':341,469,661,796,946 'restructur':270 'result':635,835,874 'return':906 'review':951,1073,1195 'roll':465 'rollback':1076 'rolled-back':464 'run':820 'runtim':199 'safe':426 'safeti':1057,1205 'schema':15,43,172,191,211,220,226,234,239,243,271,953,1066 'schema.prisma':509 'scope':1176 'script':1072 'select':494,558,609,617,623,639,695,1004 'sequenti':851 'serializ':920 'server':86 'serverless':682,737 'set':783,987 'setup':425 'shadow':363 'shutdown':771 'size':1118 'skill':1152,1168 'skill-prisma-expert' 'slot':914 'slow':498,684,1051 'source-sickn33' 'specialist':63 'specif':70,161,394,1190 'sql':73,412 'sqlite':29,57 'squash':419 'stat':699 'state':362 'status':145,376,380 'step':60 'stop':65,75,88,99,1196 'strategi':155,1077 'strictest':921 'string':290,295,319,324,336 'substitut':1186 'success':1208 'synchron':208 'tabl':390,991,1095 'task':1172 'team':354 'test':188,1059,1192 'throw':892 'timeout':794,915,918 'titl':323,626 'to-schema-datasourc':237 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'traffic':731 'transact':803,817,821,825,831,838,845,848,855,861,869,877,913,917 'treat':1181 'tri':833 'true':607,619,621,625,627 'tx':879 'tx.profile.create':901 'tx.user.create':883 'type':215,267 'typescript':518,577,735,828,850 'u':649 'u.email':641 'u.id':640,657,660 'uniqu':296 'unknown':749 'updat':936 'updatedat':309,311 'updatewithvers':927 'url':714,780,785 'use':391,413,440,557,566,632,724,964,983,989,1005,1018,1092,1126,1143,1150,1166 'user':288,315,326,583,588,590,602,614,648,786,857,881,907 'user.email.endswith':890 'user.id':597,905 'userdata':864,885 'userid':904 'userpost':300,328 'userprofil':304 'valid':183,219,223,888,1191 'valu':986 'vercel':738 'version':110,113,933,938,943 'view':381 'wait':911 'warn':516 'without':500 'workflow':428,1158 'www.prisma.io':343,346,471,474,663,666,798,801,948 'www.prisma.io/docs/concepts/components/prisma-client/raw-database-access':665 'www.prisma.io/docs/concepts/components/prisma-client/transactions':947 'www.prisma.io/docs/concepts/components/prisma-migrate':470 'www.prisma.io/docs/concepts/components/prisma-schema':342 'www.prisma.io/docs/concepts/components/prisma-schema/relations':345 'www.prisma.io/docs/guides/deployment/deploy-database-changes':473 'www.prisma.io/docs/guides/deployment/deployment-guides/deploying-to-vercel':800 'www.prisma.io/docs/guides/performance-and-optimization':662 'www.prisma.io/docs/guides/performance-and-optimization/connection-management':797","prices":[{"id":"60f50eeb-9b88-44b6-8312-1fcfea4826a6","listingId":"3108d82d-a5c4-4654-9f32-04b7d4d1c291","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:28:05.867Z"}],"sources":[{"listingId":"3108d82d-a5c4-4654-9f32-04b7d4d1c291","source":"github","sourceId":"sickn33/antigravity-awesome-skills/prisma-expert","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/prisma-expert","isPrimary":false,"firstSeenAt":"2026-04-18T21:42:41.881Z","lastSeenAt":"2026-04-25T12:51:12.243Z"},{"listingId":"3108d82d-a5c4-4654-9f32-04b7d4d1c291","source":"skills_sh","sourceId":"sickn33/antigravity-awesome-skills/prisma-expert","sourceUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/prisma-expert","isPrimary":true,"firstSeenAt":"2026-04-18T20:28:05.867Z","lastSeenAt":"2026-04-25T12:40:17.942Z"}],"details":{"listingId":"3108d82d-a5c4-4654-9f32-04b7d4d1c291","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"prisma-expert","github":{"repo":"sickn33/antigravity-awesome-skills","stars":35034,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-25T06:33:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"7356a1f7539eb67ccd52cb8466b688e14cce18d6","skill_md_path":"skills/prisma-expert/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/prisma-expert"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"prisma-expert","description":"You are an expert in Prisma ORM with deep knowledge of schema design, migrations, query optimization, relations modeling, and database operations across PostgreSQL, MySQL, and SQLite."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/prisma-expert"},"updatedAt":"2026-04-25T12:51:12.243Z"}}