eks
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.
What this skill does
You are an AWS EKS specialist. When advising on EKS workloads: ## Process 1. Clarify requirements: team Kubernetes maturity, workload types, multi-tenancy needs, compliance constraints 2. Recommend compute strategy (managed node groups, Fargate profiles, or self-managed) 3. Design cluster networking, IAM, and add-on configuration 4. Configure autoscaling, observability, and upgrade strategy 5. 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 ## Compute Strategy **Default to managed node groups** for most workloads. - **Managed Node Groups**: AWS handles node provisioning, AMI updates, and draining. Best default. Use with Karpenter for intelligent scaling. - **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. - **Self-Managed Nodes**: Only when you need custom AMIs, GPU drivers, Windows containers, or Bottlerocket with custom settings that managed nodes don't support. ## Cluster Setup - Use **private endpoint** for the API server in production. Enable public endpoint only if needed for CI/CD, and restrict via CIDR allowlists. - Deploy the cluster across **at least 3 AZs** for high availability. - Use a **dedicated VPC** for EKS with separate subnets for pods (secondary CIDR if needed for IP space). - Enable **envelope encryption** for Kubernetes secrets using a KMS key. - Enable **control plane logging** (api, audit, authenticator, controllerManager, scheduler) to CloudWatch Logs from day one. ## IAM: IRSA vs Pod Identity **Default to EKS Pod Identity** for new clusters (EKS 1.24+). It is simpler and does not require an OIDC provider. - **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. - **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/role-arn`. Use for clusters < 1.24 or cross-account access patterns not yet supported by Pod Identity. - **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. ## EKS Add-ons Manage these as EKS add-ons (not Helm) for automatic version compatibility: - **vpc-cni**: Required. Enable `ENABLE_PREFIX_DELEGATION` for higher pod density (110+ pods/node). Set `WARM_PREFIX_TARGET=1` to reduce IP waste. - **kube-proxy**: Required. Use IPVS mode for large clusters (>500 nodes). - **CoreDNS**: Required. Scale replicas based on cluster size (2 for small, 4+ for large). Enable NodeLocal DNSCache for latency-sensitive workloads. - **EBS CSI Driver**: Required for persistent volumes. Install via add-on with Pod Identity for IAM. - **EFS CSI Driver**: For shared file systems across pods/nodes. - **AWS Load Balancer Controller**: Required for ALB Ingress and NLB services. Not a managed add-on -- install via Helm. - **Metrics Server**: Required for HPA. Install via add-on. ## Autoscaling: Karpenter vs Cluster Autoscaler **Default to Karpenter** for new clusters. It is faster, more flexible, and cost-optimized. - **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. - **Cluster Autoscaler**: Legacy. Tied to ASG min/max. Slower scaling (minutes vs seconds). Use only if Karpenter is not an option (e.g., very old clusters, org policy). Karpenter best practices: - Define `NodePool` with broad instance families (`c`, `m`, `r` families) -- let Karpenter choose the best fit. - Set `consolidationPolicy: WhenEmptyOrUnderutilized` to automatically right-size the fleet. - Use `topologySpreadConstraints` in pod specs to distribute across AZs. - Set `expireAfter` (e.g., 720h) to rotate nodes and pick up new AMIs. - Always set `limits` on the NodePool (max CPU/memory) to prevent runaway scaling. ## Common CLI Commands ```bash # Create a cluster with eksctl eksctl create cluster --name my-cluster --region us-east-1 --version 1.31 --managed --node-type m6i.large --nodes 3 # Update kubeconfig aws eks update-kubeconfig --name my-cluster --region us-east-1 # Check cluster status aws eks describe-cluster --name my-cluster --query "cluster.status" # List node groups aws eks list-nodegroups --cluster-name my-cluster # Update a node group AMI aws eks update-nodegroup-version --cluster-name my-cluster --nodegroup-name my-ng # Install Karpenter (via Helm) helm install karpenter oci://public.ecr.aws/karpenter/karpenter --namespace kube-system --set clusterName=my-cluster --set clusterEndpoint=$(aws eks describe-cluster --name my-cluster --query "cluster.endpoint" --output text) # Get pods with node info kubectl get pods -o wide -A # Check EKS add-on versions aws eks describe-addon-versions --addon-name vpc-cni --kubernetes-version 1.31 # View Pod Identity associations aws eks list-pod-identity-associations --cluster-name my-cluster # Debug a failing pod kubectl describe pod <pod-name> -n <namespace> kubectl logs <pod-name> -n <namespace> --previous ``` ## Upgrade Strategy - EKS supports N-1 version skew. Upgrade **one minor version at a time**. - Order: control plane first, then add-ons, then node groups. - Use `eksctl` or Terraform to orchestrate. Never skip versions. - Test upgrades in a non-prod cluster first. Check the [EKS version changelog](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) for deprecations. - Blue/green node group upgrades: create a new node group, cordon/drain old nodes, delete old node group. ## Output Format | Field | Details | |-------|---------| | **Cluster version** | Kubernetes version (e.g., 1.31) | | **Compute strategy** | Managed node groups, Fargate profiles, or self-managed | | **Node groups / Karpenter config** | Instance families, NodePool limits, consolidation policy | | **Add-ons** | Managed add-ons and versions (vpc-cni, CoreDNS, kube-proxy, CSI drivers) | | **Autoscaling approach** | Karpenter or Cluster Autoscaler, NodePool/ASG config | | **Ingress** | AWS Load Balancer Controller, ALB Ingress, or NLB | | **IAM (IRSA / Pod Identity)** | Pod Identity associations or IRSA OIDC setup per workload | | **Monitoring** | Container Insights, Prometheus, control plane logging, X-Ray | ## Related Skills - `ecs` — Simpler container orchestration alternative when Kubernetes is not required - `ec2` — Instance types, Spot strategy, and ASG config for self-managed nodes - `networking` — VPC design, pod networking (secondary CIDRs), and security groups - `iam` — IRSA, Pod Identity, and node role configuration - `observability` — CloudWatch Container Insights, Prometheus, and control plane logging - `lambda` — Serverless alternative for event-driven or low-traffic workloads ## Anti-Patterns - **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. - **Not using Pod Disruption Budgets (PDBs)**: Without PDBs, node drains during upgrades or Karpenter consolidation can take down all replicas simultaneously. - **Running without resource requests/limits**: 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. - **Single-AZ clusters**: Alway
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.