eks-operation-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited eks-operation-review (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Conduct a comprehensive operational review of Amazon EKS clusters aligned with the EKS Best Practices Guide.
Activate this skill when the user asks to:
Ask the user which EKS clusters to review. Accept:
Use the EKS topology data available in the Agent Space to identify clusters. Query CloudWatch and AWS APIs to discover clusters:
Data source priority: If Kubernetes API access is available (via connected MCP servers such as kubernetes-mcp-server, EKS MCP server, or direct K8s API tools), use it FIRST to get live cluster state. K8s API provides the most accurate, real-time data. Fall back to AWS APIs and CloudWatch only for data not available via K8s API.
K8s API tools (use first when available):
resources_list / resources_get — list/read any K8s resource by apiVersion and kindpods_list / pods_get / pods_log / pods_top — pod operationsnodes_top — node resource usageevents_list — K8s eventsconfiguration_contexts_list — available cluster contextsFor EACH cluster, gather the following data. Try K8s API first, then AWS API as fallback:
AWS API (no K8s equivalent): Kubernetes version, platform version, control plane logging, secrets encryption, endpoint access, authentication mode, access entries, Auto Mode, tags
K8s API first:
resources_list(apiVersion="v1", kind="Node") — live node list with labels, capacity, allocatable, conditionsnodes_top — actual CPU/memory usage per noderesources_list(apiVersion="karpenter.sh/v1", kind="NodePool") — Karpenter NodePoolsresources_get(apiVersion="karpenter.sh/v1", kind="NodePool", name=<name>) — full NodePool spec (consolidation, limits, disruption, requirements)resources_list(apiVersion="karpenter.k8s.aws/v1", kind="EC2NodeClass") — EC2NodeClassesresources_get(apiVersion="karpenter.k8s.aws/v1", kind="EC2NodeClass", name=<name>) — full spec (amiFamily, blockDeviceMappings, metadataOptions, subnets, SGs)AWS API fallback: Managed node groups (instance types, scaling config, AMI type, capacity type, AZ distribution)
K8s API first:
resources_list(apiVersion="apps/v1", kind="Deployment", namespace="kube-system") — all system deployments with image versionsresources_list(apiVersion="apps/v1", kind="DaemonSet", namespace="kube-system") — all system daemonsets with image versionsAWS API fallback: EKS managed add-ons (name, version, status, health)
K8s API first:
resources_get(apiVersion="apps/v1", kind="DaemonSet", name="aws-node", namespace="kube-system") — VPC CNI config (env vars: ENABLE_PREFIX_DELEGATION, WARM_IP_TARGET, etc.)resources_get(apiVersion="v1", kind="ConfigMap", name="coredns", namespace="kube-system") — CoreDNS Corefileresources_get(apiVersion="apps/v1", kind="Deployment", name="coredns", namespace="kube-system") — CoreDNS replicas, resources, topologyresources_list(apiVersion="networking.k8s.io/v1", kind="NetworkPolicy") — network policiesresources_list(apiVersion="v1", kind="Service") — services and load balancersAWS API (no K8s equivalent): VPC CIDR, subnet IP availability, security groups, VPC endpoints, NAT gateways
K8s API first:
resources_list(apiVersion="rbac.authorization.k8s.io/v1", kind="ClusterRoleBinding") — RBAC bindings (check cluster-admin, system:anonymous)resources_list(apiVersion="rbac.authorization.k8s.io/v1", kind="ClusterRole") — roles with wildcard permissionsresources_get(apiVersion="v1", kind="ConfigMap", name="aws-auth", namespace="kube-system") — aws-auth statusresources_list(apiVersion="v1", kind="ServiceAccount") — check IRSA annotations (eks.amazonaws.com/role-arn)resources_list(apiVersion="v1", kind="Namespace") — check Pod Security Standards labels (pod-security.kubernetes.io/enforce)AWS API (no K8s equivalent): Access entries, Pod Identity associations, IAM role policies, ECR scan config
K8s API first:
resources_list(apiVersion="apps/v1", kind="Deployment") — all deploymentsresources_get(apiVersion="apps/v1", kind="Deployment", name=<name>, namespace=<ns>) — full spec: probes, resources, securityContext, topologySpreadConstraints, terminationGracePeriodSecondsresources_list(apiVersion="apps/v1", kind="StatefulSet") — statefulsetsresources_list(apiVersion="autoscaling/v2", kind="HorizontalPodAutoscaler") — HPAsresources_list(apiVersion="policy/v1", kind="PodDisruptionBudget") — PDBspods_top — actual pod resource usage vs requestspods_list(fieldSelector="status.phase!=Running,status.phase!=Succeeded") — failing podsK8s API first:
resources_list(apiVersion="storage.k8s.io/v1", kind="StorageClass") — check gp3 vs gp2, provisionerresources_list(apiVersion="v1", kind="PersistentVolume") — PV status, reclaim policyresources_list(apiVersion="v1", kind="PersistentVolumeClaim") — bound/unbound PVCsresources_list(apiVersion="v1", kind="ResourceQuota") — namespace quotasresources_list(apiVersion="v1", kind="LimitRange") — default limitsContainer Insights (namespace: ContainerInsights):
EKS Control Plane (namespace: AWS/EKS):
EC2 Node Metrics (namespace: AWS/EC2, per instance):
Query control plane logs for error patterns:
ERROR — general errors (count)429 — API server throttlingOOMKilled — memory limit issuesFailedScheduling — capacity/constraint issuesEvicted — node pressure evictionsQuery EKS API events:
Fetch upgrade readiness insights:
Evaluate ALL collected data against these 12 sections from the EKS Best Practices Guide. Assign severity to every finding: CRITICAL, HIGH, MEDIUM, LOW, or INFO.
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/security.html
IAM & Access Management (Ref: https://docs.aws.amazon.com/eks/latest/best-practices/identity-and-access-management.html):
Pod Security: Pod Security Standards enforced, no privileged containers, SecurityContext set Runtime Security: Non-root containers, read-only root filesystems Network Security: NetworkPolicies present, VPC endpoints for private access Multi-tenancy: Namespace isolation, RBAC per namespace, ResourceQuotas Detective Controls: All 5 log types enabled, CloudTrail events, CloudWatch alarms Infrastructure Security: Private endpoint, IMDSv2 enforced (httpTokens=required), AMI currency Data Encryption: KMS envelope encryption, EBS encryption Image Security: ECR scan-on-push, image pull policies
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/reliability.html
Applications: Probes (liveness/readiness/startup), PDBs, TopologySpreadConstraints, graceful shutdown, resource requests/limits Control Plane: Version within N-2, all logs enabled, insights passing. 7-day: API latency, throttling (429), webhook rejections, pending pods Data Plane: Multi-AZ (≥2, ideally 3), managed node groups, auto-scaling. 7-day: failed nodes, CPU/memory saturation, StatusCheckFailed
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/karpenter.html
Per NodePool: consolidationPolicy (WhenEmptyOrUnderutilized recommended), disruption budgets, instance diversity, Spot usage, AZ spread, resource limits Per EC2NodeClass: amiFamily, blockDeviceMappings, metadataOptions (httpTokens=required), subnet/SG selectors, AMI age
Deployment present, expander strategy, scale-down settings, balance-similar-node-groups, version compatibility
Auto mode enabled/disabled, node pool configuration, disruption controls
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/networking.html
VPC CNI version and config, prefix delegation, subnet IP availability:
VPC CIDR size (/16 recommended), CoreDNS config and scaling, VPC endpoints, NAT redundancy
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/scalability.html
Control plane: API throttling (429 in logs), CRD count Data plane: Node scaling headroom, instance diversity, Karpenter NodePool limits vs actual Cluster services: CoreDNS scaled, metrics-server, addon versions Workloads: HPA configured, resource requests set, pod restart count (>50 in 7d → MEDIUM, >200 → HIGH)
Data Plane Scaling (Ref: https://docs.aws.amazon.com/eks/latest/best-practices/scale-data-plane.html):
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html
Version currency: CRITICAL if N-3+, HIGH if N-2, MEDIUM if N-1 EKS upgrade insights (UPGRADE_READINESS): list all with status, recommendations Addon compatibility, deprecated API usage, PDB coverage, node group update strategy
Ref: https://docs.aws.amazon.com/eks/latest/best-practices/cost-opt.html
Resource Utilization Summary (from 7-day metrics): | Metric | 7-Day Avg | 7-Day Max | Assessment | Under-utilized (<30% CPU / <40% mem) → cost waste. Over-utilized (>70%) → saturation risk.
Recommendations:
Generate a separate shareable report artifact for EACH cluster reviewed.
Artifact naming: eks-review-<cluster-name>-<YYYY-MM-DD>.md Example: eks-review-prod-cluster-2026-04-29.md
For each cluster, create the artifact as a Markdown document with these sections:
# EKS Operational Review — <cluster-name>
Account: <account-id> | Region: <region> | Date: <YYYY-MM-DD> | K8s Version: <version>| Add-on | Version | Type | Status | Notes |
For each of the 12 sections above, present: | # | Finding | Severity | Current State | Recommendation |
| Metric | Category | 7-Day Avg | 7-Day Max | Status | Finding |
| Pattern | Occurrences | Severity | Finding |
Event summary + notable events + findings
All insights with status, description, recommendations
Utilization summary table + specific cost optimization recommendations
| # | Finding | Severity | Section | Effort | Impact | All findings sorted by severity
| Severity | Definition | SLA |
|---|---|---|
| CRITICAL | Immediate risk to availability, security, or data integrity | Fix within 24-48 hours |
| HIGH | Significant gap that could lead to incidents | Fix within 1 week |
| MEDIUM | Notable improvement opportunity | Plan within 30 days |
| LOW | Minor optimization or hardening | Address when convenient |
| INFO | Observation, no action required | N/A |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.