Run read-only Kubernetes health checks and report cluster status with evidence. This skill works
without private overlays by requiring an explicit kube context or confirmed current context.
Local users may add ignored protected overlays for aliases and environment-specific checks.
When to use
User asks to check cluster health, status, diagnostics, node status, or post-maintenance state
Verifying cluster-wide symptoms after upgrades, reboots, Helm changes, GitOps syncs, or incidents
Gathering read-only evidence across nodes, workloads, events, ingress, storage, logs, and policy
Producing a short traffic-light report from Kubernetes and related observability signals
When NOT to use
Writing or reviewing Kubernetes manifests - use kubernetes
Writing Helm charts, Kustomize overlays, or IaC - use kubernetes or terraform
Changing resources, restarting pods, deleting objects, or applying fixes - ask for explicit escalation
Debugging one application deeply after the broad sweep identifies it - use the relevant domain skill
AI Self-Check
Before running checks or reporting results, verify:
Target context is explicit or the current context was confirmed
Every kubectl command includes --context <context>
Every helm command includes --kube-context <context>
Commands are read-only: no apply, patch, delete, edit, rollout restart, scale, cordon, drain, or exec unless the user explicitly escalates
Output is capped with head, tail, --since, --field-selector, or selectors
Time window is bounded and stated in the report
Protected registry contents are not printed unless the user asks for those exact details
Findings include evidence, impact, and next action
Current source checked: dated versions, CLI flags, API names, and support windows are verified against primary docs before repeating them
Hidden state identified: local config, credentials, caches, contexts, branches, cluster targets, or previous runs are made explicit before acting
Verification is real: final checks exercise the actual runtime, parser, service, or integration point instead of only linting prose or happy paths
Routing overlap checked: overlapping skills, trigger terms, and "When NOT to use" boundaries are checked before returning guidance
Spec claims verified: claims about tool behavior, output contracts, or repo conventions are checked against current docs, scripts, or skill files
Cluster target explicit: kubeconfig context, namespace, and environment are named before any query
Read-only posture kept: health checks do not mutate resources or restart workloads unless the user explicitly escalates
No improvisation: only the read-only commands in the reference files were run; missing coverage was noted as a suggestion, not freelanced with guessed service names, paths, or flags
Stderr is visible: diagnostic commands surface their failure reason instead of masking it with 2>/dev/null; a missing tool, permission gap, or wrong context is reported, not silently treated as a clean result
Performance
Start with cluster-wide signals before loading symptom-specific references.
Bound logs, events, and object listings by namespace, time window, or selectors.
Prefer summarized evidence over dumping raw Kubernetes output into context.
Best Practices
Treat the current kube context as hidden state until it is explicitly named.
Separate health evidence from remediation; fixes require a separate escalation.
Report permission gaps and missing CRDs as diagnostic findings, not silent skips.
Run only the commands the reference files define. A monitoring context invites improvisation; resist it. When a check you want is not listed, write it as a suggested follow-up instead of guessing a service name, namespace, or path that may not exist.
Do not read a metric's status without knowing what the metric measures. The reference files state what each signal does and does NOT represent; misreading a percentage or a stale value produces a confidently wrong report.
Cluster Registry
This public skill has no built-in private cluster registry.
Users may create local-only overlays under skills/cluster-health/protected/ for private lab,
homelab, work, or customer cluster details. The directory is gitignored by this collection. If it
exists in the installed skill, read it while using this skill. A user can ask their agent to create
or update these files.
Suggested local layout:
protected/
registry.md # aliases, kube contexts, CWD patterns, profile mappings
private-patterns.txt # terms that must never appear in public files
<cluster-or-env>.md # local namespaces, runbooks, dashboards, thresholds
If protected/registry.md exists, read it first and use its alias, context, CWD pattern, and
reference mappings.
If the registry maps the target to protected/<cluster-or-env>.md, read that profile before
running checks.
If no protected registry exists, require an explicit kube context or ask before using the current
context.
Never guess a cluster from a vague request.
Never print protected registry contents in public reports unless the user asks for those exact
details.
Treat gitignored as local privacy, not encryption. Do not put protected overlays in shared logs,
issues, PR comments, or public reports.
Usage
cluster-health [context-or-alias] [timewindow]
context-or-alias is a kube context, current-context confirmation, or protected overlay alias.
timewindow defaults to 2h; use bounded values such as 30m, 1h, 2h, 6h, or 24h.
Workflow
Step 1: Resolve target
If a protected registry maps the request or current directory to an alias, use that mapping. If no
mapping exists, require an explicit kube context or ask whether to use kubectl config current-context.
Step 2: Confirm read-only scope
State the context and time window before running commands. Do not run mutation commands as part of
this skill.
Step 3: Run the generic sweep
Start with the cluster-wide checks in references/kubernetes-core.md, then load additional
references based on the symptom:
networking or certificate symptoms -> references/networking-ingress.md
release or reconciliation symptoms -> references/helm-gitops.md
pending pods or volume symptoms -> references/storage.md
noisy errors or alert symptoms -> references/monitoring-logs.md
policy, RBAC, or image-risk symptoms -> references/security.md
Step 4: Classify findings
Use GREEN for healthy signals, YELLOW for degraded or ambiguous state, and RED for user-visible
outage, data-risk, or control-plane risk. Distinguish transient rollout noise from persistent
degradation.
Step 5: Report
Return a concise report:
# Cluster Health Report - <context> (<timewindow>, YYYY-MM-DD HH:MM)
## Summary
- STATUS: GREEN|YELLOW|RED
- Scope: <contexts, namespaces, time window>
- Key findings: <short bullets>
## Evidence
- <area>: <command or source> -> <observed signal>
## Next Actions
- <read-only follow-up or explicit escalation request>
Reference Files
references/kubernetes-core.md - nodes, workloads, events, namespaces, and resource pressure
references/helm-gitops.md - Helm releases, GitOps controllers, and reconciliation state
references/networking-ingress.md - services, ingress, load balancers, DNS, and certificates
references/monitoring-logs.md - alerts, metrics availability, log triage, and noisy namespaces
references/security.md - read-only checks for RBAC, secrets exposure signals, image risk, and policy engines
Output Contract
See skills/_shared/output-contract.md for the full contract.
Skill name: CLUSTER-HEALTH
Deliverable bucket:audits
Mode: conditional. When invoked to analyze, review, audit, or improve existing repo content, emit the full contract - boxed inline header, body summary inline plus per-finding detail in the deliverable file, boxed conclusion, conclusion table - and write the deliverable to docs/local/audits/cluster-health/<YYYY-MM-DD>-<slug>.md. When invoked to answer a question, teach a concept, build a new artifact, or generate content, respond freely without the contract.
Severity scale:P0 | P1 | P2 | P3 | info (see shared contract; only used in audit/review mode).
Related Skills
kubernetes - write or review manifests, Helm charts, Kustomize, and GitOps config
networking - debug DNS, routing, proxies, VPNs, and Linux networking
terraform - change infrastructure definitions or state
Rules
Read only. Do not mutate cluster state unless the user explicitly changes the task.
Use --context <context> on every kubectl command and --kube-context <context> on every helm command.
Cap output before putting it in context.
Never guess a cluster target from a vague request.
Keep protected overlay details out of public reports unless the user asks for those exact details.
Report failed checks as findings; do not hide missing tools, missing CRDs, or permission errors.
Run ONLY the read-only commands listed in the reference files. If a needed check is missing, note it as a suggested follow-up in the report rather than improvising a mutating or unlisted command. Inventing service names, paths, or flags is how diagnostic skills produce false results.
1---2name: cluster-health3description: · Check Kubernetes cluster health with read-only diagnostics. Triggers: 'cluster health', 'health check', 'cluster status', 'diagnostics', 'post-maintenance', 'node status'. Not for manifests/IaC (use kubernetes).4license: MIT5---67# Cluster Health
89Run read-only Kubernetes health checks and report cluster status with evidence. This skill works
10without private overlays by requiring an explicit kube context or confirmed current context.
11Local users may add ignored protected overlays for aliases and environment-specific checks.
1213## When to use
1415- User asks to check cluster health, status, diagnostics, node status, or post-maintenance state
16- Verifying cluster-wide symptoms after upgrades, reboots, Helm changes, GitOps syncs, or incidents
17- Gathering read-only evidence across nodes, workloads, events, ingress, storage, logs, and policy
18- Producing a short traffic-light report from Kubernetes and related observability signals
1920## When NOT to use
2122- Writing or reviewing Kubernetes manifests - use **kubernetes**
23- Writing Helm charts, Kustomize overlays, or IaC - use **kubernetes** or **terraform**
24- Changing resources, restarting pods, deleting objects, or applying fixes - ask for explicit escalation
25- Debugging one application deeply after the broad sweep identifies it - use the relevant domain skill
2627---
2829## AI Self-Check
3031Before running checks or reporting results, verify:
3233- [ ] Target context is explicit or the current context was confirmed
34- [ ] Every `kubectl` command includes `--context <context>`
35- [ ] Every `helm` command includes `--kube-context <context>`
36- [ ] Commands are read-only: no apply, patch, delete, edit, rollout restart, scale, cordon, drain, or exec unless the user explicitly escalates
37- [ ] Output is capped with `head`, `tail`, `--since`, `--field-selector`, or selectors
38- [ ] Time window is bounded and stated in the report
39- [ ] Protected registry contents are not printed unless the user asks for those exact details
40- [ ] Findings include evidence, impact, and next action
41- [ ] **Current source checked**: dated versions, CLI flags, API names, and support windows are verified against primary docs before repeating them
42- [ ] **Hidden state identified**: local config, credentials, caches, contexts, branches, cluster targets, or previous runs are made explicit before acting
43- [ ] **Verification is real**: final checks exercise the actual runtime, parser, service, or integration point instead of only linting prose or happy paths
44- [ ] **Routing overlap checked**: overlapping skills, trigger terms, and "When NOT to use" boundaries are checked before returning guidance
45- [ ] **Spec claims verified**: claims about tool behavior, output contracts, or repo conventions are checked against current docs, scripts, or skill files
46- [ ] **Cluster target explicit**: kubeconfig context, namespace, and environment are named before any query
47- [ ] **Read-only posture kept**: health checks do not mutate resources or restart workloads unless the user explicitly escalates
48- [ ] **No improvisation**: only the read-only commands in the reference files were run; missing coverage was noted as a suggestion, not freelanced with guessed service names, paths, or flags
49- [ ] **Stderr is visible**: diagnostic commands surface their failure reason instead of masking it with `2>/dev/null`; a missing tool, permission gap, or wrong context is reported, not silently treated as a clean result
5051## Performance
5253- Start with cluster-wide signals before loading symptom-specific references.
54- Bound logs, events, and object listings by namespace, time window, or selectors.
55- Prefer summarized evidence over dumping raw Kubernetes output into context.
5657## Best Practices
5859- Treat the current kube context as hidden state until it is explicitly named.
60- Separate health evidence from remediation; fixes require a separate escalation.
61- Report permission gaps and missing CRDs as diagnostic findings, not silent skips.
62- Run only the commands the reference files define. A monitoring context invites improvisation; resist it. When a check you want is not listed, write it as a suggested follow-up instead of guessing a service name, namespace, or path that may not exist.
63- Do not read a metric's status without knowing what the metric measures. The reference files state what each signal does and does NOT represent; misreading a percentage or a stale value produces a confidently wrong report.
6465## Cluster Registry
6667This public skill has no built-in private cluster registry.
6869Users may create local-only overlays under `skills/cluster-health/protected/` for private lab,
70homelab, work, or customer cluster details. The directory is gitignored by this collection. If it
71exists in the installed skill, read it while using this skill. A user can ask their agent to create
72or update these files.
7374Suggested local layout:
7576```text
77protected/
78 registry.md # aliases, kube contexts, CWD patterns, profile mappings
79 private-patterns.txt # terms that must never appear in public files
80 <cluster-or-env>.md # local namespaces, runbooks, dashboards, thresholds
81```
82831. If `protected/registry.md` exists, read it first and use its alias, context, CWD pattern, and
84 reference mappings.
852. If the registry maps the target to `protected/<cluster-or-env>.md`, read that profile before
86 running checks.
873. If no protected registry exists, require an explicit kube context or ask before using the current
88 context.
894. Never guess a cluster from a vague request.
905. Never print protected registry contents in public reports unless the user asks for those exact
91 details.
926. Treat gitignored as local privacy, not encryption. Do not put protected overlays in shared logs,
93 issues, PR comments, or public reports.
9495## Usage
9697```
98cluster-health [context-or-alias] [timewindow]
99```
100101- `context-or-alias` is a kube context, current-context confirmation, or protected overlay alias.
102- `timewindow` defaults to `2h`; use bounded values such as `30m`, `1h`, `2h`, `6h`, or `24h`.
103104## Workflow
105106### Step 1: Resolve target
107108If a protected registry maps the request or current directory to an alias, use that mapping. If no
109mapping exists, require an explicit kube context or ask whether to use `kubectl config current-context`.
110111### Step 2: Confirm read-only scope
112113State the context and time window before running commands. Do not run mutation commands as part of
114this skill.
115116### Step 3: Run the generic sweep
117118Start with the cluster-wide checks in `references/kubernetes-core.md`, then load additional
119references based on the symptom:
120121- networking or certificate symptoms -> `references/networking-ingress.md`
122- release or reconciliation symptoms -> `references/helm-gitops.md`
123- pending pods or volume symptoms -> `references/storage.md`
124- noisy errors or alert symptoms -> `references/monitoring-logs.md`
125- policy, RBAC, or image-risk symptoms -> `references/security.md`
126127### Step 4: Classify findings
128129Use GREEN for healthy signals, YELLOW for degraded or ambiguous state, and RED for user-visible
130outage, data-risk, or control-plane risk. Distinguish transient rollout noise from persistent
131degradation.
132133### Step 5: Report
134135Return a concise report:
136137```markdown
138# Cluster Health Report - <context> (<timewindow>, YYYY-MM-DD HH:MM)
139140## Summary
141- STATUS: GREEN|YELLOW|RED
142- Scope: <contexts, namespaces, time window>
143- Key findings: <short bullets>
144145## Evidence
146- <area>: <command or source> -> <observed signal>
147148## Next Actions
149- <read-only follow-up or explicit escalation request>
150```
151152## Reference Files
153154- `references/kubernetes-core.md` - nodes, workloads, events, namespaces, and resource pressure
155- `references/helm-gitops.md` - Helm releases, GitOps controllers, and reconciliation state
156- `references/networking-ingress.md` - services, ingress, load balancers, DNS, and certificates
157- `references/storage.md` - PVs, PVCs, CSI drivers, storage classes, and volume attachment
158- `references/monitoring-logs.md` - alerts, metrics availability, log triage, and noisy namespaces
159- `references/security.md` - read-only checks for RBAC, secrets exposure signals, image risk, and policy engines
160161## Output Contract
162163See `skills/_shared/output-contract.md` for the full contract.
164165- **Skill name:** CLUSTER-HEALTH
166- **Deliverable bucket:** `audits`
167- **Mode:** conditional. When invoked to **analyze, review, audit, or improve** existing repo content, emit the full contract - boxed inline header, body summary inline plus per-finding detail in the deliverable file, boxed conclusion, conclusion table - and write the deliverable to `docs/local/audits/cluster-health/<YYYY-MM-DD>-<slug>.md`. When invoked to **answer a question, teach a concept, build a new artifact, or generate content**, respond freely without the contract.
168- **Severity scale:** `P0 | P1 | P2 | P3 | info` (see shared contract; only used in audit/review mode).
169170## Related Skills
171172- **kubernetes** - write or review manifests, Helm charts, Kustomize, and GitOps config
173- **networking** - debug DNS, routing, proxies, VPNs, and Linux networking
174- **security-audit** - review security controls or vulnerability posture beyond read-only cluster signals
175- **terraform** - change infrastructure definitions or state
176177## Rules
1781791. Read only. Do not mutate cluster state unless the user explicitly changes the task.
1802. Use `--context <context>` on every `kubectl` command and `--kube-context <context>` on every `helm` command.
1813. Cap output before putting it in context.
1824. Never guess a cluster target from a vague request.
1835. Keep protected overlay details out of public reports unless the user asks for those exact details.
1846. Report failed checks as findings; do not hide missing tools, missing CRDs, or permission errors.
1857. **Run ONLY the read-only commands listed in the reference files. If a needed check is missing, note it as a suggested follow-up in the report rather than improvising a mutating or unlisted command.** Inventing service names, paths, or flags is how diagnostic skills produce false results.
Run npx skillmds add majiayu000/cluster-health in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
· Check Kubernetes cluster health with read-only diagnostics. Triggers: 'cluster health', 'health check', 'cluster status', 'diagnostics', 'post-maintenance', 'node status'. Not for manifests/IaC (use kubernetes). It is listed under DevOps & Infra on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
majiayu000 (@majiayu000) published this skill. Their other Agent Skills are listed on their SkillMD profile.