pvc-debug
Diagnose PersistentVolumeClaim failures (Pending PVC, StorageClass not found, PV binding issues, capacity mismatch).
Skill by scitix
Chalk Labs
Need help deploying pvc-debug?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/scitix-pvc-debug
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/pvc-debug
What's inside
- Skill name
pvc-debug- Description
- Diagnose PersistentVolumeClaim failures (Pending PVC, StorageClass not found, PV binding issues, capacity mismatch). Checks PVC, PV, StorageClass, and provisioner events to identify why storage is not available.
- License
- Apache-2.0
- Instructions
- 164 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# PersistentVolumeClaim Failure Diagnosis
When a PVC is stuck in `Pending`, a pod cannot mount its volume, or storage provisioning fails, follow this flow to identify the root cause.
**Scope:** This skill is for **diagnosis only**. Once you identify the root cause, report it to the user and stop. Do NOT attempt to modify PVCs, PVs, or StorageClasses — that should be left to the user or cluster administrator.
## Diagnostic Flow
### 1. Check PVC status
```bash
kubectl get pvc <pvc-name> -n <ns>
```
Note the **STATUS**, **VOLUME**, **CAPACITY**, and **STORAGECLASS** columns.
- `Bound` — PVC is healthy, issue may be elsewhere (pod mount, permissions)
- `Pending` — PVC is waiting for a PV to be provisioned or bound
- `Lost` — The PV the PVC was bound to has been deleted
### 2. Describe the PVC
```bash
kubectl describe pvc <pvc-name> -n <ns>
```
Focus on:
- **Events** — provisioner errors, binding failures, or quota exceeded messages
- **Access Modes** — requested access mode (ReadWriteOnce, ReadWriteMany, ReadOnlyMany)
- **StorageClass** — which StorageClass is requested
- **Volume Name** — if bound, which PV it is bound to
### 3. Check the StorageClass
```bash
kubectl get storageclass
```
Verify the StorageClass referenced by the PVC exists and note:
- **PROVISIONER** — the volume provisioner responsible for creating PVs
- **RECLAIMPOLICY** — Delete or Retain
- **VOLUMEBINDINGMODE** — Immediate or WaitForFirstConsumer
If the StorageClass uses `WaitForFirstConsumer`, the PV will not be provisioned until a pod using the PVC is scheduled to a node.
### 4. Check available PVs (for static provisioning)
If the cluster uses pre-created PVs instead of dynamic provisioning:
```bash
kubectl get pv
```
For a PVC to bind to a PV, the PV must:
- Be in `Available` status
- Match the PVC's requested `storageClassName`
- Meet the PVC's capacity request (PV capacity >= PVC request)
- Support the PVC's access mode
- Match any `selector` labels on the PVC
Check a specific PV:
```bash
kubectl describe pv <pv-name>
```
### 5. Match patterns and conclude
---
#### `storageclass.storage.k8s.io "<name>" not found` — StorageClass does not exist
The PVC references a StorageClass that does not exist in the cluster.
```bash
kubectl get storageclass
```
Advise the user to either create the StorageClass or update the PVC to use an existing one. If no StorageClass is specified in the PVC, it uses the cluster's default StorageClass — check if one is set:
```bash
kubectl get storageclass -o jsonpath='{range .items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")]}{.metadata.name}{"\n"}{end}'
```
---
#### `waiting for first consumer to be created` — WaitForFirstConsumer binding mode
The StorageClass has `volumeBindingMode: WaitForFirstConsumer`. The PV will not be provisioned until a pod that uses this PVC is scheduled.
This is normal behavior. Check if a pod using the PVC exists and is being scheduled. If the pod is `Pending`, use the `pod-pending-debug` skill.
---
#### `no persistent volumes available for this claim` — No matching PV
For static provisioning: no available PV matches the PVC's requirements.
Check the mismatch:
```bash
kubectl get pvc <pvc-name> -n <ns> -o jsonpath='storageClass={.spec.storageClassName} capacity={.spec.resources.requests.storage} accessModes={.spec.accessModes[*]}'
```
```bash
kubectl get pv -o custom-columns='NAME:.metadata.name,CAPACITY:.spec.capacity.storage,ACCESS:.spec.accessModes[*],CLASS:.spec.storageClassName,STATUS:.status.phase'
```
Common mismatches:
- **Capacity** — PV is smaller than PVC request
- **Access mode** — PV does not support the requested access mode (e.g., PV is ReadWriteOnce but PVC requests ReadWriteMany)
- **StorageClass** — PV and PVC reference different StorageClasses
---
#### Provisioner error in events — Dynamic provisioning failure
The provisioner failed to create a volume. Common provisioner errors:From scitix/siclaw, Apache-2.0.
More from scitix/siclaw
- 0.752score
node-logs
scitix
Retrieve logs from a Kubernetes node — systemd units (journalctl) or files under /var/log.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
gateway-diagnostics
scitix
Show and ping the gateway of a network interface, on a Kubernetes node or inside a pod's network namespace.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
http-log-stats
scitix
Count HTTP status codes and request-duration distribution from an ingress controller's access log, over a fixed time window, in one pass.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-queue-diagnose
scitix
Diagnose Volcano Queue status and resource allocation.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-diagnose-pod
scitix
Diagnose Volcano-managed Pod scheduling issues.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
cluster-events
scitix
Analyze cluster-wide Kubernetes events to identify issues and patterns.
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
manage-skill
scitix
Guides the user to the Siclaw Web page to manage Skills.
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
volcano-resource-insufficient
scitix
Resource shortage diagnostic guide for Volcano.
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
quota-debug
scitix
Diagnose Kubernetes native ResourceQuota and LimitRange admission rejections (exceeded quota, forbidden by LimitRange, FailedCreate).
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
volcano-gang-scheduling
scitix
Gang Scheduling diagnostic guide for Volcano.
SkillBFreshness: B★ 238Claude Code +9 - 0.746score
volcano-job-diagnose
scitix
Diagnose Volcano Job status and issues.
SkillBFreshness: B★ 238Claude Code +9 - 0.746score
volcano-node-resources
scitix
Query cluster node resources for Volcano scheduling.
SkillBFreshness: B★ 238Claude Code +9
Signals
- Stars
- 238
- Forks
- 32
- Open issues
- 16
- Last commit (this folder)
- Mar 4, 2026 (8 months ago)
- Last release
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/scitix/siclaw
- Website
- siclaw.ai
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from scitix
- 0.752score
node-logs
scitix
Retrieve logs from a Kubernetes node — systemd units (journalctl) or files under /var/log.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
http-log-stats
scitix
Count HTTP status codes and request-duration distribution from an ingress controller's access log, over a fixed time window, in one pass.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
gateway-diagnostics
scitix
Show and ping the gateway of a network interface, on a Kubernetes node or inside a pod's network namespace.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-diagnose-pod
scitix
Diagnose Volcano-managed Pod scheduling issues.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
cluster-events
scitix
Analyze cluster-wide Kubernetes events to identify issues and patterns.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-queue-diagnose
scitix
Diagnose Volcano Queue status and resource allocation.
SkillBFreshness: B★ 238Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get pvc-debug running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
pvc-debug skill. Agent Mart. https://agentmart.dev/skills/scitix-pvc-debug (last updated 2026-10-24)