Agent-skills claimable-postgres
git clone https://github.com/neondatabase/agent-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/neondatabase/agent-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/claimable-postgres" ~/.claude/skills/neondatabase-agent-skills-claimable-postgres && rm -rf "$T"
skills/claimable-postgres/SKILL.mdClaimable Postgres
Instant Postgres databases for local development, demos, prototyping, and test environments. No account required. Databases expire after 72 hours unless claimed to a Neon account.
Quick Start
curl -s -X POST "https://neon.new/api/v1/database" \ -H "Content-Type: application/json" \ -d '{"ref": "agent-skills"}'
Parse
connection_string and claim_url from the JSON response. Write connection_string to the project's .env as DATABASE_URL.
For other methods (CLI, SDK, Vite plugin), see Which Method? below.
Which Method?
- REST API: Returns structured JSON. No runtime dependency beyond
. Preferred when the agent needs predictable output and error handling.curl - CLI (
): Provisions and writesnpx neon-new@latest --yes
in one command. Convenient when Node.js is available and the user wants a simple setup..env - SDK (
): Scripts or programmatic provisioning in Node.js.neon-new/sdk - Vite plugin (
): Auto-provisions onvite-plugin-neon-new
ifvite dev
is missing. Use when the user has a Vite project.DATABASE_URL - Browser: User cannot run CLI or API. Direct to https://neon.new.
REST API
Base URL:
https://neon.new/api/v1
Create a database
curl -s -X POST "https://neon.new/api/v1/database" \ -H "Content-Type: application/json" \ -d '{"ref": "agent-skills"}'
| Parameter | Required | Description |
|---|---|---|
| Yes | Tracking tag that identifies who provisioned the database. Use when provisioning through this skill. |
| No | Enable logical replication (default: false, cannot be disabled once enabled) |
The
connection_string returned by the API is a pooled connection URL. For a direct (non-pooled) connection (e.g. Prisma migrations), remove -pooler from the hostname. The CLI writes both pooled and direct URLs automatically.
Response:
{ "id": "019beb39-37fb-709d-87ac-7ad6198b89f7", "status": "UNCLAIMED", "neon_project_id": "gentle-scene-06438508", "connection_string": "postgresql://...", "claim_url": "https://neon.new/claim/019beb39-...", "expires_at": "2026-01-26T14:19:14.580Z", "created_at": "2026-01-23T14:19:14.580Z", "updated_at": "2026-01-23T14:19:14.580Z" }
Check status
curl -s "https://neon.new/api/v1/database/{id}"
Returns the same response shape. Status transitions:
UNCLAIMED -> CLAIMING -> CLAIMED. After the database is claimed, connection_string returns null.
Error responses
| Condition | HTTP | Message |
|---|---|---|
Missing or empty | 400 | |
| Invalid database ID | 400 | |
| Invalid JSON body | 500 | |
CLI
npx neon-new@latest --yes
Provisions a database and writes the connection string to
.env in one step. Always use @latest and --yes (skips interactive prompts that would stall the agent).
Pre-run Check
Check if
DATABASE_URL (or the chosen key) already exists in the target .env. The CLI exits without provisioning if it finds the key.
If the key exists, offer the user three options:
- Remove or comment out the existing line, then rerun.
- Use
to write to a different file (e.g.--env
).--env .env.local - Use
to write under a different variable name.--key
Get confirmation before proceeding.
Options
| Option | Alias | Description | Default |
|---|---|---|---|
| | Skip prompts, use defaults | |
| | .env file path | |
| | Connection string env var key | |
| | Prefix for generated public env vars | |
| | Path to seed SQL file | none |
| | Enable logical replication | |
| | Referrer id (use when provisioning through this skill) | none |
Alternative package managers:
yarn dlx neon-new@latest, pnpm dlx neon-new@latest, bunx neon-new@latest, deno run -A neon-new@latest.
Output
The CLI writes to the target
.env:
DATABASE_URL=postgresql://... # pooled (use for application queries) DATABASE_URL_DIRECT=postgresql://... # direct (use for migrations, e.g. Prisma) PUBLIC_POSTGRES_CLAIM_URL=https://neon.new/claim/...
SDK
Use for scripts and programmatic provisioning flows.
import { instantPostgres } from "neon-new"; const { databaseUrl, databaseUrlDirect, claimUrl, claimExpiresAt } = await instantPostgres({ referrer: "agent-skills", seed: { type: "sql-script", path: "./init.sql" }, });
Returns
databaseUrl (pooled), databaseUrlDirect (direct, for migrations), claimUrl, and claimExpiresAt (Date object). The referrer parameter is required.
Vite Plugin
For Vite projects,
vite-plugin-neon-new auto-provisions a database on vite dev if DATABASE_URL is missing. Install with npm install -D vite-plugin-neon-new. See the Claimable Postgres docs for configuration.
Agent Workflow
API path
- Confirm intent: If the request is ambiguous, confirm the user wants a temporary, no-signup database. Skip this if they explicitly asked for a quick or temporary database.
- Provision: POST to
withhttps://neon.new/api/v1/database
.{"ref": "agent-skills"} - Parse response: Extract
,connection_string
, andclaim_url
from the JSON response.expires_at - Write .env: Write
to the project'sDATABASE_URL=<connection_string>
(or the user's preferred file and key). Do not overwrite an existing key without confirmation..env - Seed (if needed): If the user has a seed SQL file, run it against the new database:
psql "$DATABASE_URL" -f seed.sql - Report: Tell the user where the connection string was written, which key was used, and share the claim URL. Remind them: the database works now; claim within 72 hours to keep it permanently.
- Optional: Offer a quick connection test (e.g.
).SELECT 1
CLI path
- Check .env: Check the target
for an existing.env
(or chosen key). If present, do not run. Offer remove,DATABASE_URL
, or--env
and get confirmation.--key - Confirm intent: If the request is ambiguous, confirm the user wants a temporary, no-signup database. Skip this if they explicitly asked for a quick or temporary database.
- Gather options: Use defaults unless context suggests otherwise (e.g., user mentions a custom env file, seed SQL, or logical replication).
- Run: Execute with
plus the confirmed options. Always use@latest --yes
to avoid stale cached versions.@latest
skips interactive prompts that would stall the agent.--yesnpx neon-new@latest --yes --ref agent-skills --env .env.local --seed ./schema.sql - Verify: Confirm the connection string was written to the intended file.
- Report: Tell the user where the connection string was written, which key was used, and that a claim URL is in the env file. Remind them: the database works now; claim within 72 hours to keep it permanently.
- Optional: Offer a quick connection test (e.g.
).SELECT 1
Output Checklist
Always report:
- Where the connection string was written (e.g.
).env - Which variable key was used (
or custom key)DATABASE_URL - The claim URL (from
or API response).env - That unclaimed databases are temporary (72 hours)
Claiming
Claiming is optional. The database works immediately without it. To optionally claim, the user opens the claim URL in a browser, where they sign in or create a Neon account to claim the database.
- API/SDK: Give the user the
from the create response.claim_url - CLI:
reads the claim URL fromnpx neon-new@latest claim
and opens the browser automatically..env
Users cannot claim into Vercel-linked orgs; they must choose another Neon org.
Defaults and Limits
| Parameter | Value |
|---|---|
| Provider | AWS |
| Region | us-east-2 |
| Postgres | 17 |
Region cannot be changed for claimable databases. Unclaimed databases have stricter quotas. Claiming resets limits to free plan defaults.
| Unclaimed | Claimed (Free plan) | |
|---|---|---|
| Storage | 100 MB | 512 MB |
| Transfer | 1 GB | ~5 GB |
| Branches | No | Yes |
| Expiration | 72 hours | None |
Auto-provisioning
If the agent needs a database to fulfill a task (e.g. "build me a todo app with a real database") and the user has not provided a connection string, provision one via the API and inform the user. Include the claim URL so they can keep it.
Safety and UX Notes
- Do not overwrite existing env vars. Check first, then use
or--env
(CLI) or skip writing (API) to avoid conflicts.--key - Ask before running destructive seed SQL (
,DROP
, massTRUNCATE
).DELETE - For production workloads, recommend standard Neon provisioning instead of temporary claimable databases.
- If users need long-term persistence, instruct them to open the claim URL right away.
- After writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify
without confirmation..gitignore