Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add anyshift-io/sre-skills --skill kubectl-investigatorgit clone --depth 1 https://github.com/anyshift-io/sre-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/anyshift-io/sre-skills/kubectl-investigator)<a href="https://agentmods.dev/skills/anyshift-io/sre-skills/kubectl-investigator"><img src="https://agentmods.dev/badge/skills/anyshift-io/sre-skills/kubectl-investigator/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/anyshift-io/sre-skills/kubectl-investigator"><img src="https://agentmods.dev/badge/skills/anyshift-io/sre-skills/kubectl-investigator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00159 | $0.04403 |
| Opus 5 | $0.00079 | $0.02201 |
| Sonnet 5 | $0.00032 | $0.00881 |
| Haiku 4.5 | $0.00016 | $0.00440 |
Grade A, and why
kubectl-investigator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 185 lines — stays where its author put it; the contents beside it link to each section on GitHub.
kubectl-investigator
Methodology skill for investigating a live or recent incident on Kubernetes. Produces a timeline, a ranked set of hypotheses, a blast-radius estimate, and a recommended mitigation. Hands off cleanly to postmortem-author once the incident is mitigated.
Scope: workloads running on Kubernetes (Deployments, StatefulSets, DaemonSets, Jobs/CronJobs) and the cluster primitives around them (Services, Ingress, CoreDNS, ConfigMaps/Secrets, RBAC, HPA, nodes). External dependencies (third-party APIs, partner TLS endpoints, managed databases) are in scope only as seen from a Kubernetes workload — the methodology investigates the cluster-side symptom and the in-cluster change surface.
When to invoke
- A
PrometheusRule/ Alertmanager alert just fired on a workload and the agent needs to triage before paging a human. - A user asks "what is breaking in the cluster right now" or "why did Deployment X just page".
- A
kubectl rollout/ Helm release / Argo CD sync went out in the last hour and a metric moved; need to know whether they are linked. - Pods are crash-looping,
OOMKilled, orPending, or customer impact is reported with no alert yet; need to find the failing surface.
The methodology, in order
The order matters. Skipping a step produces confident wrong answers.
1. Anchor the window
Lock two timestamps before doing anything else:
- T0: the trigger timestamp. Apply this order:
- If an alert is provided as the trigger, T0 = alert fire time. Use this verbatim. Do not substitute an earlier "first error in logs / first
OOMKilledevent" timestamp just because one exists; the alert fire time is the agreed-upon coordination point for the incident. - If a customer report is the trigger, T0 = report timestamp.
- If neither exists (operator-initiated investigation, "pods slow all morning"), T0 = earliest unambiguous signal in the available telemetry (first
OOMKilledevent, firstSERVFAIL, first error-rate inflection), and mark T0 as ambiguous (see below).
- If an alert is provided as the trigger, T0 = alert fire time. Use this verbatim. Do not substitute an earlier "first error in logs / first
- Tnow: current time, or the timestamp the investigation was triggered.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- examples/01-oom-cascade.md 7.4 KB
- examples/02-dns-resolution-failure.md 7.1 KB
- examples/03-cascading-failure-retry-storm.md 8.2 KB
- examples/04-deploy-correlator-serialization.md 7.9 KB
- examples/05-outside-reference-paths-third-party-rate-limit.md 7.8 KB
- examples/06-ambiguous-t0-slow-burn.md 7.9 KB
- examples/07-blast-radius-asymmetric-revert.md 8.1 KB
- examples/08-deploy-correlator-confirmation-bias.md 9.1 KB
- examples/09-zero-changes-external-cert-expiry.md 6.3 KB
- examples/10-multi-region-asymmetry.md 7.1 KB
- examples/11-capacity-bound-organic-growth.md 6.6 KB
- FAILURE_MODES.md 6.8 KB
- fixtures/01-oom-cascade/deploys.json 789 B
- fixtures/01-oom-cascade/logs.jsonl 1.3 KB
- fixtures/01-oom-cascade/metrics.json 1.3 KB
- fixtures/01-oom-cascade/pod_events.jsonl 1.4 KB
- fixtures/01-oom-cascade/traces.jsonl 1.5 KB
- fixtures/02-dns-resolution-failure/deploys.json 706 B
- fixtures/02-dns-resolution-failure/logs.jsonl 2.4 KB
- fixtures/02-dns-resolution-failure/metrics.json 1.3 KB
- fixtures/02-dns-resolution-failure/traces.jsonl 1.4 KB
- fixtures/03-cascading-failure-retry-storm/deploys.json 416 B
- fixtures/03-cascading-failure-retry-storm/logs.jsonl 1.4 KB
- fixtures/03-cascading-failure-retry-storm/metrics.json 1.7 KB
- fixtures/03-cascading-failure-retry-storm/traces.jsonl 1.6 KB
- fixtures/04-deploy-correlator-serialization/deploys.json 803 B
- fixtures/04-deploy-correlator-serialization/logs.jsonl 1.4 KB
- fixtures/04-deploy-correlator-serialization/metrics.json 1.0 KB
- fixtures/04-deploy-correlator-serialization/traces.jsonl 1.3 KB
- fixtures/05-outside-reference-paths-third-party-rate-limit/deploys.json 390 B
- fixtures/05-outside-reference-paths-third-party-rate-limit/logs.jsonl 1.6 KB
- fixtures/05-outside-reference-paths-third-party-rate-limit/metrics.json 1.3 KB
- fixtures/05-outside-reference-paths-third-party-rate-limit/traces.jsonl 1.3 KB
- fixtures/06-ambiguous-t0-slow-burn/deploys.json 517 B
- fixtures/06-ambiguous-t0-slow-burn/logs.jsonl 862 B
- fixtures/06-ambiguous-t0-slow-burn/metrics.json 1.2 KB
- fixtures/06-ambiguous-t0-slow-burn/traces.jsonl 933 B
- fixtures/07-blast-radius-asymmetric-revert/deploys.json 905 B
- fixtures/07-blast-radius-asymmetric-revert/logs.jsonl 1.7 KB
- fixtures/07-blast-radius-asymmetric-revert/metrics.json 1.4 KB
- fixtures/07-blast-radius-asymmetric-revert/traces.jsonl 1.5 KB
- fixtures/08-deploy-correlator-confirmation-bias/deploys.json 812 B
- fixtures/08-deploy-correlator-confirmation-bias/logs.jsonl 2.0 KB
- fixtures/08-deploy-correlator-confirmation-bias/metrics.json 1.3 KB
- fixtures/08-deploy-correlator-confirmation-bias/traces.jsonl 1.3 KB
- fixtures/09-zero-changes-external-cert-expiry/deploys.json 145 B
- fixtures/09-zero-changes-external-cert-expiry/logs.jsonl 1.2 KB
- fixtures/09-zero-changes-external-cert-expiry/metrics.json 1.3 KB
- fixtures/09-zero-changes-external-cert-expiry/traces.jsonl 1.4 KB
- fixtures/10-multi-region-asymmetry/deploys.json 138 B
- fixtures/10-multi-region-asymmetry/logs.jsonl 1.7 KB
- fixtures/10-multi-region-asymmetry/metrics.json 2.0 KB
- fixtures/10-multi-region-asymmetry/traces.jsonl 1.6 KB
- fixtures/11-capacity-bound-organic-growth/deploys.json 139 B
- fixtures/11-capacity-bound-organic-growth/logs.jsonl 948 B
- fixtures/11-capacity-bound-organic-growth/metrics.json 1.2 KB
- fixtures/11-capacity-bound-organic-growth/traces.jsonl 1.2 KB
- README.md 4.0 KB
- tests/_methodology.py 23 KB runs code
- tests/eval/eval_results.json 853 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 185 lines · 159 tokens per session scan A c0b7f51f1b43
kubectl-investigator is a skill published in the GitHub repository anyshift-io/sre-skills (17 stars, last pushed 15d ago), licensed Apache-2.0. It adds 159 tokens to every session and 4,403 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
diag-container-oom
A diagnostic runbook for containers stopped by an out-of-memory condition. A container is an isolated process environment, and OOM means the operating system or container limit stopped it because it used too much memory.
diag-k8s-node-pressure
A diagnostic runbook for Kubernetes node resource pressure. Kubernetes is a system that runs containers; a node is one machine in that system, and pressure means it is short on CPU, memory, disk space, or process IDs.
diag-k8s-pod-crashloop
A diagnostic runbook for Kubernetes Pods stuck in CrashLoopBackOff. A Pod is a Kubernetes unit that runs one or more containers; CrashLoopBackOff means a container keeps failing and Kubernetes waits longer between restart attempts.
gdpr-dsgvo-expert-neekware
GDPR and German DSGVO compliance automation. Scans codebases for privacy risks, generates DPIA documentation, tracks data subject rights requests. Use for GDPR compliance assessments, privacy audits, data protection planning, DPIA generation, and data subject rights management.
docker-compose
Multi-container Docker applications with docker-compose — define services, networks, volumes, and orchestrate local development environments.
lxd-docker-firewall-conflict
Diagnose and fix the well-known Docker/LXD firewall conflict on a host running both. Docker sets the iptables FORWARD chain policy to DROP and accepts only its own bridges, so forwarded traffic from the LXD bridge (lxdbr0) is silently dropped and LXD containers/VMs get no outbound internet (the host itself is fine).…