{"id":"53b8b166-d7fa-4662-bf1c-123081b13412","shortId":"8Hf8TG","kind":"skill","title":"alloydb-omni","tagline":"Auto-activate for alloydb-omni in compose/k8s configs. AlloyDB Omni expertise: run AlloyDB anywhere (local, on-prem, other clouds) with container-based deployment. Produces container-based AlloyDB Omni deployments for local dev and non-GCP environments. Use when: running AlloyDB ","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-04-24T01:03:24.645Z","embedding":null,"createdAt":"2026-04-23T13:03:57.274Z","updatedAt":"2026-04-24T01:03:24.645Z","lastSeenAt":"2026-04-24T01:03:24.645Z","tsv":"'/01-extensions.sql':748 '/alloydb/docs/omni':1571 '/alloydb/omni/containers/17.5.0/docs/connect-ide-using-mcp-toolbox':1574 '/backup=true':834 '/cofin/flow/blob/main/templates/styleguides/databases/postgres_psql.md)':1603 '/cofin/flow/blob/main/templates/styleguides/general.md)':1598 '/docker-entrypoint-initdb.d':344,718 '/gemini-cli-extensions/alloydb-omni':1280,1577 '/init-scripts':342,717 '/multi-cloud':183 '/v1':778 '/var/lib/postgresql/data':329,716 '1':105,222,261,426 '10':1157 '2':118,230,290,306,436,730 '20':1079 '25':363,1158 '256m':725 '256mb':310,554,659 '3':128,238,319,452 '4':247,351 '4g':732 '4gb':308,1155 '5':384 '5432':391,675,676,710,711 '64mb':557 '75':370 'acceler':1130 'across':499 'activ':6,1085,1090,1094,1257,1541 'ad':1196 'add':910,1165,1181 'admin':416 'agent':121,153,438,501,1376 'agents/skills':1435 'alloc':1156 'alloydb':2,9,14,18,35,49,50,53,60,94,107,176,240,392,396,433,448,606,682,688,695,714,735,767,876,912,925,942,1012,1241,1245,1288,1305,1309,1313,1317,1321,1325,1393,1415,1422,1428 'alloydb-data':713,734 'alloydb-omni':1,8,432,694,924,941,1287,1414 'alloydb-omni-optim':1421 'alloydbomni':185,919 'alloydbomni.dbadmin.goog':833 'alloydbomni.dbadmin.goog/backup=true':832 'alreadi':1455 'alter':375,954,1150 'alway':323,507,527 'analysi':1540 'analyt':406,1131 'analyz':1020,1084 'annot':828,1512 'anonym':650 'anywher':19,63 'auto':5,1282 'auto-activ':4 'auto-upd':1281 'automat':785,797 'autovacuum':1118,1547 'avail':486,987,1444 'availabilityoptions.standby':788 'back':458,587,976,1446 'backup':135,603,827,839,1511 'bare':187,286,894 'bare-met':285,893 'base':29,34,116,301,875 'baselin':1580 'bash':1274,1303,1411 'bind':535 'bloat':1056,1539 'buffer':362,1021,1033 'cach':368,1134,1209 'candid':1081 'case':162,1614 'caus':564 'center':70 'chang':616,951 'check':1189 'checkpoint':627 'choos':262 'ci':168,271,612 'class':883,1040 'clean':425 'cli':428,1227,1251,1333 'client':123 'cloud':25,73 'cloud.google.com':1570 'cloud.google.com/alloydb/docs/omni':1569 'code':1468 'column':1136,1164,1185 'column-level':1184 'columnar':89,242,400,742,1124,1128,1179,1203,1214,1544 'compar':1190 'compos':227,252,679 'compose/k8s':12 'compress':1139 'concurr':1055 'config':13,381,451,1286,1396 'configur':291,360,630,862,1002,1330,1361,1488,1526 'connect':119,154,231,385,388,1121,1236,1298,1348,1548 'consum':519 'consumpt':1222 'contain':28,33,80,173,224,292,338,365,509,517,632,664,692,898,1480 'container-bas':27,32 'container/node':1161 'control':820 'correct':673 'cost':1030 'cost/benefit':1188 'could':565 'cpu':637 'cpus':296,307,515,729 'crd':775,859,1502 'creat':208,749,755 'current':421 'custom':773,1201,1401 'd':229 'data':69,254,333,533,590,640,715,736,825,921,929 'data-dir':928 'databas':127,131,206,1315,1359 'databasevers':842 'db':205,704 'dbcluster':772,806,830,1501 'dbclusters.alloydbomni.dbadmin.goog':777 'dbclusters.alloydbomni.dbadmin.goog/v1':776 'dead':1065,1075 'dead-tupl':1074 'dedic':431,1249,1270 'default':217,556,674,1367 'degrad':424 'deliv':629 'deploy':30,37,106,146,157,263,281,489,726,884,1240,1478,1481,1518 'descript':1427 'destabil':524 'detail':1465,1617 'detect':1057,1538 'dev':40,220 'develop':167,269,305,387,684,1486 'devsecret':702 'diagnost':136,1008,1010,1116,1454,1532 'dir':930,1434 'directori':641,922 'distinct':103 'distribut':77 'docker':110,163,226,251,581,678 'docker-compose.yml':686 'docker/podman':266,1482 'docker/podman/kubernetes/rpm':460,1450 'docs.cloud.google.com':1573 'docs.cloud.google.com/alloydb/omni/containers/17.5.0/docs/connect-ide-using-mcp-toolbox':1572 'document':1456,1474 'download':57 'dump':595 'duplic':1590 'e.g':1149 'easier':545 'edg':1613 'edit':58 'effect':367 'embed':245 'enabl':740,784,789,939 'endpoint':1385 'engin':90,243,401,743,1125,1129,1180,1545 'env':1344,1557 'environ':45,192,697 'error':571 'event':1097 'exampl':196,677,865,1469 'exist':753,759 'expertis':16 'explain':1019,1191 'explicit':634 'export':1304,1308,1312,1316,1320,1324 'extens':435,454,481,750,756,974,986,1252,1271,1276,1285,1439,1555 'failov':783,1505 'failur':800 'fall':457,1445 'fallback':1267,1562 'fals':1046 'famili':889,1522 'featur':241,397 'file':382,1345 'filter':1091 'find':1048 'first':210,347,882,932 'first-class':881 'first-run':346 'fit':903 'fix':1351 'focus':1607 'follow':1473 'format':1022,1143 'frequenc':1171,1175 'full':858,997 'g':1213 'gcp':44,280,605 'gemini':427,477,480,1226,1250,1254,1275,1284,1302,1332,1356,1375,1438,1550 'gemini-on':476 'general':1594 'generat':1408,1419 'generic':1261,1585 'github.com':1279,1576,1597,1602 'github.com/cofin/flow/blob/main/templates/styleguides/databases/postgres_psql.md)':1601 'github.com/cofin/flow/blob/main/templates/styleguides/general.md)':1596 'github.com/gemini-cli-extensions/alloydb-omni':1278,1575 'give':144 'global':1371 'googl':760,1178 'google/alloydbomni':164,170,613,690 'google_columnar_engine.memory':1147,1153 'guardrail':506 'guid':1292,1386,1466 'guidanc':145,465,492,1331,1552,1563 'h':234 'ha':782,861,1504 'health':866,984,1513 'high':1029,1169 'high-cost':1028 'hit':1034,1224 'host':117,409,422,521,890,1258,1307 'identifi':1025,1100 'imag':81,160,609,689,845 'immedi':838 'import':1329 'in-memori':1140 'includ':83,398 'index':1037,1043,1049,1463,1537 'indisvalid':1045 'individu':1183 'init':746,927 'init-script':745 'initi':199,737,920 'inspect':1210 'instal':878,907,918,998,1277,1523,1556 'integr':410,762,1616 'invalid':1036,1536 'invent':1399 'join':1041 'journalctl':947 'keep':139,1604 'key':191,779,904,1009 'kubectl':804 'kubernet':112,175,274,583,763,769,1483,1498 'language/framework':1586 'latest':165,171,614,691 'layer':97,104,141,1237 'least':553,658 'level':1186 'lifecycl':133,765,780,872,905,1122,1525,1549 'like':604 'limit':511,638,728,1145,1148,1154 'live':1069 'load':1339 'local':20,39,64,166,246,268,408,681,981,1485 'localhost':235,390 'lock':1101 'long':1105 'long-run':1104 'look':1199 'loss':826 'lost':335 'low':1173 'lowest':415 'lowest-admin':414 'machin':65,526 'make':473 'manag':93,547,580,602,771,934,1001,1123 'manual':1449 'map':671 'mcp':440,443,456,1229,1384,1389,1441,1551,1560 'mem':373 'memori':295,312,366,513,569,635,731,1142,1144,1162,1215,1221 'memory/cpu':1490 'merg':808 'metal':188,287,895 'method':158,159,264 'ml':244,761 'monitor':867,1087,1514,1543 'mount':341,380,536 'must':496 'myapp':212,705 'mysecretpassword':203 'n':1064,1068 'name':216,257,326,530,539,644,693,1420 'need':1051,1381 'neither':1437 'network':1494 'never':572 'newer':1338 'node':1031,1205 'non':43,279,357,1374 'non-gcp':42,278 'non-gemini':1373 'non-trivi':356 'offici':447,1567 'omni':3,10,15,36,51,54,108,177,393,434,449,683,696,768,877,913,926,943,1013,1242,1246,1289,1306,1310,1314,1318,1322,1326,1394,1416,1423,1429,1565 'on-prem':21,180 'on-premis':66 'oper':96,129,178,275,491,764,770,781,793,848,906,1484,1499,1529 'optim':1424,1426,1430 'option':340 'orchestr':849 'order':411 'output':1192,1433 'output-dir':1432 'overrid':1497 'overview':52 'p':809 'packag':186,909,967 'param':1328 'paramet':354,814,952,1496 'password':198,201,575,661,699,701,1323 'patch':805,816 'path':418,482,885 'per':1219 'per-rel':1218 'perform':1007,1531 'persist':255,322,534,1492 'pg':594,1039,1042,1059,1088 'pin':607 'place':963 'plain':503 'plan':1017,1535 'plus':461 'podman':111,169 'point':317 'popul':1187 'port':670,709,1311 'portabl':543 'possibl':1347 'postgr':197,204,213,218,219,237,574,660,698,700,703,706,708 'postgresql':353,562,949,1262,1495,1554,1599 'prebuilt':450,1395,1413 'prefer':484,1247,1407 'prem':23,182 'premis':68 'primari':799 'primaryspec':791 'primaryspec.parameters':817 'principl':1595 'procedur':870,1516 'process':87 'produc':31 'product':179,277,577,1014 'project':1405 'promot':794 'provid':74 'psql':233,462,1453,1600 'purpos':195 'queri':86,407,1016,1038,1058,1086,1107,1117,1132,1327,1534,1542 'quick':155 'ram':309 'rate':1225 'rather':1397 'ratio':1035,1071,1077 'read':801,1170,1506 'readi':1113 'readpoolspec':811 'ready-to-run':1112 'reason':315 'rebuild':1052 'recommend':1163 'reduc':1589 'refer':156,470,1461,1462,1470,1476,1568 'references/config.md':1489 'references/gemini-mcp.md':1553 'references/kubernetes-operator.md':854,855,1500 'references/performance.md':1109,1110,1533 'references/rpm.md':993,994,1519 'references/setup.md':1479 'regular':592 'reindex':1054 'relat':1220 'replac':1206 'replica':802,812,1507 'repo':915 'repositori':908 'reproduc':625 'requir':202,1297 'resiz':567 'resourc':293,510,522,727,774 'restart':719,822,852,945,958,968,1355 'reusabl':1404 'rhel':174,888,1521 'rhel-famili':887,1520 'rhel/centos':190 'right':902 'roll':813,821,851,1509 'rootless':172 'rout':1263 'rpm':115,184,283,871,874,966,1517 'rpm-base':114,873 'rule':1587 'run':17,48,62,126,348,618,923,1106,1115 'scale':803,864,1508 'scan':1027,1202,1204,1208 'scope':1290,1365 'script':738,747 'secret':579,582,584 'section':1232 'see':853,992,1108 'segment':570 'select':1135,1177,1211 'separ':142 'seq':1207 'sequenti':1026 'server':288 'servic':95,687,936,960,970,983,1000 'service-manag':999 'session':1353 'set':294,320,377,508,548,639,655,663,950,956,1146,1152,1349 'setup':1402,1477 'share':311,361,568,1383,1578,1582 'shm':299,549,652,723 'shm-size':298 'show':1217 'size':300,369,550,653,724 'skill':100,468,475,495,1410,1418,1431,1459,1593,1606 'skill-alloydb-omni' 'skills-gener':1417 'small':560 'snapshot':598 'source-cofin' 'spec':810,860,1503 'specif':621,1611 'sql':349,464,744 'standbi':786,796 'start':211,223,316,667,933,1301,1354 'stat':1060,1089 'state':975,1093 'status':944 'step':260,289,318,350,383 'still':497 'stop':339,722 'storag':982 'styleguid':1579,1583 'superus':200,215 'support':394,417,441 'switch':1358 'system':376,896,955,1151 'systemctl':938 'systemd':1524 'tabl':1062,1072,1167,1198 'tag':610,623,846 'tear':248 'termin':504 'test':405 'text':1023 'thing':151 'three':102 'tmpfs':648 'tool':1610 'tool-specif':1609 'toolbox':444,1230,1390,1412,1442,1561 'toolset':1425 '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':1160 'treat':1360 'trigger':818,836 'trivial':358 'tune':134,352,948,1119,1126,1491,1546 'tup':1066,1070 'tupl':1076 'type':807,1098 'u':236 'unavail':1273 'unless':721 'unless-stop':720 'updat':815,841,964,1174,1283,1510 'upgrad':138,840,869,961,991,1005,1515,1527 'usag':1216 'use':46,98,161,239,265,272,282,324,412,429,442,528,573,578,593,619,642,937,1018,1259,1391,1581 'user':214,707,1061,1294,1319,1370,1380 'user-glob':1369 'v0.6.0':1336 'vacuum':1083 'valid':626,979,1003,1530 'var':1558 'variabl':193,194,1299,1341 'vault':586 'vector':754 'verifi':631,972,980 'version':622,973 'via':374,389,1176 'vm':189 'vms':891 'volum':258,327,332,531,540,591,597,645,651,712,733,1493 'wait':1096,1102 'wide':1166 'without':330,512,668 'work':372,498,537 'workflow':221,259,505,1006,1406,1451,1487,1566,1612 'workload':303,359,1015 'workspac':1291,1364,1409 'workspace-scop':1363 'yaml':685,863 'yum':914,917","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-04-24T01:03:24.645Z"}],"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-19T23:22:27Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"69c57d07c7ee527a6a15eb4833a14dfe23c1a562","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":"Auto-activate for alloydb-omni in compose/k8s configs. AlloyDB Omni expertise: run AlloyDB anywhere (local, on-prem, other clouds) with container-based deployment. Produces container-based AlloyDB Omni deployments for local dev and non-GCP environments. Use when: running AlloyDB locally for development, deploying Omni containers, configuring Kubernetes operators, or testing AlloyDB features without GCP. Not for GCP-managed AlloyDB (see alloydb) or vanilla PostgreSQL."},"skills_sh_url":"https://skills.sh/cofin/flow/alloydb-omni"},"updatedAt":"2026-04-24T01:03:24.645Z"}}