Access triage
Diagnose why Kubernetes access is not working, and check credential health. Handles prompts like 'kubectl says unauthorized', 'I cannot reach this cluster', 'my login expired', 'a cluster disappeared from the list', 'what version am I on'. USE FOR: baseline status (version, current selection, cache freshness, doctor), credential health and action hints, renewing an expired identity, telling a permissions boundary from a deleted cluster. DO NOT USE FOR: first-time provider setup (use inventory-discovery), or choosing which cluster to switch to (use target-selection).From its SKILL.md
npx -y skills add ymedlop/kuberoutectl-skills --skill access-triageAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.3 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Access triage
Use this when access is not working — kubectl errors, target use fails, a
cluster is missing, a login expired — or when you need baseline facts (version,
selection, freshness, prerequisites) before diagnosing anything.
Four causes look identical from outside: a missing prerequisite, an expired or never-established identity, a stale cache, or a cluster that is genuinely gone. The step order separates them cheapest-first.
Preconditions
kuberoutectlonPATH.- The user can name the cluster, or at least the provider. If not, resolve the
reference via
target-selectionfirst.
Commands
# read-only
kuberoutectl version
kuberoutectl current
kuberoutectl doctor
kuberoutectl target inspect <alias|id|name>
kuberoutectl credential list
kuberoutectl credential list --provider azure
kuberoutectl credential show <id>
kuberoutectl inventory providers
kuberoutectl inventory scopes
# Tier 4 — re-authenticates a real identity, may open a browser. Confirm first.
kuberoutectl credential renew <id>
Steps
-
Baseline.
version,current,doctor— which binary, what is selected, how stale, whether provider CLIs resolve. Notokindoctoris an install problem; stop there. -
Freshness.
Last syncfromcurrent. Older than ~a day makes everything below a hypothesis: note it, continue, re-sync before delivering a verdict. -
The target's view.
target inspect <ref>→Health,Action,Credential.Actionroutes:ActionMeaning Go to useidentity is fine step 6 — not an identity problem renewexpired, re-authenticable step 5 manualcannot re-auth from here step 5 -
The identity behind it.
credential show <credential-id>, taking the id from theCredentialline. That field is the join from "cluster unreachable" to "identity expired". -
Can this provider renew?
inventory providers→RENEW.nomeans renew cannot succeed; the fix is at the source (provider login, AWS profile, kubeconfig file) — name that source.yesplusaction_hint: renewis the only case where offering renew is correct. -
Cluster missing?
inventory scopes. No scopes = the identity sees no subscription / account / project, an auth or permissions boundary. Scopes present but target absent = deleted upstream, or this identity lost visibility. -
Identity fine, still unreachable. kuberoutectl has told you all it knows; what remains is network, RBAC, or control plane. Say you have moved past the brokering layer, then
kubectl cluster-info/kubectl auth can-i get pods.
Reading the result
$ kuberoutectl credential list
ID PROVIDER IDENTITY HEALTH ACTION
gcp:account:[email protected] gcp [email protected] valid use
aws:default aws unknown manual
Two different situations:
valid/use— ready. If a cluster on this provider is unreachable, the cause is not this credential. Go to step 7.unknown/manual/ no identity — no session was ever established. Fix isaws sso login, notcredential renew. Theidentitykey is absent from the JSON, not empty; code testingidentity == ""misses it.
$ kuberoutectl inventory providers
PROVIDER RENEW REAUTH SCOPES SWITCH STATIC
aws yes yes yes yes yes
kubeconfig no no yes yes yes
RENEW no — static credentials must be replaced at the file; renewal is impossible.
version prints 1.0.0 for a release (no leading v) or 0.0.0-snapshot-<sha>
for a development build. A snapshot is not an outdated release.
MCP tools
Prefer the tool; drop to the CLI only where none exists, and say so.
| Step | MCP tool | Fallback |
|---|---|---|
| 1 — selection + freshness | get_status | — |
| 1 — version | initialize → serverInfo.version | kuberoutectl version |
| 1 — prerequisites | no tool | kuberoutectl doctor |
| 3 — the target's view | get_target | — |
| 4 — the identity | list_credentials, filter on the id | credential show <id> |
| 5 — can this provider renew | list_providers → can_renew | — |
| 5 — renew | withheld on purpose | credential renew, CLI only |
| 6 — cluster missing | list_scopes | — |
The whole read path works under --read-only. credential renew has no tool in
either mode — the guardrail, not a gap: the one step that re-authenticates a real
identity stays a deliberate CLI action. doctor is a genuine gap, so an MCP-only
client cannot rule out a missing provider binary — report that as a gap in your
evidence rather than skipping step 1. Map:
mcp-tools.
Fields
action_hint table, health semantics, freshness rule:
reading-output.
target.credential_id → credential.id which identity reaches this cluster
target.scope_id → scope.id which account/project it lives in
Safety
- Steps 1–4, 6, 7 are Tier 1.
credential renewis Tier 4: it re-authenticates a real identity and may open a browser. Confirm first, and never run it whenRENEWisno.- kuberoutectl stores no secrets. Never ask the user to paste a token or password.
- Separate facts from interpretation. "Last sync was 3 days ago, so this health may be stale" is a fact about your evidence — say it rather than asserting a conclusion you cannot support.
Common pitfalls
- Running
renewfirst. Most disruptive step, and wrong formanualand forRENEW noproviders. It is step 5. - Calling
unknownbroken. It usually means never observed. - Renewing the wrong identity. One provider holds many credentials — take the id
from the affected target's
Credentialline. - Diagnosing on stale data. Check
Last syncfirst. - Blaming kuberoutectl for a permissions boundary. Empty
inventory scopesis the cloud saying no. - Stopping at "identity is valid". That is a finding: the problem is downstream. Say so and hand off rather than looping.
- Reporting a snapshot build as outdated.
References
What ships with it: 4 files
21.8 KB alongside SKILL.md
references/
- mcp-tools.md7.8 KB
- reading-output.md5.6 KB
- safety-model.md3.7 KB
- selectors.md4.6 KB
Gives 0 of the 12 instructions most debug triage skills give in ~1.7k tokens
Counted across 1,020 of the 1,639 authors here whose files we hold, read 2026-09-06
- Find root cause before attempting any fixin 134 of 1020, across 118 files
- Create a failing test case before implementing a fixin 109 of 1020, across 95 files
- Read error messages and stack traces completelyin 102 of 1020, across 88 files
- Reproduce the issue consistently before investigatingin 90 of 1020, across 77 files
- Make the smallest possible change to test a hypothesisin 90 of 1020, across 76 files
- Trace data flow backward to find the sourcein 84 of 1020, across 70 files
- Form a single hypothesis before testingin 78 of 1020, across 64 files
- Implement only one fix at a timein 76 of 1020, across 63 files
- Question the architecture if three fixes failin 73 of 1020, across 59 files
- Add diagnostic instrumentation at component boundariesin 68 of 1020, across 56 files
- Compare broken code against working examplesin 68 of 1020, across 57 files
- Write a regression test before applying the fixin 62 of 1020, across 55 files
Said here and by no other author read
- run version current and doctor to establish baseline
- check last sync time for data freshness
- inspect target to determine health and credential status
- show credential details using the identified credential id
- verify provider renewal capability before attempting renewal
- list inventory scopes to check for permissions boundaries
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.