Skip to content
Agentmart
Submit a tool

pvc-debug

Diagnose PersistentVolumeClaim failures (Pending PVC, StorageClass not found, PV binding issues, capacity mismatch).

Skill by scitix

IndexedApache-2.0★ 238
Write a review

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.

Book a call

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.

We use your email only for this newsletter. Privacy

About

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.

No 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

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
Website
siclaw.ai
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from scitix

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.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying pvc-debug?

CallGet help
Cite this page

pvc-debug skill. Agent Mart. https://agentmart.dev/skills/scitix-pvc-debug (last updated 2026-10-24)