{"id":"a09f6c4b-a600-4c6e-9268-ab4ecd569881","shortId":"CeYMFr","kind":"skill","title":"cloud-sql","tagline":"Use when provisioning Google Cloud SQL, configuring Cloud SQL Auth Proxy, connection strings, read replicas, backups, PITR, private IP, database migrations, or managed PostgreSQL/MySQL/SQL Server on GCP.","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-05-18T19:07:35.806Z","embedding":null,"createdAt":"2026-04-23T13:03:58.352Z","updatedAt":"2026-05-18T19:07:35.806Z","lastSeenAt":"2026-05-18T19:07:35.806Z","tsv":"'-06':620 '-15':621 '/cloudsql':1498 '/cofin/flow/blob/main/templates/styleguides/cloud/gcp_scripting.md)':1624 '/cofin/flow/blob/main/templates/styleguides/general.md)':1619 '/gemini-cli-extensions/cloud-sql-postgresql':1558 '/myapp':1496 '/sql/docs':1589 '/sql/docs/postgres/connect-auth-proxy':1592 '/sql/docs/postgres/instance-settings':1595 '/sql/pricing':1598 '0':502 '00':424,566,1328 '00z':624 '02':1327 '03':423,565 '1':770,1276 '100gb':414 '127.0.0.1':465,1465 '14':575,1333 '15':175,392,479,1263,1290 '16':482 '2':809,1296,1360 '2022':525 '2025':619 '3':234,858,1353,1395 '30':623,806,1116 '4':209,398,438,887,1417 '5':929 '50gb':1312 '5432':462,467,1437 '5432/myapp':1466 '6':966 '64':93 '7':581,1343 '75':511 '8':501 '99.95':101 '99.99':104 'access':346,850,1389,1398 'account':1101,1402,1416 'action':162,237 'activ':963 'ad':841,1169 'adapt':113 'add':723,917,968 'add-cloudsql-inst':916 'address':1148 'administr':70 'ai':120 'alert':957 'alloydb':76,80,1573 'also':1559 'alway':356,530,787,1038 'always-on':529 'api':366 'app':1284,1372,1383,1410,1434 'app-postgr':1283,1371,1382,1409,1433 'applic':66,893,981,1274 'appropri':1220 'assign':441,832,1204,1319 'attach':89 'audit':753 'auth':13,314,320,447,542,878,890,899,1016,1097,1208,1268,1419,1443,1453 'authent':536,709,721,875,926,1094,1358 'author':352,1011,1033 'authorized-network':1032 'auto':129,417,1251,1257,1315 'auto-increas':1250 'auto-manag':128 'autom':53,550,935,1040,1213 'automat':323,796,914,1122 'avail':58,99,109,404,532,538,790,1192,1302 'availability-typ':403,789,1191,1301 'backup':19,54,280,283,288,291,296,299,301,420,545,551,562,573,585,588,931,936,1041,1046,1052,1214,1324,1331 'backup-start-tim':419,561,1045,1323 'base':98,782 'baselin':1601 'bash':363,548,652,705,1275 'best':150 'bin':427,569,1336 'binari':515,906 'brief':1074,1130 'buffer':506 'built':111 'built-in':110 'cannot':839,1167 'case':1635 'caus':1073 'central1':402,457,676,1300,1432 'checkpoint':1184 'choos':774 'cidr':362,1037 'cli':1551 'clone':183,188,607 'cloud':2,8,11,31,34,38,73,78,263,450,737,897,910,1118,1413,1424,1449,1470,1520,1561,1565,1580 'cloud-sql':1 'cloud-sql-mysql':1560 'cloud-sql-proxi':262,449,1423 'cloud-sql-sqlserv':1564 'cloud.google.com':1588,1591,1594,1597 'cloud.google.com/sql/docs':1587 'cloud.google.com/sql/docs/postgres/connect-auth-proxy':1590 'cloud.google.com/sql/docs/postgres/instance-settings':1593 'cloud.google.com/sql/pricing':1596 'cloudsql':918 'cloudsql.enable':765 'cloudsql.iam':720,1357 'code':1506 'columnar':106 'command':163,236,238 'comput':1124,1522 'config':103 'configur':10,773,810,930,941,1187,1201,1267 'connect':15,259,269,273,307,338,445,491,496,894,964,982,996,1146,1271,1439,1474,1483,1515,1527 'conserv':492 'consid':992 'cost':142,145 'count':574,1053,1332 'cpu':961 'creat':164,169,239,244,248,253,279,284,375,384,589,635,653,661,730,859,864,868,976,1260,1277,1282,1361,1368,1377,1406 'creation':835,843,1055,1172,1176 'critic':1154 'cross':340,344,626,848,1548 'cross-org':343 'cross-project':339,847 'cross-refer':1547 'cross-region':625 'databas':23,43,69,172,240,243,277,389,708,718,763,862,869,874,1093,1287,1355,1362,1367,1458,1488 'database-flag':717,762,1354 'database-vers':171,388,1286 'dataset':804 'day':228,432,580,1085,1342,1347 'db':178,206,395,1293,1393 'db-g1-small':177 'db-n1-standard':205,394,1292 'db-password':1392 'dbname':245,278,468 'decid':1173 'default':317,509,1161 'delet':210,215 'deliv':1186 'demand':584 'deploy':895,1575 'descript':594 'dest':190 'detail':1503,1638 'dev':1456 'develop':1422,1525 'diagnos':1156 'direct':270 'disaggreg':95 'disast':630 'disk':959 'document':1512 'downtim':1075 'driver':1112 'duplic':1611 'east1':650 'edg':1634 'embed':115 'enabl':364,369,373,426,549,568,706,752,934,949,1039,1056,1151,1218,1254,1335 'enable-bin-log':425,567,1334 'enforc':357,740,1233 'engin':81,107,473,775,1523,1531 'engine-specif':472,1530 'ensur':822 'enterpris':528 'entri':144 'env':1476 'exampl':1259,1507 'exist':825,1240 'expos':1007 'extens':1538,1552,1554 'f':1490 'fact':1059 'failov':797 'featur':77 'filter':699 'fit':801 'flag':719,764,1356,1536 'flow':1572,1578 'focus':63,1628 'follow':1511 'front':999 'fulli':40 'g1':179 'gap':1062 'gce':907,1457 'gcloud':166,185,193,199,212,220,241,250,271,281,289,297,367,371,381,554,586,604,632,658,683,695,710,727,742,755,1279,1365,1374,1386,1403 'gcp':30,1099,1620 'gemini':1550,1553 'general':152,1615 'generic':1606 'github.com':1557,1618,1623 'github.com/cofin/flow/blob/main/templates/styleguides/cloud/gcp_scripting.md)':1622 'github.com/cofin/flow/blob/main/templates/styleguides/general.md)':1617 'github.com/gemini-cli-extensions/cloud-sql-postgresql':1556 'gke':904,1518,1574,1579,1583 'gke/gce':326 'googl':7,37 'grant':1396 'group':533 'guardrail':1005 'guid':1504 'ha':102,380,794,1079,1197,1266 'handl':52,318,912,922 'hardcod':1248 'headroom':807,1117 'heavi':974,1138 'high':57,157 'high-perform':156 'higher':146,1568 'host':464,1497 'hour':233,437,948,1070,1090,1230,1352 'human':1103 'iam':319,544,707,724,738,873,925,1092,1397,1414 'id':302 'import':1478 'increas':418,1252,1258,1316 'index':1501 'innodb':503,505,1540 'insight':951,1153 'instal':1555 'instanc':160,165,168,184,187,192,195,201,211,214,222,246,247,255,256,268,274,285,286,293,294,305,306,378,383,513,556,590,606,634,642,660,668,685,697,712,732,744,757,772,860,866,919,1080,1164,1175,1189,1264,1278,1281,1370,1381,1408,1473,1480,1482,1487,1499 'instead':67,853 'integr':1637 'ip':22,133,136,138,325,351,442,814,817,821,833,838,1009,1020,1023,1166,1199,1205,1239,1320 'keep':1625 'key':235 'known':361,1036 'language/framework':1607 'latenc':331 'latest':1390 'legaci':354,1111 'let':61,909 'list':287,292,693,698 'local':1421,1445,1455,1524 'log':97,428,516,570,579,754,1337,1341 'log-bas':96 'lower':143 'lowest':330 'machin':778 'mainten':218,226,231,430,435,942,1064,1083,1088,1222,1345,1350 'maintenance-window-day':225,429,1082,1344 'maintenance-window-hour':230,434,1087,1349 'manag':26,41,130,161,885,1246 'manual':116,123 'master':641,667 'master-instance-nam':640,666 'masterinstancenam':700 'max':490 'memori':799 'migrat':24,597,682,1545 'ml':114 'monitor':933,954 'must':1106 'my-postgr':385,458,558,591,608,644,670,701,714,733,746,759 'my-postgres-read':662,689 'my-postgres-replica':636 'my-postgres-restor':611 'my-project':1427 'myapp':1369,1379,1462,1493 'myapp-us':1378,1461,1492 'mydb':469 'mysql':47,83,498,500,1539,1563 'mysql/sql':154 'n1':207,396,1294 'name':170,197,203,216,224,643,669,1475,1484 'nativ':118 'network':131,353,443,811,828,1012,1034,1206,1321 'never':1006 'no-assign-ip':439,830,1202,1317 'non':1078 'non-ha':1077 'note':475 'object':863 'off-peak':945,1067,1227 'offici':1585 'older':1163 'on-demand':582 'oper':1128 'optim':149 'option':967 'org':345 'os':1479 'os.environ':1481 'overhead':334 'overview':33,309 'pass':258,827 'password':257,877,882,1096,1105,1241,1385,1394,1464,1495 'patch':56,202,223,557,713,745,758,1071,1127 'patch/resize':198 'path':1546 'pattern':308,310,1516,1576 'peak':947,1069,1115,1229 'peer':349,856 'perform':148,158,953,1569 'performance-optim':147 'pg':486 'pgaudit':766 'pgbouncer':494,993 'pgvector':484 'pitr':20,553,938,1043,1216 'place':1212 'plan':771 'point':599,616 'point-in-tim':598,615 'pool':127,497,507,997,1147,1529 'port':461,466,1436 'possibl':880 'post':1171 'post-creat':1170 'postgi':485 'postgr':174,276,387,391,460,471,478,481,560,593,610,613,638,646,664,672,691,703,716,735,748,761,1285,1289,1373,1384,1411,1435 'postgresql':46,82,86,159,377,476,726,991,1262,1460,1491,1535,1570 'postgresql/mysql':603 'postgresql/mysql/sql':27 'pre':596 'pre-migr':595 'prefer':812,1091 'primari':1002 'principl':1616 'privat':21,135,137,324,336,813,820,837,1019,1165,1198 'product':786,1196 'project':266,341,454,849,1429,1485 'projects/my-project/global/networks/my-vpc':1322 'projects/my_project/global/networks/my_vpc':444 'promot':677,687 'promote-replica':686 'provis':6 'proxi':14,261,265,315,333,448,452,891,900,921,1017,1209,1269,1420,1426,1444,1454 'psa':140 'psc':335,852,1526 'psql':463 'public':132,350,816,1008,1022,1238 'python':1273,1438,1451 'queri':950,987,1152,1158 'quick':71 'ram':514 'read':17,121,124,126,519,654,665,692,969,973,977,986,1133,1137 'read-heavi':972,1136 'recommend':316 'recoveri':631 'recreat':845,1178 'reduc':1610 'refer':72,1500,1508,1514,1549,1586 'references/connections.md':1517 'references/engines.md':1534 'region':105,181,182,267,399,406,627,647,657,673,792,1194,1297,1304,1486 'relat':42 'replic':55,651 'replica':18,125,520,628,639,655,678,688,694,970,978,989,1004,1134,1140 'requir':141,365,517,750,1025,1028,1125,1180,1235 'require-ssl':749,1027,1234 'restart':191,196,1131 'restor':295,300,304,547,602,614 'restore-inst':303 'restrict':359,1031 'retain':572,577,1051,1330,1339 'retained-backups-count':571,1050,1329 'retained-transaction-log-day':576,1338 'retent':939,1221 'risk':1060 'rotat':1109 'rout':985 'rule':1608 'run':911,1450,1471,1521 'sa@my-project.iam':1407 'sat':1348 'scale':60,122,1120 'script':1621 'secret':884,1245,1387,1391 'section':1584 'secur':704 'see':1571,1577 'separ':1150 'server':28,50,85,155,522,541,1543 'servic':44,337,368,372,1100,1401,1415 'set':217,489,888,937,955,1026,1044,1063,1081,1225,1472,1544 'setup':117 'share':1599,1603 'sidecar':903,1519 'size':413,508,798,1113,1311 'skill':1614,1627 'skill-cloud-sql' 'sla':100 'slow':1157 'small':180 'socket':1448,1469 'sourc':189 'source-cofin' 'specif':474,1532,1632 'sql':3,9,12,32,35,49,74,79,84,167,186,194,200,213,221,242,251,264,272,282,290,298,382,451,521,540,555,587,605,633,659,684,696,711,728,743,756,898,1119,1280,1366,1375,1404,1425,1542,1562,1566,1581 'sql-component.googleapis.com':374 'sqladmin.googleapis.com':370 'sqlserver':524,1567 'ssd':90,410,1308 'ssl':358,741,751,1014,1029,1231,1236 'standalon':680,905 'standard':208,397,526,1295 'start':421,563,1047,1325,1418 'stat':487 'statement':488 'step':769,808,857,886,928,965 'still':1107 'storag':88,408,412,416,781,1121,1249,1256,1306,1310,1314 'storage-auto-increas':415,1255,1313 'storage-s':411,1309 'storage-typ':407,1305 'store':881,1243 'string':16,983,1440,1528 'styleguid':1600,1604 'substitut':1144 'sun':229,433 'support':45,483,534 'switch':1182 't14':622 'tb':94 'tier':176,204,393,777,1291 'time':422,564,601,618,836,1048,1177,1326 'tls':322,923 'tool':1631 'tool-specif':1630 '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':578,1340 'transpar':927 'tune':1533,1541 'type':405,409,736,779,791,1193,1303,1307,1412 'unix':1447,1468 'updat':980 'url':1459,1489 'us':401,456,649,675,1299,1431 'us-central1':400,455,674,1298,1430 'us-east1':648 'usag':960 'use':4,313,477,493,499,523,539,788,819,851,872,1015,1132,1190,1441,1602 'user':249,252,275,470,725,729,739,871,1104,1364,1376,1380,1405,1463,1494 'user@example.com':731 'usernam':254 'valid':1183 'var':1477 'verifi':1188 'version':173,390,776,1288,1388 'vertex':119 'via':260,446,1452,1467 'vpc':329,348,824,855 'vs':75 'window':219,227,232,431,436,535,943,1065,1072,1084,1089,1223,1346,1351 'without':347,844,1010 'work':803 'workflow':768,1633 'workload':153,784,975,1139","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-05-18T19:07:35.806Z"}],"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-27T19:07:26Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"10c783abc6a5103d18d813c9f1ca6ef5cc3fda15","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":"Use when provisioning Google Cloud SQL, configuring Cloud SQL Auth Proxy, connection strings, read replicas, backups, PITR, private IP, database migrations, or managed PostgreSQL/MySQL/SQL Server on GCP."},"skills_sh_url":"https://skills.sh/cofin/flow/cloud-sql"},"updatedAt":"2026-05-18T19:07:35.806Z"}}