{"id":"a09f6c4b-a600-4c6e-9268-ab4ecd569881","shortId":"CeYMFr","kind":"skill","title":"cloud-sql","tagline":"Auto-activate for Cloud SQL gcloud commands, cloud-sql-proxy usage, or Cloud SQL connection strings. Google Cloud SQL expertise: fully managed PostgreSQL, MySQL, and SQL Server on GCP. Produces Cloud SQL instance configurations, connection patterns, backup strategies, and replica","description":"# Cloud SQL\n\n## Overview\n\nCloud SQL is Google Cloud's fully managed relational database service supporting PostgreSQL, MySQL, and SQL Server. It handles automated backups, replication, patching, high availability, and scaling — letting you focus on your application instead of database administration.\n\n## Quick Reference\n\n### Cloud SQL vs AlloyDB\n\n| Feature | Cloud SQL | AlloyDB |\n|---|---|---|\n| Engines | PostgreSQL, MySQL, SQL Server | PostgreSQL only |\n| Storage | Attached SSD (up to 64 TB) | Disaggregated, log-based |\n| Availability SLA | 99.95% (HA config) | 99.99% (regional) |\n| Columnar engine | Not available | Built-in adaptive |\n| ML embeddings | Manual setup | Native Vertex AI |\n| Read scaling | Manual read replicas | Read pool (auto-managed) |\n| Networking | Public IP or private IP | Private IP only (PSA required) |\n| Cost | Lower entry cost | Higher, performance-optimized |\n| Best for | General workloads, MySQL/SQL Server | High-performance PostgreSQL |\n\n### Instance Management\n\n| Action | Command |\n|---|---|\n| Create instance | `gcloud sql instances create NAME --database-version=POSTGRES_15 --tier=db-g1-small --region=REGION` |\n| Clone instance | `gcloud sql instances clone SOURCE DEST` |\n| Restart instance | `gcloud sql instances restart NAME` |\n| Patch/resize | `gcloud sql instances patch NAME --tier=db-n1-standard-4` |\n| Delete instance | `gcloud sql instances delete NAME` |\n| Set maintenance window | `gcloud sql instances patch NAME --maintenance-window-day=SUN --maintenance-window-hour=3` |\n\n### Key Commands\n\n| Action | Command |\n|---|---|\n| Create database | `gcloud sql databases create DBNAME --instance=INSTANCE` |\n| Create user | `gcloud sql users create USERNAME --instance=INSTANCE --password=PASS` |\n| Connect via proxy | `cloud-sql-proxy PROJECT:REGION:INSTANCE` |\n| Connect directly | `gcloud sql connect INSTANCE --user=postgres --database=DBNAME` |\n| Create backup | `gcloud sql backups create --instance=INSTANCE` |\n| List backups | `gcloud sql backups list --instance=INSTANCE` |\n| Restore backup | `gcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE` |\n\n### Connection Patterns Overview\n\n| Pattern | When to Use |\n|---|---|\n| **Auth Proxy** | Recommended default — handles IAM auth and TLS automatically |\n| **Private IP** | GKE/GCE on same VPC — lowest latency, no proxy overhead |\n| **PSC (Private Service Connect)** | Cross-project or cross-org access without VPC peering |\n| **Public IP + authorized networks** | Legacy only — always enforce SSL, restrict to known CIDRs |\n\n```bash\n# Enable required APIs\ngcloud services enable sqladmin.googleapis.com\ngcloud services enable sql-component.googleapis.com\n\n# Create a PostgreSQL instance with HA\ngcloud sql instances create my-postgres \\\n    --database-version=POSTGRES_15 \\\n    --tier=db-n1-standard-4 \\\n    --region=us-central1 \\\n    --availability-type=REGIONAL \\\n    --storage-type=SSD \\\n    --storage-size=100GB \\\n    --storage-auto-increase \\\n    --backup-start-time=03:00 \\\n    --enable-bin-log \\\n    --maintenance-window-day=SUN \\\n    --maintenance-window-hour=4 \\\n    --no-assign-ip \\\n    --network=projects/MY_PROJECT/global/networks/MY_VPC\n\n# Connect via Auth Proxy\ncloud-sql-proxy MY_PROJECT:us-central1:my-postgres --port=5432 &\npsql \"host=127.0.0.1 port=5432 dbname=mydb user=postgres\"\n```\n\n### Engine-Specific Notes\n\n**PostgreSQL** — Use `POSTGRES_15` or `POSTGRES_16`. Supports pgvector, PostGIS, pg_stat_statements. Set `max_connections` conservatively; use PgBouncer for connection pooling.\n\n**MySQL** — Use `MYSQL_8_0`. InnoDB only. `innodb_buffer_pool_size` defaults to 75% of instance RAM. Binary logging required for read replicas.\n\n**SQL Server** — Use `SQLSERVER_2022_STANDARD` or `ENTERPRISE`. Always-on availability groups supported. Windows Authentication not available; use SQL Server auth or IAM.\n\n### Backup and Restore\n\n```bash\n# Enable automated backups with PITR\ngcloud sql instances patch my-postgres \\\n    --backup-start-time=03:00 \\\n    --enable-bin-log \\\n    --retained-backups-count=14 \\\n    --retained-transaction-log-days=7\n\n# On-demand backup\ngcloud sql backups create --instance=my-postgres --description=\"pre-migration\"\n\n# Point-in-time restore (PostgreSQL/MySQL)\ngcloud sql instances clone my-postgres my-postgres-restored \\\n    --point-in-time=\"2025-06-15T14:30:00Z\"\n\n# Cross-region replica for disaster recovery\ngcloud sql instances create my-postgres-replica \\\n    --master-instance-name=my-postgres \\\n    --region=us-east1\n```\n\n### Replication\n\n```bash\n# Create read replica (same region)\ngcloud sql instances create my-postgres-read \\\n    --master-instance-name=my-postgres \\\n    --region=us-central1\n\n# Promote replica to standalone (for migrations)\ngcloud sql instances promote-replica my-postgres-read\n\n# List replicas\ngcloud sql instances list --filter=\"masterInstanceName=my-postgres\"\n```\n\n### Security\n\n```bash\n# Enable IAM database authentication\ngcloud sql instances patch my-postgres \\\n    --database-flags=cloudsql.iam_authentication=on\n\n# Add IAM user (PostgreSQL)\ngcloud sql users create user@example.com \\\n    --instance=my-postgres \\\n    --type=CLOUD_IAM_USER\n\n# Enforce SSL\ngcloud sql instances patch my-postgres \\\n    --require-ssl\n\n# Enable audit logging\ngcloud sql instances patch my-postgres \\\n    --database-flags=cloudsql.enable_pgaudit=on\n```\n\n<workflow>\n\n## Workflow\n\n### Step 1: Plan Instance Configuration\n\nChoose engine version, tier (machine type), and storage based on workload. For production, always use `--availability-type=REGIONAL` for HA with automatic failover. Size memory to fit the working dataset with ~30% headroom.\n\n### Step 2: Configure Networking\n\nPrefer private IP over public IP. If using private IP, ensure a VPC exists and pass `--network=` and `--no-assign-ip` at creation time. Private IP cannot be added after creation without recreation. For cross-project access, use PSC instead of VPC peering.\n\n### Step 3: Create Instance and Database Objects\n\nCreate the instance, then create databases and users. Use IAM database authentication over password auth when possible. Store passwords in Secret Manager.\n\n### Step 4: Set Up Auth Proxy for Application Connections\n\nDeploy the Cloud SQL Auth Proxy as a sidecar (GKE), standalone binary (GCE), or let Cloud Run handle it automatically with `--add-cloudsql-instances`. The proxy handles TLS and IAM authentication transparently.\n\n### Step 5: Configure Backups and Monitoring\n\nEnable automated backups, set PITR retention, and configure maintenance windows during off-peak hours. Enable Query Insights for performance monitoring. Set up alerts for disk usage, CPU, and active connections.\n\n### Step 6: (Optional) Add Read Replicas\n\nFor read-heavy workloads, create read replicas and update application connection strings to route read queries to replicas. For PostgreSQL, consider PgBouncer as a connection pool in front of both primary and replicas.\n\n</workflow>\n\n<guardrails>\n\n## Guardrails\n\n- **Never expose public IP without authorized networks and SSL** — use Auth Proxy or private IP; if public IP is required, set `--require-ssl` and restrict `--authorized-networks` to known CIDRs\n- **Always enable automated backups and PITR** — set `--backup-start-time` and `--retained-backups-count` at creation; enabling after the fact risks a gap\n- **Set maintenance windows to off-peak hours** — patch windows cause brief downtime on non-HA instances; set `--maintenance-window-day` and `--maintenance-window-hour`\n- **Prefer IAM database authentication** over password auth for GCP service accounts and human users; passwords must still be rotated for legacy drivers\n- **Size for peak + 30% headroom** — Cloud SQL scales storage automatically but compute requires a patch operation with brief restart\n- **Use read replicas for read-heavy workloads** — replicas are not a substitute for connection pooling; address both separately\n- **Enable Query Insights** — critical for diagnosing slow queries; off by default on older instances\n- **Private IP cannot be added post-creation** — decide at instance creation time; recreation is required to switch\n\n</guardrails>\n\n<validation>\n\n### Validation Checkpoint\n\nBefore delivering configurations, verify:\n\n- [ ] Instance uses `--availability-type=REGIONAL` for production HA\n- [ ] Private IP is configured (`--no-assign-ip --network=`) or Auth Proxy is in place\n- [ ] Automated backups and PITR are enabled with appropriate retention\n- [ ] Maintenance window is set to off-peak hours\n- [ ] SSL is enforced (`--require-ssl`) if public IP exists\n- [ ] Passwords are stored in Secret Manager, not hardcoded\n- [ ] Storage auto-increase is enabled (`--storage-auto-increase`)\n\n</validation>\n\n<example>\n\n## Example\n\nCreate a PostgreSQL 15 instance with HA, configure Auth Proxy, and connect a Python application:\n\n```bash\n# 1. Create instance\ngcloud sql instances create app-postgres \\\n    --database-version=POSTGRES_15 \\\n    --tier=db-n1-standard-2 \\\n    --region=us-central1 \\\n    --availability-type=REGIONAL \\\n    --storage-type=SSD \\\n    --storage-size=50GB \\\n    --storage-auto-increase \\\n    --no-assign-ip \\\n    --network=projects/my-project/global/networks/my-vpc \\\n    --backup-start-time=02:00 \\\n    --retained-backups-count=14 \\\n    --enable-bin-log \\\n    --retained-transaction-log-days=7 \\\n    --maintenance-window-day=SAT \\\n    --maintenance-window-hour=3 \\\n    --database-flags=cloudsql.iam_authentication=on\n\n# 2. Create database and user\ngcloud sql databases create myapp --instance=app-postgres\ngcloud sql users create myapp-user \\\n    --instance=app-postgres \\\n    --password=\"$(gcloud secrets versions access latest --secret=db-password)\"\n\n# 3. Grant IAM access for a service account\ngcloud sql users create sa@my-project.iam \\\n    --instance=app-postgres \\\n    --type=CLOUD_IAM_SERVICE_ACCOUNT\n\n# 4. Start Auth Proxy (local development)\ncloud-sql-proxy my-project:us-central1:app-postgres --port=5432 &\n```\n\nPython connection string using the Auth Proxy (local) or Unix socket (Cloud Run):\n\n```python\n# Via Auth Proxy (local dev / GCE)\nDATABASE_URL = \"postgresql+asyncpg://myapp-user:password@127.0.0.1:5432/myapp\"\n\n# Via Unix socket (Cloud Run — set INSTANCE_CONNECTION_NAME env var)\nimport os\nINSTANCE = os.environ[\"INSTANCE_CONNECTION_NAME\"]  # project:region:instance\nDATABASE_URL = f\"postgresql+asyncpg://myapp-user:password@/myapp?host=/cloudsql/{INSTANCE}\"\n```\n\n</example>\n\n---\n\n## References Index\n\nFor detailed guides and code examples, refer to the following documents in `references/`:\n\n- **[Connection Patterns](references/connections.md)**\n  - GKE sidecar, Cloud Run, Compute Engine, local development, PSC, connection strings, pooling.\n- **[Engine-Specific Tuning](references/engines.md)**\n  - PostgreSQL flags and extensions, MySQL InnoDB tuning, SQL Server settings, migration paths.\n\n---\n\n## Cross-References\n\n- **Gemini CLI extensions**: `gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql` (also `cloud-sql-mysql`, `cloud-sql-sqlserver`)\n- **Higher performance PostgreSQL**: see `flow:alloydb`\n- **GKE deployment patterns**: see `flow:gke` → Cloud SQL on GKE section\n\n---\n\n## Official References\n\n- <https://cloud.google.com/sql/docs>\n- <https://cloud.google.com/sql/docs/postgres/connect-auth-proxy>\n- <https://cloud.google.com/sql/docs/postgres/instance-settings>\n- <https://cloud.google.com/sql/pricing>\n\n## Shared Styleguide Baseline\n\n- Use shared styleguides for generic language/framework rules to reduce duplication in this skill.\n- [General Principles](https://github.com/cofin/flow/blob/main/templates/styleguides/general.md)\n- [GCP Scripting](https://github.com/cofin/flow/blob/main/templates/styleguides/cloud/gcp_scripting.md)\n- Keep this skill focused on tool-specific workflows, edge cases, and integration details.","tags":["cloud","sql","flow","cofin","agent-skills","ai-agents","beads","claude-code","codex","cursor","developer-tools","gemini-cli"],"capabilities":["skill","source-cofin","skill-cloud-sql","topic-agent-skills","topic-ai-agents","topic-beads","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-opencode","topic-plugin","topic-slash-commands","topic-spec-driven-development"],"categories":["flow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cofin/flow/cloud-sql","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cofin/flow","source_repo":"https://github.com/cofin/flow","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (11,811 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-24T01:03:25.678Z","embedding":null,"createdAt":"2026-04-23T13:03:58.352Z","updatedAt":"2026-04-24T01:03:25.678Z","lastSeenAt":"2026-04-24T01:03:25.678Z","tsv":"'-06':635 '-15':636 '/cloudsql':1513 '/cofin/flow/blob/main/templates/styleguides/cloud/gcp_scripting.md)':1639 '/cofin/flow/blob/main/templates/styleguides/general.md)':1634 '/gemini-cli-extensions/cloud-sql-postgresql':1573 '/myapp':1511 '/sql/docs':1604 '/sql/docs/postgres/connect-auth-proxy':1607 '/sql/docs/postgres/instance-settings':1610 '/sql/pricing':1613 '0':517 '00':439,581,1343 '00z':639 '02':1342 '03':438,580 '1':785,1291 '100gb':429 '127.0.0.1':480,1480 '14':590,1348 '15':190,407,494,1278,1305 '16':497 '2':824,1311,1375 '2022':540 '2025':634 '3':249,873,1368,1410 '30':638,821,1131 '4':224,413,453,902,1432 '5':944 '50gb':1327 '5432':477,482,1452 '5432/myapp':1481 '6':981 '64':108 '7':596,1358 '75':526 '8':516 '99.95':116 '99.99':119 'access':361,865,1404,1413 'account':1116,1417,1431 'action':177,252 'activ':6,978 'ad':856,1184 'adapt':128 'add':738,932,983 'add-cloudsql-inst':931 'address':1163 'administr':85 'ai':135 'alert':972 'alloydb':91,95,1588 'also':1574 'alway':371,545,802,1053 'always-on':544 'api':381 'app':1299,1387,1398,1425,1449 'app-postgr':1298,1386,1397,1424,1448 'applic':81,908,996,1289 'appropri':1235 'assign':456,847,1219,1334 'attach':104 'audit':768 'auth':329,335,462,557,893,905,914,1031,1112,1223,1283,1434,1458,1468 'authent':551,724,736,890,941,1109,1373 'author':367,1026,1048 'authorized-network':1047 'auto':5,144,432,1266,1272,1330 'auto-activ':4 'auto-increas':1265 'auto-manag':143 'autom':68,565,950,1055,1228 'automat':338,811,929,1137 'avail':73,114,124,419,547,553,805,1207,1317 'availability-typ':418,804,1206,1316 'backup':42,69,295,298,303,306,311,314,316,435,560,566,577,588,600,603,946,951,1056,1061,1067,1229,1339,1346 'backup-start-tim':434,576,1060,1338 'base':113,797 'baselin':1616 'bash':378,563,667,720,1290 'best':165 'bin':442,584,1351 'binari':530,921 'brief':1089,1145 'buffer':521 'built':126 'built-in':125 'cannot':854,1182 'case':1650 'caus':1088 'central1':417,472,691,1315,1447 'checkpoint':1199 'choos':789 'cidr':377,1052 'cli':1566 'clone':198,203,622 'cloud':2,8,13,18,23,36,46,49,53,88,93,278,465,752,912,925,1133,1428,1439,1464,1485,1535,1576,1580,1595 'cloud-sql':1 'cloud-sql-mysql':1575 'cloud-sql-proxi':12,277,464,1438 'cloud-sql-sqlserv':1579 'cloud.google.com':1603,1606,1609,1612 'cloud.google.com/sql/docs':1602 'cloud.google.com/sql/docs/postgres/connect-auth-proxy':1605 'cloud.google.com/sql/docs/postgres/instance-settings':1608 'cloud.google.com/sql/pricing':1611 'cloudsql':933 'cloudsql.enable':780 'cloudsql.iam':735,1372 'code':1521 'columnar':121 'command':11,178,251,253 'comput':1139,1537 'config':118 'configur':39,788,825,945,956,1202,1216,1282 'connect':20,40,274,284,288,322,353,460,506,511,909,979,997,1011,1161,1286,1454,1489,1498,1530,1542 'conserv':507 'consid':1007 'cost':157,160 'count':589,1068,1347 'cpu':976 'creat':179,184,254,259,263,268,294,299,390,399,604,650,668,676,745,874,879,883,991,1275,1292,1297,1376,1383,1392,1421 'creation':850,858,1070,1187,1191 'critic':1169 'cross':355,359,641,863,1563 'cross-org':358 'cross-project':354,862 'cross-refer':1562 'cross-region':640 'databas':58,84,187,255,258,292,404,723,733,778,877,884,889,1108,1302,1370,1377,1382,1473,1503 'database-flag':732,777,1369 'database-vers':186,403,1301 'dataset':819 'day':243,447,595,1100,1357,1362 'db':193,221,410,1308,1408 'db-g1-small':192 'db-n1-standard':220,409,1307 'db-password':1407 'dbname':260,293,483 'decid':1188 'default':332,524,1176 'delet':225,230 'deliv':1201 'demand':599 'deploy':910,1590 'descript':609 'dest':205 'detail':1518,1653 'dev':1471 'develop':1437,1540 'diagnos':1171 'direct':285 'disaggreg':110 'disast':645 'disk':974 'document':1527 'downtim':1090 'driver':1127 'duplic':1626 'east1':665 'edg':1649 'embed':130 'enabl':379,384,388,441,564,583,721,767,949,964,1054,1071,1166,1233,1269,1350 'enable-bin-log':440,582,1349 'enforc':372,755,1248 'engin':96,122,488,790,1538,1546 'engine-specif':487,1545 'ensur':837 'enterpris':543 'entri':159 'env':1491 'exampl':1274,1522 'exist':840,1255 'expertis':25 'expos':1022 'extens':1553,1567,1569 'f':1505 'fact':1074 'failov':812 'featur':92 'filter':714 'fit':816 'flag':734,779,1371,1551 'flow':1587,1593 'focus':78,1643 'follow':1526 'front':1014 'fulli':26,55 'g1':194 'gap':1077 'gce':922,1472 'gcloud':10,181,200,208,214,227,235,256,265,286,296,304,312,382,386,396,569,601,619,647,673,698,710,725,742,757,770,1294,1380,1389,1401,1418 'gcp':34,1114,1635 'gemini':1565,1568 'general':167,1630 'generic':1621 'github.com':1572,1633,1638 'github.com/cofin/flow/blob/main/templates/styleguides/cloud/gcp_scripting.md)':1637 'github.com/cofin/flow/blob/main/templates/styleguides/general.md)':1632 'github.com/gemini-cli-extensions/cloud-sql-postgresql':1571 'gke':919,1533,1589,1594,1598 'gke/gce':341 'googl':22,52 'grant':1411 'group':548 'guardrail':1020 'guid':1519 'ha':117,395,809,1094,1212,1281 'handl':67,333,927,937 'hardcod':1263 'headroom':822,1132 'heavi':989,1153 'high':72,172 'high-perform':171 'higher':161,1583 'host':479,1512 'hour':248,452,963,1085,1105,1245,1367 'human':1118 'iam':334,559,722,739,753,888,940,1107,1412,1429 'id':317 'import':1493 'increas':433,1267,1273,1331 'index':1516 'innodb':518,520,1555 'insight':966,1168 'instal':1570 'instanc':38,175,180,183,199,202,207,210,216,226,229,237,261,262,270,271,283,289,300,301,308,309,320,321,393,398,528,571,605,621,649,657,675,683,700,712,727,747,759,772,787,875,881,934,1095,1179,1190,1204,1279,1293,1296,1385,1396,1423,1488,1495,1497,1502,1514 'instead':82,868 'integr':1652 'ip':148,151,153,340,366,457,829,832,836,848,853,1024,1035,1038,1181,1214,1220,1254,1335 'keep':1640 'key':250 'known':376,1051 'language/framework':1622 'latenc':346 'latest':1405 'legaci':369,1126 'let':76,924 'list':302,307,708,713 'local':1436,1460,1470,1539 'log':112,443,531,585,594,769,1352,1356 'log-bas':111 'lower':158 'lowest':345 'machin':793 'mainten':233,241,246,445,450,957,1079,1098,1103,1237,1360,1365 'maintenance-window-day':240,444,1097,1359 'maintenance-window-hour':245,449,1102,1364 'manag':27,56,145,176,900,1261 'manual':131,138 'master':656,682 'master-instance-nam':655,681 'masterinstancenam':715 'max':505 'memori':814 'migrat':612,697,1560 'ml':129 'monitor':948,969 'must':1121 'my-postgr':400,473,573,606,623,659,685,716,729,748,761,774 'my-postgres-read':677,704 'my-postgres-replica':651 'my-postgres-restor':626 'my-project':1442 'myapp':1384,1394,1477,1508 'myapp-us':1393,1476,1507 'mydb':484 'mysql':29,62,98,513,515,1554,1578 'mysql/sql':169 'n1':222,411,1309 'name':185,212,218,231,239,658,684,1490,1499 'nativ':133 'network':146,368,458,826,843,1027,1049,1221,1336 'never':1021 'no-assign-ip':454,845,1217,1332 'non':1093 'non-ha':1092 'note':490 'object':878 'off-peak':960,1082,1242 'offici':1600 'older':1178 'on-demand':597 'oper':1143 'optim':164 'option':982 'org':360 'os':1494 'os.environ':1496 'overhead':349 'overview':48,324 'pass':273,842 'password':272,892,897,1111,1120,1256,1400,1409,1479,1510 'patch':71,217,238,572,728,760,773,1086,1142 'patch/resize':213 'path':1561 'pattern':41,323,325,1531,1591 'peak':962,1084,1130,1244 'peer':364,871 'perform':163,173,968,1584 'performance-optim':162 'pg':501 'pgaudit':781 'pgbouncer':509,1008 'pgvector':499 'pitr':568,953,1058,1231 'place':1227 'plan':786 'point':614,631 'point-in-tim':613,630 'pool':142,512,522,1012,1162,1544 'port':476,481,1451 'possibl':895 'post':1186 'post-creat':1185 'postgi':500 'postgr':189,291,402,406,475,486,493,496,575,608,625,628,653,661,679,687,706,718,731,750,763,776,1300,1304,1388,1399,1426,1450 'postgresql':28,61,97,101,174,392,491,741,1006,1277,1475,1506,1550,1585 'postgresql/mysql':618 'pre':611 'pre-migr':610 'prefer':827,1106 'primari':1017 'principl':1631 'privat':150,152,339,351,828,835,852,1034,1180,1213 'produc':35 'product':801,1211 'project':281,356,469,864,1444,1500 'projects/my-project/global/networks/my-vpc':1337 'projects/my_project/global/networks/my_vpc':459 'promot':692,702 'promote-replica':701 'proxi':15,276,280,330,348,463,467,906,915,936,1032,1224,1284,1435,1441,1459,1469 'psa':155 'psc':350,867,1541 'psql':478 'public':147,365,831,1023,1037,1253 'python':1288,1453,1466 'queri':965,1002,1167,1173 'quick':86 'ram':529 'read':136,139,141,534,669,680,707,984,988,992,1001,1148,1152 'read-heavi':987,1151 'recommend':331 'recoveri':646 'recreat':860,1193 'reduc':1625 'refer':87,1515,1523,1529,1564,1601 'references/connections.md':1532 'references/engines.md':1549 'region':120,196,197,282,414,421,642,662,672,688,807,1209,1312,1319,1501 'relat':57 'replic':70,666 'replica':45,140,535,643,654,670,693,703,709,985,993,1004,1019,1149,1155 'requir':156,380,532,765,1040,1043,1140,1195,1250 'require-ssl':764,1042,1249 'restart':206,211,1146 'restor':310,315,319,562,617,629 'restore-inst':318 'restrict':374,1046 'retain':587,592,1066,1345,1354 'retained-backups-count':586,1065,1344 'retained-transaction-log-day':591,1353 'retent':954,1236 'risk':1075 'rotat':1124 'rout':1000 'rule':1623 'run':926,1465,1486,1536 'sa@my-project.iam':1422 'sat':1363 'scale':75,137,1135 'script':1636 'secret':899,1260,1402,1406 'section':1599 'secur':719 'see':1586,1592 'separ':1165 'server':32,65,100,170,537,556,1558 'servic':59,352,383,387,1115,1416,1430 'set':232,504,903,952,970,1041,1059,1078,1096,1240,1487,1559 'setup':132 'share':1614,1618 'sidecar':918,1534 'size':428,523,813,1128,1326 'skill':1629,1642 'skill-cloud-sql' 'sla':115 'slow':1172 'small':195 'socket':1463,1484 'sourc':204 'source-cofin' 'specif':489,1547,1647 'sql':3,9,14,19,24,31,37,47,50,64,89,94,99,182,201,209,215,228,236,257,266,279,287,297,305,313,397,466,536,555,570,602,620,648,674,699,711,726,743,758,771,913,1134,1295,1381,1390,1419,1440,1557,1577,1581,1596 'sql-component.googleapis.com':389 'sqladmin.googleapis.com':385 'sqlserver':539,1582 'ssd':105,425,1323 'ssl':373,756,766,1029,1044,1246,1251 'standalon':695,920 'standard':223,412,541,1310 'start':436,578,1062,1340,1433 'stat':502 'statement':503 'step':784,823,872,901,943,980 'still':1122 'storag':103,423,427,431,796,1136,1264,1271,1321,1325,1329 'storage-auto-increas':430,1270,1328 'storage-s':426,1324 'storage-typ':422,1320 'store':896,1258 'strategi':43 'string':21,998,1455,1543 'styleguid':1615,1619 'substitut':1159 'sun':244,448 'support':60,498,549 'switch':1197 't14':637 'tb':109 'tier':191,219,408,792,1306 'time':437,579,616,633,851,1063,1192,1341 'tls':337,938 'tool':1646 'tool-specif':1645 'topic-agent-skills' 'topic-ai-agents' 'topic-beads' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-opencode' 'topic-plugin' 'topic-slash-commands' 'topic-spec-driven-development' 'transact':593,1355 'transpar':942 'tune':1548,1556 'type':420,424,751,794,806,1208,1318,1322,1427 'unix':1462,1483 'updat':995 'url':1474,1504 'us':416,471,664,690,1314,1446 'us-central1':415,470,689,1313,1445 'us-east1':663 'usag':16,975 'use':328,492,508,514,538,554,803,834,866,887,1030,1147,1205,1456,1617 'user':264,267,290,485,740,744,754,886,1119,1379,1391,1395,1420,1478,1509 'user@example.com':746 'usernam':269 'valid':1198 'var':1492 'verifi':1203 'version':188,405,791,1303,1403 'vertex':134 'via':275,461,1467,1482 'vpc':344,363,839,870 'vs':90 'window':234,242,247,446,451,550,958,1080,1087,1099,1104,1238,1361,1366 'without':362,859,1025 'work':818 'workflow':783,1648 'workload':168,799,990,1154","prices":[{"id":"3358a3c1-854e-4c9a-ab1b-58c5af63c278","listingId":"a09f6c4b-a600-4c6e-9268-ab4ecd569881","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cofin","category":"flow","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:58.352Z"}],"sources":[{"listingId":"a09f6c4b-a600-4c6e-9268-ab4ecd569881","source":"github","sourceId":"cofin/flow/cloud-sql","sourceUrl":"https://github.com/cofin/flow/tree/main/skills/cloud-sql","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:58.352Z","lastSeenAt":"2026-04-24T01:03:25.678Z"}],"details":{"listingId":"a09f6c4b-a600-4c6e-9268-ab4ecd569881","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cofin","slug":"cloud-sql","github":{"repo":"cofin/flow","stars":11,"topics":["agent-skills","ai-agents","beads","claude-code","codex","context-driven-development","cursor","developer-tools","gemini-cli","opencode","plugin","slash-commands","spec-driven-development","subagents","tdd","workflow"],"license":"apache-2.0","html_url":"https://github.com/cofin/flow","pushed_at":"2026-04-19T23:22:27Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"f779650154fe6c1f2a972428b1619297047d26d9","skill_md_path":"skills/cloud-sql/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cofin/flow/tree/main/skills/cloud-sql"},"layout":"multi","source":"github","category":"flow","frontmatter":{"name":"cloud-sql","description":"Auto-activate for Cloud SQL gcloud commands, cloud-sql-proxy usage, or Cloud SQL connection strings. Google Cloud SQL expertise: fully managed PostgreSQL, MySQL, and SQL Server on GCP. Produces Cloud SQL instance configurations, connection patterns, backup strategies, and replication setups. Use when: provisioning Cloud SQL instances, configuring Auth Proxy connections, setting up read replicas, managing backups and PITR, or migrating to Cloud SQL. For higher performance PostgreSQL workloads see flow:alloydb. For GKE deployment patterns see flow:gke."},"skills_sh_url":"https://skills.sh/cofin/flow/cloud-sql"},"updatedAt":"2026-04-24T01:03:25.678Z"}}