/gke-compute-classes
Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do
$ npx -y skills add google/skills --skill gke-compute-classes --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/gke-compute-classes
Context preview
The summary Claude sees to decide when to auto-load this skill.
Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do
SKILL.md
gke-compute-classes.SKILL.mdname: gke-compute-classes
description: >-
Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do not use for cluster-level Node Auto Provisioning configuration or general GKE cluster creation.
metadata:
category: Containers
<!-- disableFinding(LINE_OVER_80) -->
GKE ComputeClasses
Guidance on configuring, optimizing, and troubleshooting GKE ComputeClasses.
When to Use
- **Cost optimization:** Spot VMs with on-demand fallback.
- **GPU/TPU workloads:** Target specific accelerators (e.g., L4, H100, v5p).
- **Performance tuning:** Select specific machine families (c3, c4, n4).
- **Zone targeting:** Colocate workloads with zonal resources.
--------------------------------------------------------------------------------
Engagement Rules: Generalized First, Refine Later
ComputeClasses depend on zone availability, CUDs, and workload constraints. **Do not block the user's initial request.** If asked for YAML/recommendations:
1. **Provide Generalized Answer Immediately:** Fulfill request using best practices and placeholders (`<YOUR-ZONE-HERE>`).
- **CRITICAL CUD RULE:** You MUST state that the provided machine families
(e.g., N4, C4) are generic best-practice examples. You MUST explicitly state that the final choice of machine family should be aligned with the user's existing Committed Use Discounts (CUDs) or Reservations.
- **YAML REQUIREMENT:** Any generated YAML template MUST include a comment
near the `machineFamily` field: `# IMPORTANT: Align machineFamily with your existing CUDs/Reservations`.
- **MUST label initial YAML as `EXAMPLE TEMPLATE - DO NOT DEPLOY`.**
- **STRICT SCHEMA RULE:** NEVER hallucinate fields. Do NOT use
`spec.description`, `gvnic`, `transparentHugepageEnabled`, or `shutdownGracePeriodSeconds`. Use `bootDiskSize` (NOT `bootDiskSizeGb`).
- **YAML FORMATTING RULE:** NEVER quote integer or boolean values (e.g.,
use `bootDiskSize: 50`, not `bootDiskSize: "50"`). `imageType` MUST be lowercase.
- **CRITICAL AI/ML RULE:** DO NOT recommend Spot instances as the primary
priority for AI/ML Inference, *even if the workload is stateless*. Accelerator node startup latency is severe. The correct priority is: `Reservations -> On-Demand -> DWS FlexStart -> Spot`.
- **CRITICAL PROVISIONING RULE:** Do NOT confuse node pool auto-creation
with cluster-level Node Auto Provisioning. Starting with GKE `1.33.3-gke.1136000`, `nodePoolAutoCreation.enabled: true` in the ComputeClass achieves automatic node pools scoped directly to the ComputeClass. **It does NOT require turning on Node Auto Provisioning at the cluster level.**
- **CRITICAL TAINT RULE:** The ONLY redundant taint is re-adding
`cloud.google.com/compute-class` on **auto-created** pools — node pool auto-creation already applies AND auto-tolerates that key, so duplicating it breaks scheduling → REMOVE it (don't add a toleration). This is NOT "never add taints": an intentional **dedication/isolation** taint (e.g. `dedicated=ml:NoSchedule`) in `nodePoolConfig.taints` is valid — it keeps other workloads off, and the intended workloads need a matching toleration (normal K8s contract). Judge intent before deleting; only the compute-class key is redundant. **Manual pools STILL require `cloud.google.com/compute-class=<NAME>` as label AND taint to bind to the ComputeClass — never remove that.** **Schema limit:** a `nodePoolConfig.taints` key may NOT contain the reserved `kubernetes.io` substring (GKE Warden rejects it) — so the Cluster-Autoscaler-ignored prefixes (`startup-taint.`/`status-taint.cluster-autoscaler.kubernetes.io/`) cannot be set via a ComputeClass; those are node-pool-level taints.
- **CRITICAL GPU-TAINT RULE:** GKE auto-taints GPU nodes
`nvidia.com/gpu:NoSchedule` — this is separate from the `cloud.google.com/compute-class` auto-toleration and is NOT covered by it. A GPU Pod stuck `Pending` / `noScaleUp` is almost always missing the toleration. Add to the PodSpec: `tolerations: [{key: nvidia.com/gpu, operator: Exists}]`.
- **CRITICAL SPOT-TAINT RULE:** GKE auto-taints Spot nodes with
`cloud.google.com/gke-spot=true:NoSchedule`. Pods targeting a Spot priority tier *must* tolerate this taint, or they will stay `Pending` / `noScaleUp` with a scheduling block. Tell the user to add the matching toleration to their PodSpec: `tolerations: [{key: cloud.google.com/gke-spot, operator: Equal, value: "true", effect: NoSchedule}]`.
- **CRITICAL PRIORITYSCORE RULE:** A shared `priorityScore` makes one
tie-break tier (lowest unit cost wins), but applies to a MAXIMUM of 3 rules. NEVER emit more than 3 priorities at the same score; if the user asks for more (e.g. 5 families "all cheapest-available"), cap at 3 and say why.
- **CRITICAL STATEFUL RULE:** For PV workloads, do NOT mix Gen 2 (PD) and
Gen 4 (Hyperdisk) in `priorities[]` (attach failures). **Exception (GKE 1.35.3-gke.1290000+):** back data PVs with the built-in **`dynamic-rwo`** StorageClass (`type: dynamic` + `use-allowed-disk-topology: "true"`) — makes the autoscaler disk-topology-aware (scales only compatible nodes, skips incompatible-gen priorities), so mixing is safe. Default for stateful PV workloads; asset `dynamic-rwo-storageclass.yaml`.
- **CRITICAL POD-PRIVILEGE RULE:** For
`privileged`/`hostNetwork`/`hostPID`
Read more
name: gke-compute-classes description: >- Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do not use for cluster-level Node Auto Provisioning configuration or general GKE cluster creation. metadata: category: Containers
<!-- disableFinding(LINE_OVER_80) -->
GKE ComputeClasses
Guidance on configuring, optimizing, and troubleshooting GKE ComputeClasses.
When to Use
- **Cost optimization:** Spot VMs with on-demand fallback.
- **GPU/TPU workloads:** Target specific accelerators (e.g., L4, H100, v5p).
- **Performance tuning:** Select specific machine families (c3, c4, n4).
- **Zone targeting:** Colocate workloads with zonal resources.
--------------------------------------------------------------------------------
Engagement Rules: Generalized First, Refine Later
ComputeClasses depend on zone availability, CUDs, and workload constraints. **Do not block the user's initial request.** If asked for YAML/recommendations:
1. **Provide Generalized Answer Immediately:** Fulfill request using best practices and placeholders (`<YOUR-ZONE-HERE>`).
- **CRITICAL CUD RULE:** You MUST state that the provided machine families
(e.g., N4, C4) are generic best-practice examples. You MUST explicitly state that the final choice of machine family should be aligned with the user's existing Committed Use Discounts (CUDs) or Reservations.
- **YAML REQUIREMENT:** Any generated YAML template MUST include a comment
near the `machineFamily` field: `# IMPORTANT: Align machineFamily with your existing CUDs/Reservations`.
- **MUST label initial YAML as `EXAMPLE TEMPLATE - DO NOT DEPLOY`.**
- **STRICT SCHEMA RULE:** NEVER hallucinate fields. Do NOT use
`spec.description`, `gvnic`, `transparentHugepageEnabled`, or `shutdownGracePeriodSeconds`. Use `bootDiskSize` (NOT `bootDiskSizeGb`).
- **YAML FORMATTING RULE:** NEVER quote integer or boolean values (e.g.,
use `bootDiskSize: 50`, not `bootDiskSize: "50"`). `imageType` MUST be lowercase.
- **CRITICAL AI/ML RULE:** DO NOT recommend Spot instances as the primary
priority for AI/ML Inference, *even if the workload is stateless*. Accelerator node startup latency is severe. The correct priority is: `Reservations -> On-Demand -> DWS FlexStart -> Spot`.
- **CRITICAL PROVISIONING RULE:** Do NOT confuse node pool auto-creation
with cluster-level Node Auto Provisioning. Starting with GKE `1.33.3-gke.1136000`, `nodePoolAutoCreation.enabled: true` in the ComputeClass achieves automatic node pools scoped directly to the ComputeClass. **It does NOT require turning on Node Auto Provisioning at the cluster level.**
- **CRITICAL TAINT RULE:** The ONLY redundant taint is re-adding
`cloud.google.com/compute-class` on **auto-created** pools — node pool auto-creation already applies AND auto-tolerates that key, so duplicating it breaks scheduling → REMOVE it (don't add a toleration). This is NOT "never add taints": an intentional **dedication/isolation** taint (e.g. `dedicated=ml:NoSchedule`) in `nodePoolConfig.taints` is valid — it keeps other workloads off, and the intended workloads need a matching toleration (normal K8s contract). Judge intent before deleting; only the compute-class key is redundant. **Manual pools STILL require `cloud.google.com/compute-class=<NAME>` as label AND taint to bind to the ComputeClass — never remove that.** **Schema limit:** a `nodePoolConfig.taints` key may NOT contain the reserved `kubernetes.io` substring (GKE Warden rejects it) — so the Cluster-Autoscaler-ignored prefixes (`startup-taint.`/`status-taint.cluster-autoscaler.kubernetes.io/`) cannot be set via a ComputeClass; those are node-pool-level taints.
- **CRITICAL GPU-TAINT RULE:** GKE auto-taints GPU nodes
`nvidia.com/gpu:NoSchedule` — this is separate from the `cloud.google.com/compute-class` auto-toleration and is NOT covered by it. A GPU Pod stuck `Pending` / `noScaleUp` is almost always missing the toleration. Add to the PodSpec: `tolerations: [{key: nvidia.com/gpu, operator: Exists}]`.
- **CRITICAL SPOT-TAINT RULE:** GKE auto-taints Spot nodes with
`cloud.google.com/gke-spot=true:NoSchedule`. Pods targeting a Spot priority tier *must* tolerate this taint, or they will stay `Pending` / `noScaleUp` with a scheduling block. Tell the user to add the matching toleration to their PodSpec: `tolerations: [{key: cloud.google.com/gke-spot, operator: Equal, value: "true", effect: NoSchedule}]`.
- **CRITICAL PRIORITYSCORE RULE:** A shared `priorityScore` makes one
tie-break tier (lowest unit cost wins), but applies to a MAXIMUM of 3 rules. NEVER emit more than 3 priorities at the same score; if the user asks for more (e.g. 5 families "all cheapest-available"), cap at 3 and say why.
- **CRITICAL STATEFUL RULE:** For PV workloads, do NOT mix Gen 2 (PD) and
Gen 4 (Hyperdisk) in `priorities[]` (attach failures). **Exception (GKE 1.35.3-gke.1290000+):** back data PVs with the built-in **`dynamic-rwo`** StorageClass (`type: dynamic` + `use-allowed-disk-topology: "true"`) — makes the autoscaler disk-topology-aware (scales only compatible nodes, skips incompatible-gen priorities), so mixing is safe. Default for stateful PV workloads; asset `dynamic-rwo-storageclass.yaml`.
- **CRITICAL POD-PRIVILEGE RULE:** For
`privileged`/`hostNetwork`/`hostPID`
This repository contains Agent Skills for Google products and technologies, including Google Cloud. This repository is under active development.
Repo: google/skills
Other skills on google-skills.
- /data-manager-api-audience-ingestion
Guides developers through managing (adding, removing, and clearing) audience members for Google products using the Data Manager API and its associated client libraries. Use this skill when the user wants to upload audience members, remove specific users, or clear/replace an
Open skill - /data-manager-api-event-ingestion
Guides developers through implementing event and conversion ingestion to Google products using the Data Manager API /v1/events/ingest endpoint and its associated client libraries. Use this skill when the user wants to upload offline conversions, enhanced conversions for leads,
Open skill - /data-manager-api-setup
Guides developers through client library installation and authentication setup steps for the Data Manager API. Use this skill when a user is getting started with the Data Manager API and needs to setup their local environment, install the client library, or setup access to the
Open skill - /google-ads-api-account-diagnostics
Diagnoses Google Ads account performance issues such as conversion loss (value or volume), low lead flow/volume, and lost impression share (opportunities) due to ad rank, bids, or budgets. Use when troubleshooting sudden performance drops, analyzing campaign impression share
Open skill - /google-ads-api-mcp-setup
Guides developers through downloading, configuring, and installing the official open-source Google Ads MCP Server. Use this skill when a user wants to connect their AI assistant (such as Gemini, Claude Code, or Cursor) to their Google Ads account to query campaigns or retrieve
Open skill - /google-ads-api-quickstart
Guides developers through Google Ads API quickstart: credential setup, choosing from 6 client libraries/REST, configuring environments, and running a "retrieve campaigns" script. Troubleshoots common setup errors: USER_PERMISSION_DENIED, login_customer_id issues, and
Open skill

