We'd love to accept your patches and contributions to this project. GKE Agentic Migration is intentionally small and intentionally opinionated. Please read this whole document before opening a PR — it will save us both time.
Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project.
If you or your current employer have already signed the Google CLA (even if it was for a different project), you probably don't need to do it again.
Visit https://cla.developers.google.com/ to see your current agreements or to sign a new one.
This project follows Google's Open Source Community Guidelines.
- Bug fixes and corrections to existing phases, knowledge documents and skills (a translation that's wrong, a command that no longer works, a recommendation that contradicts current GKE guidance).
- Tightening of existing step instructions and worker briefs: clearer triggers, better escalation language, more precise output schemas.
- New reference content: Terraform modules, service mappings, runbook templates that one of the existing phases can call into.
- Friction logs: write up what broke when you ran GKE Agentic Migration on a real migration. These are gold.
- New entries in reference/lessons-from-the-field.md — citable practitioner war stories that the existing skills should anticipate. The bar: a verifiable URL, an attributable author, paraphrased lesson (≤15 words verbatim), an owning phase, and a justified severity rating.
- New top-level skills. The three shipped skills (
bootstrapping,join,dag_executor) are entry points; the migration logic lives in the phases underservers/phases/and their step instructions. A new skill is justified only for a new way into the product, not for a new migration capability — those are phase steps. - Speculative features. No "future-looking" skills for GCP services that have not GA'd. We will add support after launch, not before.
- Tooling lock-in. Skills and rules files must work with any agent runtime that loads
SKILL.md-format files and speaks MCP. Do not introduce dependencies on a specific orchestrator, plugin format, or model provider.
A change ships when two SREs at two different companies can execute it end-to-end on their own infrastructure without our help. This is not a slogan. It is the merge criterion.
Concretely:
- A skill (
skills/<name>/SKILL.md) has valid frontmatter (name,description, and acommandslist with each argument described), then the sections the shipped skills use:Intent,General Rules,Workflows(one per command, numbered steps naming the exact MCP tool and arguments), and, where the skill drives the DAG,Role-Specific Stage Instructionskeyed by state name. Thedescriptionmust trigger on the right requests and not on the wrong ones; test it with five real-sounding prompts. - A phase step (
servers/phases/<phase>/<step>/) hasinstructions.md(what the agent tells the user and which tool it calls),tools.py(the MCP tools, thin over pure helpers), pure helper modules with a_test.pybeside each, and aREADME.mdrow in the phase's step table. Knowledge documents live inservers/phases/<phase>/knowledge/and are cited from the step instructions. - Real commands where a human runs one. Not pseudocode. Not "run the appropriate
gcloudcommand". The actual command, with the actual flags. The agent itself never runs cloud CLIs; it calls MCP tools. - Every new behaviour has a unit test, and any change to a knowledge document that code parses (the assessment blocker table, the coverage map) keeps the parser's tests green.
- Imperative, terse, factual. "Create the cluster with these flags." Not "you might want to consider creating a cluster, perhaps with the following flags".
- Show diffs. When a skill rewrites a manifest, it shows the before, the after, and the rationale.
- Cite when you assert. If you say "GKE does X" in a customer-facing skill, link to the public doc that says so. If the public doc disagrees with the internal truth, the skill says so explicitly and flags the discrepancy.
- No emojis in skill files unless the user asked for them.
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.
- Open an issue describing what you're trying to fix or add. For non-trivial changes, wait for ack before writing the PR.
- Branch from
main, name your branch<area>/<short-description>(workload-translation/helm-values-overrides). - One change per PR. Mixed changes get split or rejected.
- Run the affected flow end-to-end on a real or representative environment. Paste the trace into the PR description.
By submitting a contribution, you agree that it will be released under Apache 2.0.