[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-cloud-gke-tpu-metrics-monitoring":3,"mdc-gd1ocj-key":34,"related-org-google-cloud-gke-tpu-metrics-monitoring":969,"related-repo-google-cloud-gke-tpu-metrics-monitoring":1158},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":32,"mdContent":33},"gke-tpu-metrics-monitoring","monitor and troubleshoot GKE TPU workloads","Monitor and troubleshoot GKE TPU workloads using GKE system metrics and PromQL.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"google-cloud","Google Cloud","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgoogle-cloud.png","GoogleCloudPlatform",[13,17,20,23],{"name":14,"slug":15,"type":16},"Monitoring","monitoring","tag",{"name":18,"slug":19,"type":16},"Kubernetes","kubernetes",{"name":21,"slug":22,"type":16},"Metrics","metrics",{"name":9,"slug":8,"type":16},161,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fgke-mcp","2026-07-12T07:39:53.246667",null,78,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":27},[],"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fgke-mcp\u002Ftree\u002FHEAD\u002Fskills\u002Fgke-tpu-metrics-monitoring","---\nname: gke-tpu-metrics-monitoring\ndescription: Monitor and troubleshoot GKE TPU workloads using GKE system metrics and PromQL.\n---\n\n# GKE TPU Metrics Monitoring Guide\n\nThis skill enables the agent to monitor GKE TPU workloads, nodes, and node pools using GKE system metrics. It helps diagnose if workload interruptions or performance issues are caused by underlying infrastructure.\n\n## Step 0: Mandatory Context\n\nTo run these diagnostics, the following context is required:\n\n- `\u003Cproject_id>`: The GCP Project ID.\n- `\u003Ccluster_name>`: The GKE Cluster Name.\n- `\u003Clocation>`: The GKE Cluster Location (region or zone).\n- `\u003Cnode_name>`: (Optional) The name of the specific GKE node.\n- `\u003Cnode_pool_name>`: (Optional) The name of the GKE node pool.\n\n---\n\n## Diagnostic Steps\n\n### Step 1: Verify TPU Runtime Metrics Configuration [Low Risk] [Auto]\n\nBefore analyzing runtime metrics, verify that the workload is configured to export them.\n\n- **Action**: Verify that the Pod specification for the TPU workload includes:\n  - `containerPort: 8431`\n  - JAX version `0.4.14` or later (if using JAX).\n  - GKE version is `1.27.4-gke.900` or later.\n  - GKE System Metrics are enabled on the cluster.\n\n### Step 2: Monitor TPU Runtime Metrics [Low Risk] [Auto]\n\nIf configured correctly, the following metrics are available in Cloud Monitoring (monitored resources `k8s_node` and `k8s_container`):\n\n- **Container Metrics**:\n  - `kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fduty_cycle`: Percentage of time over the past sampling period (60 seconds) during which the TensorCores were actively processing on a TPU chip.\n  - `kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fmemory_used`: Amount of accelerator memory allocated in bytes.\n  - `kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fmemory_total`: Total accelerator memory in bytes.\n- **Node Metrics**:\n  - `kubernetes.io\u002Fnode\u002Faccelerator\u002Fduty_cycle`\n  - `kubernetes.io\u002Fnode\u002Faccelerator\u002Fmemory_used`\n  - `kubernetes.io\u002Fnode\u002Faccelerator\u002Fmemory_total`\n\n### Step 3: Check Node Status Condition [Low Risk] [Auto]\n\nQuery the status condition of GKE nodes (GKE version `1.32.1-gke.1357001` or later).\n\n- **PromQL Query (Check if a specific node is Ready)**:\n  ```promql\n  kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\", cluster_name=\"\u003Ccluster_name>\", node_name=\"\u003Cnode_name>\", condition=\"Ready\", status=\"True\"}\n  ```\n- **PromQL Query (List nodes with non-Ready conditions that are True)**:\n  ```promql\n  kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\", cluster_name=\"\u003Ccluster_name>\", condition!=\"Ready\", status=\"True\"}\n  ```\n- **PromQL Query (List nodes that are NOT Ready)**:\n  ```promql\n  kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\", cluster_name=\"\u003Ccluster_name>\", condition=\"Ready\", status=\"False\"}\n  ```\n- **PromQL Query (Fleet-wide node status)**:\n  ```promql\n  avg by (condition,status)(avg_over_time(kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\"}[5m]))\n  ```\n\n### Step 4: Check Node Pool Status [Low Risk] [Auto]\n\nQuery the status of multi-host TPU node pools.\n\n- **PromQL Query (Verify if a specific node pool is Running)**:\n  ```promql\n  kubernetes_io:node_pool_status{monitored_resource=\"k8s_node_pool\", cluster_name=\"\u003Ccluster_name>\", node_pool_name=\"\u003Cnode_pool_name>\", status=\"Running\"}\n  ```\n- **PromQL Query (Monitor node pools grouped by status)**:\n  ```promql\n  count by (status)(count_over_time(kubernetes_io:node_pool_status{monitored_resource=\"k8s_node_pool\"}[5m]))\n  ```\n  _Possible statuses_: `Provisioning`, `Running`, `Error`, `Reconciling`, `Stopping`.\n\n### Step 5: Check Node Pool Availability [Low Risk] [Auto]\n\nQuery if all nodes in a multi-host TPU node pool are available.\n\n- **PromQL Query (Check availability over time)**:\n  ```promql\n  avg by (node_pool_name)(avg_over_time(kubernetes_io:node_pool_multi_host_available{monitored_resource=\"k8s_node_pool\", cluster_name=\"\u003Ccluster_name>\"}[5m]))\n  ```\n  _Value_: `1` (True, all nodes available) or `0` (False, some nodes unavailable).\n\n### Step 6: Analyze Node Interruptions [Low Risk] [Auto]\n\nQuery the count of interruptions for GKE nodes.\n\n- **PromQL Query (Breakdown of interruptions and causes)**:\n  ```promql\n  sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource=\"k8s_node\"}[5m]))\n  ```\n  _Interruption Types_: `TerminationEvent`, `MaintenanceEvent`, `PreemptionEvent`.\n  _Interruption Reasons_: `HostError`, `Eviction`, `AutoRepair`.\n- **PromQL Query (Filter for Host Maintenance events)**:\n  ```promql\n  sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource=\"k8s_node\", interruption_reason=\"HW\u002FSW Maintenance\"}[5m]))\n  ```\n- **PromQL Query (Interruption count aggregated by node pool)**:\n  ```promql\n  sum by (node_pool_name,interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_pool_interruption_count{monitored_resource=\"k8s_node_pool\", interruption_reason=\"HW\u002FSW Maintenance\", node_pool_name=\"\u003Cnode_pool_name>\"}[5m]))\n  ```\n\n### Step 7: Calculate Recovery and Interruption Metrics [Low Risk] [Auto]\n\nCalculate Mean Time to Recovery (MTTR) and Mean Time Between Interruptions (MTBI) over the last 7 days.\n\n- **PromQL Query (MTTR - Mean Time to Recovery)**:\n  ```promql\n  sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_sum{monitored_resource=\"k8s_node_pool\", cluster_name=\"\u003Ccluster_name>\"}[7d])) \u002F sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_count{monitored_resource=\"k8s_node_pool\",cluster_name=\"\u003Ccluster_name>\"}[7d]))\n  ```\n- **PromQL Query (MTBI - Mean Time Between Interruptions)**:\n  ```promql\n  sum(count_over_time(kubernetes_io:node_memory_total_bytes{monitored_resource=\"k8s_node\", node_name=~\"gke-tpu.*|gk3-tpu.*\", cluster_name=\"\u003Ccluster_name>\"}[7d])) \u002F sum(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource=\"k8s_node\", node_name=~\"gke-tpu.*|gk3-tpu.*\", cluster_name=\"\u003Ccluster_name>\"}[7d]))\n  ```\n\n### Step 8: Monitor TPU Host Metrics [Low Risk] [Auto]\n\nFor GKE version `1.28.1-gke.1066000` or later, monitor TPU host performance.\n\n- **Container Metrics**:\n  - `kubernetes.io\u002Fcontainer\u002Faccelerator\u002Ftensorcore_utilization`: Current percentage of the TensorCore that is utilized.\n  - `kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fmemory_bandwidth_utilization`: Current percentage of the accelerator memory bandwidth that is being used.\n- **Node Metrics**:\n  - `kubernetes.io\u002Fnode\u002Faccelerator\u002Ftensorcore_utilization`\n  - `kubernetes.io\u002Fnode\u002Faccelerator\u002Fmemory_bandwidth_utilization`\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,54,61,66,127,131,137,157,162,219,234,255,343,358,371,472,487,492,586,601,606,654,669,674,801,816,821,870,885,898,963],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"gke-tpu-metrics-monitoring-guide",[45],{"type":46,"value":47},"text","GKE TPU Metrics Monitoring Guide",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52],{"type":46,"value":53},"This skill enables the agent to monitor GKE TPU workloads, nodes, and node pools using GKE system metrics. It helps diagnose if workload interruptions or performance issues are caused by underlying infrastructure.",{"type":40,"tag":55,"props":56,"children":58},"h2",{"id":57},"step-0-mandatory-context",[59],{"type":46,"value":60},"Step 0: Mandatory Context",{"type":40,"tag":49,"props":62,"children":63},{},[64],{"type":46,"value":65},"To run these diagnostics, the following context is required:",{"type":40,"tag":67,"props":68,"children":69},"ul",{},[70,83,94,105,116],{"type":40,"tag":71,"props":72,"children":73},"li",{},[74,81],{"type":40,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":46,"value":80},"\u003Cproject_id>",{"type":46,"value":82},": The GCP Project ID.",{"type":40,"tag":71,"props":84,"children":85},{},[86,92],{"type":40,"tag":75,"props":87,"children":89},{"className":88},[],[90],{"type":46,"value":91},"\u003Ccluster_name>",{"type":46,"value":93},": The GKE Cluster Name.",{"type":40,"tag":71,"props":95,"children":96},{},[97,103],{"type":40,"tag":75,"props":98,"children":100},{"className":99},[],[101],{"type":46,"value":102},"\u003Clocation>",{"type":46,"value":104},": The GKE Cluster Location (region or zone).",{"type":40,"tag":71,"props":106,"children":107},{},[108,114],{"type":40,"tag":75,"props":109,"children":111},{"className":110},[],[112],{"type":46,"value":113},"\u003Cnode_name>",{"type":46,"value":115},": (Optional) The name of the specific GKE node.",{"type":40,"tag":71,"props":117,"children":118},{},[119,125],{"type":40,"tag":75,"props":120,"children":122},{"className":121},[],[123],{"type":46,"value":124},"\u003Cnode_pool_name>",{"type":46,"value":126},": (Optional) The name of the GKE node pool.",{"type":40,"tag":128,"props":129,"children":130},"hr",{},[],{"type":40,"tag":55,"props":132,"children":134},{"id":133},"diagnostic-steps",[135],{"type":46,"value":136},"Diagnostic Steps",{"type":40,"tag":138,"props":139,"children":141},"h3",{"id":140},"step-1-verify-tpu-runtime-metrics-configuration-low-risk-auto",[142,144,150,152],{"type":46,"value":143},"Step 1: Verify TPU Runtime Metrics Configuration ",{"type":40,"tag":145,"props":146,"children":147},"span",{},[148],{"type":46,"value":149},"Low Risk",{"type":46,"value":151}," ",{"type":40,"tag":145,"props":153,"children":154},{},[155],{"type":46,"value":156},"Auto",{"type":40,"tag":49,"props":158,"children":159},{},[160],{"type":46,"value":161},"Before analyzing runtime metrics, verify that the workload is configured to export them.",{"type":40,"tag":67,"props":163,"children":164},{},[165],{"type":40,"tag":71,"props":166,"children":167},{},[168,174,176],{"type":40,"tag":169,"props":170,"children":171},"strong",{},[172],{"type":46,"value":173},"Action",{"type":46,"value":175},": Verify that the Pod specification for the TPU workload includes:\n",{"type":40,"tag":67,"props":177,"children":178},{},[179,188,201,214],{"type":40,"tag":71,"props":180,"children":181},{},[182],{"type":40,"tag":75,"props":183,"children":185},{"className":184},[],[186],{"type":46,"value":187},"containerPort: 8431",{"type":40,"tag":71,"props":189,"children":190},{},[191,193,199],{"type":46,"value":192},"JAX version ",{"type":40,"tag":75,"props":194,"children":196},{"className":195},[],[197],{"type":46,"value":198},"0.4.14",{"type":46,"value":200}," or later (if using JAX).",{"type":40,"tag":71,"props":202,"children":203},{},[204,206,212],{"type":46,"value":205},"GKE version is ",{"type":40,"tag":75,"props":207,"children":209},{"className":208},[],[210],{"type":46,"value":211},"1.27.4-gke.900",{"type":46,"value":213}," or later.",{"type":40,"tag":71,"props":215,"children":216},{},[217],{"type":46,"value":218},"GKE System Metrics are enabled on the cluster.",{"type":40,"tag":138,"props":220,"children":222},{"id":221},"step-2-monitor-tpu-runtime-metrics-low-risk-auto",[223,225,229,230],{"type":46,"value":224},"Step 2: Monitor TPU Runtime Metrics ",{"type":40,"tag":145,"props":226,"children":227},{},[228],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":231,"children":232},{},[233],{"type":46,"value":156},{"type":40,"tag":49,"props":235,"children":236},{},[237,239,245,247,253],{"type":46,"value":238},"If configured correctly, the following metrics are available in Cloud Monitoring (monitored resources ",{"type":40,"tag":75,"props":240,"children":242},{"className":241},[],[243],{"type":46,"value":244},"k8s_node",{"type":46,"value":246}," and ",{"type":40,"tag":75,"props":248,"children":250},{"className":249},[],[251],{"type":46,"value":252},"k8s_container",{"type":46,"value":254},"):",{"type":40,"tag":67,"props":256,"children":257},{},[258,304],{"type":40,"tag":71,"props":259,"children":260},{},[261,266,268],{"type":40,"tag":169,"props":262,"children":263},{},[264],{"type":46,"value":265},"Container Metrics",{"type":46,"value":267},":\n",{"type":40,"tag":67,"props":269,"children":270},{},[271,282,293],{"type":40,"tag":71,"props":272,"children":273},{},[274,280],{"type":40,"tag":75,"props":275,"children":277},{"className":276},[],[278],{"type":46,"value":279},"kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fduty_cycle",{"type":46,"value":281},": Percentage of time over the past sampling period (60 seconds) during which the TensorCores were actively processing on a TPU chip.",{"type":40,"tag":71,"props":283,"children":284},{},[285,291],{"type":40,"tag":75,"props":286,"children":288},{"className":287},[],[289],{"type":46,"value":290},"kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fmemory_used",{"type":46,"value":292},": Amount of accelerator memory allocated in bytes.",{"type":40,"tag":71,"props":294,"children":295},{},[296,302],{"type":40,"tag":75,"props":297,"children":299},{"className":298},[],[300],{"type":46,"value":301},"kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fmemory_total",{"type":46,"value":303},": Total accelerator memory in bytes.",{"type":40,"tag":71,"props":305,"children":306},{},[307,312,313],{"type":40,"tag":169,"props":308,"children":309},{},[310],{"type":46,"value":311},"Node Metrics",{"type":46,"value":267},{"type":40,"tag":67,"props":314,"children":315},{},[316,325,334],{"type":40,"tag":71,"props":317,"children":318},{},[319],{"type":40,"tag":75,"props":320,"children":322},{"className":321},[],[323],{"type":46,"value":324},"kubernetes.io\u002Fnode\u002Faccelerator\u002Fduty_cycle",{"type":40,"tag":71,"props":326,"children":327},{},[328],{"type":40,"tag":75,"props":329,"children":331},{"className":330},[],[332],{"type":46,"value":333},"kubernetes.io\u002Fnode\u002Faccelerator\u002Fmemory_used",{"type":40,"tag":71,"props":335,"children":336},{},[337],{"type":40,"tag":75,"props":338,"children":340},{"className":339},[],[341],{"type":46,"value":342},"kubernetes.io\u002Fnode\u002Faccelerator\u002Fmemory_total",{"type":40,"tag":138,"props":344,"children":346},{"id":345},"step-3-check-node-status-condition-low-risk-auto",[347,349,353,354],{"type":46,"value":348},"Step 3: Check Node Status Condition ",{"type":40,"tag":145,"props":350,"children":351},{},[352],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":355,"children":356},{},[357],{"type":46,"value":156},{"type":40,"tag":49,"props":359,"children":360},{},[361,363,369],{"type":46,"value":362},"Query the status condition of GKE nodes (GKE version ",{"type":40,"tag":75,"props":364,"children":366},{"className":365},[],[367],{"type":46,"value":368},"1.32.1-gke.1357001",{"type":46,"value":370}," or later).",{"type":40,"tag":67,"props":372,"children":373},{},[374,403,426,449],{"type":40,"tag":71,"props":375,"children":376},{},[377,382,383],{"type":40,"tag":169,"props":378,"children":379},{},[380],{"type":46,"value":381},"PromQL Query (Check if a specific node is Ready)",{"type":46,"value":267},{"type":40,"tag":384,"props":385,"children":390},"pre",{"className":386,"code":387,"language":388,"meta":389,"style":389},"language-promql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\", cluster_name=\"\u003Ccluster_name>\", node_name=\"\u003Cnode_name>\", condition=\"Ready\", status=\"True\"}\n","promql","",[391],{"type":40,"tag":75,"props":392,"children":393},{"__ignoreMap":389},[394],{"type":40,"tag":145,"props":395,"children":398},{"class":396,"line":397},"line",1,[399],{"type":40,"tag":145,"props":400,"children":401},{},[402],{"type":46,"value":387},{"type":40,"tag":71,"props":404,"children":405},{},[406,411,412],{"type":40,"tag":169,"props":407,"children":408},{},[409],{"type":46,"value":410},"PromQL Query (List nodes with non-Ready conditions that are True)",{"type":46,"value":267},{"type":40,"tag":384,"props":413,"children":415},{"className":386,"code":414,"language":388,"meta":389,"style":389},"kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\", cluster_name=\"\u003Ccluster_name>\", condition!=\"Ready\", status=\"True\"}\n",[416],{"type":40,"tag":75,"props":417,"children":418},{"__ignoreMap":389},[419],{"type":40,"tag":145,"props":420,"children":421},{"class":396,"line":397},[422],{"type":40,"tag":145,"props":423,"children":424},{},[425],{"type":46,"value":414},{"type":40,"tag":71,"props":427,"children":428},{},[429,434,435],{"type":40,"tag":169,"props":430,"children":431},{},[432],{"type":46,"value":433},"PromQL Query (List nodes that are NOT Ready)",{"type":46,"value":267},{"type":40,"tag":384,"props":436,"children":438},{"className":386,"code":437,"language":388,"meta":389,"style":389},"kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\", cluster_name=\"\u003Ccluster_name>\", condition=\"Ready\", status=\"False\"}\n",[439],{"type":40,"tag":75,"props":440,"children":441},{"__ignoreMap":389},[442],{"type":40,"tag":145,"props":443,"children":444},{"class":396,"line":397},[445],{"type":40,"tag":145,"props":446,"children":447},{},[448],{"type":46,"value":437},{"type":40,"tag":71,"props":450,"children":451},{},[452,457,458],{"type":40,"tag":169,"props":453,"children":454},{},[455],{"type":46,"value":456},"PromQL Query (Fleet-wide node status)",{"type":46,"value":267},{"type":40,"tag":384,"props":459,"children":461},{"className":386,"code":460,"language":388,"meta":389,"style":389},"avg by (condition,status)(avg_over_time(kubernetes_io:node_status_condition{monitored_resource=\"k8s_node\"}[5m]))\n",[462],{"type":40,"tag":75,"props":463,"children":464},{"__ignoreMap":389},[465],{"type":40,"tag":145,"props":466,"children":467},{"class":396,"line":397},[468],{"type":40,"tag":145,"props":469,"children":470},{},[471],{"type":46,"value":460},{"type":40,"tag":138,"props":473,"children":475},{"id":474},"step-4-check-node-pool-status-low-risk-auto",[476,478,482,483],{"type":46,"value":477},"Step 4: Check Node Pool Status ",{"type":40,"tag":145,"props":479,"children":480},{},[481],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":484,"children":485},{},[486],{"type":46,"value":156},{"type":40,"tag":49,"props":488,"children":489},{},[490],{"type":46,"value":491},"Query the status of multi-host TPU node pools.",{"type":40,"tag":67,"props":493,"children":494},{},[495,518],{"type":40,"tag":71,"props":496,"children":497},{},[498,503,504],{"type":40,"tag":169,"props":499,"children":500},{},[501],{"type":46,"value":502},"PromQL Query (Verify if a specific node pool is Running)",{"type":46,"value":267},{"type":40,"tag":384,"props":505,"children":507},{"className":386,"code":506,"language":388,"meta":389,"style":389},"kubernetes_io:node_pool_status{monitored_resource=\"k8s_node_pool\", cluster_name=\"\u003Ccluster_name>\", node_pool_name=\"\u003Cnode_pool_name>\", status=\"Running\"}\n",[508],{"type":40,"tag":75,"props":509,"children":510},{"__ignoreMap":389},[511],{"type":40,"tag":145,"props":512,"children":513},{"class":396,"line":397},[514],{"type":40,"tag":145,"props":515,"children":516},{},[517],{"type":46,"value":506},{"type":40,"tag":71,"props":519,"children":520},{},[521,526,527,541,547,549,555,557,563,564,570,571,577,578,584],{"type":40,"tag":169,"props":522,"children":523},{},[524],{"type":46,"value":525},"PromQL Query (Monitor node pools grouped by status)",{"type":46,"value":267},{"type":40,"tag":384,"props":528,"children":530},{"className":386,"code":529,"language":388,"meta":389,"style":389},"count by (status)(count_over_time(kubernetes_io:node_pool_status{monitored_resource=\"k8s_node_pool\"}[5m]))\n",[531],{"type":40,"tag":75,"props":532,"children":533},{"__ignoreMap":389},[534],{"type":40,"tag":145,"props":535,"children":536},{"class":396,"line":397},[537],{"type":40,"tag":145,"props":538,"children":539},{},[540],{"type":46,"value":529},{"type":40,"tag":542,"props":543,"children":544},"em",{},[545],{"type":46,"value":546},"Possible statuses",{"type":46,"value":548},": ",{"type":40,"tag":75,"props":550,"children":552},{"className":551},[],[553],{"type":46,"value":554},"Provisioning",{"type":46,"value":556},", ",{"type":40,"tag":75,"props":558,"children":560},{"className":559},[],[561],{"type":46,"value":562},"Running",{"type":46,"value":556},{"type":40,"tag":75,"props":565,"children":567},{"className":566},[],[568],{"type":46,"value":569},"Error",{"type":46,"value":556},{"type":40,"tag":75,"props":572,"children":574},{"className":573},[],[575],{"type":46,"value":576},"Reconciling",{"type":46,"value":556},{"type":40,"tag":75,"props":579,"children":581},{"className":580},[],[582],{"type":46,"value":583},"Stopping",{"type":46,"value":585},".",{"type":40,"tag":138,"props":587,"children":589},{"id":588},"step-5-check-node-pool-availability-low-risk-auto",[590,592,596,597],{"type":46,"value":591},"Step 5: Check Node Pool Availability ",{"type":40,"tag":145,"props":593,"children":594},{},[595],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":598,"children":599},{},[600],{"type":46,"value":156},{"type":40,"tag":49,"props":602,"children":603},{},[604],{"type":46,"value":605},"Query if all nodes in a multi-host TPU node pool are available.",{"type":40,"tag":67,"props":607,"children":608},{},[609],{"type":40,"tag":71,"props":610,"children":611},{},[612,617,618,632,637,638,644,646,652],{"type":40,"tag":169,"props":613,"children":614},{},[615],{"type":46,"value":616},"PromQL Query (Check availability over time)",{"type":46,"value":267},{"type":40,"tag":384,"props":619,"children":621},{"className":386,"code":620,"language":388,"meta":389,"style":389},"avg by (node_pool_name)(avg_over_time(kubernetes_io:node_pool_multi_host_available{monitored_resource=\"k8s_node_pool\", cluster_name=\"\u003Ccluster_name>\"}[5m]))\n",[622],{"type":40,"tag":75,"props":623,"children":624},{"__ignoreMap":389},[625],{"type":40,"tag":145,"props":626,"children":627},{"class":396,"line":397},[628],{"type":40,"tag":145,"props":629,"children":630},{},[631],{"type":46,"value":620},{"type":40,"tag":542,"props":633,"children":634},{},[635],{"type":46,"value":636},"Value",{"type":46,"value":548},{"type":40,"tag":75,"props":639,"children":641},{"className":640},[],[642],{"type":46,"value":643},"1",{"type":46,"value":645}," (True, all nodes available) or ",{"type":40,"tag":75,"props":647,"children":649},{"className":648},[],[650],{"type":46,"value":651},"0",{"type":46,"value":653}," (False, some nodes unavailable).",{"type":40,"tag":138,"props":655,"children":657},{"id":656},"step-6-analyze-node-interruptions-low-risk-auto",[658,660,664,665],{"type":46,"value":659},"Step 6: Analyze Node Interruptions ",{"type":40,"tag":145,"props":661,"children":662},{},[663],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":666,"children":667},{},[668],{"type":46,"value":156},{"type":40,"tag":49,"props":670,"children":671},{},[672],{"type":46,"value":673},"Query the count of interruptions for GKE nodes.",{"type":40,"tag":67,"props":675,"children":676},{},[677,755,778],{"type":40,"tag":71,"props":678,"children":679},{},[680,685,686,700,705,706,712,713,719,720,726,728,733,734,740,741,747,748,754],{"type":40,"tag":169,"props":681,"children":682},{},[683],{"type":46,"value":684},"PromQL Query (Breakdown of interruptions and causes)",{"type":46,"value":267},{"type":40,"tag":384,"props":687,"children":689},{"className":386,"code":688,"language":388,"meta":389,"style":389},"sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource=\"k8s_node\"}[5m]))\n",[690],{"type":40,"tag":75,"props":691,"children":692},{"__ignoreMap":389},[693],{"type":40,"tag":145,"props":694,"children":695},{"class":396,"line":397},[696],{"type":40,"tag":145,"props":697,"children":698},{},[699],{"type":46,"value":688},{"type":40,"tag":542,"props":701,"children":702},{},[703],{"type":46,"value":704},"Interruption Types",{"type":46,"value":548},{"type":40,"tag":75,"props":707,"children":709},{"className":708},[],[710],{"type":46,"value":711},"TerminationEvent",{"type":46,"value":556},{"type":40,"tag":75,"props":714,"children":716},{"className":715},[],[717],{"type":46,"value":718},"MaintenanceEvent",{"type":46,"value":556},{"type":40,"tag":75,"props":721,"children":723},{"className":722},[],[724],{"type":46,"value":725},"PreemptionEvent",{"type":46,"value":727},".\n",{"type":40,"tag":542,"props":729,"children":730},{},[731],{"type":46,"value":732},"Interruption Reasons",{"type":46,"value":548},{"type":40,"tag":75,"props":735,"children":737},{"className":736},[],[738],{"type":46,"value":739},"HostError",{"type":46,"value":556},{"type":40,"tag":75,"props":742,"children":744},{"className":743},[],[745],{"type":46,"value":746},"Eviction",{"type":46,"value":556},{"type":40,"tag":75,"props":749,"children":751},{"className":750},[],[752],{"type":46,"value":753},"AutoRepair",{"type":46,"value":585},{"type":40,"tag":71,"props":756,"children":757},{},[758,763,764],{"type":40,"tag":169,"props":759,"children":760},{},[761],{"type":46,"value":762},"PromQL Query (Filter for Host Maintenance events)",{"type":46,"value":267},{"type":40,"tag":384,"props":765,"children":767},{"className":386,"code":766,"language":388,"meta":389,"style":389},"sum by (interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource=\"k8s_node\", interruption_reason=\"HW\u002FSW Maintenance\"}[5m]))\n",[768],{"type":40,"tag":75,"props":769,"children":770},{"__ignoreMap":389},[771],{"type":40,"tag":145,"props":772,"children":773},{"class":396,"line":397},[774],{"type":40,"tag":145,"props":775,"children":776},{},[777],{"type":46,"value":766},{"type":40,"tag":71,"props":779,"children":780},{},[781,786,787],{"type":40,"tag":169,"props":782,"children":783},{},[784],{"type":46,"value":785},"PromQL Query (Interruption count aggregated by node pool)",{"type":46,"value":267},{"type":40,"tag":384,"props":788,"children":790},{"className":386,"code":789,"language":388,"meta":389,"style":389},"sum by (node_pool_name,interruption_type,interruption_reason)(sum_over_time(kubernetes_io:node_pool_interruption_count{monitored_resource=\"k8s_node_pool\", interruption_reason=\"HW\u002FSW Maintenance\", node_pool_name=\"\u003Cnode_pool_name>\"}[5m]))\n",[791],{"type":40,"tag":75,"props":792,"children":793},{"__ignoreMap":389},[794],{"type":40,"tag":145,"props":795,"children":796},{"class":396,"line":397},[797],{"type":40,"tag":145,"props":798,"children":799},{},[800],{"type":46,"value":789},{"type":40,"tag":138,"props":802,"children":804},{"id":803},"step-7-calculate-recovery-and-interruption-metrics-low-risk-auto",[805,807,811,812],{"type":46,"value":806},"Step 7: Calculate Recovery and Interruption Metrics ",{"type":40,"tag":145,"props":808,"children":809},{},[810],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":813,"children":814},{},[815],{"type":46,"value":156},{"type":40,"tag":49,"props":817,"children":818},{},[819],{"type":46,"value":820},"Calculate Mean Time to Recovery (MTTR) and Mean Time Between Interruptions (MTBI) over the last 7 days.",{"type":40,"tag":67,"props":822,"children":823},{},[824,847],{"type":40,"tag":71,"props":825,"children":826},{},[827,832,833],{"type":40,"tag":169,"props":828,"children":829},{},[830],{"type":46,"value":831},"PromQL Query (MTTR - Mean Time to Recovery)",{"type":46,"value":267},{"type":40,"tag":384,"props":834,"children":836},{"className":386,"code":835,"language":388,"meta":389,"style":389},"sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_sum{monitored_resource=\"k8s_node_pool\", cluster_name=\"\u003Ccluster_name>\"}[7d])) \u002F sum(sum_over_time(kubernetes_io:node_pool_accelerator_times_to_recover_count{monitored_resource=\"k8s_node_pool\",cluster_name=\"\u003Ccluster_name>\"}[7d]))\n",[837],{"type":40,"tag":75,"props":838,"children":839},{"__ignoreMap":389},[840],{"type":40,"tag":145,"props":841,"children":842},{"class":396,"line":397},[843],{"type":40,"tag":145,"props":844,"children":845},{},[846],{"type":46,"value":835},{"type":40,"tag":71,"props":848,"children":849},{},[850,855,856],{"type":40,"tag":169,"props":851,"children":852},{},[853],{"type":46,"value":854},"PromQL Query (MTBI - Mean Time Between Interruptions)",{"type":46,"value":267},{"type":40,"tag":384,"props":857,"children":859},{"className":386,"code":858,"language":388,"meta":389,"style":389},"sum(count_over_time(kubernetes_io:node_memory_total_bytes{monitored_resource=\"k8s_node\", node_name=~\"gke-tpu.*|gk3-tpu.*\", cluster_name=\"\u003Ccluster_name>\"}[7d])) \u002F sum(sum_over_time(kubernetes_io:node_interruption_count{monitored_resource=\"k8s_node\", node_name=~\"gke-tpu.*|gk3-tpu.*\", cluster_name=\"\u003Ccluster_name>\"}[7d]))\n",[860],{"type":40,"tag":75,"props":861,"children":862},{"__ignoreMap":389},[863],{"type":40,"tag":145,"props":864,"children":865},{"class":396,"line":397},[866],{"type":40,"tag":145,"props":867,"children":868},{},[869],{"type":46,"value":858},{"type":40,"tag":138,"props":871,"children":873},{"id":872},"step-8-monitor-tpu-host-metrics-low-risk-auto",[874,876,880,881],{"type":46,"value":875},"Step 8: Monitor TPU Host Metrics ",{"type":40,"tag":145,"props":877,"children":878},{},[879],{"type":46,"value":149},{"type":46,"value":151},{"type":40,"tag":145,"props":882,"children":883},{},[884],{"type":46,"value":156},{"type":40,"tag":49,"props":886,"children":887},{},[888,890,896],{"type":46,"value":889},"For GKE version ",{"type":40,"tag":75,"props":891,"children":893},{"className":892},[],[894],{"type":46,"value":895},"1.28.1-gke.1066000",{"type":46,"value":897}," or later, monitor TPU host performance.",{"type":40,"tag":67,"props":899,"children":900},{},[901,934],{"type":40,"tag":71,"props":902,"children":903},{},[904,908,909],{"type":40,"tag":169,"props":905,"children":906},{},[907],{"type":46,"value":265},{"type":46,"value":267},{"type":40,"tag":67,"props":910,"children":911},{},[912,923],{"type":40,"tag":71,"props":913,"children":914},{},[915,921],{"type":40,"tag":75,"props":916,"children":918},{"className":917},[],[919],{"type":46,"value":920},"kubernetes.io\u002Fcontainer\u002Faccelerator\u002Ftensorcore_utilization",{"type":46,"value":922},": Current percentage of the TensorCore that is utilized.",{"type":40,"tag":71,"props":924,"children":925},{},[926,932],{"type":40,"tag":75,"props":927,"children":929},{"className":928},[],[930],{"type":46,"value":931},"kubernetes.io\u002Fcontainer\u002Faccelerator\u002Fmemory_bandwidth_utilization",{"type":46,"value":933},": Current percentage of the accelerator memory bandwidth that is being used.",{"type":40,"tag":71,"props":935,"children":936},{},[937,941,942],{"type":40,"tag":169,"props":938,"children":939},{},[940],{"type":46,"value":311},{"type":46,"value":267},{"type":40,"tag":67,"props":943,"children":944},{},[945,954],{"type":40,"tag":71,"props":946,"children":947},{},[948],{"type":40,"tag":75,"props":949,"children":951},{"className":950},[],[952],{"type":46,"value":953},"kubernetes.io\u002Fnode\u002Faccelerator\u002Ftensorcore_utilization",{"type":40,"tag":71,"props":955,"children":956},{},[957],{"type":40,"tag":75,"props":958,"children":960},{"className":959},[],[961],{"type":46,"value":962},"kubernetes.io\u002Fnode\u002Faccelerator\u002Fmemory_bandwidth_utilization",{"type":40,"tag":964,"props":965,"children":966},"style",{},[967],{"type":46,"value":968},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":970,"total":1157},[971,989,1005,1027,1041,1052,1066,1083,1100,1113,1129,1139],{"slug":972,"name":972,"fn":973,"description":974,"org":975,"tags":976,"stars":986,"repoUrl":987,"updatedAt":988},"kb-search","search and extract local knowledge base documents","Allows listing, searching and extracting information from local knowledge base documents for information about tables\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[977,980,983],{"name":978,"slug":979,"type":16},"Documentation","documentation",{"name":981,"slug":982,"type":16},"Knowledge Base","knowledge-base",{"name":984,"slug":985,"type":16},"Search","search",6749,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fknowledge-catalog","2026-07-12T07:38:52.157375",{"slug":990,"name":991,"fn":992,"description":993,"org":994,"tags":995,"stars":986,"repoUrl":987,"updatedAt":1004},"knowledgecatalogdiscoveryagent","knowledge_catalog_discovery_agent","search and rank Knowledge Catalog data entries","Analyzes user queries, extracts relevant predicates, and utilizes Knowledge Catalog Search to find and rank the most relevant data entries. Engages with the user throughout the process.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[996,999,1000,1003],{"name":997,"slug":998,"type":16},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":16},{"name":1001,"slug":1002,"type":16},"Knowledge Management","knowledge-management",{"name":984,"slug":985,"type":16},"2026-07-12T07:38:22.196851",{"slug":1006,"name":1006,"fn":1007,"description":1008,"org":1009,"tags":1010,"stars":1024,"repoUrl":1025,"updatedAt":1026},"contributing","contribute to Cloud Foundation Fabric","End-to-end workflow for contributing to Cloud Foundation Fabric: triaging GitHub issues, proactive feature development, validating with tests and Policy Troubleshooter, and submitting sanitized Pull Requests. Use when addressing a Fabric GitHub issue, developing a module or FAST stage change, or preparing a branch for a pull request.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1011,1014,1017,1020,1021],{"name":1012,"slug":1013,"type":16},"Automation","automation",{"name":1015,"slug":1016,"type":16},"Engineering","engineering",{"name":1018,"slug":1019,"type":16},"GitHub","github",{"name":9,"slug":8,"type":16},{"name":1022,"slug":1023,"type":16},"Pull Requests","pull-requests",2062,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fcloud-foundation-fabric","2026-07-31T06:23:36.935005",{"slug":1028,"name":1028,"fn":1029,"description":1030,"org":1031,"tags":1032,"stars":1024,"repoUrl":1025,"updatedAt":1040},"fabric-builder","generate Terraform code for Google Cloud","Generates idiomatic Cloud Foundation Fabric (CFF) Terraform code using CFF modules. Use when users ask to create GCP resources, use Fabric modules, or generate Terraform code for Google Cloud.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1033,1034,1037],{"name":9,"slug":8,"type":16},{"name":1035,"slug":1036,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":1038,"slug":1039,"type":16},"Terraform","terraform","2026-07-12T07:38:23.514555",{"slug":1042,"name":1042,"fn":1043,"description":1044,"org":1045,"tags":1046,"stars":1024,"repoUrl":1025,"updatedAt":1051},"fast-0-org-setup-prereqs","prepare prerequisites for FAST 0-org-setup","Guides the user step-by-step through the prerequisites for the FAST 0-org-setup stage, supporting both Standard GCP and Google Cloud Dedicated (GCD) environments. Use when a user asks to prepare or run prerequisites for 0-org-setup or bootstrap the FAST landing zone.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1047,1048],{"name":9,"slug":8,"type":16},{"name":1049,"slug":1050,"type":16},"Operations","operations","2026-07-12T07:38:28.127148",{"slug":1053,"name":1053,"fn":1054,"description":1055,"org":1056,"tags":1057,"stars":1063,"repoUrl":1064,"updatedAt":1065},"agent-aware-cli","design agent-aware command-line interfaces","Guide for designing and implementing command-line interfaces (CLIs) that are equally usable by human developers and automated coding agents. Use when the user wants to build a CLI, apply CLI best practices, or use Go with Cobra and Viper.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1058,1061,1062],{"name":1059,"slug":1060,"type":16},"CLI","cli",{"name":1015,"slug":1016,"type":16},{"name":9,"slug":8,"type":16},1150,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fvertex-ai-creative-studio","2026-07-12T07:39:08.41406",{"slug":1067,"name":1067,"fn":1068,"description":1069,"org":1070,"tags":1071,"stars":1063,"repoUrl":1064,"updatedAt":1082},"build-mcp-genmedia","build and configure GenAI MCP servers","Builds the mcp-genmedia Go MCP servers (nanobanana, veo, lyria, gemini-multimodal, chirp3-hd, avtool) from source and wires them into settings.json. Use this skill whenever the MCP tools are missing or broken — typically at the start of a new session, after a container restart, or when \u002Ftmp has been wiped. The prebuilt binaries in \u002Fworkspace\u002F.local\u002Fbin\u002F have no exec bit and live on a noexec mount; this skill compiles fresh executables into \u002Ftmp\u002Fbin\u002F where execution is allowed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1072,1075,1076,1079],{"name":1073,"slug":1074,"type":16},"API Development","api-development",{"name":9,"slug":8,"type":16},{"name":1077,"slug":1078,"type":16},"LLM","llm",{"name":1080,"slug":1081,"type":16},"MCP","mcp","2026-07-12T07:39:10.911302",{"slug":1084,"name":1084,"fn":1085,"description":1086,"org":1087,"tags":1088,"stars":1063,"repoUrl":1064,"updatedAt":1099},"genmedia-audio-engineer","synthesize and mix audio content","Expert in audio synthesis, music generation, and mixing. Use when creating podcasts, background scores, or multi-track audio layering using mcp-chirp3-go, mcp-lyria-go, mcp-gemini-go, mcp-nanobanana-go, and mcp-avtool-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1089,1092,1095,1096],{"name":1090,"slug":1091,"type":16},"Audio","audio",{"name":1093,"slug":1094,"type":16},"Creative","creative",{"name":9,"slug":8,"type":16},{"name":1097,"slug":1098,"type":16},"Vertex AI","vertex-ai","2026-07-12T07:39:16.623879",{"slug":1101,"name":1101,"fn":1102,"description":1103,"org":1104,"tags":1105,"stars":1063,"repoUrl":1064,"updatedAt":1112},"genmedia-image-artist","generate and edit AI images","Expert in AI image generation and editing. Use when the user needs high-quality textures, character-consistent visuals, or image-to-image editing using mcp-nanobanana-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1106,1107,1108,1111],{"name":1093,"slug":1094,"type":16},{"name":9,"slug":8,"type":16},{"name":1109,"slug":1110,"type":16},"Image Generation","image-generation",{"name":1097,"slug":1098,"type":16},"2026-07-12T07:39:15.372822",{"slug":1114,"name":1114,"fn":1115,"description":1116,"org":1117,"tags":1118,"stars":1063,"repoUrl":1064,"updatedAt":1128},"genmedia-producer","produce multi-step media content","Expert media production assistant. Use when requested to help with storyboarding, podcast creation, audio assembly, or complex multi-step media workflows using the GenMedia MCP servers (Veo, Lyria, Gemini TTS, NanoBanana).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1119,1120,1121,1122,1125],{"name":1090,"slug":1091,"type":16},{"name":1093,"slug":1094,"type":16},{"name":9,"slug":8,"type":16},{"name":1123,"slug":1124,"type":16},"Media","media",{"name":1126,"slug":1127,"type":16},"Video","video","2026-07-12T07:39:09.672849",{"slug":1130,"name":1130,"fn":1131,"description":1132,"org":1133,"tags":1134,"stars":1063,"repoUrl":1064,"updatedAt":1138},"genmedia-video-editor","edit and compose video content","Expert in video composition, editing, and format conversion. Use when the user wants to generate high-quality video, overlay images on video, concatenate clips, create GIFs, or sync audio to video using mcp-avtool-go and mcp-veo-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1135,1136,1137],{"name":1093,"slug":1094,"type":16},{"name":9,"slug":8,"type":16},{"name":1126,"slug":1127,"type":16},"2026-07-12T07:39:13.749081",{"slug":1140,"name":1140,"fn":1141,"description":1142,"org":1143,"tags":1144,"stars":1063,"repoUrl":1064,"updatedAt":1156},"genmedia-voice-director","generate expressive text-to-speech with Gemini","Expert in casting, directing, and generating expressive text-to-speech using Gemini TTS. Use this when the user needs virtual voice actor personas, expressive speech generation, or multiple variations of a voiceover (like \"take 3 on the bounce\").",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1145,1146,1147,1150,1153],{"name":1090,"slug":1091,"type":16},{"name":1093,"slug":1094,"type":16},{"name":1148,"slug":1149,"type":16},"Gemini","gemini",{"name":1151,"slug":1152,"type":16},"Speech","speech",{"name":1154,"slug":1155,"type":16},"Text-to-Speech","text-to-speech","2026-07-12T07:39:17.86673",80,{"items":1159,"total":1251},[1160,1172,1187,1200,1213,1224,1240],{"slug":1161,"name":1161,"fn":1162,"description":1163,"org":1164,"tags":1165,"stars":24,"repoUrl":25,"updatedAt":1171},"custom-golden-image-discovery","discover golden base images for GKE nodes","Expert at discovering golden base images for GKE custom nodes using technical specs or context clues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1166,1169,1170],{"name":1167,"slug":1168,"type":16},"Deployment","deployment",{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},"2026-07-12T07:39:30.888879",{"slug":1173,"name":1173,"fn":1174,"description":1175,"org":1176,"tags":1177,"stars":24,"repoUrl":25,"updatedAt":1186},"gke-ai-troubleshooting-handle-disruption-gpu-tpu","diagnose GPU and TPU workload disruptions","Diagnose and predict node disruption during Compute Engine host maintenance for GPU and TPU workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1178,1181,1182,1183],{"name":1179,"slug":1180,"type":16},"Debugging","debugging",{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"name":1184,"slug":1185,"type":16},"Performance","performance","2026-07-28T05:34:18.149515",{"slug":1188,"name":1188,"fn":1189,"description":1190,"org":1191,"tags":1192,"stars":24,"repoUrl":25,"updatedAt":1199},"gke-ai-troubleshooting-jobset-interruption","diagnose GKE JobSet interruptions","Systematically diagnose GKE JobSet interruptions, restarts, and preemptions for AI\u002FML training workloads. Identifies preemption events, maintenance interruptions, bad host VMs, unhealthy pods, and coordinator worker failures.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1193,1194,1195,1196],{"name":1179,"slug":1180,"type":16},{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"name":1197,"slug":1198,"type":16},"Observability","observability","2026-07-12T07:40:04.511878",{"slug":1201,"name":1201,"fn":1202,"description":1203,"org":1204,"tags":1205,"stars":24,"repoUrl":25,"updatedAt":1212},"gke-ai-troubleshooting-skill-creation-guide","create GKE troubleshooting skill bundles","Expert instructions for building high-quality GKE troubleshooting skills. Codifies Step 0 context rules, zero-hallucination signatures, and explicit LQL\u002FPromQL query requirements.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1206,1207,1208,1209],{"name":978,"slug":979,"type":16},{"name":1015,"slug":1016,"type":16},{"name":9,"slug":8,"type":16},{"name":1210,"slug":1211,"type":16},"Technical Writing","technical-writing","2026-07-12T07:39:50.73484",{"slug":1214,"name":1214,"fn":1215,"description":1216,"org":1217,"tags":1218,"stars":24,"repoUrl":25,"updatedAt":1223},"gke-ai-troubleshooting-tpu-connection-failure-vbar-oom","diagnose GKE TPU connection failures","Diagnose and prevent `vbar_control_agent` segfaults and OOMs caused by race conditions during TPU device resets and frequent metrics collection (e.g. every 3s). Use when TPU slice initialization fails or `vbar_control_agent` crashes on TPU v6e nodes.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1219,1220,1221,1222],{"name":1179,"slug":1180,"type":16},{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"name":1184,"slug":1185,"type":16},"2026-07-12T07:39:49.482979",{"slug":1225,"name":1225,"fn":1226,"description":1227,"org":1228,"tags":1229,"stars":24,"repoUrl":25,"updatedAt":1239},"gke-app-onboarding","containerize and deploy apps to GKE","Workflows for containerizing and deploying applications to GKE for the first time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1230,1233,1234,1235,1236],{"name":1231,"slug":1232,"type":16},"Containers","containers",{"name":1167,"slug":1168,"type":16},{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"name":1237,"slug":1238,"type":16},"Onboarding","onboarding","2026-07-12T07:39:41.935837",{"slug":1241,"name":1241,"fn":1242,"description":1243,"org":1244,"tags":1245,"stars":24,"repoUrl":25,"updatedAt":1250},"gke-backup-dr","configure GKE backup and disaster recovery","Workflows for configuring Backup for GKE and disaster recovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1246,1247,1248,1249],{"name":1167,"slug":1168,"type":16},{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"name":1049,"slug":1050,"type":16},"2026-07-12T07:39:34.806995",25]