[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-planetscale-planetscale-codebase-sqlcommenter-instrumentation":3,"mdc--od7c7j-key":37,"related-org-planetscale-planetscale-codebase-sqlcommenter-instrumentation":936,"related-repo-planetscale-planetscale-codebase-sqlcommenter-instrumentation":1104},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"planetscale-codebase-sqlcommenter-instrumentation","instrument PlanetScale applications with SQLCommenter","Inspect an application repository connected to PlanetScale and recommend SQLCommenter-compatible query tagging packages and conventions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"planetscale","PlanetScale","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fplanetscale.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Database","database",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"SQL","sql",{"name":24,"slug":25,"type":15},"Code Analysis","code-analysis",50,"https:\u002F\u002Fgithub.com\u002Fplanetscale\u002Fskills","2026-07-07T06:38:43.813568",null,1,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Skills that help you configure and get the most out of PlanetScale","https:\u002F\u002Fgithub.com\u002Fplanetscale\u002Fskills\u002Ftree\u002FHEAD\u002F08-codebase-sqlcommenter-instrumentation","---\nname: planetscale-codebase-sqlcommenter-instrumentation\ndescription: Inspect an application repository connected to PlanetScale and recommend SQLCommenter-compatible query tagging packages and conventions.\n---\n\n# Codebase SQLCommenter instrumentation\n\n## Purpose\n\nInspect the application repository connected to PlanetScale and recommend the correct SQLCommenter-style instrumentation so PlanetScale Insights and Postgres Traffic Control can attribute queries to application code paths. Do not edit files or install dependencies without approval.\n\n## Repository inspection\n\nIdentify:\n\n- Language and framework.\n- ORM or query builder.\n- Database adapter.\n- Migration tool.\n- Background job system.\n- Routing framework.\n- Deployment metadata source, such as git SHA or release ID.\n- Existing SQL comments, query tags, tracing, OpenTelemetry, or database middleware.\n- PlanetScale connection configuration.\n- Whether the repository connects to Vitess, Postgres, or both.\n\n## Recommended package mapping\n\nUse the most native maintained option for the detected stack.\n\n### Ruby on Rails \u002F ActiveRecord\n\nPreferred for PlanetScale tag compatibility:\n\n- `activerecord-sql_commenter` from PlanetScale when Rails query comments need SQLCommenter format for PlanetScale Query Insights.\n\nOther options:\n\n- Rails built-in query logs when sufficient and compatible with the target database\u002FInsights behavior.\n- `marginalia` for older Rails or when Basecamp-style ActiveRecord query attribution is already in use.\n- `sqlcommenter_rails` where the project already uses the OpenTelemetry SQLCommenter ecosystem.\n\nRecommend tags:\n\n- `application`\n- `controller`\n- `action`\n- `job`\n- `route`\n- `release_sha`\n\n### Laravel \u002F PHP\n\nPreferred:\n\n- `spatie\u002Flaravel-sql-commenter` for SQLCommenter-format comments compatible with PlanetScale Query Insights.\n\nRecommend tags:\n\n- `application`\n- `route`\n- `controller`\n- `action`\n- `job`\n- `queue`\n- `release_sha`\n\n### Prisma \u002F TypeScript \u002F JavaScript\n\nPreferred:\n\n- Prisma’s first-party SQL comments packages when Prisma is detected:\n  - `@prisma\u002Fsqlcommenter`\n  - `@prisma\u002Fsqlcommenter-query-tags`\n  - `@prisma\u002Fsqlcommenter-trace-context`\n\nNote: PlanetScale’s Postgres query-tag docs may list Prisma as lacking official SQLCommenter support, but Prisma’s own current docs provide first-party SQLCommenter packages. Prefer current Prisma docs when Prisma is detected.\n\nRecommend tags:\n\n- `application`\n- `service`\n- `route`\n- `operation`\n- `feature`\n- `release_sha`\n\n### Knex \u002F Sequelize \u002F Express \u002F Node\n\nUse SQLCommenter-compatible middleware or instrumentation from the OpenTelemetry SQLCommenter ecosystem where maintained and compatible.\n\nRecommend tags:\n\n- `application`\n- `service`\n- `route`\n- `controller`\n- `action`\n- `feature`\n- `release_sha`\n\n### Kysely \u002F Drizzle \u002F Bun \u002F custom query builders\n\nIf there is no maintained SQLCommenter package, recommend manual tagging at the database client boundary or query builder extension layer.\n\nRequirements:\n\n- Tags must be structured SQL comments.\n- Tags must be inserted before the statement terminator.\n- Tags must survive ORM, proxy, and pooler behavior.\n- Values must be URL encoded and safe for SQL comments.\n- Tags must be low-cardinality.\n\n### Django \u002F SQLAlchemy \u002F psycopg2 \u002F Flask \u002F Python\n\nUse SQLCommenter instrumentation from the OpenTelemetry SQLCommenter ecosystem where compatible.\n\nRecommend tags:\n\n- `application`\n- `framework`\n- `route`\n- `view`\n- `job`\n- `release_sha`\n\n### Java \u002F Hibernate \u002F Spring\n\nUse SQLCommenter-compatible instrumentation for Hibernate\u002FSpring where compatible.\n\nRecommend tags:\n\n- `application`\n- `service`\n- `controller`\n- `action`\n- `route`\n- `release_sha`\n\n### Go \u002F database\u002Fsql \u002F net\u002Fhttp \u002F gorilla\u002Fmux\n\nUse SQLCommenter-compatible instrumentation or a database wrapper at the query boundary.\n\nRecommend tags:\n\n- `application`\n- `service`\n- `handler`\n- `route`\n- `job`\n- `release_sha`\n\n## Standard tag policy\n\nRecommend this baseline across all frameworks:\n\n- Stable, bounded values only.\n- Normalize routes before tagging.\n- Include app\u002Fservice\u002Fjob attribution.\n- Include deploy SHA.\n- Include source type for agents, scripts, BI, workers, and integrations.\n- Do not include secrets, PII, user IDs, request IDs, raw tenant IDs, or raw URLs.\n\n## Validation plan\n\nBefore recommending merge:\n\n- Confirm generated SQL comments appear in local\u002Fstaging query logs.\n- Confirm comments survive the ORM, driver, pooler, and PlanetScale connection path.\n- Confirm Insights displays tags.\n- Confirm tag cardinality is bounded.\n- Confirm Traffic Control can match the intended tags for Postgres.\n- Confirm no sensitive data is present.\n\n## Output\n\nReturn:\n\n- Detected stack.\n- Current query tagging state.\n- Recommended package or manual instrumentation path.\n- Proposed tag schema.\n- Files likely to change.\n- Validation steps.\n- Risks.\n- Proposed changes requiring approval.\n\nEnd with:\n\n“No repository files or dependencies have been changed.”\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,58,64,70,75,130,136,141,148,153,168,173,203,208,265,271,276,290,294,354,360,364,402,407,411,465,471,476,480,539,545,550,555,583,589,594,598,651,657,662,666,717,723,728,732,784,790,795,828,834,839,872,878,883,926,931],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"codebase-sqlcommenter-instrumentation",[48],{"type":49,"value":50},"text","Codebase SQLCommenter instrumentation",{"type":43,"tag":52,"props":53,"children":55},"h2",{"id":54},"purpose",[56],{"type":49,"value":57},"Purpose",{"type":43,"tag":59,"props":60,"children":61},"p",{},[62],{"type":49,"value":63},"Inspect the application repository connected to PlanetScale and recommend the correct SQLCommenter-style instrumentation so PlanetScale Insights and Postgres Traffic Control can attribute queries to application code paths. Do not edit files or install dependencies without approval.",{"type":43,"tag":52,"props":65,"children":67},{"id":66},"repository-inspection",[68],{"type":49,"value":69},"Repository inspection",{"type":43,"tag":59,"props":71,"children":72},{},[73],{"type":49,"value":74},"Identify:",{"type":43,"tag":76,"props":77,"children":78},"ul",{},[79,85,90,95,100,105,110,115,120,125],{"type":43,"tag":80,"props":81,"children":82},"li",{},[83],{"type":49,"value":84},"Language and framework.",{"type":43,"tag":80,"props":86,"children":87},{},[88],{"type":49,"value":89},"ORM or query builder.",{"type":43,"tag":80,"props":91,"children":92},{},[93],{"type":49,"value":94},"Database adapter.",{"type":43,"tag":80,"props":96,"children":97},{},[98],{"type":49,"value":99},"Migration tool.",{"type":43,"tag":80,"props":101,"children":102},{},[103],{"type":49,"value":104},"Background job system.",{"type":43,"tag":80,"props":106,"children":107},{},[108],{"type":49,"value":109},"Routing framework.",{"type":43,"tag":80,"props":111,"children":112},{},[113],{"type":49,"value":114},"Deployment metadata source, such as git SHA or release ID.",{"type":43,"tag":80,"props":116,"children":117},{},[118],{"type":49,"value":119},"Existing SQL comments, query tags, tracing, OpenTelemetry, or database middleware.",{"type":43,"tag":80,"props":121,"children":122},{},[123],{"type":49,"value":124},"PlanetScale connection configuration.",{"type":43,"tag":80,"props":126,"children":127},{},[128],{"type":49,"value":129},"Whether the repository connects to Vitess, Postgres, or both.",{"type":43,"tag":52,"props":131,"children":133},{"id":132},"recommended-package-mapping",[134],{"type":49,"value":135},"Recommended package mapping",{"type":43,"tag":59,"props":137,"children":138},{},[139],{"type":49,"value":140},"Use the most native maintained option for the detected stack.",{"type":43,"tag":142,"props":143,"children":145},"h3",{"id":144},"ruby-on-rails-activerecord",[146],{"type":49,"value":147},"Ruby on Rails \u002F ActiveRecord",{"type":43,"tag":59,"props":149,"children":150},{},[151],{"type":49,"value":152},"Preferred for PlanetScale tag compatibility:",{"type":43,"tag":76,"props":154,"children":155},{},[156],{"type":43,"tag":80,"props":157,"children":158},{},[159,166],{"type":43,"tag":160,"props":161,"children":163},"code",{"className":162},[],[164],{"type":49,"value":165},"activerecord-sql_commenter",{"type":49,"value":167}," from PlanetScale when Rails query comments need SQLCommenter format for PlanetScale Query Insights.",{"type":43,"tag":59,"props":169,"children":170},{},[171],{"type":49,"value":172},"Other options:",{"type":43,"tag":76,"props":174,"children":175},{},[176,181,192],{"type":43,"tag":80,"props":177,"children":178},{},[179],{"type":49,"value":180},"Rails built-in query logs when sufficient and compatible with the target database\u002FInsights behavior.",{"type":43,"tag":80,"props":182,"children":183},{},[184,190],{"type":43,"tag":160,"props":185,"children":187},{"className":186},[],[188],{"type":49,"value":189},"marginalia",{"type":49,"value":191}," for older Rails or when Basecamp-style ActiveRecord query attribution is already in use.",{"type":43,"tag":80,"props":193,"children":194},{},[195,201],{"type":43,"tag":160,"props":196,"children":198},{"className":197},[],[199],{"type":49,"value":200},"sqlcommenter_rails",{"type":49,"value":202}," where the project already uses the OpenTelemetry SQLCommenter ecosystem.",{"type":43,"tag":59,"props":204,"children":205},{},[206],{"type":49,"value":207},"Recommend tags:",{"type":43,"tag":76,"props":209,"children":210},{},[211,220,229,238,247,256],{"type":43,"tag":80,"props":212,"children":213},{},[214],{"type":43,"tag":160,"props":215,"children":217},{"className":216},[],[218],{"type":49,"value":219},"application",{"type":43,"tag":80,"props":221,"children":222},{},[223],{"type":43,"tag":160,"props":224,"children":226},{"className":225},[],[227],{"type":49,"value":228},"controller",{"type":43,"tag":80,"props":230,"children":231},{},[232],{"type":43,"tag":160,"props":233,"children":235},{"className":234},[],[236],{"type":49,"value":237},"action",{"type":43,"tag":80,"props":239,"children":240},{},[241],{"type":43,"tag":160,"props":242,"children":244},{"className":243},[],[245],{"type":49,"value":246},"job",{"type":43,"tag":80,"props":248,"children":249},{},[250],{"type":43,"tag":160,"props":251,"children":253},{"className":252},[],[254],{"type":49,"value":255},"route",{"type":43,"tag":80,"props":257,"children":258},{},[259],{"type":43,"tag":160,"props":260,"children":262},{"className":261},[],[263],{"type":49,"value":264},"release_sha",{"type":43,"tag":142,"props":266,"children":268},{"id":267},"laravel-php",[269],{"type":49,"value":270},"Laravel \u002F PHP",{"type":43,"tag":59,"props":272,"children":273},{},[274],{"type":49,"value":275},"Preferred:",{"type":43,"tag":76,"props":277,"children":278},{},[279],{"type":43,"tag":80,"props":280,"children":281},{},[282,288],{"type":43,"tag":160,"props":283,"children":285},{"className":284},[],[286],{"type":49,"value":287},"spatie\u002Flaravel-sql-commenter",{"type":49,"value":289}," for SQLCommenter-format comments compatible with PlanetScale Query Insights.",{"type":43,"tag":59,"props":291,"children":292},{},[293],{"type":49,"value":207},{"type":43,"tag":76,"props":295,"children":296},{},[297,305,313,321,329,337,346],{"type":43,"tag":80,"props":298,"children":299},{},[300],{"type":43,"tag":160,"props":301,"children":303},{"className":302},[],[304],{"type":49,"value":219},{"type":43,"tag":80,"props":306,"children":307},{},[308],{"type":43,"tag":160,"props":309,"children":311},{"className":310},[],[312],{"type":49,"value":255},{"type":43,"tag":80,"props":314,"children":315},{},[316],{"type":43,"tag":160,"props":317,"children":319},{"className":318},[],[320],{"type":49,"value":228},{"type":43,"tag":80,"props":322,"children":323},{},[324],{"type":43,"tag":160,"props":325,"children":327},{"className":326},[],[328],{"type":49,"value":237},{"type":43,"tag":80,"props":330,"children":331},{},[332],{"type":43,"tag":160,"props":333,"children":335},{"className":334},[],[336],{"type":49,"value":246},{"type":43,"tag":80,"props":338,"children":339},{},[340],{"type":43,"tag":160,"props":341,"children":343},{"className":342},[],[344],{"type":49,"value":345},"queue",{"type":43,"tag":80,"props":347,"children":348},{},[349],{"type":43,"tag":160,"props":350,"children":352},{"className":351},[],[353],{"type":49,"value":264},{"type":43,"tag":142,"props":355,"children":357},{"id":356},"prisma-typescript-javascript",[358],{"type":49,"value":359},"Prisma \u002F TypeScript \u002F JavaScript",{"type":43,"tag":59,"props":361,"children":362},{},[363],{"type":49,"value":275},{"type":43,"tag":76,"props":365,"children":366},{},[367],{"type":43,"tag":80,"props":368,"children":369},{},[370,372],{"type":49,"value":371},"Prisma’s first-party SQL comments packages when Prisma is detected:\n",{"type":43,"tag":76,"props":373,"children":374},{},[375,384,393],{"type":43,"tag":80,"props":376,"children":377},{},[378],{"type":43,"tag":160,"props":379,"children":381},{"className":380},[],[382],{"type":49,"value":383},"@prisma\u002Fsqlcommenter",{"type":43,"tag":80,"props":385,"children":386},{},[387],{"type":43,"tag":160,"props":388,"children":390},{"className":389},[],[391],{"type":49,"value":392},"@prisma\u002Fsqlcommenter-query-tags",{"type":43,"tag":80,"props":394,"children":395},{},[396],{"type":43,"tag":160,"props":397,"children":399},{"className":398},[],[400],{"type":49,"value":401},"@prisma\u002Fsqlcommenter-trace-context",{"type":43,"tag":59,"props":403,"children":404},{},[405],{"type":49,"value":406},"Note: PlanetScale’s Postgres query-tag docs may list Prisma as lacking official SQLCommenter support, but Prisma’s own current docs provide first-party SQLCommenter packages. Prefer current Prisma docs when Prisma is detected.",{"type":43,"tag":59,"props":408,"children":409},{},[410],{"type":49,"value":207},{"type":43,"tag":76,"props":412,"children":413},{},[414,422,431,439,448,457],{"type":43,"tag":80,"props":415,"children":416},{},[417],{"type":43,"tag":160,"props":418,"children":420},{"className":419},[],[421],{"type":49,"value":219},{"type":43,"tag":80,"props":423,"children":424},{},[425],{"type":43,"tag":160,"props":426,"children":428},{"className":427},[],[429],{"type":49,"value":430},"service",{"type":43,"tag":80,"props":432,"children":433},{},[434],{"type":43,"tag":160,"props":435,"children":437},{"className":436},[],[438],{"type":49,"value":255},{"type":43,"tag":80,"props":440,"children":441},{},[442],{"type":43,"tag":160,"props":443,"children":445},{"className":444},[],[446],{"type":49,"value":447},"operation",{"type":43,"tag":80,"props":449,"children":450},{},[451],{"type":43,"tag":160,"props":452,"children":454},{"className":453},[],[455],{"type":49,"value":456},"feature",{"type":43,"tag":80,"props":458,"children":459},{},[460],{"type":43,"tag":160,"props":461,"children":463},{"className":462},[],[464],{"type":49,"value":264},{"type":43,"tag":142,"props":466,"children":468},{"id":467},"knex-sequelize-express-node",[469],{"type":49,"value":470},"Knex \u002F Sequelize \u002F Express \u002F Node",{"type":43,"tag":59,"props":472,"children":473},{},[474],{"type":49,"value":475},"Use SQLCommenter-compatible middleware or instrumentation from the OpenTelemetry SQLCommenter ecosystem where maintained and compatible.",{"type":43,"tag":59,"props":477,"children":478},{},[479],{"type":49,"value":207},{"type":43,"tag":76,"props":481,"children":482},{},[483,491,499,507,515,523,531],{"type":43,"tag":80,"props":484,"children":485},{},[486],{"type":43,"tag":160,"props":487,"children":489},{"className":488},[],[490],{"type":49,"value":219},{"type":43,"tag":80,"props":492,"children":493},{},[494],{"type":43,"tag":160,"props":495,"children":497},{"className":496},[],[498],{"type":49,"value":430},{"type":43,"tag":80,"props":500,"children":501},{},[502],{"type":43,"tag":160,"props":503,"children":505},{"className":504},[],[506],{"type":49,"value":255},{"type":43,"tag":80,"props":508,"children":509},{},[510],{"type":43,"tag":160,"props":511,"children":513},{"className":512},[],[514],{"type":49,"value":228},{"type":43,"tag":80,"props":516,"children":517},{},[518],{"type":43,"tag":160,"props":519,"children":521},{"className":520},[],[522],{"type":49,"value":237},{"type":43,"tag":80,"props":524,"children":525},{},[526],{"type":43,"tag":160,"props":527,"children":529},{"className":528},[],[530],{"type":49,"value":456},{"type":43,"tag":80,"props":532,"children":533},{},[534],{"type":43,"tag":160,"props":535,"children":537},{"className":536},[],[538],{"type":49,"value":264},{"type":43,"tag":142,"props":540,"children":542},{"id":541},"kysely-drizzle-bun-custom-query-builders",[543],{"type":49,"value":544},"Kysely \u002F Drizzle \u002F Bun \u002F custom query builders",{"type":43,"tag":59,"props":546,"children":547},{},[548],{"type":49,"value":549},"If there is no maintained SQLCommenter package, recommend manual tagging at the database client boundary or query builder extension layer.",{"type":43,"tag":59,"props":551,"children":552},{},[553],{"type":49,"value":554},"Requirements:",{"type":43,"tag":76,"props":556,"children":557},{},[558,563,568,573,578],{"type":43,"tag":80,"props":559,"children":560},{},[561],{"type":49,"value":562},"Tags must be structured SQL comments.",{"type":43,"tag":80,"props":564,"children":565},{},[566],{"type":49,"value":567},"Tags must be inserted before the statement terminator.",{"type":43,"tag":80,"props":569,"children":570},{},[571],{"type":49,"value":572},"Tags must survive ORM, proxy, and pooler behavior.",{"type":43,"tag":80,"props":574,"children":575},{},[576],{"type":49,"value":577},"Values must be URL encoded and safe for SQL comments.",{"type":43,"tag":80,"props":579,"children":580},{},[581],{"type":49,"value":582},"Tags must be low-cardinality.",{"type":43,"tag":142,"props":584,"children":586},{"id":585},"django-sqlalchemy-psycopg2-flask-python",[587],{"type":49,"value":588},"Django \u002F SQLAlchemy \u002F psycopg2 \u002F Flask \u002F Python",{"type":43,"tag":59,"props":590,"children":591},{},[592],{"type":49,"value":593},"Use SQLCommenter instrumentation from the OpenTelemetry SQLCommenter ecosystem where compatible.",{"type":43,"tag":59,"props":595,"children":596},{},[597],{"type":49,"value":207},{"type":43,"tag":76,"props":599,"children":600},{},[601,609,618,626,635,643],{"type":43,"tag":80,"props":602,"children":603},{},[604],{"type":43,"tag":160,"props":605,"children":607},{"className":606},[],[608],{"type":49,"value":219},{"type":43,"tag":80,"props":610,"children":611},{},[612],{"type":43,"tag":160,"props":613,"children":615},{"className":614},[],[616],{"type":49,"value":617},"framework",{"type":43,"tag":80,"props":619,"children":620},{},[621],{"type":43,"tag":160,"props":622,"children":624},{"className":623},[],[625],{"type":49,"value":255},{"type":43,"tag":80,"props":627,"children":628},{},[629],{"type":43,"tag":160,"props":630,"children":632},{"className":631},[],[633],{"type":49,"value":634},"view",{"type":43,"tag":80,"props":636,"children":637},{},[638],{"type":43,"tag":160,"props":639,"children":641},{"className":640},[],[642],{"type":49,"value":246},{"type":43,"tag":80,"props":644,"children":645},{},[646],{"type":43,"tag":160,"props":647,"children":649},{"className":648},[],[650],{"type":49,"value":264},{"type":43,"tag":142,"props":652,"children":654},{"id":653},"java-hibernate-spring",[655],{"type":49,"value":656},"Java \u002F Hibernate \u002F Spring",{"type":43,"tag":59,"props":658,"children":659},{},[660],{"type":49,"value":661},"Use SQLCommenter-compatible instrumentation for Hibernate\u002FSpring where compatible.",{"type":43,"tag":59,"props":663,"children":664},{},[665],{"type":49,"value":207},{"type":43,"tag":76,"props":667,"children":668},{},[669,677,685,693,701,709],{"type":43,"tag":80,"props":670,"children":671},{},[672],{"type":43,"tag":160,"props":673,"children":675},{"className":674},[],[676],{"type":49,"value":219},{"type":43,"tag":80,"props":678,"children":679},{},[680],{"type":43,"tag":160,"props":681,"children":683},{"className":682},[],[684],{"type":49,"value":430},{"type":43,"tag":80,"props":686,"children":687},{},[688],{"type":43,"tag":160,"props":689,"children":691},{"className":690},[],[692],{"type":49,"value":228},{"type":43,"tag":80,"props":694,"children":695},{},[696],{"type":43,"tag":160,"props":697,"children":699},{"className":698},[],[700],{"type":49,"value":237},{"type":43,"tag":80,"props":702,"children":703},{},[704],{"type":43,"tag":160,"props":705,"children":707},{"className":706},[],[708],{"type":49,"value":255},{"type":43,"tag":80,"props":710,"children":711},{},[712],{"type":43,"tag":160,"props":713,"children":715},{"className":714},[],[716],{"type":49,"value":264},{"type":43,"tag":142,"props":718,"children":720},{"id":719},"go-databasesql-nethttp-gorillamux",[721],{"type":49,"value":722},"Go \u002F database\u002Fsql \u002F net\u002Fhttp \u002F gorilla\u002Fmux",{"type":43,"tag":59,"props":724,"children":725},{},[726],{"type":49,"value":727},"Use SQLCommenter-compatible instrumentation or a database wrapper at the query boundary.",{"type":43,"tag":59,"props":729,"children":730},{},[731],{"type":49,"value":207},{"type":43,"tag":76,"props":733,"children":734},{},[735,743,751,760,768,776],{"type":43,"tag":80,"props":736,"children":737},{},[738],{"type":43,"tag":160,"props":739,"children":741},{"className":740},[],[742],{"type":49,"value":219},{"type":43,"tag":80,"props":744,"children":745},{},[746],{"type":43,"tag":160,"props":747,"children":749},{"className":748},[],[750],{"type":49,"value":430},{"type":43,"tag":80,"props":752,"children":753},{},[754],{"type":43,"tag":160,"props":755,"children":757},{"className":756},[],[758],{"type":49,"value":759},"handler",{"type":43,"tag":80,"props":761,"children":762},{},[763],{"type":43,"tag":160,"props":764,"children":766},{"className":765},[],[767],{"type":49,"value":255},{"type":43,"tag":80,"props":769,"children":770},{},[771],{"type":43,"tag":160,"props":772,"children":774},{"className":773},[],[775],{"type":49,"value":246},{"type":43,"tag":80,"props":777,"children":778},{},[779],{"type":43,"tag":160,"props":780,"children":782},{"className":781},[],[783],{"type":49,"value":264},{"type":43,"tag":52,"props":785,"children":787},{"id":786},"standard-tag-policy",[788],{"type":49,"value":789},"Standard tag policy",{"type":43,"tag":59,"props":791,"children":792},{},[793],{"type":49,"value":794},"Recommend this baseline across all frameworks:",{"type":43,"tag":76,"props":796,"children":797},{},[798,803,808,813,818,823],{"type":43,"tag":80,"props":799,"children":800},{},[801],{"type":49,"value":802},"Stable, bounded values only.",{"type":43,"tag":80,"props":804,"children":805},{},[806],{"type":49,"value":807},"Normalize routes before tagging.",{"type":43,"tag":80,"props":809,"children":810},{},[811],{"type":49,"value":812},"Include app\u002Fservice\u002Fjob attribution.",{"type":43,"tag":80,"props":814,"children":815},{},[816],{"type":49,"value":817},"Include deploy SHA.",{"type":43,"tag":80,"props":819,"children":820},{},[821],{"type":49,"value":822},"Include source type for agents, scripts, BI, workers, and integrations.",{"type":43,"tag":80,"props":824,"children":825},{},[826],{"type":49,"value":827},"Do not include secrets, PII, user IDs, request IDs, raw tenant IDs, or raw URLs.",{"type":43,"tag":52,"props":829,"children":831},{"id":830},"validation-plan",[832],{"type":49,"value":833},"Validation plan",{"type":43,"tag":59,"props":835,"children":836},{},[837],{"type":49,"value":838},"Before recommending merge:",{"type":43,"tag":76,"props":840,"children":841},{},[842,847,852,857,862,867],{"type":43,"tag":80,"props":843,"children":844},{},[845],{"type":49,"value":846},"Confirm generated SQL comments appear in local\u002Fstaging query logs.",{"type":43,"tag":80,"props":848,"children":849},{},[850],{"type":49,"value":851},"Confirm comments survive the ORM, driver, pooler, and PlanetScale connection path.",{"type":43,"tag":80,"props":853,"children":854},{},[855],{"type":49,"value":856},"Confirm Insights displays tags.",{"type":43,"tag":80,"props":858,"children":859},{},[860],{"type":49,"value":861},"Confirm tag cardinality is bounded.",{"type":43,"tag":80,"props":863,"children":864},{},[865],{"type":49,"value":866},"Confirm Traffic Control can match the intended tags for Postgres.",{"type":43,"tag":80,"props":868,"children":869},{},[870],{"type":49,"value":871},"Confirm no sensitive data is present.",{"type":43,"tag":52,"props":873,"children":875},{"id":874},"output",[876],{"type":49,"value":877},"Output",{"type":43,"tag":59,"props":879,"children":880},{},[881],{"type":49,"value":882},"Return:",{"type":43,"tag":76,"props":884,"children":885},{},[886,891,896,901,906,911,916,921],{"type":43,"tag":80,"props":887,"children":888},{},[889],{"type":49,"value":890},"Detected stack.",{"type":43,"tag":80,"props":892,"children":893},{},[894],{"type":49,"value":895},"Current query tagging state.",{"type":43,"tag":80,"props":897,"children":898},{},[899],{"type":49,"value":900},"Recommended package or manual instrumentation path.",{"type":43,"tag":80,"props":902,"children":903},{},[904],{"type":49,"value":905},"Proposed tag schema.",{"type":43,"tag":80,"props":907,"children":908},{},[909],{"type":49,"value":910},"Files likely to change.",{"type":43,"tag":80,"props":912,"children":913},{},[914],{"type":49,"value":915},"Validation steps.",{"type":43,"tag":80,"props":917,"children":918},{},[919],{"type":49,"value":920},"Risks.",{"type":43,"tag":80,"props":922,"children":923},{},[924],{"type":49,"value":925},"Proposed changes requiring approval.",{"type":43,"tag":59,"props":927,"children":928},{},[929],{"type":49,"value":930},"End with:",{"type":43,"tag":59,"props":932,"children":933},{},[934],{"type":49,"value":935},"“No repository files or dependencies have been changed.”",{"items":937,"total":1103},[938,957,970,981,994,1012,1023,1038,1046,1063,1075,1090],{"slug":939,"name":939,"fn":940,"description":941,"org":942,"tags":943,"stars":954,"repoUrl":955,"updatedAt":956},"mysql","plan and optimize MySQL database schemas","Plan and review MySQL\u002FInnoDB schema, indexing, query tuning, transactions, and operations. Use when creating or modifying MySQL tables, indexes, or queries; diagnosing slow\u002Flocking behavior; planning migrations; or troubleshooting replication and connection issues. Load when using a MySQL database.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[944,947,948,950,953],{"name":945,"slug":946,"type":15},"Data Modeling","data-modeling",{"name":17,"slug":18,"type":15},{"name":949,"slug":939,"type":15},"MySQL",{"name":951,"slug":952,"type":15},"Performance","performance",{"name":21,"slug":22,"type":15},557,"https:\u002F\u002Fgithub.com\u002Fplanetscale\u002Fdatabase-skills","2026-04-06T18:43:45.381961",{"slug":958,"name":958,"fn":959,"description":960,"org":961,"tags":962,"stars":954,"repoUrl":955,"updatedAt":969},"neki","manage sharded PostgreSQL with Neki","Overview and information about Neki, the sharded Postgres product by PlanetScale. Load when working with Neki-related tasks and the need to scale or shard postgres. Load when facing Postgres scaling or sharding issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[963,964,965,966],{"name":17,"slug":18,"type":15},{"name":951,"slug":952,"type":15},{"name":9,"slug":8,"type":15},{"name":967,"slug":968,"type":15},"PostgreSQL","postgresql","2026-07-24T05:38:09.09841",{"slug":971,"name":971,"fn":972,"description":973,"org":974,"tags":975,"stars":954,"repoUrl":955,"updatedAt":980},"postgres","optimize PostgreSQL database performance","PostgreSQL best practices, query optimization, connection troubleshooting, and performance improvement. Load when working with Postgres databases.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[976,977,978,979],{"name":17,"slug":18,"type":15},{"name":951,"slug":952,"type":15},{"name":967,"slug":968,"type":15},{"name":21,"slug":22,"type":15},"2026-04-06T18:43:44.126777",{"slug":982,"name":982,"fn":983,"description":984,"org":985,"tags":986,"stars":954,"repoUrl":955,"updatedAt":993},"vitess","optimize Vitess database performance and sharding","Vitess best practices, query optimization, and connection troubleshooting for PlanetScale Vitess databases. Load when working with Vitess databases, sharding, VSchema configuration, keyspace management, or MySQL scaling issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[987,988,989,990,991],{"name":17,"slug":18,"type":15},{"name":951,"slug":952,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"name":992,"slug":982,"type":15},"Vitess","2026-04-06T18:43:42.890969",{"slug":995,"name":995,"fn":996,"description":997,"org":998,"tags":999,"stars":26,"repoUrl":27,"updatedAt":1011},"planetscale-autonomous-execution-mode","execute autonomous PlanetScale database changes","Execute approved PlanetScale changes end-to-end without per-step approval when the operator has explicitly acknowledged the risk. Defines the risk-acknowledgment contract, scoped autonomy levels, sensible execution ordering, continuous status reporting, halt conditions, and rollback discipline. Extremely safe, very enabling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1000,1003,1004,1007,1008],{"name":1001,"slug":1002,"type":15},"Automation","automation",{"name":17,"slug":18,"type":15},{"name":1005,"slug":1006,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},{"name":1009,"slug":1010,"type":15},"Risk Assessment","risk-assessment","2026-07-05T06:32:41.490537",{"slug":1013,"name":1013,"fn":1014,"description":1015,"org":1016,"tags":1017,"stars":26,"repoUrl":27,"updatedAt":1022},"planetscale-best-practices-matrix","evaluate PlanetScale best practices feature matrix","A concise feature matrix for deciding which PlanetScale safety, observability, and automation recommendations apply by engine.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1018,1019,1020,1021],{"name":1001,"slug":1002,"type":15},{"name":17,"slug":18,"type":15},{"name":951,"slug":952,"type":15},{"name":9,"slug":8,"type":15},"2026-07-27T06:07:48.188419",{"slug":1024,"name":1024,"fn":1025,"description":1026,"org":1027,"tags":1028,"stars":26,"repoUrl":27,"updatedAt":1037},"planetscale-change-gates-and-approval-contract","enforce approval gates for database mutations","Enforce explicit approval gates for any PlanetScale, database, repository, credential, network, or automation mutation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1029,1032,1033,1036],{"name":1030,"slug":1031,"type":15},"Approvals","approvals",{"name":17,"slug":18,"type":15},{"name":1034,"slug":1035,"type":15},"Governance","governance",{"name":9,"slug":8,"type":15},"2026-07-07T06:38:42.512288",{"slug":4,"name":4,"fn":5,"description":6,"org":1039,"tags":1040,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1041,1042,1043,1044,1045],{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"slug":1047,"name":1047,"fn":1048,"description":1049,"org":1050,"tags":1051,"stars":26,"repoUrl":27,"updatedAt":1062},"planetscale-customer-report-template","generate PlanetScale best practices reports","Produce the final PlanetScale best-practices report after running the inventory and relevant review skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1052,1055,1056,1059],{"name":1053,"slug":1054,"type":15},"Documentation","documentation",{"name":9,"slug":8,"type":15},{"name":1057,"slug":1058,"type":15},"Reporting","reporting",{"name":1060,"slug":1061,"type":15},"Templates","templates","2026-07-07T06:38:37.362061",{"slug":1064,"name":1064,"fn":1065,"description":1066,"org":1067,"tags":1068,"stars":26,"repoUrl":27,"updatedAt":1074},"planetscale-mcp-agent-operating-model","configure safe PlanetScale MCP agent behavior","Configure safe agent behavior around PlanetScale MCP, Insights, schema recommendations, and repository work without autonomous production mutation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1069,1072,1073],{"name":1070,"slug":1071,"type":15},"MCP","mcp",{"name":1005,"slug":1006,"type":15},{"name":9,"slug":8,"type":15},"2026-07-07T06:38:38.675213",{"slug":1076,"name":1076,"fn":1077,"description":1078,"org":1079,"tags":1080,"stars":26,"repoUrl":27,"updatedAt":1089},"planetscale-postgres-safety-review","review PlanetScale Postgres safety and configuration","Review PlanetScale Postgres for Traffic Control, query tags, roles, pg_strict, backups\u002FPITR, private connectivity, webhooks, branches, and safe agent operation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1081,1084,1085,1086],{"name":1082,"slug":1083,"type":15},"Audit","audit",{"name":9,"slug":8,"type":15},{"name":967,"slug":968,"type":15},{"name":1087,"slug":1088,"type":15},"Security","security","2026-07-07T06:38:34.75135",{"slug":1091,"name":1091,"fn":1092,"description":1093,"org":1094,"tags":1095,"stars":26,"repoUrl":27,"updatedAt":1102},"planetscale-pscale-cli-automation","automate PlanetScale CLI operations","Use the PlanetScale CLI (pscale) from automated agents with --format json, auth check, pscale sql, and per-command --force. Run before other PlanetScale skills when driving pscale directly. Use when the user asks to automate pscale, run CLI commands headless, or verify pscale auth from an agent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1096,1097,1100,1101],{"name":1001,"slug":1002,"type":15},{"name":1098,"slug":1099,"type":15},"CLI","cli",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},"2026-07-07T06:38:33.465495",19,{"items":1105,"total":1156},[1106,1114,1121,1128,1136,1143,1149],{"slug":995,"name":995,"fn":996,"description":997,"org":1107,"tags":1108,"stars":26,"repoUrl":27,"updatedAt":1011},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1109,1110,1111,1112,1113],{"name":1001,"slug":1002,"type":15},{"name":17,"slug":18,"type":15},{"name":1005,"slug":1006,"type":15},{"name":9,"slug":8,"type":15},{"name":1009,"slug":1010,"type":15},{"slug":1013,"name":1013,"fn":1014,"description":1015,"org":1115,"tags":1116,"stars":26,"repoUrl":27,"updatedAt":1022},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1117,1118,1119,1120],{"name":1001,"slug":1002,"type":15},{"name":17,"slug":18,"type":15},{"name":951,"slug":952,"type":15},{"name":9,"slug":8,"type":15},{"slug":1024,"name":1024,"fn":1025,"description":1026,"org":1122,"tags":1123,"stars":26,"repoUrl":27,"updatedAt":1037},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1124,1125,1126,1127],{"name":1030,"slug":1031,"type":15},{"name":17,"slug":18,"type":15},{"name":1034,"slug":1035,"type":15},{"name":9,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1129,"tags":1130,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1131,1132,1133,1134,1135],{"name":24,"slug":25,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"slug":1047,"name":1047,"fn":1048,"description":1049,"org":1137,"tags":1138,"stars":26,"repoUrl":27,"updatedAt":1062},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1139,1140,1141,1142],{"name":1053,"slug":1054,"type":15},{"name":9,"slug":8,"type":15},{"name":1057,"slug":1058,"type":15},{"name":1060,"slug":1061,"type":15},{"slug":1064,"name":1064,"fn":1065,"description":1066,"org":1144,"tags":1145,"stars":26,"repoUrl":27,"updatedAt":1074},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1146,1147,1148],{"name":1070,"slug":1071,"type":15},{"name":1005,"slug":1006,"type":15},{"name":9,"slug":8,"type":15},{"slug":1076,"name":1076,"fn":1077,"description":1078,"org":1150,"tags":1151,"stars":26,"repoUrl":27,"updatedAt":1089},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1152,1153,1154,1155],{"name":1082,"slug":1083,"type":15},{"name":9,"slug":8,"type":15},{"name":967,"slug":968,"type":15},{"name":1087,"slug":1088,"type":15},15]