Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Provision instant temporary Postgres databases via Claimable Postgres by Neon (pg.new). No login or credit card required. Use for quick Postgres environments and throwaway DATABASE_URL for prototyping.
.claude/skills/claimable-postgres/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 154% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 108% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 62% | 0% |
Use this skill when you need provision instant temporary Postgres databases via Claimable Postgres by Neon (neon.new) with no login, signup, or credit card. Supports REST API, CLI, and SDK. Use when users ask for a quick Postgres environment, a throwaway DATABASE_URL for prototyping/tests, or "just give me a DB...
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.
bashcurl -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.
curl. Preferred when the agent needs predictable output and error handling.npx neon-new@latest --yes): Provisions and writes .env in one command. Convenient when Node.js is available and the user wants a simple setup.neon-new/sdk): Scripts or programmatic provisioning in Node.js.vite-plugin-neon-new): Auto-provisions on vite dev if DATABASE_URL is missing. Use when the user has a Vite project.Base URL: https://neon.new/api/v1
bashcurl -s -X POST "https://neon.new/api/v1/database" \ -H "Content-Type: application/json" \ -d '{"ref": "agent-skills"}'
| Parameter | Required | Description | | ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | ref | Yes | Tracking tag that identifies who provisioned the database. Use "agent-skills" when provisioning through this skill. | | enable_logical_replication | 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:
json{ "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" }
bashcurl -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.
| Condition | HTTP | Message | | ---------------------- | ---- | -------------------------------- | | Missing or empty ref | 400 | Missing referrer | | Invalid database ID | 400 | Database not found | | Invalid JSON body | 500 | Failed to create the database. |
bashnpx 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).
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:
--env to write to a different file (e.g. --env .env.local).--key to write under a different variable name.Get confirmation before proceeding.
| Option | Alias | Description | Default | | ----------------------- | ----- | --------------------------------------------------------------------- | -------------- | | --yes | -y | Skip prompts, use defaults | false | | --env | -e | .env file path | ./.env | | --key | -k | Connection string env var key | DATABASE_URL | | --prefix | -p | Prefix for generated public env vars | PUBLIC_ | | --seed | -s | Path to seed SQL file | none | | --logical-replication | -L | Enable logical replication | false | | --ref | -r | Referrer id (use agent-skills 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.
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/...Use for scripts and programmatic provisioning flows.
typescriptimport { 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.
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.
https://neon.new/api/v1/database with {"ref": "agent-skills"}.connection_string, claim_url, and expires_at from the JSON response.DATABASE_URL=<connection_string> to the project's .env (or the user's preferred file and key). Do not overwrite an existing key without confirmation.bash psql "$DATABASE_URL" -f seed.sql
SELECT 1)..env for an existing DATABASE_URL (or chosen key). If present, do not run. Offer remove, --env, or --key and get confirmation.@latest --yes plus the confirmed options. Always use @latest to avoid stale cached versions. --yes skips interactive prompts that would stall the agent.bash npx neon-new@latest --yes --ref agent-skills --env .env.local --seed ./schema.sql
SELECT 1).Always report:
.env)DATABASE_URL or custom key).env or API response)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.
claim_url from the create response.npx neon-new@latest claim reads the claim URL from .env and opens the browser automatically.Users cannot claim into Vercel-linked orgs; they must choose another Neon org.
neon.ts)Claimable databases are deliberately throwaway and provisioned through neon.new (above), so they aren't managed by neon.ts. Once a user claims a database into a Neon account it becomes a normal Neon project — at which point neon.ts, Neon's infrastructure-as-code file, is how you manage it going forward (see the neon skill for the full reference): declare the services its branches should have, program per-branch compute, and get type-safe env vars.
bashnpm i @neon/config
typescript// neon.ts import { defineConfig } from "@neon/config/v1"; export default defineConfig({ auth: true, // Neon Auth, once you outgrow a bare connection string dataApi: true, // Data API branch: (branch) => (branch.exists ? {} : { ttl: "7d" }), // ephemeral non-default branches });
bashneon config apply # provision the declared services (neon deploy is an alias)
If a project needs branching, multiple services, or durable infrastructure tracked in version control, recommend claiming first and then adopting neon.ts — rather than re-provisioning throwaway claimable databases.
| 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 |
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.
--env or --key (CLI) or skip writing (API) to avoid conflicts.DROP, TRUNCATE, mass DELETE)..gitignore without confirmation.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | fail→pass | 22,024 | 3,415 | -84% | 1 | 1 | 0% | 4,076 | 3,771 | -7% | 0 | 0 | — |
case-20 | fail→pass | 9,209 | 5,856 | -36% | 1 | 1 | 0% | 1,637 | 4,164 | +154% | 0 | 0 | — |
case-09 | fail→pass | 12,902 | 3,062 | -76% | 1 | 1 | 0% | 1,846 | 3,831 | +108% | 0 | 0 | — |
case-01 | fail→pass | 19,521 | 7,644 | -61% | 1 | 1 | 0% | 3,074 | 4,625 | +50% | 0 | 0 | — |
case-02 | fail→fail | 13,086 | 7,225 | -45% | 1 | 1 | 0% | 2,371 | 4,539 | +91% | 0 | 0 | — |
case-03 | fail→pass | 18,239 | 6,855 | -62% | 1 | 1 | 0% | 2,857 | 4,623 | +62% | 0 | 0 | — |
case-04 | fail→pass | 18,403 | 4,027 | -78% | 1 | 1 | 0% | 3,237 | 3,982 | +23% | 0 | 0 | — |
case-05 | fail→pass | 6,483 | 3,980 | -39% | 1 | 1 | 0% | 1,236 | 3,971 | +221% | 0 | 0 | — |
case-06 | fail→pass | 25,247 | 2,554 | -90% | 1 | 1 | 0% | 4,750 | 3,650 | -23% | 0 | 0 | — |
case-07 | pass→pass | 12,961 | 4,395 | -66% | 1 | 1 | 0% | 2,684 | 4,128 | +54% | 0 | 0 | — |
case-08 | fail→pass | 9,534 | 3,883 | -59% | 1 | 1 | 0% | 1,718 | 3,780 | +120% | 0 | 0 | — |
case-11 | fail→pass | 15,248 | 2,303 | -85% | 1 | 1 | 0% | 2,672 | 3,569 | +34% | 0 | 0 | — |
case-12 | fail→pass | 13,712 | 1,771 | -87% | 1 | 1 | 0% | 2,028 | 3,345 | +65% | 0 | 0 | — |
case-13 | fail→pass | 8,185 | 2,820 | -66% | 1 | 1 | 0% | 1,346 | 3,514 | +161% | 0 | 0 | — |
case-14 | fail→pass | 13,012 | 2,694 | -79% | 1 | 1 | 0% | 2,152 | 3,630 | +69% | 0 | 0 | — |
case-15 | pass→pass | 7,039 | 1,782 | -75% | 1 | 1 | 0% | 1,087 | 3,424 | +215% | 0 | 0 | — |
case-16 | pass→pass | 8,263 | 3,982 | -52% | 1 | 1 | 0% | 1,447 | 3,829 | +165% | 0 | 0 | — |
case-17 | fail→pass | 13,395 | 3,334 | -75% | 1 | 1 | 0% | 2,389 | 3,773 | +58% | 0 | 0 | — |
case-18 | fail→pass | 8,401 | 3,304 | -61% | 1 | 1 | 0% | 1,480 | 3,489 | +136% | 0 | 0 | — |
case-19 | fail→pass | 24,437 | 1,736 | -93% | 1 | 1 | 0% | 4,560 | 3,375 | -26% | 0 | 0 | — |
case-21 | pass→pass | 8,984 | 6,257 | -30% | 1 | 1 | 0% | 1,739 | 4,441 | +155% | 0 | 0 | — |
case-22 | pass→pass | 23,657 | 17,604 | -26% | 1 | 1 | 0% | 4,584 | 6,678 | +46% | 0 | 0 | — |
case-23 | pass→pass | 13,267 | 12,196 | -8% | 1 | 1 | 0% | 2,330 | 5,036 | +116% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +70 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/30/2026 | +73% |
Other measured skills in the registry, with their headline benchmark lift.