[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-eks":3,"mdc--pf5bvh-key":37,"related-org-aws-labs-eks":1686,"related-repo-aws-labs-eks":1865},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"eks","design and troubleshoot Amazon EKS clusters","Design, deploy, and troubleshoot Amazon EKS clusters. Use when working with Kubernetes on AWS, configuring managed node groups or Fargate profiles, setting up IRSA or Pod Identity, managing EKS add-ons, autoscaling with Karpenter, or troubleshooting cluster issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,23],{"name":14,"slug":15,"type":16},"Deployment","deployment","tag",{"name":18,"slug":19,"type":16},"Kubernetes","kubernetes",{"name":21,"slug":22,"type":16},"Infrastructure","infrastructure",{"name":24,"slug":25,"type":16},"AWS","aws",14,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups","2026-07-12T08:40:06.088738",null,15,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Official AWS Startups repository that hosts plugins, skills, tools and resources to support startup builders on AWS","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups\u002Ftree\u002FHEAD\u002Fsolution-architecture\u002Fplugins\u002Faws-dev-toolkit\u002Fskills\u002Feks","---\nname: eks\ndescription: Design, deploy, and troubleshoot Amazon EKS clusters. Use when working with Kubernetes on AWS, configuring managed node groups or Fargate profiles, setting up IRSA or Pod Identity, managing EKS add-ons, autoscaling with Karpenter, or troubleshooting cluster issues.\n---\n\nYou are an AWS EKS specialist. When advising on EKS workloads:\n\n## Process\n\n1. Clarify requirements: team Kubernetes maturity, workload types, multi-tenancy needs, compliance constraints\n2. Recommend compute strategy (managed node groups, Fargate profiles, or self-managed)\n3. Design cluster networking, IAM, and add-on configuration\n4. Configure autoscaling, observability, and upgrade strategy\n5. Use the `awsknowledge` MCP tools (`mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend`) to verify current EKS versions, add-on compatibility, or feature availability\n\n## Compute Strategy\n\n**Default to managed node groups** for most workloads.\n\n- **Managed Node Groups**: AWS handles node provisioning, AMI updates, and draining. Best default. Use with Karpenter for intelligent scaling.\n- **Fargate Profiles**: No node management at all. Best for low-ops teams running stateless workloads. Limitations: no DaemonSets, no persistent volumes (EBS), no GPUs, higher per-pod cost at scale.\n- **Self-Managed Nodes**: Only when you need custom AMIs, GPU drivers, Windows containers, or Bottlerocket with custom settings that managed nodes don't support.\n\n## Cluster Setup\n\n- Use **private endpoint** for the API server in production. Enable public endpoint only if needed for CI\u002FCD, and restrict via CIDR allowlists.\n- Deploy the cluster across **at least 3 AZs** for high availability.\n- Use a **dedicated VPC** for EKS with separate subnets for pods (secondary CIDR if needed for IP space).\n- Enable **envelope encryption** for Kubernetes secrets using a KMS key.\n- Enable **control plane logging** (api, audit, authenticator, controllerManager, scheduler) to CloudWatch Logs from day one.\n\n## IAM: IRSA vs Pod Identity\n\n**Default to EKS Pod Identity** for new clusters (EKS 1.24+). It is simpler and does not require an OIDC provider.\n\n- **Pod Identity**: AWS-managed, no OIDC setup. Create a Pod Identity Association linking a K8s service account to an IAM role. The role trust policy uses `pods.eks.amazonaws.com` as the principal.\n- **IRSA (IAM Roles for Service Accounts)**: Legacy but still widely used. Requires an OIDC provider on the cluster. Annotate the K8s ServiceAccount with `eks.amazonaws.com\u002Frole-arn`. Use for clusters \u003C 1.24 or cross-account access patterns not yet supported by Pod Identity.\n- **Never use node instance roles for application permissions**. Node roles should only have permissions for kubelet, ECR pulls, and CNI. Application permissions go through Pod Identity or IRSA.\n\n## EKS Add-ons\n\nManage these as EKS add-ons (not Helm) for automatic version compatibility:\n\n- **vpc-cni**: Required. Enable `ENABLE_PREFIX_DELEGATION` for higher pod density (110+ pods\u002Fnode). Set `WARM_PREFIX_TARGET=1` to reduce IP waste.\n- **kube-proxy**: Required. Use IPVS mode for large clusters (>500 nodes).\n- **CoreDNS**: Required. Scale replicas based on cluster size (2 for small, 4+ for large). Enable NodeLocal DNSCache for latency-sensitive workloads.\n- **EBS CSI Driver**: Required for persistent volumes. Install via add-on with Pod Identity for IAM.\n- **EFS CSI Driver**: For shared file systems across pods\u002Fnodes.\n- **AWS Load Balancer Controller**: Required for ALB Ingress and NLB services. Not a managed add-on -- install via Helm.\n- **Metrics Server**: Required for HPA. Install via add-on.\n\n## Autoscaling: Karpenter vs Cluster Autoscaler\n\n**Default to Karpenter** for new clusters. It is faster, more flexible, and cost-optimized.\n\n- **Karpenter**: Provisions nodes directly (not ASGs). Define `NodePool` and `EC2NodeClass` CRDs. Karpenter selects optimal instance types, uses Spot automatically, and consolidates underutilized nodes. Bin-packing is far superior to Cluster Autoscaler.\n- **Cluster Autoscaler**: Legacy. Tied to ASG min\u002Fmax. Slower scaling (minutes vs seconds). Use only if Karpenter is not an option (e.g., very old clusters, org policy).\n\nKarpenter best practices:\n\n- Define `NodePool` with broad instance families (`c`, `m`, `r` families) -- let Karpenter choose the best fit.\n- Set `consolidationPolicy: WhenEmptyOrUnderutilized` to automatically right-size the fleet.\n- Use `topologySpreadConstraints` in pod specs to distribute across AZs.\n- Set `expireAfter` (e.g., 720h) to rotate nodes and pick up new AMIs.\n- Always set `limits` on the NodePool (max CPU\u002Fmemory) to prevent runaway scaling.\n\n## Common CLI Commands\n\n```bash\n# Create a cluster with eksctl\neksctl create cluster --name my-cluster --region us-east-1 --version 1.31 --managed --node-type m6i.large --nodes 3\n\n# Update kubeconfig\naws eks update-kubeconfig --name my-cluster --region us-east-1\n\n# Check cluster status\naws eks describe-cluster --name my-cluster --query \"cluster.status\"\n\n# List node groups\naws eks list-nodegroups --cluster-name my-cluster\n\n# Update a node group AMI\naws eks update-nodegroup-version --cluster-name my-cluster --nodegroup-name my-ng\n\n# Install Karpenter (via Helm)\nhelm install karpenter oci:\u002F\u002Fpublic.ecr.aws\u002Fkarpenter\u002Fkarpenter --namespace kube-system --set clusterName=my-cluster --set clusterEndpoint=$(aws eks describe-cluster --name my-cluster --query \"cluster.endpoint\" --output text)\n\n# Get pods with node info\nkubectl get pods -o wide -A\n\n# Check EKS add-on versions\naws eks describe-addon-versions --addon-name vpc-cni --kubernetes-version 1.31\n\n# View Pod Identity associations\naws eks list-pod-identity-associations --cluster-name my-cluster\n\n# Debug a failing pod\nkubectl describe pod \u003Cpod-name> -n \u003Cnamespace>\nkubectl logs \u003Cpod-name> -n \u003Cnamespace> --previous\n```\n\n## Upgrade Strategy\n\n- EKS supports N-1 version skew. Upgrade **one minor version at a time**.\n- Order: control plane first, then add-ons, then node groups.\n- Use `eksctl` or Terraform to orchestrate. Never skip versions.\n- Test upgrades in a non-prod cluster first. Check the [EKS version changelog](https:\u002F\u002Fdocs.aws.amazon.com\u002Feks\u002Flatest\u002Fuserguide\u002Fkubernetes-versions.html) for deprecations.\n- Blue\u002Fgreen node group upgrades: create a new node group, cordon\u002Fdrain old nodes, delete old node group.\n\n## Output Format\n\n| Field                              | Details                                                                  |\n| ---------------------------------- | ------------------------------------------------------------------------ |\n| **Cluster version**                | Kubernetes version (e.g., 1.31)                                          |\n| **Compute strategy**               | Managed node groups, Fargate profiles, or self-managed                   |\n| **Node groups \u002F Karpenter config** | Instance families, NodePool limits, consolidation policy                 |\n| **Add-ons**                        | Managed add-ons and versions (vpc-cni, CoreDNS, kube-proxy, CSI drivers) |\n| **Autoscaling approach**           | Karpenter or Cluster Autoscaler, NodePool\u002FASG config                     |\n| **Ingress**                        | AWS Load Balancer Controller, ALB Ingress, or NLB                        |\n| **IAM (IRSA \u002F Pod Identity)**      | Pod Identity associations or IRSA OIDC setup per workload                |\n| **Monitoring**                     | Container Insights, Prometheus, control plane logging, X-Ray             |\n\n## Related Skills\n\n- `ecs` — Simpler container orchestration alternative when Kubernetes is not required\n- `ec2` — Instance types, Spot strategy, and ASG config for self-managed nodes\n- `networking` — VPC design, pod networking (secondary CIDRs), and security groups\n- `iam` — IRSA, Pod Identity, and node role configuration\n- `observability` — CloudWatch Container Insights, Prometheus, and control plane logging\n- `lambda` — Serverless alternative for event-driven or low-traffic workloads\n- `service-mesh` — Istio for mTLS, east-west traffic management, and canary\u002Fblue-green shifting\n\n## Anti-Patterns\n\n- **Over-privileged node IAM roles**: Node roles should not have S3, DynamoDB, or other application permissions. Use Pod Identity or IRSA for least-privilege per workload.\n- **Not using Pod Disruption Budgets (PDBs)**: Without PDBs, node drains during upgrades or Karpenter consolidation can take down all replicas simultaneously.\n- **Running without resource requests\u002Flimits**: Kubernetes cannot schedule efficiently without them. Karpenter cannot right-size nodes. Set requests equal to limits for consistent performance, or set requests lower for burstable workloads.\n- **Single-AZ clusters**: Always spread nodes and pods across at least 2 AZs (3 preferred) using topology spread constraints.\n- **Managing add-ons with Helm when EKS add-ons exist**: EKS-managed add-ons handle version compatibility automatically. Use them for vpc-cni, kube-proxy, CoreDNS, and CSI drivers.\n- **Using Cluster Autoscaler with diverse instance types**: Cluster Autoscaler struggles with heterogeneous ASGs. Switch to Karpenter.\n- **No network policies**: By default, all pods can talk to all pods. Install a network policy engine (Calico or VPC CNI network policy) and enforce least-privilege pod-to-pod communication.\n- **Skipping control plane logging**: Without audit logs, you cannot investigate security incidents or debug API server issues. Enable all five log types from the start.\n- **kubectl apply on production without GitOps**: Use ArgoCD or Flux for production deployments. Manual kubectl apply is not auditable and not reproducible.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,50,57,119,125,136,170,176,238,244,254,303,309,314,403,409,419,458,463,550,556,1275,1281,1333,1339,1495,1501,1581,1587,1680],{"type":43,"tag":44,"props":45,"children":46},"element","p",{},[47],{"type":48,"value":49},"text","You are an AWS EKS specialist. When advising on EKS workloads:",{"type":43,"tag":51,"props":52,"children":54},"h2",{"id":53},"process",[55],{"type":48,"value":56},"Process",{"type":43,"tag":58,"props":59,"children":60},"ol",{},[61,67,72,77,82],{"type":43,"tag":62,"props":63,"children":64},"li",{},[65],{"type":48,"value":66},"Clarify requirements: team Kubernetes maturity, workload types, multi-tenancy needs, compliance constraints",{"type":43,"tag":62,"props":68,"children":69},{},[70],{"type":48,"value":71},"Recommend compute strategy (managed node groups, Fargate profiles, or self-managed)",{"type":43,"tag":62,"props":73,"children":74},{},[75],{"type":48,"value":76},"Design cluster networking, IAM, and add-on configuration",{"type":43,"tag":62,"props":78,"children":79},{},[80],{"type":48,"value":81},"Configure autoscaling, observability, and upgrade strategy",{"type":43,"tag":62,"props":83,"children":84},{},[85,87,94,96,102,104,110,111,117],{"type":48,"value":86},"Use the ",{"type":43,"tag":88,"props":89,"children":91},"code",{"className":90},[],[92],{"type":48,"value":93},"awsknowledge",{"type":48,"value":95}," MCP tools (",{"type":43,"tag":88,"props":97,"children":99},{"className":98},[],[100],{"type":48,"value":101},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation",{"type":48,"value":103},", ",{"type":43,"tag":88,"props":105,"children":107},{"className":106},[],[108],{"type":48,"value":109},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation",{"type":48,"value":103},{"type":43,"tag":88,"props":112,"children":114},{"className":113},[],[115],{"type":48,"value":116},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend",{"type":48,"value":118},") to verify current EKS versions, add-on compatibility, or feature availability",{"type":43,"tag":51,"props":120,"children":122},{"id":121},"compute-strategy",[123],{"type":48,"value":124},"Compute Strategy",{"type":43,"tag":44,"props":126,"children":127},{},[128,134],{"type":43,"tag":129,"props":130,"children":131},"strong",{},[132],{"type":48,"value":133},"Default to managed node groups",{"type":48,"value":135}," for most workloads.",{"type":43,"tag":137,"props":138,"children":139},"ul",{},[140,150,160],{"type":43,"tag":62,"props":141,"children":142},{},[143,148],{"type":43,"tag":129,"props":144,"children":145},{},[146],{"type":48,"value":147},"Managed Node Groups",{"type":48,"value":149},": AWS handles node provisioning, AMI updates, and draining. Best default. Use with Karpenter for intelligent scaling.",{"type":43,"tag":62,"props":151,"children":152},{},[153,158],{"type":43,"tag":129,"props":154,"children":155},{},[156],{"type":48,"value":157},"Fargate Profiles",{"type":48,"value":159},": No node management at all. Best for low-ops teams running stateless workloads. Limitations: no DaemonSets, no persistent volumes (EBS), no GPUs, higher per-pod cost at scale.",{"type":43,"tag":62,"props":161,"children":162},{},[163,168],{"type":43,"tag":129,"props":164,"children":165},{},[166],{"type":48,"value":167},"Self-Managed Nodes",{"type":48,"value":169},": Only when you need custom AMIs, GPU drivers, Windows containers, or Bottlerocket with custom settings that managed nodes don't support.",{"type":43,"tag":51,"props":171,"children":173},{"id":172},"cluster-setup",[174],{"type":48,"value":175},"Cluster Setup",{"type":43,"tag":137,"props":177,"children":178},{},[179,191,203,215,227],{"type":43,"tag":62,"props":180,"children":181},{},[182,184,189],{"type":48,"value":183},"Use ",{"type":43,"tag":129,"props":185,"children":186},{},[187],{"type":48,"value":188},"private endpoint",{"type":48,"value":190}," for the API server in production. Enable public endpoint only if needed for CI\u002FCD, and restrict via CIDR allowlists.",{"type":43,"tag":62,"props":192,"children":193},{},[194,196,201],{"type":48,"value":195},"Deploy the cluster across ",{"type":43,"tag":129,"props":197,"children":198},{},[199],{"type":48,"value":200},"at least 3 AZs",{"type":48,"value":202}," for high availability.",{"type":43,"tag":62,"props":204,"children":205},{},[206,208,213],{"type":48,"value":207},"Use a ",{"type":43,"tag":129,"props":209,"children":210},{},[211],{"type":48,"value":212},"dedicated VPC",{"type":48,"value":214}," for EKS with separate subnets for pods (secondary CIDR if needed for IP space).",{"type":43,"tag":62,"props":216,"children":217},{},[218,220,225],{"type":48,"value":219},"Enable ",{"type":43,"tag":129,"props":221,"children":222},{},[223],{"type":48,"value":224},"envelope encryption",{"type":48,"value":226}," for Kubernetes secrets using a KMS key.",{"type":43,"tag":62,"props":228,"children":229},{},[230,231,236],{"type":48,"value":219},{"type":43,"tag":129,"props":232,"children":233},{},[234],{"type":48,"value":235},"control plane logging",{"type":48,"value":237}," (api, audit, authenticator, controllerManager, scheduler) to CloudWatch Logs from day one.",{"type":43,"tag":51,"props":239,"children":241},{"id":240},"iam-irsa-vs-pod-identity",[242],{"type":48,"value":243},"IAM: IRSA vs Pod Identity",{"type":43,"tag":44,"props":245,"children":246},{},[247,252],{"type":43,"tag":129,"props":248,"children":249},{},[250],{"type":48,"value":251},"Default to EKS Pod Identity",{"type":48,"value":253}," for new clusters (EKS 1.24+). It is simpler and does not require an OIDC provider.",{"type":43,"tag":137,"props":255,"children":256},{},[257,275,293],{"type":43,"tag":62,"props":258,"children":259},{},[260,265,267,273],{"type":43,"tag":129,"props":261,"children":262},{},[263],{"type":48,"value":264},"Pod Identity",{"type":48,"value":266},": AWS-managed, no OIDC setup. Create a Pod Identity Association linking a K8s service account to an IAM role. The role trust policy uses ",{"type":43,"tag":88,"props":268,"children":270},{"className":269},[],[271],{"type":48,"value":272},"pods.eks.amazonaws.com",{"type":48,"value":274}," as the principal.",{"type":43,"tag":62,"props":276,"children":277},{},[278,283,285,291],{"type":43,"tag":129,"props":279,"children":280},{},[281],{"type":48,"value":282},"IRSA (IAM Roles for Service Accounts)",{"type":48,"value":284},": Legacy but still widely used. Requires an OIDC provider on the cluster. Annotate the K8s ServiceAccount with ",{"type":43,"tag":88,"props":286,"children":288},{"className":287},[],[289],{"type":48,"value":290},"eks.amazonaws.com\u002Frole-arn",{"type":48,"value":292},". Use for clusters \u003C 1.24 or cross-account access patterns not yet supported by Pod Identity.",{"type":43,"tag":62,"props":294,"children":295},{},[296,301],{"type":43,"tag":129,"props":297,"children":298},{},[299],{"type":48,"value":300},"Never use node instance roles for application permissions",{"type":48,"value":302},". Node roles should only have permissions for kubelet, ECR pulls, and CNI. Application permissions go through Pod Identity or IRSA.",{"type":43,"tag":51,"props":304,"children":306},{"id":305},"eks-add-ons",[307],{"type":48,"value":308},"EKS Add-ons",{"type":43,"tag":44,"props":310,"children":311},{},[312],{"type":48,"value":313},"Manage these as EKS add-ons (not Helm) for automatic version compatibility:",{"type":43,"tag":137,"props":315,"children":316},{},[317,343,353,363,373,383,393],{"type":43,"tag":62,"props":318,"children":319},{},[320,325,327,333,335,341],{"type":43,"tag":129,"props":321,"children":322},{},[323],{"type":48,"value":324},"vpc-cni",{"type":48,"value":326},": Required. Enable ",{"type":43,"tag":88,"props":328,"children":330},{"className":329},[],[331],{"type":48,"value":332},"ENABLE_PREFIX_DELEGATION",{"type":48,"value":334}," for higher pod density (110+ pods\u002Fnode). Set ",{"type":43,"tag":88,"props":336,"children":338},{"className":337},[],[339],{"type":48,"value":340},"WARM_PREFIX_TARGET=1",{"type":48,"value":342}," to reduce IP waste.",{"type":43,"tag":62,"props":344,"children":345},{},[346,351],{"type":43,"tag":129,"props":347,"children":348},{},[349],{"type":48,"value":350},"kube-proxy",{"type":48,"value":352},": Required. Use IPVS mode for large clusters (>500 nodes).",{"type":43,"tag":62,"props":354,"children":355},{},[356,361],{"type":43,"tag":129,"props":357,"children":358},{},[359],{"type":48,"value":360},"CoreDNS",{"type":48,"value":362},": Required. Scale replicas based on cluster size (2 for small, 4+ for large). Enable NodeLocal DNSCache for latency-sensitive workloads.",{"type":43,"tag":62,"props":364,"children":365},{},[366,371],{"type":43,"tag":129,"props":367,"children":368},{},[369],{"type":48,"value":370},"EBS CSI Driver",{"type":48,"value":372},": Required for persistent volumes. Install via add-on with Pod Identity for IAM.",{"type":43,"tag":62,"props":374,"children":375},{},[376,381],{"type":43,"tag":129,"props":377,"children":378},{},[379],{"type":48,"value":380},"EFS CSI Driver",{"type":48,"value":382},": For shared file systems across pods\u002Fnodes.",{"type":43,"tag":62,"props":384,"children":385},{},[386,391],{"type":43,"tag":129,"props":387,"children":388},{},[389],{"type":48,"value":390},"AWS Load Balancer Controller",{"type":48,"value":392},": Required for ALB Ingress and NLB services. Not a managed add-on -- install via Helm.",{"type":43,"tag":62,"props":394,"children":395},{},[396,401],{"type":43,"tag":129,"props":397,"children":398},{},[399],{"type":48,"value":400},"Metrics Server",{"type":48,"value":402},": Required for HPA. Install via add-on.",{"type":43,"tag":51,"props":404,"children":406},{"id":405},"autoscaling-karpenter-vs-cluster-autoscaler",[407],{"type":48,"value":408},"Autoscaling: Karpenter vs Cluster Autoscaler",{"type":43,"tag":44,"props":410,"children":411},{},[412,417],{"type":43,"tag":129,"props":413,"children":414},{},[415],{"type":48,"value":416},"Default to Karpenter",{"type":48,"value":418}," for new clusters. It is faster, more flexible, and cost-optimized.",{"type":43,"tag":137,"props":420,"children":421},{},[422,448],{"type":43,"tag":62,"props":423,"children":424},{},[425,430,432,438,440,446],{"type":43,"tag":129,"props":426,"children":427},{},[428],{"type":48,"value":429},"Karpenter",{"type":48,"value":431},": Provisions nodes directly (not ASGs). Define ",{"type":43,"tag":88,"props":433,"children":435},{"className":434},[],[436],{"type":48,"value":437},"NodePool",{"type":48,"value":439}," and ",{"type":43,"tag":88,"props":441,"children":443},{"className":442},[],[444],{"type":48,"value":445},"EC2NodeClass",{"type":48,"value":447}," CRDs. Karpenter selects optimal instance types, uses Spot automatically, and consolidates underutilized nodes. Bin-packing is far superior to Cluster Autoscaler.",{"type":43,"tag":62,"props":449,"children":450},{},[451,456],{"type":43,"tag":129,"props":452,"children":453},{},[454],{"type":48,"value":455},"Cluster Autoscaler",{"type":48,"value":457},": Legacy. Tied to ASG min\u002Fmax. Slower scaling (minutes vs seconds). Use only if Karpenter is not an option (e.g., very old clusters, org policy).",{"type":43,"tag":44,"props":459,"children":460},{},[461],{"type":48,"value":462},"Karpenter best practices:",{"type":43,"tag":137,"props":464,"children":465},{},[466,500,513,525,537],{"type":43,"tag":62,"props":467,"children":468},{},[469,471,476,478,484,485,491,492,498],{"type":48,"value":470},"Define ",{"type":43,"tag":88,"props":472,"children":474},{"className":473},[],[475],{"type":48,"value":437},{"type":48,"value":477}," with broad instance families (",{"type":43,"tag":88,"props":479,"children":481},{"className":480},[],[482],{"type":48,"value":483},"c",{"type":48,"value":103},{"type":43,"tag":88,"props":486,"children":488},{"className":487},[],[489],{"type":48,"value":490},"m",{"type":48,"value":103},{"type":43,"tag":88,"props":493,"children":495},{"className":494},[],[496],{"type":48,"value":497},"r",{"type":48,"value":499}," families) -- let Karpenter choose the best fit.",{"type":43,"tag":62,"props":501,"children":502},{},[503,505,511],{"type":48,"value":504},"Set ",{"type":43,"tag":88,"props":506,"children":508},{"className":507},[],[509],{"type":48,"value":510},"consolidationPolicy: WhenEmptyOrUnderutilized",{"type":48,"value":512}," to automatically right-size the fleet.",{"type":43,"tag":62,"props":514,"children":515},{},[516,517,523],{"type":48,"value":183},{"type":43,"tag":88,"props":518,"children":520},{"className":519},[],[521],{"type":48,"value":522},"topologySpreadConstraints",{"type":48,"value":524}," in pod specs to distribute across AZs.",{"type":43,"tag":62,"props":526,"children":527},{},[528,529,535],{"type":48,"value":504},{"type":43,"tag":88,"props":530,"children":532},{"className":531},[],[533],{"type":48,"value":534},"expireAfter",{"type":48,"value":536}," (e.g., 720h) to rotate nodes and pick up new AMIs.",{"type":43,"tag":62,"props":538,"children":539},{},[540,542,548],{"type":48,"value":541},"Always set ",{"type":43,"tag":88,"props":543,"children":545},{"className":544},[],[546],{"type":48,"value":547},"limits",{"type":48,"value":549}," on the NodePool (max CPU\u002Fmemory) to prevent runaway scaling.",{"type":43,"tag":51,"props":551,"children":553},{"id":552},"common-cli-commands",[554],{"type":48,"value":555},"Common CLI Commands",{"type":43,"tag":557,"props":558,"children":563},"pre",{"className":559,"code":560,"language":561,"meta":562,"style":562},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Create a cluster with eksctl\neksctl create cluster --name my-cluster --region us-east-1 --version 1.31 --managed --node-type m6i.large --nodes 3\n\n# Update kubeconfig\naws eks update-kubeconfig --name my-cluster --region us-east-1\n\n# Check cluster status\naws eks describe-cluster --name my-cluster --query \"cluster.status\"\n\n# List node groups\naws eks list-nodegroups --cluster-name my-cluster\n\n# Update a node group AMI\naws eks update-nodegroup-version --cluster-name my-cluster --nodegroup-name my-ng\n\n# Install Karpenter (via Helm)\nhelm install karpenter oci:\u002F\u002Fpublic.ecr.aws\u002Fkarpenter\u002Fkarpenter --namespace kube-system --set clusterName=my-cluster --set clusterEndpoint=$(aws eks describe-cluster --name my-cluster --query \"cluster.endpoint\" --output text)\n\n# Get pods with node info\nkubectl get pods -o wide -A\n\n# Check EKS add-on versions\naws eks describe-addon-versions --addon-name vpc-cni --kubernetes-version 1.31\n\n# View Pod Identity associations\naws eks list-pod-identity-associations --cluster-name my-cluster\n\n# Debug a failing pod\nkubectl describe pod \u003Cpod-name> -n \u003Cnamespace>\nkubectl logs \u003Cpod-name> -n \u003Cnamespace> --previous\n","bash","",[564],{"type":43,"tag":88,"props":565,"children":566},{"__ignoreMap":562},[567,579,656,666,675,710,718,727,773,781,790,817,825,834,868,875,884,995,1003,1012,1046,1054,1063,1100,1108,1117,1142,1150,1159,1221],{"type":43,"tag":568,"props":569,"children":572},"span",{"class":570,"line":571},"line",1,[573],{"type":43,"tag":568,"props":574,"children":576},{"style":575},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[577],{"type":48,"value":578},"# Create a cluster with eksctl\n",{"type":43,"tag":568,"props":580,"children":582},{"class":570,"line":581},2,[583,589,595,600,605,610,615,620,625,631,636,641,646,651],{"type":43,"tag":568,"props":584,"children":586},{"style":585},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[587],{"type":48,"value":588},"eksctl",{"type":43,"tag":568,"props":590,"children":592},{"style":591},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[593],{"type":48,"value":594}," create",{"type":43,"tag":568,"props":596,"children":597},{"style":591},[598],{"type":48,"value":599}," cluster",{"type":43,"tag":568,"props":601,"children":602},{"style":591},[603],{"type":48,"value":604}," --name",{"type":43,"tag":568,"props":606,"children":607},{"style":591},[608],{"type":48,"value":609}," my-cluster",{"type":43,"tag":568,"props":611,"children":612},{"style":591},[613],{"type":48,"value":614}," --region",{"type":43,"tag":568,"props":616,"children":617},{"style":591},[618],{"type":48,"value":619}," us-east-1",{"type":43,"tag":568,"props":621,"children":622},{"style":591},[623],{"type":48,"value":624}," --version",{"type":43,"tag":568,"props":626,"children":628},{"style":627},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[629],{"type":48,"value":630}," 1.31",{"type":43,"tag":568,"props":632,"children":633},{"style":591},[634],{"type":48,"value":635}," --managed",{"type":43,"tag":568,"props":637,"children":638},{"style":591},[639],{"type":48,"value":640}," --node-type",{"type":43,"tag":568,"props":642,"children":643},{"style":591},[644],{"type":48,"value":645}," m6i.large",{"type":43,"tag":568,"props":647,"children":648},{"style":591},[649],{"type":48,"value":650}," --nodes",{"type":43,"tag":568,"props":652,"children":653},{"style":627},[654],{"type":48,"value":655}," 3\n",{"type":43,"tag":568,"props":657,"children":659},{"class":570,"line":658},3,[660],{"type":43,"tag":568,"props":661,"children":663},{"emptyLinePlaceholder":662},true,[664],{"type":48,"value":665},"\n",{"type":43,"tag":568,"props":667,"children":669},{"class":570,"line":668},4,[670],{"type":43,"tag":568,"props":671,"children":672},{"style":575},[673],{"type":48,"value":674},"# Update kubeconfig\n",{"type":43,"tag":568,"props":676,"children":678},{"class":570,"line":677},5,[679,683,688,693,697,701,705],{"type":43,"tag":568,"props":680,"children":681},{"style":585},[682],{"type":48,"value":25},{"type":43,"tag":568,"props":684,"children":685},{"style":591},[686],{"type":48,"value":687}," eks",{"type":43,"tag":568,"props":689,"children":690},{"style":591},[691],{"type":48,"value":692}," update-kubeconfig",{"type":43,"tag":568,"props":694,"children":695},{"style":591},[696],{"type":48,"value":604},{"type":43,"tag":568,"props":698,"children":699},{"style":591},[700],{"type":48,"value":609},{"type":43,"tag":568,"props":702,"children":703},{"style":591},[704],{"type":48,"value":614},{"type":43,"tag":568,"props":706,"children":707},{"style":591},[708],{"type":48,"value":709}," us-east-1\n",{"type":43,"tag":568,"props":711,"children":713},{"class":570,"line":712},6,[714],{"type":43,"tag":568,"props":715,"children":716},{"emptyLinePlaceholder":662},[717],{"type":48,"value":665},{"type":43,"tag":568,"props":719,"children":721},{"class":570,"line":720},7,[722],{"type":43,"tag":568,"props":723,"children":724},{"style":575},[725],{"type":48,"value":726},"# Check cluster status\n",{"type":43,"tag":568,"props":728,"children":730},{"class":570,"line":729},8,[731,735,739,744,748,752,757,763,768],{"type":43,"tag":568,"props":732,"children":733},{"style":585},[734],{"type":48,"value":25},{"type":43,"tag":568,"props":736,"children":737},{"style":591},[738],{"type":48,"value":687},{"type":43,"tag":568,"props":740,"children":741},{"style":591},[742],{"type":48,"value":743}," describe-cluster",{"type":43,"tag":568,"props":745,"children":746},{"style":591},[747],{"type":48,"value":604},{"type":43,"tag":568,"props":749,"children":750},{"style":591},[751],{"type":48,"value":609},{"type":43,"tag":568,"props":753,"children":754},{"style":591},[755],{"type":48,"value":756}," --query",{"type":43,"tag":568,"props":758,"children":760},{"style":759},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[761],{"type":48,"value":762}," \"",{"type":43,"tag":568,"props":764,"children":765},{"style":591},[766],{"type":48,"value":767},"cluster.status",{"type":43,"tag":568,"props":769,"children":770},{"style":759},[771],{"type":48,"value":772},"\"\n",{"type":43,"tag":568,"props":774,"children":776},{"class":570,"line":775},9,[777],{"type":43,"tag":568,"props":778,"children":779},{"emptyLinePlaceholder":662},[780],{"type":48,"value":665},{"type":43,"tag":568,"props":782,"children":784},{"class":570,"line":783},10,[785],{"type":43,"tag":568,"props":786,"children":787},{"style":575},[788],{"type":48,"value":789},"# List node groups\n",{"type":43,"tag":568,"props":791,"children":793},{"class":570,"line":792},11,[794,798,802,807,812],{"type":43,"tag":568,"props":795,"children":796},{"style":585},[797],{"type":48,"value":25},{"type":43,"tag":568,"props":799,"children":800},{"style":591},[801],{"type":48,"value":687},{"type":43,"tag":568,"props":803,"children":804},{"style":591},[805],{"type":48,"value":806}," list-nodegroups",{"type":43,"tag":568,"props":808,"children":809},{"style":591},[810],{"type":48,"value":811}," --cluster-name",{"type":43,"tag":568,"props":813,"children":814},{"style":591},[815],{"type":48,"value":816}," my-cluster\n",{"type":43,"tag":568,"props":818,"children":820},{"class":570,"line":819},12,[821],{"type":43,"tag":568,"props":822,"children":823},{"emptyLinePlaceholder":662},[824],{"type":48,"value":665},{"type":43,"tag":568,"props":826,"children":828},{"class":570,"line":827},13,[829],{"type":43,"tag":568,"props":830,"children":831},{"style":575},[832],{"type":48,"value":833},"# Update a node group AMI\n",{"type":43,"tag":568,"props":835,"children":836},{"class":570,"line":26},[837,841,845,850,854,858,863],{"type":43,"tag":568,"props":838,"children":839},{"style":585},[840],{"type":48,"value":25},{"type":43,"tag":568,"props":842,"children":843},{"style":591},[844],{"type":48,"value":687},{"type":43,"tag":568,"props":846,"children":847},{"style":591},[848],{"type":48,"value":849}," update-nodegroup-version",{"type":43,"tag":568,"props":851,"children":852},{"style":591},[853],{"type":48,"value":811},{"type":43,"tag":568,"props":855,"children":856},{"style":591},[857],{"type":48,"value":609},{"type":43,"tag":568,"props":859,"children":860},{"style":591},[861],{"type":48,"value":862}," --nodegroup-name",{"type":43,"tag":568,"props":864,"children":865},{"style":591},[866],{"type":48,"value":867}," my-ng\n",{"type":43,"tag":568,"props":869,"children":870},{"class":570,"line":30},[871],{"type":43,"tag":568,"props":872,"children":873},{"emptyLinePlaceholder":662},[874],{"type":48,"value":665},{"type":43,"tag":568,"props":876,"children":878},{"class":570,"line":877},16,[879],{"type":43,"tag":568,"props":880,"children":881},{"style":575},[882],{"type":48,"value":883},"# Install Karpenter (via Helm)\n",{"type":43,"tag":568,"props":885,"children":887},{"class":570,"line":886},17,[888,893,898,903,908,913,918,923,928,932,937,942,946,950,954,958,962,966,970,975,980,985,990],{"type":43,"tag":568,"props":889,"children":890},{"style":585},[891],{"type":48,"value":892},"helm",{"type":43,"tag":568,"props":894,"children":895},{"style":591},[896],{"type":48,"value":897}," install",{"type":43,"tag":568,"props":899,"children":900},{"style":591},[901],{"type":48,"value":902}," karpenter",{"type":43,"tag":568,"props":904,"children":905},{"style":591},[906],{"type":48,"value":907}," oci:\u002F\u002Fpublic.ecr.aws\u002Fkarpenter\u002Fkarpenter",{"type":43,"tag":568,"props":909,"children":910},{"style":591},[911],{"type":48,"value":912}," --namespace",{"type":43,"tag":568,"props":914,"children":915},{"style":591},[916],{"type":48,"value":917}," kube-system",{"type":43,"tag":568,"props":919,"children":920},{"style":591},[921],{"type":48,"value":922}," --set",{"type":43,"tag":568,"props":924,"children":925},{"style":591},[926],{"type":48,"value":927}," clusterName=my-cluster",{"type":43,"tag":568,"props":929,"children":930},{"style":591},[931],{"type":48,"value":922},{"type":43,"tag":568,"props":933,"children":934},{"style":591},[935],{"type":48,"value":936}," clusterEndpoint=",{"type":43,"tag":568,"props":938,"children":939},{"style":759},[940],{"type":48,"value":941},"$(",{"type":43,"tag":568,"props":943,"children":944},{"style":585},[945],{"type":48,"value":25},{"type":43,"tag":568,"props":947,"children":948},{"style":591},[949],{"type":48,"value":687},{"type":43,"tag":568,"props":951,"children":952},{"style":591},[953],{"type":48,"value":743},{"type":43,"tag":568,"props":955,"children":956},{"style":591},[957],{"type":48,"value":604},{"type":43,"tag":568,"props":959,"children":960},{"style":591},[961],{"type":48,"value":609},{"type":43,"tag":568,"props":963,"children":964},{"style":591},[965],{"type":48,"value":756},{"type":43,"tag":568,"props":967,"children":968},{"style":759},[969],{"type":48,"value":762},{"type":43,"tag":568,"props":971,"children":972},{"style":591},[973],{"type":48,"value":974},"cluster.endpoint",{"type":43,"tag":568,"props":976,"children":977},{"style":759},[978],{"type":48,"value":979},"\"",{"type":43,"tag":568,"props":981,"children":982},{"style":591},[983],{"type":48,"value":984}," --output",{"type":43,"tag":568,"props":986,"children":987},{"style":591},[988],{"type":48,"value":989}," text",{"type":43,"tag":568,"props":991,"children":992},{"style":759},[993],{"type":48,"value":994},")\n",{"type":43,"tag":568,"props":996,"children":998},{"class":570,"line":997},18,[999],{"type":43,"tag":568,"props":1000,"children":1001},{"emptyLinePlaceholder":662},[1002],{"type":48,"value":665},{"type":43,"tag":568,"props":1004,"children":1006},{"class":570,"line":1005},19,[1007],{"type":43,"tag":568,"props":1008,"children":1009},{"style":575},[1010],{"type":48,"value":1011},"# Get pods with node info\n",{"type":43,"tag":568,"props":1013,"children":1015},{"class":570,"line":1014},20,[1016,1021,1026,1031,1036,1041],{"type":43,"tag":568,"props":1017,"children":1018},{"style":585},[1019],{"type":48,"value":1020},"kubectl",{"type":43,"tag":568,"props":1022,"children":1023},{"style":591},[1024],{"type":48,"value":1025}," get",{"type":43,"tag":568,"props":1027,"children":1028},{"style":591},[1029],{"type":48,"value":1030}," pods",{"type":43,"tag":568,"props":1032,"children":1033},{"style":591},[1034],{"type":48,"value":1035}," -o",{"type":43,"tag":568,"props":1037,"children":1038},{"style":591},[1039],{"type":48,"value":1040}," wide",{"type":43,"tag":568,"props":1042,"children":1043},{"style":591},[1044],{"type":48,"value":1045}," -A\n",{"type":43,"tag":568,"props":1047,"children":1049},{"class":570,"line":1048},21,[1050],{"type":43,"tag":568,"props":1051,"children":1052},{"emptyLinePlaceholder":662},[1053],{"type":48,"value":665},{"type":43,"tag":568,"props":1055,"children":1057},{"class":570,"line":1056},22,[1058],{"type":43,"tag":568,"props":1059,"children":1060},{"style":575},[1061],{"type":48,"value":1062},"# Check EKS add-on versions\n",{"type":43,"tag":568,"props":1064,"children":1066},{"class":570,"line":1065},23,[1067,1071,1075,1080,1085,1090,1095],{"type":43,"tag":568,"props":1068,"children":1069},{"style":585},[1070],{"type":48,"value":25},{"type":43,"tag":568,"props":1072,"children":1073},{"style":591},[1074],{"type":48,"value":687},{"type":43,"tag":568,"props":1076,"children":1077},{"style":591},[1078],{"type":48,"value":1079}," describe-addon-versions",{"type":43,"tag":568,"props":1081,"children":1082},{"style":591},[1083],{"type":48,"value":1084}," --addon-name",{"type":43,"tag":568,"props":1086,"children":1087},{"style":591},[1088],{"type":48,"value":1089}," vpc-cni",{"type":43,"tag":568,"props":1091,"children":1092},{"style":591},[1093],{"type":48,"value":1094}," --kubernetes-version",{"type":43,"tag":568,"props":1096,"children":1097},{"style":627},[1098],{"type":48,"value":1099}," 1.31\n",{"type":43,"tag":568,"props":1101,"children":1103},{"class":570,"line":1102},24,[1104],{"type":43,"tag":568,"props":1105,"children":1106},{"emptyLinePlaceholder":662},[1107],{"type":48,"value":665},{"type":43,"tag":568,"props":1109,"children":1111},{"class":570,"line":1110},25,[1112],{"type":43,"tag":568,"props":1113,"children":1114},{"style":575},[1115],{"type":48,"value":1116},"# View Pod Identity associations\n",{"type":43,"tag":568,"props":1118,"children":1120},{"class":570,"line":1119},26,[1121,1125,1129,1134,1138],{"type":43,"tag":568,"props":1122,"children":1123},{"style":585},[1124],{"type":48,"value":25},{"type":43,"tag":568,"props":1126,"children":1127},{"style":591},[1128],{"type":48,"value":687},{"type":43,"tag":568,"props":1130,"children":1131},{"style":591},[1132],{"type":48,"value":1133}," list-pod-identity-associations",{"type":43,"tag":568,"props":1135,"children":1136},{"style":591},[1137],{"type":48,"value":811},{"type":43,"tag":568,"props":1139,"children":1140},{"style":591},[1141],{"type":48,"value":816},{"type":43,"tag":568,"props":1143,"children":1145},{"class":570,"line":1144},27,[1146],{"type":43,"tag":568,"props":1147,"children":1148},{"emptyLinePlaceholder":662},[1149],{"type":48,"value":665},{"type":43,"tag":568,"props":1151,"children":1153},{"class":570,"line":1152},28,[1154],{"type":43,"tag":568,"props":1155,"children":1156},{"style":575},[1157],{"type":48,"value":1158},"# Debug a failing pod\n",{"type":43,"tag":568,"props":1160,"children":1162},{"class":570,"line":1161},29,[1163,1167,1172,1177,1182,1187,1193,1198,1203,1207,1212,1216],{"type":43,"tag":568,"props":1164,"children":1165},{"style":585},[1166],{"type":48,"value":1020},{"type":43,"tag":568,"props":1168,"children":1169},{"style":591},[1170],{"type":48,"value":1171}," describe",{"type":43,"tag":568,"props":1173,"children":1174},{"style":591},[1175],{"type":48,"value":1176}," pod",{"type":43,"tag":568,"props":1178,"children":1179},{"style":759},[1180],{"type":48,"value":1181}," \u003C",{"type":43,"tag":568,"props":1183,"children":1184},{"style":591},[1185],{"type":48,"value":1186},"pod-nam",{"type":43,"tag":568,"props":1188,"children":1190},{"style":1189},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1191],{"type":48,"value":1192},"e",{"type":43,"tag":568,"props":1194,"children":1195},{"style":759},[1196],{"type":48,"value":1197},">",{"type":43,"tag":568,"props":1199,"children":1200},{"style":591},[1201],{"type":48,"value":1202}," -n",{"type":43,"tag":568,"props":1204,"children":1205},{"style":759},[1206],{"type":48,"value":1181},{"type":43,"tag":568,"props":1208,"children":1209},{"style":591},[1210],{"type":48,"value":1211},"namespac",{"type":43,"tag":568,"props":1213,"children":1214},{"style":1189},[1215],{"type":48,"value":1192},{"type":43,"tag":568,"props":1217,"children":1218},{"style":759},[1219],{"type":48,"value":1220},">\n",{"type":43,"tag":568,"props":1222,"children":1224},{"class":570,"line":1223},30,[1225,1229,1234,1238,1242,1246,1250,1254,1258,1262,1266,1270],{"type":43,"tag":568,"props":1226,"children":1227},{"style":585},[1228],{"type":48,"value":1020},{"type":43,"tag":568,"props":1230,"children":1231},{"style":591},[1232],{"type":48,"value":1233}," logs",{"type":43,"tag":568,"props":1235,"children":1236},{"style":759},[1237],{"type":48,"value":1181},{"type":43,"tag":568,"props":1239,"children":1240},{"style":591},[1241],{"type":48,"value":1186},{"type":43,"tag":568,"props":1243,"children":1244},{"style":1189},[1245],{"type":48,"value":1192},{"type":43,"tag":568,"props":1247,"children":1248},{"style":759},[1249],{"type":48,"value":1197},{"type":43,"tag":568,"props":1251,"children":1252},{"style":591},[1253],{"type":48,"value":1202},{"type":43,"tag":568,"props":1255,"children":1256},{"style":759},[1257],{"type":48,"value":1181},{"type":43,"tag":568,"props":1259,"children":1260},{"style":591},[1261],{"type":48,"value":1211},{"type":43,"tag":568,"props":1263,"children":1264},{"style":1189},[1265],{"type":48,"value":1192},{"type":43,"tag":568,"props":1267,"children":1268},{"style":759},[1269],{"type":48,"value":1197},{"type":43,"tag":568,"props":1271,"children":1272},{"style":591},[1273],{"type":48,"value":1274}," --previous\n",{"type":43,"tag":51,"props":1276,"children":1278},{"id":1277},"upgrade-strategy",[1279],{"type":48,"value":1280},"Upgrade Strategy",{"type":43,"tag":137,"props":1282,"children":1283},{},[1284,1296,1301,1312,1328],{"type":43,"tag":62,"props":1285,"children":1286},{},[1287,1289,1294],{"type":48,"value":1288},"EKS supports N-1 version skew. Upgrade ",{"type":43,"tag":129,"props":1290,"children":1291},{},[1292],{"type":48,"value":1293},"one minor version at a time",{"type":48,"value":1295},".",{"type":43,"tag":62,"props":1297,"children":1298},{},[1299],{"type":48,"value":1300},"Order: control plane first, then add-ons, then node groups.",{"type":43,"tag":62,"props":1302,"children":1303},{},[1304,1305,1310],{"type":48,"value":183},{"type":43,"tag":88,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":48,"value":588},{"type":48,"value":1311}," or Terraform to orchestrate. Never skip versions.",{"type":43,"tag":62,"props":1313,"children":1314},{},[1315,1317,1326],{"type":48,"value":1316},"Test upgrades in a non-prod cluster first. Check the ",{"type":43,"tag":1318,"props":1319,"children":1323},"a",{"href":1320,"rel":1321},"https:\u002F\u002Fdocs.aws.amazon.com\u002Feks\u002Flatest\u002Fuserguide\u002Fkubernetes-versions.html",[1322],"nofollow",[1324],{"type":48,"value":1325},"EKS version changelog",{"type":48,"value":1327}," for deprecations.",{"type":43,"tag":62,"props":1329,"children":1330},{},[1331],{"type":48,"value":1332},"Blue\u002Fgreen node group upgrades: create a new node group, cordon\u002Fdrain old nodes, delete old node group.",{"type":43,"tag":51,"props":1334,"children":1336},{"id":1335},"output-format",[1337],{"type":48,"value":1338},"Output Format",{"type":43,"tag":1340,"props":1341,"children":1342},"table",{},[1343,1362],{"type":43,"tag":1344,"props":1345,"children":1346},"thead",{},[1347],{"type":43,"tag":1348,"props":1349,"children":1350},"tr",{},[1351,1357],{"type":43,"tag":1352,"props":1353,"children":1354},"th",{},[1355],{"type":48,"value":1356},"Field",{"type":43,"tag":1352,"props":1358,"children":1359},{},[1360],{"type":48,"value":1361},"Details",{"type":43,"tag":1363,"props":1364,"children":1365},"tbody",{},[1366,1383,1399,1415,1431,1447,1463,1479],{"type":43,"tag":1348,"props":1367,"children":1368},{},[1369,1378],{"type":43,"tag":1370,"props":1371,"children":1372},"td",{},[1373],{"type":43,"tag":129,"props":1374,"children":1375},{},[1376],{"type":48,"value":1377},"Cluster version",{"type":43,"tag":1370,"props":1379,"children":1380},{},[1381],{"type":48,"value":1382},"Kubernetes version (e.g., 1.31)",{"type":43,"tag":1348,"props":1384,"children":1385},{},[1386,1394],{"type":43,"tag":1370,"props":1387,"children":1388},{},[1389],{"type":43,"tag":129,"props":1390,"children":1391},{},[1392],{"type":48,"value":1393},"Compute strategy",{"type":43,"tag":1370,"props":1395,"children":1396},{},[1397],{"type":48,"value":1398},"Managed node groups, Fargate profiles, or self-managed",{"type":43,"tag":1348,"props":1400,"children":1401},{},[1402,1410],{"type":43,"tag":1370,"props":1403,"children":1404},{},[1405],{"type":43,"tag":129,"props":1406,"children":1407},{},[1408],{"type":48,"value":1409},"Node groups \u002F Karpenter config",{"type":43,"tag":1370,"props":1411,"children":1412},{},[1413],{"type":48,"value":1414},"Instance families, NodePool limits, consolidation policy",{"type":43,"tag":1348,"props":1416,"children":1417},{},[1418,1426],{"type":43,"tag":1370,"props":1419,"children":1420},{},[1421],{"type":43,"tag":129,"props":1422,"children":1423},{},[1424],{"type":48,"value":1425},"Add-ons",{"type":43,"tag":1370,"props":1427,"children":1428},{},[1429],{"type":48,"value":1430},"Managed add-ons and versions (vpc-cni, CoreDNS, kube-proxy, CSI drivers)",{"type":43,"tag":1348,"props":1432,"children":1433},{},[1434,1442],{"type":43,"tag":1370,"props":1435,"children":1436},{},[1437],{"type":43,"tag":129,"props":1438,"children":1439},{},[1440],{"type":48,"value":1441},"Autoscaling approach",{"type":43,"tag":1370,"props":1443,"children":1444},{},[1445],{"type":48,"value":1446},"Karpenter or Cluster Autoscaler, NodePool\u002FASG config",{"type":43,"tag":1348,"props":1448,"children":1449},{},[1450,1458],{"type":43,"tag":1370,"props":1451,"children":1452},{},[1453],{"type":43,"tag":129,"props":1454,"children":1455},{},[1456],{"type":48,"value":1457},"Ingress",{"type":43,"tag":1370,"props":1459,"children":1460},{},[1461],{"type":48,"value":1462},"AWS Load Balancer Controller, ALB Ingress, or NLB",{"type":43,"tag":1348,"props":1464,"children":1465},{},[1466,1474],{"type":43,"tag":1370,"props":1467,"children":1468},{},[1469],{"type":43,"tag":129,"props":1470,"children":1471},{},[1472],{"type":48,"value":1473},"IAM (IRSA \u002F Pod Identity)",{"type":43,"tag":1370,"props":1475,"children":1476},{},[1477],{"type":48,"value":1478},"Pod Identity associations or IRSA OIDC setup per workload",{"type":43,"tag":1348,"props":1480,"children":1481},{},[1482,1490],{"type":43,"tag":1370,"props":1483,"children":1484},{},[1485],{"type":43,"tag":129,"props":1486,"children":1487},{},[1488],{"type":48,"value":1489},"Monitoring",{"type":43,"tag":1370,"props":1491,"children":1492},{},[1493],{"type":48,"value":1494},"Container Insights, Prometheus, control plane logging, X-Ray",{"type":43,"tag":51,"props":1496,"children":1498},{"id":1497},"related-skills",[1499],{"type":48,"value":1500},"Related Skills",{"type":43,"tag":137,"props":1502,"children":1503},{},[1504,1515,1526,1537,1548,1559,1570],{"type":43,"tag":62,"props":1505,"children":1506},{},[1507,1513],{"type":43,"tag":88,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":48,"value":1512},"ecs",{"type":48,"value":1514}," — Simpler container orchestration alternative when Kubernetes is not required",{"type":43,"tag":62,"props":1516,"children":1517},{},[1518,1524],{"type":43,"tag":88,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":48,"value":1523},"ec2",{"type":48,"value":1525}," — Instance types, Spot strategy, and ASG config for self-managed nodes",{"type":43,"tag":62,"props":1527,"children":1528},{},[1529,1535],{"type":43,"tag":88,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":48,"value":1534},"networking",{"type":48,"value":1536}," — VPC design, pod networking (secondary CIDRs), and security groups",{"type":43,"tag":62,"props":1538,"children":1539},{},[1540,1546],{"type":43,"tag":88,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":48,"value":1545},"iam",{"type":48,"value":1547}," — IRSA, Pod Identity, and node role configuration",{"type":43,"tag":62,"props":1549,"children":1550},{},[1551,1557],{"type":43,"tag":88,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":48,"value":1556},"observability",{"type":48,"value":1558}," — CloudWatch Container Insights, Prometheus, and control plane logging",{"type":43,"tag":62,"props":1560,"children":1561},{},[1562,1568],{"type":43,"tag":88,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":48,"value":1567},"lambda",{"type":48,"value":1569}," — Serverless alternative for event-driven or low-traffic workloads",{"type":43,"tag":62,"props":1571,"children":1572},{},[1573,1579],{"type":43,"tag":88,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":48,"value":1578},"service-mesh",{"type":48,"value":1580}," — Istio for mTLS, east-west traffic management, and canary\u002Fblue-green shifting",{"type":43,"tag":51,"props":1582,"children":1584},{"id":1583},"anti-patterns",[1585],{"type":48,"value":1586},"Anti-Patterns",{"type":43,"tag":137,"props":1588,"children":1589},{},[1590,1600,1610,1620,1630,1640,1650,1660,1670],{"type":43,"tag":62,"props":1591,"children":1592},{},[1593,1598],{"type":43,"tag":129,"props":1594,"children":1595},{},[1596],{"type":48,"value":1597},"Over-privileged node IAM roles",{"type":48,"value":1599},": Node roles should not have S3, DynamoDB, or other application permissions. Use Pod Identity or IRSA for least-privilege per workload.",{"type":43,"tag":62,"props":1601,"children":1602},{},[1603,1608],{"type":43,"tag":129,"props":1604,"children":1605},{},[1606],{"type":48,"value":1607},"Not using Pod Disruption Budgets (PDBs)",{"type":48,"value":1609},": Without PDBs, node drains during upgrades or Karpenter consolidation can take down all replicas simultaneously.",{"type":43,"tag":62,"props":1611,"children":1612},{},[1613,1618],{"type":43,"tag":129,"props":1614,"children":1615},{},[1616],{"type":48,"value":1617},"Running without resource requests\u002Flimits",{"type":48,"value":1619},": Kubernetes cannot schedule efficiently without them. Karpenter cannot right-size nodes. Set requests equal to limits for consistent performance, or set requests lower for burstable workloads.",{"type":43,"tag":62,"props":1621,"children":1622},{},[1623,1628],{"type":43,"tag":129,"props":1624,"children":1625},{},[1626],{"type":48,"value":1627},"Single-AZ clusters",{"type":48,"value":1629},": Always spread nodes and pods across at least 2 AZs (3 preferred) using topology spread constraints.",{"type":43,"tag":62,"props":1631,"children":1632},{},[1633,1638],{"type":43,"tag":129,"props":1634,"children":1635},{},[1636],{"type":48,"value":1637},"Managing add-ons with Helm when EKS add-ons exist",{"type":48,"value":1639},": EKS-managed add-ons handle version compatibility automatically. Use them for vpc-cni, kube-proxy, CoreDNS, and CSI drivers.",{"type":43,"tag":62,"props":1641,"children":1642},{},[1643,1648],{"type":43,"tag":129,"props":1644,"children":1645},{},[1646],{"type":48,"value":1647},"Using Cluster Autoscaler with diverse instance types",{"type":48,"value":1649},": Cluster Autoscaler struggles with heterogeneous ASGs. Switch to Karpenter.",{"type":43,"tag":62,"props":1651,"children":1652},{},[1653,1658],{"type":43,"tag":129,"props":1654,"children":1655},{},[1656],{"type":48,"value":1657},"No network policies",{"type":48,"value":1659},": By default, all pods can talk to all pods. Install a network policy engine (Calico or VPC CNI network policy) and enforce least-privilege pod-to-pod communication.",{"type":43,"tag":62,"props":1661,"children":1662},{},[1663,1668],{"type":43,"tag":129,"props":1664,"children":1665},{},[1666],{"type":48,"value":1667},"Skipping control plane logging",{"type":48,"value":1669},": Without audit logs, you cannot investigate security incidents or debug API server issues. Enable all five log types from the start.",{"type":43,"tag":62,"props":1671,"children":1672},{},[1673,1678],{"type":43,"tag":129,"props":1674,"children":1675},{},[1676],{"type":48,"value":1677},"kubectl apply on production without GitOps",{"type":48,"value":1679},": Use ArgoCD or Flux for production deployments. Manual kubectl apply is not auditable and not reproducible.",{"type":43,"tag":1681,"props":1682,"children":1683},"style",{},[1684],{"type":48,"value":1685},"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":1687,"total":1864},[1688,1706,1727,1737,1750,1763,1773,1783,1804,1819,1834,1849],{"slug":1689,"name":1689,"fn":1690,"description":1691,"org":1692,"tags":1693,"stars":1703,"repoUrl":1704,"updatedAt":1705},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1694,1695,1698,1701],{"name":24,"slug":25,"type":16},{"name":1696,"slug":1697,"type":16},"Debugging","debugging",{"name":1699,"slug":1700,"type":16},"Logs","logs",{"name":1702,"slug":1556,"type":16},"Observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1707,"name":1708,"fn":1709,"description":1710,"org":1711,"tags":1712,"stars":1703,"repoUrl":1704,"updatedAt":1726},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1713,1716,1717,1720,1723],{"name":1714,"slug":1715,"type":16},"Aurora","aurora",{"name":24,"slug":25,"type":16},{"name":1718,"slug":1719,"type":16},"Database","database",{"name":1721,"slug":1722,"type":16},"Serverless","serverless",{"name":1724,"slug":1725,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1728,"name":1729,"fn":1709,"description":1710,"org":1730,"tags":1731,"stars":1703,"repoUrl":1704,"updatedAt":1736},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1732,1733,1734,1735],{"name":24,"slug":25,"type":16},{"name":1718,"slug":1719,"type":16},{"name":1721,"slug":1722,"type":16},{"name":1724,"slug":1725,"type":16},"2026-07-12T08:36:42.694299",{"slug":1738,"name":1739,"fn":1709,"description":1710,"org":1740,"tags":1741,"stars":1703,"repoUrl":1704,"updatedAt":1749},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1742,1743,1744,1747,1748],{"name":24,"slug":25,"type":16},{"name":1718,"slug":1719,"type":16},{"name":1745,"slug":1746,"type":16},"Migration","migration",{"name":1721,"slug":1722,"type":16},{"name":1724,"slug":1725,"type":16},"2026-07-12T08:36:38.584057",{"slug":1751,"name":1752,"fn":1709,"description":1710,"org":1753,"tags":1754,"stars":1703,"repoUrl":1704,"updatedAt":1762},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1755,1756,1757,1760,1761],{"name":24,"slug":25,"type":16},{"name":1718,"slug":1719,"type":16},{"name":1758,"slug":1759,"type":16},"PostgreSQL","postgresql",{"name":1721,"slug":1722,"type":16},{"name":1724,"slug":1725,"type":16},"2026-07-12T08:36:46.530743",{"slug":1764,"name":1765,"fn":1709,"description":1710,"org":1766,"tags":1767,"stars":1703,"repoUrl":1704,"updatedAt":1772},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1768,1769,1770,1771],{"name":24,"slug":25,"type":16},{"name":1718,"slug":1719,"type":16},{"name":1721,"slug":1722,"type":16},{"name":1724,"slug":1725,"type":16},"2026-07-12T08:36:48.104182",{"slug":1774,"name":1774,"fn":1709,"description":1710,"org":1775,"tags":1776,"stars":1703,"repoUrl":1704,"updatedAt":1782},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1777,1778,1779,1780,1781],{"name":24,"slug":25,"type":16},{"name":1718,"slug":1719,"type":16},{"name":1745,"slug":1746,"type":16},{"name":1721,"slug":1722,"type":16},{"name":1724,"slug":1725,"type":16},"2026-07-12T08:36:36.374512",{"slug":1784,"name":1784,"fn":1785,"description":1786,"org":1787,"tags":1788,"stars":1801,"repoUrl":1802,"updatedAt":1803},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1789,1792,1795,1798],{"name":1790,"slug":1791,"type":16},"Accounting","accounting",{"name":1793,"slug":1794,"type":16},"Analytics","analytics",{"name":1796,"slug":1797,"type":16},"Cost Optimization","cost-optimization",{"name":1799,"slug":1800,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1805,"name":1805,"fn":1806,"description":1807,"org":1808,"tags":1809,"stars":1801,"repoUrl":1802,"updatedAt":1818},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1810,1811,1812,1815],{"name":24,"slug":25,"type":16},{"name":1799,"slug":1800,"type":16},{"name":1813,"slug":1814,"type":16},"Management","management",{"name":1816,"slug":1817,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":1820,"name":1820,"fn":1821,"description":1822,"org":1823,"tags":1824,"stars":1801,"repoUrl":1802,"updatedAt":1833},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1825,1826,1827,1830],{"name":1793,"slug":1794,"type":16},{"name":1799,"slug":1800,"type":16},{"name":1828,"slug":1829,"type":16},"Financial Statements","financial-statements",{"name":1831,"slug":1832,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":1835,"name":1835,"fn":1836,"description":1837,"org":1838,"tags":1839,"stars":1801,"repoUrl":1802,"updatedAt":1848},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1840,1843,1846],{"name":1841,"slug":1842,"type":16},"Automation","automation",{"name":1844,"slug":1845,"type":16},"Documents","documents",{"name":1847,"slug":1835,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":1850,"name":1850,"fn":1851,"description":1852,"org":1853,"tags":1854,"stars":1801,"repoUrl":1802,"updatedAt":1863},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1855,1856,1859,1860],{"name":1790,"slug":1791,"type":16},{"name":1857,"slug":1858,"type":16},"Data Analysis","data-analysis",{"name":1799,"slug":1800,"type":16},{"name":1861,"slug":1862,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":1866,"total":1957},[1867,1881,1896,1908,1918,1931,1942],{"slug":1868,"name":1868,"fn":1869,"description":1870,"org":1871,"tags":1872,"stars":26,"repoUrl":27,"updatedAt":1880},"agentcore","design Amazon Bedrock AgentCore architectures","Deep-dive into Amazon Bedrock AgentCore platform design, service selection, deployment, and production operations. This skill should be used when the user asks to \"design an AgentCore architecture\", \"deploy agents on AgentCore\", \"configure AgentCore Runtime\", \"set up AgentCore Memory\", \"use AgentCore Gateway\", \"configure AgentCore Identity\", \"set up AgentCore Policy\", \"plan agent observability\", \"evaluate agent quality\", \"move agent PoC to production\", or mentions AgentCore, AgentCore Runtime, AgentCore Memory, AgentCore Gateway, AgentCore Identity, AgentCore Policy, AgentCore Evaluations, AgentCore Code Interpreter, AgentCore Browser, A2A protocol, or multi-agent orchestration on AWS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1873,1876,1879],{"name":1874,"slug":1875,"type":16},"Agents","agents",{"name":1877,"slug":1878,"type":16},"Architecture","architecture",{"name":24,"slug":25,"type":16},"2026-07-12T08:40:11.108951",{"slug":1882,"name":1882,"fn":1883,"description":1884,"org":1885,"tags":1886,"stars":26,"repoUrl":27,"updatedAt":1895},"aidlc-lite","develop AI applications on AWS","Lightweight AI development lifecycle for building on AWS. A simplified take on the AI-DLC philosophy — think together, then build fast. Acts as a design partner that understands intent, proposes alternatives with trade-offs, and ships working code without the ceremony of full requirements\u002Fdesign\u002Fspec documents. Use when a founder says \"build X on AWS\", \"add Y to my stack\", \"scaffold an API\", or \"write the CDK for Z\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1887,1888,1891,1892],{"name":1874,"slug":1875,"type":16},{"name":1889,"slug":1890,"type":16},"AI Infrastructure","ai-infrastructure",{"name":24,"slug":25,"type":16},{"name":1893,"slug":1894,"type":16},"Engineering","engineering","2026-07-12T08:40:40.204103",{"slug":1897,"name":1897,"fn":1898,"description":1899,"org":1900,"tags":1901,"stars":26,"repoUrl":27,"updatedAt":1907},"architect-for-startups","advise on AWS architecture for startups","AWS architecture advisor tailored specifically for startups. Alters AWS architecture recommendations based on startup stage (pre-revenue through Series B+), team size, runway, and credits. ALWAYS use when asked about building on AWS, choosing services, planning infrastructure, managing costs with credits, or preparing architecture for fundraising.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1902,1903,1904],{"name":1877,"slug":1878,"type":16},{"name":24,"slug":25,"type":16},{"name":1905,"slug":1906,"type":16},"Strategy","strategy","2026-07-12T08:41:33.557354",{"slug":1909,"name":1909,"fn":1910,"description":1911,"org":1912,"tags":1913,"stars":26,"repoUrl":27,"updatedAt":1917},"aws-architect","design and review AWS architectures","Design and review AWS architectures following Well-Architected Framework principles. Use when planning new infrastructure, reviewing existing architectures, evaluating trade-offs between AWS services, or when asked about AWS best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1914,1915,1916],{"name":1877,"slug":1878,"type":16},{"name":24,"slug":25,"type":16},{"name":21,"slug":22,"type":16},"2026-07-12T08:40:57.630086",{"slug":1919,"name":1919,"fn":1920,"description":1921,"org":1922,"tags":1923,"stars":26,"repoUrl":27,"updatedAt":1930},"aws-compare","compare AWS architecture options","Compare 2-3 AWS architecture options side-by-side across cost, complexity, performance, security, and operational burden. Use when evaluating trade-offs between approaches or when the user is deciding between options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1924,1925,1926,1927],{"name":1877,"slug":1878,"type":16},{"name":24,"slug":25,"type":16},{"name":1796,"slug":1797,"type":16},{"name":1928,"slug":1929,"type":16},"Security","security","2026-07-12T08:40:23.960287",{"slug":1932,"name":1932,"fn":1933,"description":1934,"org":1935,"tags":1936,"stars":26,"repoUrl":27,"updatedAt":1941},"aws-debug","debug AWS infrastructure and deployment failures","Debug AWS infrastructure issues, deployment failures, and runtime errors. Use when troubleshooting CloudFormation stack failures, Lambda errors, ECS task failures, permission issues, networking problems, or any AWS service misbehavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1937,1938,1939,1940],{"name":24,"slug":25,"type":16},{"name":1696,"slug":1697,"type":16},{"name":14,"slug":15,"type":16},{"name":1702,"slug":1556,"type":16},"2026-07-12T08:40:16.767171",{"slug":1943,"name":1943,"fn":1944,"description":1945,"org":1946,"tags":1947,"stars":26,"repoUrl":27,"updatedAt":1956},"aws-diagram","generate AWS architecture diagrams","Generate AWS architecture diagrams in Mermaid or ASCII from a description, existing IaC, or conversation context. Use when the user wants to visualize an architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1948,1949,1950,1953],{"name":1877,"slug":1878,"type":16},{"name":24,"slug":25,"type":16},{"name":1951,"slug":1952,"type":16},"Diagrams","diagrams",{"name":1954,"slug":1955,"type":16},"Visualization","visualization","2026-07-12T08:40:43.26341",42]