Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Check everything that can be upgraded for maintenance across an AWS EKS Kubernetes cluster and output a decision file with Jira-formatted tickets for any required upgrades.
.claude/skills/abdullahkhawer-maintenance-check-aws-eks/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 80% | 0% |
Run this skill when asked to check for available upgrades across an AWS EKS Kubernetes cluster for maintenance. It gathers current versions, compares them against latest available versions, and writes a decision file with Jira-formatted tickets for any required maintenance upgrades.
Update the table below with your cluster names, AWS profiles, and region before using this skill:
<your-aws-region> (e.g. us-east-1, eu-west-1)| Environment | Cluster Name | AWS Profile | |---|---|---| | Staging / Non-Prod | <your-staging-cluster> | <your-nonprod-profile> | | Production | <your-prod-cluster> | <your-prod-profile> |
If the user does not specify an environment, ask before proceeding.
bashaws eks describe-cluster \ --name <cluster-name> \ --profile <profile> \ --region <your-aws-region> \ --query "cluster.version" \ --output text
Record: current cluster version (e.g. 1.29).
bashaws eks describe-addon-versions \ --profile <profile> \ --region <your-aws-region> \ --query "sort_by(addons[?addonName=='vpc-cni'].addonVersions[].compatibilities[].clusterVersion, &@) | [-1]" \ --output text
Record: latest available EKS version.
Decision point: If current version == latest version, no maintenance upgrade is needed at all — skip Steps 3–4 and proceed to Step 5 with a "no maintenance upgrade required" output.
List installed add-ons and their current vs. latest versions compatible with the target cluster version:
bash# List installed add-ons aws eks list-addons \ --cluster-name <cluster-name> \ --profile <profile> \ --region <your-aws-region> \ --output json # Current version of each add-on aws eks describe-addon \ --cluster-name <cluster-name> \ --addon-name <addon-name> \ --profile <profile> \ --region <your-aws-region> \ --query "addon.addonVersion" \ --output text # Latest version compatible with the target cluster version aws eks describe-addon-versions \ --addon-name <addon-name> \ --kubernetes-version <target-version> \ --profile <profile> \ --region <your-aws-region> \ --query "addons[0].addonVersions[0].addonVersion" \ --output text
Record for each add-on: name, current version, latest compatible version.
bash# List node groups aws eks list-nodegroups \ --cluster-name <cluster-name> \ --profile <profile> \ --region <your-aws-region> \ --output json # Current AMI release version per node group aws eks describe-nodegroup \ --cluster-name <cluster-name> \ --nodegroup-name <nodegroup-name> \ --profile <profile> \ --region <your-aws-region> \ --query "{releaseVersion: nodegroup.releaseVersion, version: nodegroup.version}" \ --output json
To find the latest AMI for the target version, take the current AMI name, replace the EKS version with the target version followed by a -*:
bashaws ec2 describe-images \ --owners amazon \ --filters "Name=name,Values=<ami-name-prefix>-<target-version>-*" \ --profile <profile> \ --region <your-aws-region> \ --query "sort_by(Images, &CreationDate)[-1].{ImageId: ImageId, Name: Name}" \ --output json
For example, if the current AMI name is amazon-eks-node-al2023-x86_64-standard-1.34-v20260107, the filter value becomes amazon-eks-node-al2023-x86_64-standard-1.35-*.
Record for each node group: name, current AMI release version, latest AMI release version.
Write all findings to a Markdown file at:
./maintenance-checks/maintenance-check-aws-eks-<environment>-<YYYY-MM-DD>.mdin the current working directory (the project root).
markdown# Maintenance Upgrade Check — <environment> — <YYYY-MM-DD> ## Decision **Maintenance upgrade required: Yes / No** <If no maintenance upgrade required> The EKS cluster is already on the latest Kubernetes version. No maintenance upgrade is needed. </If no maintenance upgrade required> --- ## Summary | Component | Current | Latest | |---|---|---| | EKS Cluster (<cluster-name>) | <current> | <latest> | | EKS Add-on: <addon-name> | <current> | <latest compatible with target> | | Node Group: <nodegroup-name> AMI | <current> | <latest> | --- <If maintenance upgrade required> --- ## Jira Ticket **Title:** Upgrade EKS cluster <cluster-name> from <current> to <target> **Parent:** `<your-jira-parent-ticket>` **Label:** `<your-jira-label>` **Story Points:** `<your-story-points>` **Refined:** Yes **Description:** The EKS cluster `<cluster-name>` is currently running Kubernetes `<current>`. AWS has released `<target>` as the next supported minor version. The following work is required: **1. EKS Control Plane** - Upgrade EKS control plane from `<current>` to `<target>` - Verify cluster health post-upgrade **2. EKS Add-ons** | Add-on | Current Version | Target Version | |---|---|---| | <addon-name> | <current> | <latest compatible with target> | - Update each add-on above to its latest version compatible with `<target>` - Verify add-on health post-update **3. Node Group AMIs** | Node Group | Current AMI Release | Latest AMI Release | |---|---|---| | <nodegroup-name> | <current> | <latest> | - Update each node group to use the latest AMI release for EKS `<target>` - Perform rolling node replacement and verify workload health **References:** - AWS EKS version lifecycle: https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html </If maintenance upgrade required>
--region and the correct --profile for the target environment (see table above). Never omit them.update-cluster, update-addon, update-nodegroup, etc.) — this skill is read-only. A human must execute the actual maintenance upgrades.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 13,695 | 6,278 | -54% | 1 | 1 | 0% | 3,417 | 3,019 | -12% | 0 | 0 | — |
case-02 | fail→fail | 7,566 | 10,185 | +35% | 1 | 1 | 0% | 776 | 2,932 | +278% | 0 | 0 | — |
case-03 | fail→fail | 5,531 | 8,718 | +58% | 1 | 1 | 0% | 429 | 2,337 | +445% | 0 | 0 | — |
case-19 | fail→pass | 8,222 | 2,212 | -73% | 1 | 1 | 0% | 1,406 | 2,279 | +62% | 0 | 0 | — |
case-13 | fail→pass | 9,035 | 2,417 | -73% | 1 | 1 | 0% | 1,690 | 2,415 | +43% | 0 | 0 | — |
case-04 | fail→pass | 13,014 | 4,127 | -68% | 1 | 1 | 0% | 2,753 | 2,772 | +1% | 0 | 0 | — |
case-05 | pass→pass | 8,857 | 5,922 | -33% | 1 | 1 | 0% | 1,802 | 3,000 | +66% | 0 | 0 | — |
case-06 | pass→pass | 10,671 | 5,646 | -47% | 1 | 1 | 0% | 1,998 | 2,897 | +45% | 0 | 0 | — |
case-07 | pass→pass | 11,024 | 1,288 | -88% | 1 | 1 | 0% | 1,886 | 2,055 | +9% | 0 | 0 | — |
case-18 | pass→pass | 8,512 | 2,281 | -73% | 1 | 1 | 0% | 1,441 | 2,296 | +59% | 0 | 0 | — |
case-08 | fail→pass | 14,841 | 3,637 | -75% | 1 | 1 | 0% | 2,561 | 2,558 | -0% | 0 | 0 | — |
case-09 | pass→pass | 7,400 | 2,655 | -64% | 1 | 1 | 0% | 1,457 | 2,401 | +65% | 0 | 0 | — |
case-10 | fail→pass | 9,177 | 15,440 | +68% | 1 | 1 | 0% | 1,948 | 3,506 | +80% | 0 | 0 | — |
case-11 | fail→pass | 13,005 | 5,327 | -59% | 1 | 1 | 0% | 2,416 | 3,043 | +26% | 0 | 0 | — |
case-12 | fail→pass | 13,607 | 3,102 | -77% | 1 | 1 | 0% | 2,405 | 2,140 | -11% | 0 | 0 | — |
case-14 | pass→fail | 9,293 | 3,539 | -62% | 1 | 1 | 0% | 1,586 | 2,523 | +59% | 0 | 0 | — |
case-15 | fail→pass | 5,270 | 4,653 | -12% | 1 | 1 | 0% | 825 | 2,576 | +212% | 0 | 0 | — |
case-16 | pass→pass | 9,225 | 3,484 | -62% | 1 | 1 | 0% | 1,850 | 2,529 | +37% | 0 | 0 | — |
case-17 | fail→pass | 15,167 | 4,355 | -71% | 1 | 1 | 0% | 2,580 | 2,498 | -3% | 0 | 0 | — |
case-20 | pass→pass | 9,218 | 3,916 | -58% | 1 | 1 | 0% | 1,853 | 2,465 | +33% | 0 | 0 | — |
case-21 | pass→pass | 8,234 | 5,185 | -37% | 1 | 1 | 0% | 1,591 | 2,817 | +77% | 0 | 0 | — |
case-22 | pass→pass | 7,585 | 6,256 | -18% | 1 | 1 | 0% | 1,445 | 2,879 | +99% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.