Eks Upgrade Check logo

Eks Upgrade Check

Organization
aws-samples
eks-upgrade-check

Assess EKS cluster upgrade readiness by running automated checks across 8 areas (version validation, breaking changes, deprecated APIs, add-on compatibility, node readiness, workload risks, AWS Upgrade Insights, upgrade plan), calculate a readiness score (0-100%), and generate a detailed report with remediation steps and pre-filled AWS CLI commands. Assessment-only - all checks are strictly read-only and never modify the cluster. Use this skill when investigating EKS upgrade safety, or, in the context of a version upgrade, Kubernetes version skew, deprecated API usage, addon compatibility, or Karpenter version; also node upgrade readiness or control plane upgrade planning.

Overview

Publisheraws-samples
Repositorysample-apex-skills
Skill nameeks-upgrade-check
Stars
90
Forks
20
Bundled files
12
LicenseMIT-0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 12 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by aws-samples on GitHub. Read the source before you install it.

Installation

Install the Eks Upgrade Check AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/aws-samples/sample-apex-skills/tree/main/devops-agent/eks-upgrade-check
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/aws-samples/sample-apex-skills.git /tmp/sample-apex-skills
mkdir -p .claude/skills
cp -r /tmp/sample-apex-skills/devops-agent/eks-upgrade-check .claude/skills/eks-upgrade-check
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Eks Upgrade Check in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Eks Upgrade Check on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Eks Upgrade Check is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

EKS Upgrade Readiness Skill

Overview

This skill assesses a live EKS cluster's readiness for a Kubernetes version upgrade. It connects to the cluster via AWS APIs, runs automated checks across 8 assessment areas, calculates a readiness score (0-100%), and produces a detailed report with prioritized remediation steps and pre-filled AWS CLI commands.

This skill is laser-focused on upgrade safety — answering the question: "Is it safe to upgrade this cluster to the next version?"

All operations are read-only — this skill does not modify your cluster.

What Gets Assessed

#SectionKey Checks
01Version ValidationUpgrade path validity, version skew policy, support status & cost
02Breaking ChangesVersion-specific API removals, behavioral changes, resource impact
03Deprecated API DetectionLive scan of cluster resources for deprecated/removed APIs
04Add-on CompatibilityCore add-on versions, OSS add-on matrix, Karpenter compatibility
05Node ReadinessNode version skew, AL2→AL2023 migration, AMI compatibility
06Workload RisksSingle replicas, missing PDBs, health probes, resource requests
07AWS Upgrade InsightsOfficial EKS pre-upgrade checks and recommendations
08Upgrade PlanPre-filled CLI commands, step-by-step upgrade sequence

Readiness Score

The skill calculates a weighted readiness score:

CategoryMax DeductionRationale
Breaking Changes25 ptsHighest risk — can break apps
Deprecated APIs20 ptsActionable, fixable pre-upgrade
Node Readiness (skew + subnet IPs)20 ptsCan block upgrade entirely
Unsupported Version15 ptsNo security patches, urgent upgrade needed
Add-on Compatibility15 ptsCritical > optional add-ons
Karpenter10 ptsOnly if installed
Workload Risks10 ptsBest-practice, not blockers
AWS Upgrade Insights10 ptsOfficial AWS checks
AL2 Nodes / Behavioral10 ptsInformational

Hard Blocker Override: If any hard blocker is detected (e.g., incompatible Karpenter, critical add-on DEGRADED, cluster subnets collectively cannot place control-plane ENIs, cluster not ACTIVE), the score is capped at ≤ 59% (NOT READY) regardless of other findings. See references/report-generation.md for the full list.

Score Interpretation:

ScoreLevelMeaning
90-100READYSafe to proceed
80-89GOODMinor issues, can proceed with caution
70-79FAIRSeveral issues need attention first
60-69RISKYSignificant issues, not recommended yet
0-59NOT READYCritical blockers, must resolve first

Assessment Workflow

Step 0: Pre-flight

Execution model — autonomous with hard stops. This skill runs autonomously and does NOT pause for interactive input. It proceeds only when the target cluster and version are unambiguous. If any gating criterion below is not met, it performs a HARD STOP: it does NOT guess, auto-select, or partially assess an ambiguous cluster/target — it emits a structured stop message and ends. Never assess a cluster or target the user did not unambiguously specify or that cannot be uniquely determined. (This gate is about an ambiguous cluster/target; denied reads during a valid assessment are handled via ## Unassessed, not a hard stop — see Action 3 below.)

HARD STOP output format — whenever a criterion below triggers a hard stop, output exactly this and end the run (produce no readiness score):

## Assessment Halted — <one-line reason>

**Criterion not met:** <which check failed>
**What was found:** <observed state>
**To proceed:** <the specific input needed, e.g., re-run naming the cluster + region + target>

Action 1 — Discover clusters

Use EKS ListClusters to discover available clusters, then apply this decision table.

Region caveat. EKS ListClusters is region-scoped and returns names only, not regions. A zero-cluster result means "none in this region," NOT "none in the account" — confirm the intended region before treating zero clusters as terminal. The "name + region" shown below pairs each returned name with the region actually queried, not a region returned by the API.

ConditionAction
User named a cluster in the requestConfirm it exists in the list, then proceed. If it does not exist → HARD STOP.
Exactly one cluster found, none namedProceed. State which cluster is being assessed.
More than one cluster found, none namedHARD STOP. List all clusters (name + region). Do NOT auto-select by first/newest/any heuristic.
Zero clusters foundHARD STOP. Report that no clusters were found in the queried region (state the region), and note that other regions were not checked.

Action 2 — Describe the selected cluster

Use EKS DescribeCluster and record: cluster name, Kubernetes version, platform version, region, status, account ID.

Account ID hygiene: the account ID is sensitive. If the generated report will be shared outside the account, mask or omit the account ID before sharing.

Action 2b — Validate cluster status

If status is NOT ACTIVE → HARD STOP:

  • CREATING/UPDATING/DELETING — cluster is in transition; the EKS API will reject an upgrade.
  • FAILED — cluster must be recovered before an upgrade can be attempted.

Cluster status gates the whole assessment; node group status gates node readiness. If a node group's lifecycle status == UPDATING (mid-rotation), the assessment can still run but node readings may be a transient old/new mix — flag it as potentially unstable and recommend re-running after rotation (see references/node-readiness.md §5.1).

Action 3 — Validate permissions (AWS + Kubernetes)

3a — AWS API preflight. Verify access to: ListNodegroups, ListAddons, DescribeAddonVersions (add-on compatibility — references/addon-compatibility.md marks this a MUST-run read), ListInsights, and EC2 DescribeSubnets (node-readiness subnet-IP hard-blocker input). DescribeCluster / DescribeNodegroup / DescribeAddon / DescribeInsight are exercised implicitly by the assessment steps.

3b — Kubernetes RBAC preflight. The high-weight categories read Kubernetes objects, not just AWS APIs. Confirm cluster read access to: Deployments/DaemonSets/StatefulSets (workloads + deprecated-apis), Validating/MutatingWebhookConfigurations (breaking-changes), HorizontalPodAutoscalers (deprecated-apis), and nodepools.karpenter.sh (node-readiness + add-on compatibility) via a can-i-style list check. If kubectl auth can-i itself errors (not a clean yes/no), treat the read as denied.

If any required AWS permission or Kubernetes read is denied → this is NOT a hard stop (the hard stops in this Step 0 are for an ambiguous cluster/target only — see the execution-model note above). Instead, proceed as a partial assessment:

  1. Record exactly which IAM action or RBAC verb/resource is denied.
  2. Continue the assessment. Every category whose backing read was denied is reported UNKNOWN / not-scored (NOT a clean 0-deduction pass) and listed in ## Unassessed, per references/report-generation.md.
  3. The headline verdict carries the (partial — N category/categories unassessed) marker and is capped below READY — a partial assessment can NEVER yield an uncaveated READY.

The guarantee this preflight gives extends only to the reads it actually probes.

Action 4 — Determine target version

  • User specified a target version → use it. Validate the upgrade path per references/version-validation.md; if the path is invalid (downgrade, same version, or the target does not exist on EKS) → HARD STOP.
  • No target specified → default to the immediate next minor version (current + 1). This is deterministic (EKS upgrades one minor at a time), so it is a safe default, not a guess. State the assumed target explicitly in the report metadata.
  • User requested a multi-hop upgrade (target > current + 1) → HARD STOP. Show the required one-hop-at-a-time path (e.g., 1.30 → 1.31 → 1.32) and state that this run assesses only a single hop; re-run naming the immediate next version.

Action 5 — Proceed

If all criteria above pass, proceed through Steps 1-8 without further pauses.

Steps 1-8: Run Assessment

For each assessment area, read the corresponding reference file from references/ and execute the checks described.

Assessment AreaReference File
Version / upgrade pathreferences/version-validation.md
Breaking changes / API removalsreferences/breaking-changes.md
Deprecated APIsreferences/deprecated-apis.md
Add-on compatibility / Karpenterreferences/addon-compatibility.md
Node readiness / AL2 / AMIreferences/node-readiness.md
Workload risks / PDB / probesreferences/workload-risks.md
AWS Insightsreferences/upgrade-insights.md
Generate reportreferences/report-generation.md

Step 9: Calculate Score & Generate Report

Follow the scoring algorithm in references/report-generation.md to calculate the final score and produce the report.

Tool Usage Guidelines

  1. Do NOT hardcode or guess cluster names. Always discover by listing first.
  2. Do NOT retry a failed API call more than once.
  3. Always read the relevant reference file before executing checks for that section.
  4. Use EKS APIs for cluster queries — DescribeCluster, ListNodegroups, DescribeNodegroup, ListAddons, DescribeAddon, DescribeAddonVersions, ListInsights, DescribeInsight.
  5. Use Kubernetes APIs for resource scanning — list Deployments, DaemonSets, StatefulSets, Pods, Nodes, PDBs, etc.
  6. Use EC2 DescribeSubnets for subnet IP capacity checks.

Data Files

  • OSS Add-on Registry: assets/oss_addon_registry.json — identifiers and authoritative upstream URLs for common OSS add-ons. This file does NOT contain compatibility data. Compatibility is always verified live via the registry's compatibility_url and releases_url fields.

Report Output Format

The report is rendered as Markdown inline in your response — the DevOps Agent runtime cannot write files. Use the report-title pattern from references/report-generation.md as the report's title/heading, not as a saved filename. There is only one delivery path: render the full report inline.

Each report includes:

  • Readiness score with breakdown
  • Blockers (hard blockers only — these cap the score at ≤59)
  • Critical Actions (other HIGH-severity findings, not score-capping)
  • Recommended actions
  • Informational findings
  • Evidence tables (add-ons, nodes, workloads)
  • Step-by-step upgrade plan with pre-filled commands
  • AWS reference links

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Eks Upgrade Check AI skill do?

Assess EKS cluster upgrade readiness by running automated checks across 8 areas (version validation, breaking changes, deprecated APIs, add-on compatibility, node readiness, workload risks, AWS Upgrade Insights, upgrade plan), calculate a readiness score (0-100%), and generate a detailed report with remediation steps and pre-filled AWS CLI commands. Assessment-only - all checks are strictly read-only and never modify the cluster. Use this skill when investigating EKS upgrade safety, or, in the context of a version upgrade, Kubernetes version skew, deprecated API usage, addon compatibility,...

Why use Eks Upgrade Check on TypingMind?

Because you install it once and use it with any model. Eks Upgrade Check is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Eks Upgrade Check in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/aws-samples/sample-apex-skills/tree/main/devops-agent/eks-upgrade-check. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Eks Upgrade Check?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Eks Upgrade Check?

As many as you like. As long as a model supports skills, you can use Eks Upgrade Check with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Eks Upgrade Check AI skill free?

Yes. It is published on GitHub by aws-samples under the MIT-0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇