agentsclimarketplace

Inventory discovery

Skill ymedlop/kuberoutectl-skills/skills/inventory-discovery

Discover and refresh what Kubernetes access a user has, and set up a provider for the first time. Handles prompts like 'what clusters do I have', 'list my clusters', 'I only see one AWS account', 'this list looks stale', 'set me up with kuberoutectl'. USE FOR: prerequisites and doctor, AWS SSO multi-account profiles, syncing a provider, refreshing a stale inventory, checking discovery breadth via scopes, telling an empty cache from a permissions boundary. DO NOT USE FOR: choosing or switching to a cluster (use target-selection), or diagnosing why a known cluster is unreachable (use access-triage).From its SKILL.md

Install
npx -y skills add ymedlop/kuberoutectl-skills --skill inventory-discovery

Assembled 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.4 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

<!-- Frontmatter is generic metadata for humans and index/marketplace scanning. It is NOT parsed at runtime by any specific AI client. -->

Inventory discovery

Use this when the user asks "what clusters / access do I have?", is starting fresh, says the list looks stale, or found fewer clusters than expected.

kuberoutectl asks each provider's own CLI (Azure, AWS, GCP) or reads local kubeconfig files, then records what it finds in a local JSON cache. Everything else — routing, triage — reads that cache.

Preconditions

  • kuberoutectl on PATH (install).
  • The provider's own CLI installed and logged in. doctor checks the first, not the second.
  • AWS across more than one account: profiles must exist in ~/.aws/config first — step 3. Without them sync aws finds one account and the user assumes clusters are missing.

Commands

# read-only
kuberoutectl doctor
kuberoutectl inventory providers
kuberoutectl inventory sources
kuberoutectl inventory scopes
kuberoutectl target list
kuberoutectl target label list <alias|id|name>

# refresh — idempotent; user labels, collections, visibility all survive
kuberoutectl sync azure
kuberoutectl sync aws
kuberoutectl sync gcp
kuberoutectl sync kubeconfig

# writes ~/.aws/config — additive, confirm first
kuberoutectl setup aws-sso --sso-session <name>
kuberoutectl setup aws-sso --sso-session <name> --role <role> --region <region>

# cache cleanup — destructive, confirm first
kuberoutectl target delete <alias|id|name>
kuberoutectl target clear

Steps

  1. Prerequisites. doctor. Anything not ok is an install problem — resolve it via the matching provider guide.
  2. Providers in scope. Ask, or infer from doctor. Only sync clouds the user has; each unnecessary sync can trigger a login prompt.
  3. AWS multi-account, if applicable. setup aws-sso enumerates every account reachable through an IAM Identity Center session and appends one kr-<account>-<role> profile per account. Needs a live session first — aws sso login --sso-session <name>, which the user runs. Pass --role deliberately: the default is AdministratorAccess when present, over-privileged for inspection. Pass --region if EKS lives outside the session's sso_region.
  4. Sync, one provider at a time. Sync is not transactional — a failure midway leaves a partial cache, so read each result before starting the next.
  5. Verify. target list, then inventory scopes for breadth. For AWS, expect one scope per account.

Reading the result

$ kuberoutectl doctor
CHECK                STATUS  DETAIL
provider:aws         ok      resolved at /usr/local/bin/aws
provider:gcp         ok      resolved at /opt/homebrew/bin/gcloud

$ kuberoutectl target list
ALIAS         PLATFORM  REGION        HEALTH  PROVIDER
cluster-test  gke       europe-west3  valid   gcp
  • doctorbinary resolution only. ok means the CLI was found, not that the user is logged in. A fully green doctor with no session yields an empty sync.
  • target listALIAS is a short handle but not unique across environments; see reference-resolution. Hidden targets are omitted unless you pass --all.
  • inventory scopes — one row per subscription / account / project. Empty scopes is the diagnostic: the identity sees no administrative boundary, which is an auth or permissions problem, not a kuberoutectl one.

To show exactly what a sync changed, diff the ids:

kuberoutectl target list -o json > /tmp/before.json
kuberoutectl sync gcp
kuberoutectl target list -o json > /tmp/after.json
diff <(jq -r '.[].id' /tmp/before.json | sort) <(jq -r '.[].id' /tmp/after.json | sort)

MCP tools

Prefer the tool; drop to the CLI only where none exists, and say so.

StepMCP toolFallback
List what was foundlist_targets
Confirm breadthlist_scopes, list_sources
Provider capabilitieslist_providers
Freshness of the cacheget_statussynced_at
Refreshsync_providerfull mode only; absent under --read-only
Prerequisitesno toolkuberoutectl doctor
AWS profile generationno toolkuberoutectl setup aws-sso
Cache cleanupwithheld on purposetarget delete / target clear, CLI only

Steps 1 and 3 are the CLI-only parts: doctor and setup aws-sso have no tool, so an MCP-only client cannot complete first-time setup and should say so rather than skipping the checks. Map: mcp-tools.

Fields

reading-output for field names, action_hint, and the freshness rule; selectors for grammar. id is the stable diff key — alias and name are not.

Safety

  • doctor, inventory *, target list, label list are Tier 1.
  • sync is Tier 2 — safe to re-run, never discards user labels, collections, or visibility. It may trigger the provider CLI's login; let the user complete it.
  • setup aws-sso writes ~/.aws/config, additive only: appends missing profiles, never modifies existing ones. Name the file and confirm first. It creates nothing in AWS itself.
  • target delete removes one target from the cache; a later sync re-adds it. No prompt, so confirm first. target clear removes all and prompts unless --yesnever pass --yes on the user's behalf.
  • Never ask the user to paste a token, key, or session value.

Common pitfalls

  • doctor all green, sync still empty. Not logged in — doctor does not test sessions.
  • AWS shows one account when the user has many. Missing ~/.aws/config profiles, step 3. The single most common cause of "it only found some of my clusters".
  • Profiles generated but still one scope. The SSO session expired between setup and sync. Re-login, re-sync.
  • Empty target list after a successful sync. Check inventory scopes first. No scopes = permissions boundary. Scopes but no targets = no clusters there, or the wrong region.
  • A re-created cluster loses its labels. Labels survive sync but attach to the target id; re-creating upstream mints a new id and the labels do not follow. Users mistake this for sync eating their labels.
  • Reporting health: unknown as broken. It usually means never observed.
  • target clear with no resync. Leaves an empty list and no explanation.

References

https://ymedlop.github.io/kuberoutectl/ · provider setup guides

What ships with it: 5 files

24.1 KB alongside SKILL.md

Gives 0 of the 12 instructions most containers cloud skills give in ~1.8k tokens

Counted across 607 of the 705 authors here whose files we hold, read 2026-09-06

  • Run as non-root userin 34 of 607, across 27 files
  • Use multi-stage buildsin 29 of 607
  • Set resource requests and limitsin 24 of 607, across 20 files
  • Configure liveness and readiness probesin 18 of 607, across 14 files
  • Use named volumes for persistent datain 14 of 607, across 9 files
  • Pin base image versionsin 14 of 607
  • Set up environment variablesin 14 of 607, across 10 files
  • Pin provider versionsin 14 of 607
  • Apply least privilege RBAC permissionsin 10 of 607, across 7 files
  • Create a dockerignore filein 10 of 607
  • Use remote state with lockingin 9 of 607
  • Pin base images by digestin 9 of 607, across 8 files

Said here and by no other author read

  • Run kuberoutectl doctor to check prerequisites
  • Sync one provider at a time
  • Check inventory scopes for breadth

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.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.