GKE Dispatch

Runs parallel container and Claude Code tasks as Kubernetes Jobs on GKE with GCS results.

1|Updated May 17, 2026
One-click install
npx skills add https://github.com/Envision-Construction/Envision-Skill-Repo --skill gke-dispatch-envision-construction
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: GKE Dispatch
Source: https://github.com/Envision-Construction/Envision-Skill-Repo/tree/main/plugins/infra/gke/skills/dispatch
Command: npx skills add https://github.com/Envision-Construction/Envision-Skill-Repo --skill gke-dispatch-envision-construction

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires PyJWT, cryptography, and includes scripts (resource) and references (resource) components.

What problem does it solve? Moving parallel work off a local machine onto a Kubernetes cluster is error-prone: jobs get lost, retries re-run finished work, and results scatter across pods that disappear. This Skill turns a list of independent tasks into a wave of Kubernetes Jobs on the envision-compute GKE cluster, records every result in Google Cloud Storage, and makes re-runs idempotent so completed tasks never execute twice. ## Core Features & Use Cases - Two task kinds: generic container commands run as one Indexed Job, or Claude Code plan executions run as per-task Jobs in the claude-executor image with budget caps and branch pushes. - Idempotent replay: re-dispatching a wave keyed by wave id adopts prior exit-0 results, archives stale failures, and only schedules pending tasks. - Roadmap execution: run_roadmap.py converts a GSD planning directory into dependency-batched phases with checkpointed state in GCS and resume support. - Use Case: Lint two directories of a repository in parallel on the cluster instead of a laptop: normalize the two tasks into a wave manifest, dry-run to inspect the Job YAML, dispatch, then collect per-task exit codes and logs from GCS. ## Quick Start Ask the assistant to dispatch a wave of independent shell commands or Claude Code plans to the GKE cluster by first building a manifest with normalize_wave.py, then running dispatch.py and collect.py from the skill's scripts directory.

Frequently Asked Questions about GKE Dispatch

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run parallel tasks on a GKE cluster from a manifest?▼

Build a wave manifest with normalize_wave.py, verify it with dispatch.py --dry-run to inspect the Job YAML, then run dispatch.py followed by collect.py to poll results. Each task's stdout, stderr, and result.json land in GCS under the wave id.

How do I retry only the failed tasks in a wave?▼

Re-run dispatch.py with the same manifest and wave id. Completed tasks stay completed, failed tasks reset to pending, and stale failed result files are archived before new Jobs are applied, so finished work never re-runs.

Can a wave mix generic container tasks and Claude executor tasks?▼

No. dispatch.py rejects mixed waves before writing anything. Generic tasks must also share one image and one resource profile per wave; split heterogeneous work into separate waves.

Why is my GKE pod stuck Pending on the cluster?▼

Executor tasks pin to spot GPU nodes that idle at zero, so the autoscaler needs 2 to 5 minutes to scale up. If it stays pending past roughly 10 minutes, check spot quota with the quotas API rather than gcloud compute regions describe.

Where do I find logs after the Kubernetes Jobs disappear?▼

Jobs are garbage-collected one hour after finishing, so GCS is the record. Read gs://gke-dispatch-claude-mcp-457317/waves/<wave_id>/outputs/<task_id>/ for stdout.log, stderr.log, and result.json.

When should I use Cloud Run jobs instead of GKE dispatch?▼

Use Cloud Run jobs for batches longer than about five hours, red-team panels, or sweeps, since they offer a 168-hour task timeout. GKE dispatch fits parallel container or Claude plan work that needs GCS-backed idempotent replay.