render-disks — Claude Code skill: persistent disks on Render
A skill for attaching and managing persistent disks on Render: mount paths, sizing, snapshots and file transfers. Useful when a service must keep uploads across deploys.
npx skills add render-oss/skills --skill render-disks -a claude-codeWhat render-disks does
Render's default filesystem is ephemeral. Anything written outside a disk's mount path disappears on the next deploy or restart. This skill gives the agent the rules for attaching a persistent disk, picking a mount path and size, and it explains why a disk-backed service runs as a single instance — horizontal scaling and zero-downtime deploys are off the table.
Inside are Blueprint instructions (disk with name, mountPath, sizeGB), snapshot and restore handling, and file transfers via SCP with SSH or Magic-Wormhole. Before touching a config the skill tells the agent to fetch the current Render docs through references/persistent-disks.md instead of trusting model memory. For relational data or cache state it points to Render Postgres and Render Key Value rather than a self-managed database on disk.
Disk capacity can grow but never shrink, so start with the smallest size that covers observed usage. For a small upload service the docs name a 1–5 GB starting range. One more thing worth knowing: a disk snapshot is the wrong tool for recovering a self-managed database such as MySQL, since a filesystem snapshot can restore an inconsistent state — use native backups like mysqldump and test the restore path.
What it helps with
- attach a persistent disk to a Render service
- set a mount path for uploads and CMS media
- find out why a service can't scale horizontally
- restore files from a disk snapshot
- pick a disk size you won't need to shrink
Example prompts for the agent
- Attach a persistent disk to my Render upload service and point writes at the mount path
- Why can't my Render service use zero-downtime deploys?
- Help me restore data from a disk snapshot
How to install render-disks
1Skills CLI (Vercel)
npx skills add render-oss/skills --skill render-disks -a claude-code2Manually: put the files in place
~/.claude/skills/render-disks/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/render-disks/
1Skills CLI (Vercel)
npx skills add render-oss/skills --skill render-disks -a codex2Manually: put the files in place
.agents/skills/render-disks/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add render-oss/skills --skill render-disks -a cursor2Manually: put the files in place
.cursor/skills/render-disks/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install render-oss/skills render-disks2Manually: put the files in place
.github/skills/render-disks/SKILL.md1Skills CLI (Vercel)
npx skills add render-oss/skills --skill render-disks -a gemini-cli2Platform CLI
gemini skills install https://github.com/render-oss/skills --path skills/render-disksManually: put the files in place
.devin/skills/render-disks/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add render-oss/skills --skill render-disks -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about render-disks
How do I install render-disks in Claude?
Run npx skills add render-oss/skills --skill render-disks -a claude-code. The skill lands at ~/.claude/skills/render-disks/SKILL.md.
What does render-disks do?
It helps the agent attach and configure persistent disks on Render: mount path, sizing, snapshots, file transfers and the limits that come with a single-instance service.
Can I recover a MySQL database from a disk snapshot?
No. A filesystem snapshot can restore an inconsistent or corrupted database state, so the skill recommends native backups such as mysqldump with a tested restore procedure.
Source text
SKILL.md · MIT
---
name: render-disks
description: >-
Attaches and manages persistent disks on Render services—mount paths, sizing,
snapshots, file transfers, and single-instance constraints. Use when the user
needs persistent storage, file uploads, a custom database on disk, CMS media
storage, or needs to understand why their service can't scale horizontally
or use zero-downtime deploys.
Trigger terms: persistent disk, disk, storage, mount path, sizeGB, SSD,
file uploads, snapshots, disk restore, ephemeral filesystem.
license: MIT
compatibility: Render paid web services, private services, and background workers
metadata:
author: Render
version: "1.0.0"
category: storage
---
# Render Persistent Disks
Persistent disks preserve files written beneath a service's configured mount path across deploys and restarts.
Before designing, configuring, resizing, transferring data to, snapshotting, restoring, or troubleshooting a disk, read `references/persistent-disks.md`.
## When to Use
- Storing **file uploads**, CMS media, or user-generated content
- Running a **self-managed database** (MySQL, MongoDB, ClickHouse) on Render
- Deploying **stateful infrastructure** (Elasticsearch, Kafka, RabbitMQ, Mattermost)
- Understanding **why scaling is blocked** or **zero-downtime deploys are disabled**
- **Restoring data** from a disk snapshot
For managed databases, prefer **Render Postgres** (render-postgres) or **Key Value** (render-keyvalue) over self-managed alternatives on disk.
## Core Decisions
- Render's default filesystem is ephemeral. Only files written beneath a disk's mount path persist across deploys and restarts.
- A disk-backed service is single-instance: it cannot use horizontal scaling or zero-downtime deploys.
- If file storage must be shared by scaled instances, use external object storage such as S3 or R2. Use Render Postgres for relational data and Render Key Value for managed cache or queue state.
- Choose the smallest current disk size that accommodates observed usage because capacity can increase but cannot decrease. For a small upload service, 1–5 GB is a reasonable starting range when supported by the current limits.
## Blueprint Setup
For a native Node.js upload service, mount a subdirectory such as `/opt/render/project/src/uploads`, not the source root itself, and configure the application to write uploads there:
```yaml
services:
- type: web
name: uploads
runtime: node
buildCommand: npm ci
startCommand: npm start
disk:
name: uploads-data
mountPath: /opt/render/project/src/uploads
sizeGB: 5
```
Fetch the current disk documentation and Blueprint specification through `references/persistent-disks.md` before finalizing the mount path or size.
## Database Backups and File Recovery
Do not use a disk snapshot to recover a self-managed database such as MySQL: a filesystem snapshot can restore an inconsistent or corrupted database state. Use database-native backups such as `mysqldump` and test their restore procedure. Move backup files off the service with a currently supported transfer method such as SCP with SSH or Magic-Wormhole. Snapshot restores replace the entire disk and permanently discard changes made after the selected snapshot.
## References
| Document | Contents |
|----------|----------|
| `references/persistent-disks.md` | Current disk constraints, configuration, sizing, snapshots, restores, and transfers |
## Related Skills
- **render-web-services** — Deploy lifecycle, health checks (disk disables zero-downtime)
- **render-private-services** — Internal services with disks (Elasticsearch, MySQL)
- **render-blueprints** — `disk` field reference in `render.yaml`
- **render-postgres** — Managed database alternative (no disk management needed)
<!-- shared:documentation-retrieval -->
## Current documentation retrieval
Whenever this skill directs you to consult current Render documentation:
1. Retrieve the linked Markdown document directly with an available URL-fetching tool or HTTP client, such as `curl`. Do not substitute web-search summaries for the document.
2. Confirm that retrieval succeeded and returned the expected document, then read its contents. Saving a file or printing its path is not sufficient.
3. If the request fails or your tool cannot read the Markdown response, open and read the linked HTML version instead.
4. If neither version can be retrieved, disclose that the current reference is unavailable and follow any topic-specific fallback in the skill. Use bundled guidance only for stable constraints, and do not guess at changeable platform details.
When a task requires multiple references, apply this workflow to each one and distinguish the documents you verified from those that remain unavailable.
<!-- /shared:documentation-retrieval -->
© Render · MIT · render-oss/skills