{
  "markdown": "# gcp-skills\n\nSkills for running **Google Cloud** without overpaying for it — the parts that are\neasy to get wrong and slow to notice: which resources bill for existing rather than\nworking, why a service with `min-instances = 0` can bill continuously, why identical\nTerraform costs different amounts in two environments, and the query mistakes that\nmake a cost report internally consistent and wrong.\n\nDerived from running deployments. Where a claim was verified by observation —\nbilling-export SKUs reconciled against Cloud Monitoring and the resource APIs —\nthe skill marks it; where the configuration and the bill disagree, both are\nrecorded, because that disagreement is usually the finding.\n\n## Skills\n\n| Skill | Use it for |\n| :--- | :--- |\n| [`gcp-cost-analysis`](skills/gcp-cost-analysis/SKILL.md) | **Measuring.** Where the money actually goes, and how to get a number that survives scrutiny: the BigQuery billing export and its query traps, what the export cannot tell you and which metric fills the gap, standing cost versus usage cost, attribution through labels, and the extrapolation and comparison mistakes that produce confident wrong answers. |\n| [`gcp-cost-cloud-run`](skills/gcp-cost-cloud-run/SKILL.md) | **Diagnosing.** Cloud Run costing more than its traffic explains: the two billing models, why CPU allocation is configured per container but billed per instance, the API that reports it honestly and the one that misleads, why a gcloud-deployed environment silently diverges from a Terraform-deployed one, and what you give up by fixing it. |\n\nThe split is measurement and diagnosis. The analysis skill is what you reach for\nwhen the bill is up and the cause is unknown; the Cloud Run skill is what you\nreach for once the cause is narrowed to a service whose cost has come loose from\nits traffic.\n\n## Why these two first\n\nBoth came out of the same investigation. A production Cloud Run deployment was\nbilling **122 vCPU-hours per week** against roughly **half a vCPU-hour** of actual\nrequest work — a ratio of about 250:1 — while `min-instances` was `0` everywhere\nand the configuration appeared to request the cheap billing model.\n\nThe cause was that CPU allocation in Cloud Run is configured per container but\n**billed per instance**: two sidecars had never been given `cpu_idle`, so the whole\ninstance billed for its full lifetime. The v1 API reports a single service-level\nvalue that hides the divergence, which is why the contradiction looked\nunresolvable from `gcloud run services describe`. A sibling environment on the\nsame Terraform module looked correct only because its deploy path round-trips\nthrough v1 and normalises the setting onto every container — its correct state was\ndrift, and the next authoritative apply would have reverted it.\n\nNothing in that chain is exotic. It is the ordinary shape of cloud cost bugs:\na setting that is silently per-instance, a diagnostic surface that reports the\nwrong layer, and two environments that disagree for reasons invisible in the\nrepository.\n\n## Install\n\nBoth installers read the `skills/` directory at the repo root.\n\n```bash\n# Claude Code (global)\nnpx -y skills add https://github.com/alanblythe/gcp-skills -y --agent claude-code -g\n\n# Project scope instead of global — drop the -g and run from the project directory\nnpx -y skills add https://github.com/alanblythe/gcp-skills -y --agent claude-code\n\n# Antigravity / Gemini CLI\nnpx -y skills add https://github.com/alanblythe/gcp-skills -y --agent antigravity -g\n```\n\nTo use them without installing, point your agent at\n[`skills/gcp-cost-cloud-run/SKILL.md`](skills/gcp-cost-cloud-run/SKILL.md)\ndirectly — each is a single self-contained Markdown file.\n\n## Layout\n\n```\nplugin.json               # Claude Code plugin manifest (duplicated in .claude-plugin/)\n.claude-plugin/plugin.json\ngemini-extension.json     # Antigravity / Gemini extension manifest\nskills/\n  README.md\n  gcp-cost-analysis/\n    SKILL.md              # YAML frontmatter (name, description, metadata) + body\n  gcp-cost-cloud-run/\n```\n\n## Conventions\n\nEach skill follows the same shape:\n\n- **Quick answers** — the questions that bring people here, answered in one line\n  each, with a pointer to the force that explains it.\n- **Forces** — numbered rules with their consequences. `⇒` means the platform\n  gives no choice. These are cited from the rest of the skill so a claim can\n  always be traced to the constraint behind it.\n- **Verified vs documented** — observed behaviour is marked, so a reader can tell\n  a measured claim from a published one. Where they conflict, both are kept.\n\n## License\n\nApache-2.0.\n",
  "bytes": 4608,
  "sha": "12de4cfbc31f7702baf7f4be366292208a1d030c4a1c7ac8f919cf1bcada490c",
  "repo_slug": "alanblythe/gcp-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_alanblythe_gcp_skills_7a5c9624/readme"
}