identity-translation
Skill139 starsChanged 6 months agoApache-2.0View on GitHub
Translates AWS IAM Roles for Service Accounts (IRSA) to Google Cloud Workload Identity. Generates Terraform for Google Service Accounts, IAM bindings, and AWS OIDC federation.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- geoffsdesk/portagetheir own version, first seen May 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- geoffsdesk/portage★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository45 other files it gives its agents.
- spanner-provisioningSkill
- ad-copywritingSkill
- brand-strategySkill
- platform-specsSkill
- trend-analysisSkill
- video-storytellingSkill
- visual-directionSkill
- ad-copywritingSkill
- brand-strategySkill
- platform-specsSkill
- trend-analysisSkill
- video-storytellingSkill
- visual-directionSkill
- code-reviewSkill
- documentationSkill
- idea-to-appSkill
- open-prSkill
- pre-commitSkill
- security-scanSkill
- unit-testsSkill
- modernize-dotnet-cloudrunSkill
- legacy-app-generatorSkill
- app-migration-executionSkill
- app-migration-orchestratorSkill
- identity-translationSkill
- network-translationSkill
- observability-translationSkill
- storage-translationSkill
- workload-translationSkill
- ingress2gatewaySkill
- eks-discoverySkill
- gke-landing-zoneSkill
- migration-assessmentSkill
- network-translationSkill
- observability-translationSkill
- platform-orchestratorSkill
- registry-migrationSkill
- storage-translationSkill
- validationSkill
- bigframes-bqmlSkill
- model-evaluationSkill
- pipeline-generatorSkill
- spark-lightning-optimizationSkill
- unified-model-registrySkill
- zero-copy-ingestionSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 48
When the orchestrator explicitly invokes identity-translation.
- Distinctive: line 60
If you cannot meet any prerequisite, stop immediately.
- Very specific: line 108
Write the Kubernetes manifests to <OUTPUT_DIR>/05-identity-translation/manifests/serviceaccounts/.
- Very specific: line 111
Ensure every KSA includes the critical annotation: iam.gke.io/gcp-service-account: <GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!--
Copyright 2026 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--><!--
Disabling markdownlint MD029 to provide explicit ordering to avoid confusing
the LLM.
--><!-- markdownlint-disable MD029 --><!--
Disabling markdownlint MD030 to allow the list overflowing to numbers
>=10.
--><!-- markdownlint-disable MD030 -->Identity translation and federation
You are a cloud identity architect. Your job is to translate Amazon EKS IAM Roles for Service Accounts (IRSA) into Google Kubernetes Engine (GKE) Workload Identity.
Because applications migrating to GKE may still need to access legacy AWS resources, such as S3 or SQS, during a phased migration, you must also generate AWS OIDC federation Terraform. This allows the new GKE workloads to seamlessly assume their old AWS roles without application code changes.
When to use this skill
- Phase 2 (Design), after
network-translation. - When the orchestrator explicitly invokes
identity-translation.
Prerequisites
<output_dir>/01-discovery/irsa-map.tsvcontaining the mapping of Kubernetes Service Accounts (KSAs) to AWS IAM Roles.<output_dir>/03-landing-zone/landing-zone-plan.md(to extract the target Google Cloud project ID).terraform,gcloud,aws, andcheck-jsonschemaCLIs installed locally.
Missing prerequisites
If you cannot meet any prerequisite, stop immediately. Tell the user the exact missing requirement and instruct them to resolve it.
Procedure
Step 1 — Map Identity
- Read the
irsa-map.tsv. - For every unique AWS IAM Role listed, propose a Google Service Account (GSA)
name, for example,
app-backend-gsa. - Generate
<OUTPUT_DIR>/05-identity-translation/identity-map.jsonmapping the KSA, the target GSA, and the legacy AWS IAM Role ARN, adhering strictly to the schema provided inassets/identity-map.schema.json. Validate the generated map using
check-jsonschema:check-jsonschema --schemafile <SKILL_DIR>/assets/identity-map.schema.json <OUTPUT_DIR>/05-identity-translation/identity-map.json
Step 2 — Generate Google Cloud Terraform
- Write
<OUTPUT_DIR>/05-identity-translation/terraform/google-service-accounts.tfandiam-bindings.tf.- Use the
terraform-google-modules/kubernetes-engine/google//modules/workload-identitymodule to provision the GSAs and automatically bind them to the KSAs, rather than using rawgoogle_service_accountresources.
- Use the
Step 3 — Generate AWS Federation Terraform
To allow the GKE pods to continue accessing AWS, AWS must trust the Google Cloud OIDC provider.
- Write
<OUTPUT_DIR>/05-identity-translation/aws-federation/oidc-provider.tfusing theaws_iam_openid_connect_providerresource pointing tohttps://accounts.google.com. - Write
<OUTPUT_DIR>/05-identity-translation/aws-federation/trust-policies.tf.- For every AWS IAM Role that was used by an EKS pod, generate an
aws_iam_role_policy_attachmentoraws_iam_policy_documentthat amends the Trust Policy to allowsts:AssumeRoleWithWebIdentityfrom the Google OIDC provider, specifically condition-matching the Google Service Account'ssuboremailclaim. Referenceassets/aws-trust-policy.jsonfor the exact format.
- For every AWS IAM Role that was used by an EKS pod, generate an
Step 4 — Generate KSA Manifests
- Write the Kubernetes manifests to
<OUTPUT_DIR>/05-identity-translation/manifests/serviceaccounts/. Base them onassets/ksa.yaml. - Ensure every KSA includes the critical annotation:
iam.gke.io/gcp-service-account: <GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com. - Optionally provision network policy blocking the metadata server based on
assets/block-metadata-server.yamlif requested.
Outputs / Deliverables
The orchestrator requires this exact structure:
05-identity-translation/
├── identity-map.json
├── identity-map.md # Human-readable summary
├── manifests/
│ └── serviceaccounts/ # KSA YAML cluster level
├── terraform/
│ ├── google-service-accounts.tf
│ └── iam-bindings.tf
├── aws-federation/ # AWS-side OIDC providers + role trust amendments
└── escalations.mdDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

