{"id":"53b8b166-d7fa-4662-bf1c-123081b13412","shortId":"8Hf8TG","kind":"skill","title":"alloydb-omni","tagline":"Use when running AlloyDB Omni locally or outside GCP, configuring container deployments, Kubernetes operators, RPM installs, columnar engine tests, or local development that needs AlloyDB behavior.","description":"# AlloyDB Omni\n\n## Overview\n\nAlloyDB Omni is the downloadable edition of AlloyDB that runs anywhere: local machines, on-premises data centers, or other cloud providers. It is distributed as a container image and includes the same query processing and columnar engine as the managed AlloyDB service.\n\n## Operating Layers\n\nUse this skill in three distinct layers:\n\n1. **Deploy** AlloyDB Omni on Docker, Podman, Kubernetes, or RPM-based hosts.\n2. **Connect** an agent or client to the running database.\n3. **Operate** the database with lifecycle, tuning, backups, diagnostics, and upgrades.\n\nKeep those layers separate when giving guidance. Deployment is not the same thing as agent connectivity.\n\n## Quick Reference\n\n### Deployment Methods\n\n| Method | Image | Use Case |\n|---|---|---|\n| Docker | `google/alloydbomni:latest` | Local development, CI |\n| Podman | `google/alloydbomni:latest` | Rootless containers, RHEL |\n| Kubernetes | AlloyDB Omni Operator | Production on-prem/multi-cloud |\n| RPM | `alloydbomni` package | Bare metal / VM (RHEL/CentOS) |\n\n### Key Environment Variables\n\n| Variable | Purpose | Example |\n|---|---|---|\n| `POSTGRES_PASSWORD` | Initial superuser password (required) | `mysecretpassword` |\n| `POSTGRES_DB` | Database to create on first start | `myapp` |\n| `POSTGRES_USER` | Superuser name (default: `postgres`) | `postgres` |\n\n### Dev Workflow\n\n1. Start container with `docker compose up -d`\n2. Connect with `psql -h localhost -U postgres`\n3. Use AlloyDB features (columnar engine, ML embeddings) locally\n4. Tear down with `docker compose down` (data persists in named volume)\n\n<workflow>\n\n## Workflow\n\n### Step 1: Choose Deployment Method\n\nUse Docker/Podman for local development and CI. Use the Kubernetes operator for production non-GCP deployments. Use RPM for bare-metal servers.\n\n### Step 2: Configure Container Resources\n\nSet `--memory`, `--cpus`, and `--shm-size` based on workload. For development, 2 CPUs / 4GB RAM / 256MB shared memory is a reasonable starting point.\n\n### Step 3: Set Up Persistence\n\nAlways use a named volume for `/var/lib/postgresql/data`. Without a volume, data is lost when the container stops. Optionally mount `./init-scripts` to `/docker-entrypoint-initdb.d` for first-run SQL.\n\n### Step 4: Tune PostgreSQL Parameters\n\nFor non-trivial workloads, configure `shared_buffers` (25% of container memory), `effective_cache_size` (75%), and `work_mem` via `ALTER SYSTEM SET` or a mounted config file.\n\n### Step 5: Connect and Develop\n\nConnect via `localhost:5432`. AlloyDB Omni supports all AlloyDB features including the columnar engine, so you can test analytical queries locally.\n\n</workflow>\n\n## Host Integration Order\n\nUse the lowest-admin supported path for the current host, and degrade cleanly:\n\n1. **Gemini CLI**: use the dedicated `alloydb-omni` extension.\n2. **Other agents with MCP support**: use MCP Toolbox with the official AlloyDB Omni prebuilt config.\n3. **No extension / no MCP**: fall back to Docker/Podman/Kubernetes/RPM plus `psql` and SQL guidance from this skill's references.\n\nDo not make the skill Gemini-only. The Gemini extension path is preferred when available, but the deployment and operational guidance in this skill must still work across other agents and plain terminal workflows.\n\n<guardrails>\n\n## Guardrails\n\n- **Always set container resource limits** — without `--memory` and `--cpus`, the container can consume all host resources and destabilize the machine\n- **Always use a named volume** for data persistence — bind mounts work but named volumes are more portable and easier to manage\n- **Set `shm_size` to at least 256MB** — the default 64MB is too small for PostgreSQL and causes \"could not resize shared memory segment\" errors\n- **Never use `POSTGRES_PASSWORD` in production** — use secrets management (Docker secrets, Kubernetes secrets, or Vault)\n- **Back up the data volume regularly** — use `pg_dump` or volume snapshots; there is no managed backup like GCP AlloyDB\n- **Pin the image tag in CI** — `google/alloydbomni:latest` can change between runs; use a specific version tag for reproducibility\n\n</guardrails>\n\n<validation>\n\n### Validation Checkpoint\n\nBefore delivering configurations, verify:\n\n- [ ] Container has explicit memory and CPU limits set\n- [ ] Data directory uses a named volume, not a tmpfs or anonymous volume\n- [ ] `shm_size` is set to at least 256MB\n- [ ] `POSTGRES_PASSWORD` is set (container will not start without it)\n- [ ] Port mapping is correct (default: 5432:5432)\n\n</validation>\n\n<example>\n\n## Example\n\nDocker Compose for local AlloyDB Omni development:\n\n```yaml\n# docker-compose.yml\nservices:\n  alloydb:\n    image: google/alloydbomni:latest\n    container_name: alloydb-omni\n    environment:\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-devsecret}\n      POSTGRES_DB: myapp\n      POSTGRES_USER: postgres\n    ports:\n      - \"5432:5432\"\n    volumes:\n      - alloydb-data:/var/lib/postgresql/data\n      - ./init-scripts:/docker-entrypoint-initdb.d\n    restart: unless-stopped\n    shm_size: \"256m\"\n    deploy:\n      resources:\n        limits:\n          cpus: \"2\"\n          memory: 4G\n\nvolumes:\n  alloydb-data:\n```\n\nInitialization script to enable the columnar engine:\n\n```sql\n-- init-scripts/01-extensions.sql\nCREATE EXTENSION IF NOT EXISTS vector;\nCREATE EXTENSION IF NOT EXISTS google_ml_integration;\n```\n\n</example>\n\n## Kubernetes Operator Lifecycle\n\nThe AlloyDB Omni Kubernetes Operator manages `DBCluster` custom resources (CRD: `dbclusters.alloydbomni.dbadmin.goog/v1`). Key lifecycle operations:\n\n- **HA failover**: enable automatic standby with `availabilityOptions.standby: Enabled` in `primarySpec`; the operator promotes the standby automatically on primary failure\n- **Read replica scaling**: `kubectl patch dbcluster <name> --type=merge -p '{\"spec\":{\"readPoolSpec\":{\"replicas\":<N>}}}'`\n- **Rolling parameter updates**: patching `primarySpec.parameters` triggers a controlled rolling restart with no data loss\n- **Backup**: annotate the DBCluster with `alloydbomni.dbadmin.goog/backup=true` to trigger an immediate backup\n- **Upgrades**: update `databaseVersion` or the image tag; the operator orchestrates a rolling restart\n\nSee [references/kubernetes-operator.md](references/kubernetes-operator.md) for the full CRD spec, HA configuration YAML, scaling examples, health monitoring, and upgrade procedures.\n\n## RPM Lifecycle\n\nRPM-based AlloyDB Omni installs are a first-class deployment path for RHEL-family hosts, VMs, and bare-metal systems where containers are not the right fit.\n\nKey lifecycle operations:\n\n- **Install repository + package**: add the AlloyDB Omni yum repo, then `yum install alloydbomni`\n- **Initialize data directory**: run `alloydb-omni init --data-dir=...` before first start\n- **Manage the service**: use `systemctl enable --now alloydb-omni`, `status`, `restart`, and `journalctl`\n- **Tune PostgreSQL settings**: change parameters with `ALTER SYSTEM SET ...` and restart the service\n- **Upgrade in place**: update the RPM package, restart the service, and verify version + extension state\n- **Back up and validate**: verify local storage, service health, and extension availability before and after upgrades\n\nSee [references/rpm.md](references/rpm.md) for the full install, service-management, configuration, validation, and upgrade workflow.\n\n## Performance Diagnostics\n\nKey diagnostics for AlloyDB Omni production workloads:\n\n- **Query plans**: use `EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)` to identify sequential scans, high-cost nodes, and buffer hit ratios\n- **Invalid indexes**: query `pg_class JOIN pg_index` where `indisvalid = false` to find indexes that need rebuilding with `REINDEX CONCURRENTLY`\n- **Bloat detection**: query `pg_stat_user_tables` for `n_dead_tup` and `n_live_tup` ratios; tables with dead-tuple ratio above 20% are candidates for `VACUUM ANALYZE`\n- **Active query monitoring**: `pg_stat_activity` filtered on `state = 'active'` and `wait_event_type` to identify lock waits and long-running queries\n\nSee [references/performance.md](references/performance.md) for ready-to-run diagnostic queries, autovacuum tuning, and connection lifecycle management.\n\n## Columnar Engine Tuning\n\nThe columnar engine accelerates analytical queries by caching selected columns in a compressed in-memory format.\n\n- **Memory limit**: set `google_columnar_engine.memory_limit` (e.g., `ALTER SYSTEM SET google_columnar_engine.memory_limit = '4GB'`) — allocate 10–25% of total container/node memory\n- **Recommended columns**: add wide tables with high read frequency and low update frequency via `SELECT google_columnar_engine_add('<table>')` or individual column-level population\n- **Cost/benefit check**: compare `EXPLAIN` output before and after adding a table — look for `Custom Scan (columnar scan)` nodes replacing `Seq Scan`\n- **Cache inspection**: `SELECT * FROM g_columnar_memory_usage` shows per-relation memory consumption and hit rates\n\n## Gemini CLI and MCP Toolbox\n\nThis section is for the **connection layer**, not for deploying AlloyDB Omni itself.\n\nFor AlloyDB Omni, prefer the dedicated Gemini CLI extension when Gemini is the active host. Use the generic PostgreSQL route only as a fallback when the dedicated extension is unavailable.\n\n```bash\ngemini extensions install https://github.com/gemini-cli-extensions/alloydb-omni --auto-update\ngemini extensions config alloydb-omni --scope workspace\n```\n\nGuide the user through the required connection variables before starting Gemini:\n\n```bash\nexport ALLOYDB_OMNI_HOST=\"<database-host>\"\nexport ALLOYDB_OMNI_PORT=\"<database-port>\"\nexport ALLOYDB_OMNI_DATABASE=\"<database-name>\"\nexport ALLOYDB_OMNI_USER=\"<database-user>\"\nexport ALLOYDB_OMNI_PASSWORD=\"<database-password>\"\nexport ALLOYDB_OMNI_QUERY_PARAMS=\"<optional-query-string>\"\n```\n\nImportant configuration guidance:\n\n- Gemini CLI should be `v0.6.0` or newer.\n- Load the variables from a `.env` file when possible.\n- Connection settings are fixed at session start; restart Gemini to switch databases.\n- Treat configuration as workspace-scoped by default, not user-global.\n\nFor non-Gemini agents, or when the user needs a shared MCP endpoint, guide them to MCP Toolbox using the AlloyDB Omni prebuilt config rather than inventing a custom setup.\n\nFor reusable project workflows, prefer generated workspace skills:\n\n```bash\ntoolbox --prebuilt alloydb-omni skills-generate \\\n  --name alloydb-omni-optimize \\\n  --toolset optimize \\\n  --description \"AlloyDB Omni optimization skill\" \\\n  --output-dir .agents/skills\n```\n\nIf neither Gemini extensions nor MCP Toolbox are available, fall back to the manual Docker/Podman/Kubernetes/RPM workflows and `psql` diagnostics already documented in this skill's references.\n\n---\n\n## References Index\n\nFor detailed guides and code examples, refer to the following documents in `references/`:\n\n- **[Setup & Deployment](references/setup.md)**\n  - Container deployment (Docker/Podman), Kubernetes operator, local development workflows.\n- **[Configuration](references/config.md)**\n  - Memory/CPU tuning, persistence volumes, networking, PostgreSQL parameter overrides.\n- **[Kubernetes Operator](references/kubernetes-operator.md)**\n  - DBCluster CRD spec, HA failover, read replica scaling, rolling updates, backup annotations, health monitoring, upgrade procedures.\n- **[RPM Deployment](references/rpm.md)**\n  - RHEL-family installation, `systemd` lifecycle, configuration, upgrades, and operational validation.\n- **[Performance Diagnostics](references/performance.md)**\n  - Query planning, invalid index detection, bloat analysis, active query monitoring, columnar engine tuning, autovacuum, connection lifecycle.\n- **[Gemini + MCP Guidance](references/gemini-mcp.md)**\n  - PostgreSQL extension install, env vars, and MCP Toolbox fallback guidance for Omni workflows.\n\n---\n\n## Official References\n\n- <https://cloud.google.com/alloydb/docs/omni>\n- <https://docs.cloud.google.com/alloydb/omni/containers/17.5.0/docs/connect-ide-using-mcp-toolbox>\n- <https://github.com/gemini-cli-extensions/alloydb-omni>\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- [PostgreSQL / psql](https://github.com/cofin/flow/blob/main/templates/styleguides/databases/postgres_psql.md)\n- Keep this skill focused on tool-specific workflows, edge cases, and integration details.","tags":["alloydb","omni","flow","cofin","agent-skills","ai-agents","beads","claude-code","codex","cursor","developer-tools","gemini-cli"],"capabilities":["skill","source-cofin","skill-alloydb-omni","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/alloydb-omni","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 (12,450 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:34.855Z","embedding":null,"createdAt":"2026-04-23T13:03:57.274Z","updatedAt":"2026-05-18T19:07:34.855Z","lastSeenAt":"2026-05-18T19:07:34.855Z","tsv":"'/01-extensions.sql':728 '/alloydb/docs/omni':1551 '/alloydb/omni/containers/17.5.0/docs/connect-ide-using-mcp-toolbox':1554 '/backup=true':814 '/cofin/flow/blob/main/templates/styleguides/databases/postgres_psql.md)':1583 '/cofin/flow/blob/main/templates/styleguides/general.md)':1578 '/docker-entrypoint-initdb.d':324,698 '/gemini-cli-extensions/alloydb-omni':1260,1557 '/init-scripts':322,697 '/multi-cloud':163 '/v1':758 '/var/lib/postgresql/data':309,696 '1':85,202,241,406 '10':1137 '2':98,210,270,286,416,710 '20':1059 '25':343,1138 '256m':705 '256mb':290,534,639 '3':108,218,299,432 '4':227,331 '4g':712 '4gb':288,1135 '5':364 '5432':371,655,656,690,691 '64mb':537 '75':350 'acceler':1110 'across':479 'activ':1065,1070,1074,1237,1521 'ad':1176 'add':890,1145,1161 'admin':396 'agent':101,133,418,481,1356 'agents/skills':1415 'alloc':1136 'alloydb':2,7,28,30,33,40,74,87,156,220,372,376,413,428,586,662,668,675,694,715,747,856,892,905,922,992,1221,1225,1268,1285,1289,1293,1297,1301,1305,1373,1395,1402,1408 'alloydb-data':693,714 'alloydb-omni':1,412,674,904,921,1267,1394 'alloydb-omni-optim':1401 'alloydbomni':165,899 'alloydbomni.dbadmin.goog':813 'alloydbomni.dbadmin.goog/backup=true':812 'alreadi':1435 'alter':355,934,1130 'alway':303,487,507 'analysi':1520 'analyt':386,1111 'analyz':1000,1064 'annot':808,1492 'anonym':630 'anywher':43 'auto':1262 'auto-upd':1261 'automat':765,777 'autovacuum':1098,1527 'avail':466,967,1424 'availabilityoptions.standby':768 'back':438,567,956,1426 'backup':115,583,807,819,1491 'bare':167,266,874 'bare-met':265,873 'base':96,281,855 'baselin':1560 'bash':1254,1283,1391 'behavior':29 'bind':515 'bloat':1036,1519 'buffer':342,1001,1013 'cach':348,1114,1189 'candid':1061 'case':142,1594 'caus':544 'center':50 'chang':596,931 'check':1169 'checkpoint':607 'choos':242 'ci':148,251,592 'class':863,1020 'clean':405 'cli':408,1207,1231,1313 'client':103 'cloud':53 'cloud.google.com':1550 'cloud.google.com/alloydb/docs/omni':1549 'code':1448 'column':1116,1144,1165 'column-level':1164 'columnar':20,69,222,380,722,1104,1108,1159,1183,1194,1524 'compar':1170 'compos':207,232,659 'compress':1119 'concurr':1035 'config':361,431,1266,1376 'configur':13,271,340,610,842,982,1310,1341,1468,1506 'connect':99,134,211,365,368,1101,1216,1278,1328,1528 'consum':499 'consumpt':1202 'contain':14,60,153,204,272,318,345,489,497,612,644,672,878,1460 'container/node':1141 'control':800 'correct':653 'cost':1010 'cost/benefit':1168 'could':545 'cpu':617 'cpus':276,287,495,709 'crd':755,839,1482 'creat':188,729,735 'current':401 'custom':753,1181,1381 'd':209 'data':49,234,313,513,570,620,695,716,805,901,909 'data-dir':908 'databas':107,111,186,1295,1339 'databasevers':822 'db':185,684 'dbcluster':752,786,810,1481 'dbclusters.alloydbomni.dbadmin.goog':757 'dbclusters.alloydbomni.dbadmin.goog/v1':756 'dead':1045,1055 'dead-tupl':1054 'dedic':411,1229,1250 'default':197,536,654,1347 'degrad':404 'deliv':609 'deploy':15,86,126,137,243,261,469,706,864,1220,1458,1461,1498 'descript':1407 'destabil':504 'detail':1445,1597 'detect':1037,1518 'dev':200 'develop':25,147,249,285,367,664,1466 'devsecret':682 'diagnost':116,988,990,1096,1434,1512 'dir':910,1414 'directori':621,902 'distinct':83 'distribut':57 'docker':90,143,206,231,561,658 'docker-compose.yml':666 'docker/podman':246,1462 'docker/podman/kubernetes/rpm':440,1430 'docs.cloud.google.com':1553 'docs.cloud.google.com/alloydb/omni/containers/17.5.0/docs/connect-ide-using-mcp-toolbox':1552 'document':1436,1454 'download':37 'dump':575 'duplic':1570 'e.g':1129 'easier':525 'edg':1593 'edit':38 'effect':347 'embed':225 'enabl':720,764,769,919 'endpoint':1365 'engin':21,70,223,381,723,1105,1109,1160,1525 'env':1324,1537 'environ':172,677 'error':551 'event':1077 'exampl':176,657,845,1449 'exist':733,739 'explain':999,1171 'explicit':614 'export':1284,1288,1292,1296,1300,1304 'extens':415,434,461,730,736,954,966,1232,1251,1256,1265,1419,1535 'failov':763,1485 'failur':780 'fall':437,1425 'fallback':1247,1542 'fals':1026 'famili':869,1502 'featur':221,377 'file':362,1325 'filter':1071 'find':1028 'first':190,327,862,912 'first-class':861 'first-run':326 'fit':883 'fix':1331 'focus':1587 'follow':1453 'format':1002,1123 'frequenc':1151,1155 'full':838,977 'g':1193 'gcp':12,260,585 'gemini':407,457,460,1206,1230,1234,1255,1264,1282,1312,1336,1355,1418,1530 'gemini-on':456 'general':1574 'generat':1388,1399 'generic':1241,1565 'github.com':1259,1556,1577,1582 'github.com/cofin/flow/blob/main/templates/styleguides/databases/postgres_psql.md)':1581 'github.com/cofin/flow/blob/main/templates/styleguides/general.md)':1576 'github.com/gemini-cli-extensions/alloydb-omni':1258,1555 'give':124 'global':1351 'googl':740,1158 'google/alloydbomni':144,150,593,670 'google_columnar_engine.memory':1127,1133 'guardrail':486 'guid':1272,1366,1446 'guidanc':125,445,472,1311,1532,1543 'h':214 'ha':762,841,1484 'health':846,964,1493 'high':1009,1149 'high-cost':1008 'hit':1014,1204 'host':97,389,402,501,870,1238,1287 'identifi':1005,1080 'imag':61,140,589,669,825 'immedi':818 'import':1309 'in-memori':1120 'includ':63,378 'index':1017,1023,1029,1443,1517 'indisvalid':1025 'individu':1163 'init':726,907 'init-script':725 'initi':179,717,900 'inspect':1190 'instal':19,858,887,898,978,1257,1503,1536 'integr':390,742,1596 'invalid':1016,1516 'invent':1379 'join':1021 'journalctl':927 'keep':119,1584 'key':171,759,884,989 'kubectl':784 'kubernet':16,92,155,254,563,743,749,1463,1478 'language/framework':1566 'latest':145,151,594,671 'layer':77,84,121,1217 'least':533,638 'level':1166 'lifecycl':113,745,760,852,885,1102,1505,1529 'like':584 'limit':491,618,708,1125,1128,1134 'live':1049 'load':1319 'local':9,24,44,146,226,248,388,661,961,1465 'localhost':215,370 'lock':1081 'long':1085 'long-run':1084 'look':1179 'loss':806 'lost':315 'low':1153 'lowest':395 'lowest-admin':394 'machin':45,506 'make':453 'manag':73,527,560,582,751,914,981,1103 'manual':1429 'map':651 'mcp':420,423,436,1209,1364,1369,1421,1531,1540 'mem':353 'memori':275,292,346,493,549,615,711,1122,1124,1142,1195,1201 'memory/cpu':1470 'merg':788 'metal':168,267,875 'method':138,139,244 'ml':224,741 'monitor':847,1067,1494,1523 'mount':321,360,516 'must':476 'myapp':192,685 'mysecretpassword':183 'n':1044,1048 'name':196,237,306,510,519,624,673,1400 'need':27,1031,1361 'neither':1417 'network':1474 'never':552 'newer':1318 'node':1011,1185 'non':259,337,1354 'non-gcp':258 'non-gemini':1353 'non-trivi':336 'offici':427,1547 'omni':3,8,31,34,88,157,373,414,429,663,676,748,857,893,906,923,993,1222,1226,1269,1286,1290,1294,1298,1302,1306,1374,1396,1403,1409,1545 'on-prem':160 'on-premis':46 'oper':17,76,109,158,255,471,744,750,761,773,828,886,1464,1479,1509 'optim':1404,1406,1410 'option':320 'orchestr':829 'order':391 'output':1172,1413 'output-dir':1412 'outsid':11 'overrid':1477 'overview':32 'p':789 'packag':166,889,947 'param':1308 'paramet':334,794,932,1476 'password':178,181,555,641,679,681,1303 'patch':785,796 'path':398,462,865 'per':1199 'per-rel':1198 'perform':987,1511 'persist':235,302,514,1472 'pg':574,1019,1022,1039,1068 'pin':587 'place':943 'plain':483 'plan':997,1515 'plus':441 'podman':91,149 'point':297 'popul':1167 'port':650,689,1291 'portabl':523 'possibl':1327 'postgr':177,184,193,198,199,217,554,640,678,680,683,686,688 'postgresql':333,542,929,1242,1475,1534,1579 'prebuilt':430,1375,1393 'prefer':464,1227,1387 'prem':162 'premis':48 'primari':779 'primaryspec':771 'primaryspec.parameters':797 'principl':1575 'procedur':850,1496 'process':67 'product':159,257,557,994 'project':1385 'promot':774 'provid':54 'psql':213,442,1433,1580 'purpos':175 'queri':66,387,996,1018,1038,1066,1087,1097,1112,1307,1514,1522 'quick':135 'ram':289 'rate':1205 'rather':1377 'ratio':1015,1051,1057 'read':781,1150,1486 'readi':1093 'readpoolspec':791 'ready-to-run':1092 'reason':295 'rebuild':1032 'recommend':1143 'reduc':1569 'refer':136,450,1441,1442,1450,1456,1548 'references/config.md':1469 'references/gemini-mcp.md':1533 'references/kubernetes-operator.md':834,835,1480 'references/performance.md':1089,1090,1513 'references/rpm.md':973,974,1499 'references/setup.md':1459 'regular':572 'reindex':1034 'relat':1200 'replac':1186 'replica':782,792,1487 'repo':895 'repositori':888 'reproduc':605 'requir':182,1277 'resiz':547 'resourc':273,490,502,707,754 'restart':699,802,832,925,938,948,1335 'reusabl':1384 'rhel':154,868,1501 'rhel-famili':867,1500 'rhel/centos':170 'right':882 'roll':793,801,831,1489 'rootless':152 'rout':1243 'rpm':18,95,164,263,851,854,946,1497 'rpm-base':94,853 'rule':1567 'run':6,42,106,328,598,903,1086,1095 'scale':783,844,1488 'scan':1007,1182,1184,1188 'scope':1270,1345 'script':718,727 'secret':559,562,564 'section':1212 'see':833,972,1088 'segment':550 'select':1115,1157,1191 'separ':122 'seq':1187 'sequenti':1006 'server':268 'servic':75,667,916,940,950,963,980 'service-manag':979 'session':1333 'set':274,300,357,488,528,619,635,643,930,936,1126,1132,1329 'setup':1382,1457 'share':291,341,548,1363,1558,1562 'shm':279,529,632,703 'shm-size':278 'show':1197 'size':280,349,530,633,704 'skill':80,448,455,475,1390,1398,1411,1439,1573,1586 'skill-alloydb-omni' 'skills-gener':1397 'small':540 'snapshot':578 'source-cofin' 'spec':790,840,1483 'specif':601,1591 'sql':329,444,724 'standbi':766,776 'start':191,203,296,647,913,1281,1334 'stat':1040,1069 'state':955,1073 'status':924 'step':240,269,298,330,363 'still':477 'stop':319,702 'storag':962 'styleguid':1559,1563 'superus':180,195 'support':374,397,421 'switch':1338 'system':356,876,935,1131 'systemctl':918 'systemd':1504 'tabl':1042,1052,1147,1178 'tag':590,603,826 'tear':228 'termin':484 'test':22,385 'text':1003 'thing':131 'three':82 'tmpfs':628 'tool':1590 'tool-specif':1589 'toolbox':424,1210,1370,1392,1422,1541 'toolset':1405 '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' 'total':1140 'treat':1340 'trigger':798,816 'trivial':338 'tune':114,332,928,1099,1106,1471,1526 'tup':1046,1050 'tupl':1056 'type':787,1078 'u':216 'unavail':1253 'unless':701 'unless-stop':700 'updat':795,821,944,1154,1263,1490 'upgrad':118,820,849,941,971,985,1495,1507 'usag':1196 'use':4,78,141,219,245,252,262,304,392,409,422,508,553,558,573,599,622,917,998,1239,1371,1561 'user':194,687,1041,1274,1299,1350,1360 'user-glob':1349 'v0.6.0':1316 'vacuum':1063 'valid':606,959,983,1510 'var':1538 'variabl':173,174,1279,1321 'vault':566 'vector':734 'verifi':611,952,960 'version':602,953 'via':354,369,1156 'vm':169 'vms':871 'volum':238,307,312,511,520,571,577,625,631,692,713,1473 'wait':1076,1082 'wide':1146 'without':310,492,648 'work':352,478,517 'workflow':201,239,485,986,1386,1431,1467,1546,1592 'workload':283,339,995 'workspac':1271,1344,1389 'workspace-scop':1343 'yaml':665,843 'yum':894,897","prices":[{"id":"18cffe19-d174-49f3-9e44-4addd7cb2341","listingId":"53b8b166-d7fa-4662-bf1c-123081b13412","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:57.274Z"}],"sources":[{"listingId":"53b8b166-d7fa-4662-bf1c-123081b13412","source":"github","sourceId":"cofin/flow/alloydb-omni","sourceUrl":"https://github.com/cofin/flow/tree/main/skills/alloydb-omni","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:57.274Z","lastSeenAt":"2026-05-18T19:07:34.855Z"}],"details":{"listingId":"53b8b166-d7fa-4662-bf1c-123081b13412","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cofin","slug":"alloydb-omni","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":"263d89f1905a42596528573391834997164ec035","skill_md_path":"skills/alloydb-omni/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cofin/flow/tree/main/skills/alloydb-omni"},"layout":"multi","source":"github","category":"flow","frontmatter":{"name":"alloydb-omni","description":"Use when running AlloyDB Omni locally or outside GCP, configuring container deployments, Kubernetes operators, RPM installs, columnar engine tests, or local development that needs AlloyDB behavior."},"skills_sh_url":"https://skills.sh/cofin/flow/alloydb-omni"},"updatedAt":"2026-05-18T19:07:34.855Z"}}