{
  "schemaVersion": "1.0",
  "item": {
    "slug": "claimable-postgres",
    "name": "Claimable Postgres",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/andrelandgraf/claimable-postgres",
    "canonicalUrl": "https://clawhub.ai/andrelandgraf/claimable-postgres",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/claimable-postgres",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claimable-postgres",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "claimable-postgres",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T09:53:13.521Z",
      "expiresAt": "2026-05-08T09:53:13.521Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claimable-postgres",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claimable-postgres",
        "contentDisposition": "attachment; filename=\"claimable-postgres-1.0.3.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "claimable-postgres"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/claimable-postgres"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/claimable-postgres",
    "agentPageUrl": "https://openagent3.xyz/skills/claimable-postgres/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claimable-postgres/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claimable-postgres/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Claimable Postgres",
        "body": "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."
      },
      {
        "title": "Quick Start",
        "body": "curl -s -X POST \"https://pg.new/api/v1/database\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"ref\": \"agent-skills\"}'\n\nParse connection_string and claim_url from the JSON response. Write connection_string to the project's .env as DATABASE_URL.\n\nFor other methods (CLI, SDK, Vite plugin), see Which Method? below."
      },
      {
        "title": "Which Method?",
        "body": "REST API: Returns structured JSON. No runtime dependency beyond curl. Preferred when the agent needs predictable output and error handling.\nCLI (npx get-db@latest --yes): Provisions and writes .env in one command. Convenient when Node.js is available and the user wants a simple setup.\nSDK (get-db/sdk): Scripts or programmatic provisioning in Node.js.\nVite plugin (vite-plugin-db): Auto-provisions on vite dev if DATABASE_URL is missing. Use when the user has a Vite project.\nBrowser: User cannot run CLI or API. Direct to https://pg.new."
      },
      {
        "title": "REST API",
        "body": "Base URL: https://pg.new/api/v1"
      },
      {
        "title": "Create a database",
        "body": "curl -s -X POST \"https://pg.new/api/v1/database\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"ref\": \"agent-skills\"}'\n\nParameterRequiredDescriptionrefYesTracking tag that identifies who provisioned the database. Use \"agent-skills\" when provisioning through this skill.enable_logical_replicationNoEnable logical replication (default: false, cannot be disabled once enabled)\n\nThe 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.\n\nResponse:\n\n{\n  \"id\": \"019beb39-37fb-709d-87ac-7ad6198b89f7\",\n  \"status\": \"UNCLAIMED\",\n  \"neon_project_id\": \"gentle-scene-06438508\",\n  \"connection_string\": \"postgresql://...\",\n  \"claim_url\": \"https://pg.new/claim/019beb39-...\",\n  \"expires_at\": \"2026-01-26T14:19:14.580Z\",\n  \"created_at\": \"2026-01-23T14:19:14.580Z\",\n  \"updated_at\": \"2026-01-23T14:19:14.580Z\"\n}"
      },
      {
        "title": "Check status",
        "body": "curl -s \"https://pg.new/api/v1/database/{id}\"\n\nReturns the same response shape. Status transitions: UNCLAIMED -> CLAIMING -> CLAIMED. After the database is claimed, connection_string returns null."
      },
      {
        "title": "Error responses",
        "body": "ConditionHTTPMessageMissing or empty ref400Missing referrerInvalid database ID400Database not foundInvalid JSON body500Failed to create the database."
      },
      {
        "title": "CLI",
        "body": "npx get-db@latest --yes\n\nProvisions 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)."
      },
      {
        "title": "Pre-run Check",
        "body": "Check if DATABASE_URL (or the chosen key) already exists in the target .env. The CLI exits without provisioning if it finds the key.\n\nIf the key exists, offer the user three options:\n\nRemove or comment out the existing line, then rerun.\nUse --env to write to a different file (e.g. --env .env.local).\nUse --key to write under a different variable name.\n\nGet confirmation before proceeding."
      },
      {
        "title": "Options",
        "body": "OptionAliasDescriptionDefault--yes-ySkip prompts, use defaultsfalse--env-e.env file path./.env--key-kConnection string env var keyDATABASE_URL--prefix-pPrefix for generated public env varsPUBLIC_--seed-sPath to seed SQL filenone--logical-replication-LEnable logical replicationfalse--ref-rReferrer id (use agent-skills when provisioning through this skill)none\n\nAlternative package managers: yarn dlx get-db@latest, pnpm dlx get-db@latest, bunx get-db@latest, deno run -A get-db@latest."
      },
      {
        "title": "Output",
        "body": "The CLI writes to the target .env:\n\nDATABASE_URL=postgresql://...              # pooled (use for application queries)\nDATABASE_URL_DIRECT=postgresql://...       # direct (use for migrations, e.g. Prisma)\nPUBLIC_POSTGRES_CLAIM_URL=https://pg.new/claim/..."
      },
      {
        "title": "SDK",
        "body": "Use for scripts and programmatic provisioning flows.\n\nimport { instantPostgres } from 'get-db';\n\nconst { databaseUrl, databaseUrlDirect, claimUrl, claimExpiresAt } = await instantPostgres({\n  referrer: 'agent-skills',\n  seed: { type: 'sql-script', path: './init.sql' },\n});\n\nReturns databaseUrl (pooled), databaseUrlDirect (direct, for migrations), claimUrl, and claimExpiresAt (Date object). The referrer parameter is required."
      },
      {
        "title": "Vite Plugin",
        "body": "For Vite projects, vite-plugin-db auto-provisions a database on vite dev if DATABASE_URL is missing. Install with npm install -D vite-plugin-db. See the Claimable Postgres docs for configuration."
      },
      {
        "title": "API path",
        "body": "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.\nProvision: POST to https://pg.new/api/v1/database with {\"ref\": \"agent-skills\"}.\nParse response: Extract connection_string, claim_url, and expires_at from the JSON response.\nWrite .env: Write 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.\nSeed (if needed): If the user has a seed SQL file, run it against the new database:\npsql \"$DATABASE_URL\" -f seed.sql\n\n\nReport: 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.\nOptional: Offer a quick connection test (e.g. SELECT 1)."
      },
      {
        "title": "CLI path",
        "body": "Check .env: Check the target .env for an existing DATABASE_URL (or chosen key). If present, do not run. Offer remove, --env, or --key and get confirmation.\nConfirm 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.\nGather options: Use defaults unless context suggests otherwise (e.g., user mentions a custom env file, seed SQL, or logical replication).\nRun: Execute with @latest --yes plus the confirmed options. Always use @latest to avoid stale cached versions. --yes skips interactive prompts that would stall the agent.\nnpx get-db@latest --yes --ref agent-skills --env .env.local --seed ./schema.sql\n\n\nVerify: Confirm the connection string was written to the intended file.\nReport: 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.\nOptional: Offer a quick connection test (e.g. SELECT 1)."
      },
      {
        "title": "Output Checklist",
        "body": "Always report:\n\nWhere the connection string was written (e.g. .env)\nWhich variable key was used (DATABASE_URL or custom key)\nThe claim URL (from .env or API response)\nThat unclaimed databases are temporary (72 hours)"
      },
      {
        "title": "Claiming",
        "body": "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.\n\nAPI/SDK: Give the user the claim_url from the create response.\nCLI: npx get-db@latest claim reads the claim URL from .env and opens the browser automatically.\n\nUsers cannot claim into Vercel-linked orgs; they must choose another Neon org."
      },
      {
        "title": "Defaults and Limits",
        "body": "ParameterValueProviderAWSRegionus-east-2Postgres17\n\nRegion cannot be changed for claimable databases. Unclaimed databases have stricter quotas. Claiming resets limits to free plan defaults.\n\nUnclaimedClaimed (Free plan)Storage100 MB512 MBTransfer1 GB~5 GBBranchesNoYesExpiration72 hoursNone"
      },
      {
        "title": "Auto-provisioning",
        "body": "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."
      },
      {
        "title": "Safety and UX Notes",
        "body": "Do not overwrite existing env vars. Check first, then use --env or --key (CLI) or skip writing (API) to avoid conflicts.\nAsk before running destructive seed SQL (DROP, TRUNCATE, mass DELETE).\nFor production workloads, recommend standard Neon provisioning instead of temporary claimable databases.\nIf users need long-term persistence, instruct them to open the claim URL right away.\nAfter writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify .gitignore without confirmation."
      }
    ],
    "body": "Claimable Postgres\n\nInstant Postgres databases for local development, demos, prototyping, and test environments. No account required. Databases expire after 72 hours unless claimed to a Neon account.\n\nQuick Start\ncurl -s -X POST \"https://pg.new/api/v1/database\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"ref\": \"agent-skills\"}'\n\n\nParse connection_string and claim_url from the JSON response. Write connection_string to the project's .env as DATABASE_URL.\n\nFor other methods (CLI, SDK, Vite plugin), see Which Method? below.\n\nWhich Method?\nREST API: Returns structured JSON. No runtime dependency beyond curl. Preferred when the agent needs predictable output and error handling.\nCLI (npx get-db@latest --yes): Provisions and writes .env in one command. Convenient when Node.js is available and the user wants a simple setup.\nSDK (get-db/sdk): Scripts or programmatic provisioning in Node.js.\nVite plugin (vite-plugin-db): Auto-provisions on vite dev if DATABASE_URL is missing. Use when the user has a Vite project.\nBrowser: User cannot run CLI or API. Direct to https://pg.new.\nREST API\n\nBase URL: https://pg.new/api/v1\n\nCreate a database\ncurl -s -X POST \"https://pg.new/api/v1/database\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"ref\": \"agent-skills\"}'\n\nParameter\tRequired\tDescription\nref\tYes\tTracking tag that identifies who provisioned the database. Use \"agent-skills\" when provisioning through this skill.\nenable_logical_replication\tNo\tEnable logical replication (default: false, cannot be disabled once enabled)\n\nThe 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.\n\nResponse:\n\n{\n  \"id\": \"019beb39-37fb-709d-87ac-7ad6198b89f7\",\n  \"status\": \"UNCLAIMED\",\n  \"neon_project_id\": \"gentle-scene-06438508\",\n  \"connection_string\": \"postgresql://...\",\n  \"claim_url\": \"https://pg.new/claim/019beb39-...\",\n  \"expires_at\": \"2026-01-26T14:19:14.580Z\",\n  \"created_at\": \"2026-01-23T14:19:14.580Z\",\n  \"updated_at\": \"2026-01-23T14:19:14.580Z\"\n}\n\nCheck status\ncurl -s \"https://pg.new/api/v1/database/{id}\"\n\n\nReturns the same response shape. Status transitions: UNCLAIMED -> CLAIMING -> CLAIMED. After the database is claimed, connection_string returns null.\n\nError responses\nCondition\tHTTP\tMessage\nMissing or empty ref\t400\tMissing referrer\nInvalid database ID\t400\tDatabase not found\nInvalid JSON body\t500\tFailed to create the database.\nCLI\nnpx get-db@latest --yes\n\n\nProvisions 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).\n\nPre-run Check\n\nCheck if DATABASE_URL (or the chosen key) already exists in the target .env. The CLI exits without provisioning if it finds the key.\n\nIf the key exists, offer the user three options:\n\nRemove or comment out the existing line, then rerun.\nUse --env to write to a different file (e.g. --env .env.local).\nUse --key to write under a different variable name.\n\nGet confirmation before proceeding.\n\nOptions\nOption\tAlias\tDescription\tDefault\n--yes\t-y\tSkip prompts, use defaults\tfalse\n--env\t-e\t.env file path\t./.env\n--key\t-k\tConnection string env var key\tDATABASE_URL\n--prefix\t-p\tPrefix for generated public env vars\tPUBLIC_\n--seed\t-s\tPath to seed SQL file\tnone\n--logical-replication\t-L\tEnable logical replication\tfalse\n--ref\t-r\tReferrer id (use agent-skills when provisioning through this skill)\tnone\n\nAlternative package managers: yarn dlx get-db@latest, pnpm dlx get-db@latest, bunx get-db@latest, deno run -A get-db@latest.\n\nOutput\n\nThe CLI writes to the target .env:\n\nDATABASE_URL=postgresql://...              # pooled (use for application queries)\nDATABASE_URL_DIRECT=postgresql://...       # direct (use for migrations, e.g. Prisma)\nPUBLIC_POSTGRES_CLAIM_URL=https://pg.new/claim/...\n\nSDK\n\nUse for scripts and programmatic provisioning flows.\n\nimport { instantPostgres } from 'get-db';\n\nconst { databaseUrl, databaseUrlDirect, claimUrl, claimExpiresAt } = await instantPostgres({\n  referrer: 'agent-skills',\n  seed: { type: 'sql-script', path: './init.sql' },\n});\n\n\nReturns databaseUrl (pooled), databaseUrlDirect (direct, for migrations), claimUrl, and claimExpiresAt (Date object). The referrer parameter is required.\n\nVite Plugin\n\nFor Vite projects, vite-plugin-db auto-provisions a database on vite dev if DATABASE_URL is missing. Install with npm install -D vite-plugin-db. See the Claimable Postgres docs for configuration.\n\nAgent Workflow\nAPI path\nConfirm 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.\nProvision: POST to https://pg.new/api/v1/database with {\"ref\": \"agent-skills\"}.\nParse response: Extract connection_string, claim_url, and expires_at from the JSON response.\nWrite .env: Write 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.\nSeed (if needed): If the user has a seed SQL file, run it against the new database:\npsql \"$DATABASE_URL\" -f seed.sql\n\nReport: 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.\nOptional: Offer a quick connection test (e.g. SELECT 1).\nCLI path\nCheck .env: Check the target .env for an existing DATABASE_URL (or chosen key). If present, do not run. Offer remove, --env, or --key and get confirmation.\nConfirm 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.\nGather options: Use defaults unless context suggests otherwise (e.g., user mentions a custom env file, seed SQL, or logical replication).\nRun: Execute with @latest --yes plus the confirmed options. Always use @latest to avoid stale cached versions. --yes skips interactive prompts that would stall the agent.\nnpx get-db@latest --yes --ref agent-skills --env .env.local --seed ./schema.sql\n\nVerify: Confirm the connection string was written to the intended file.\nReport: 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.\nOptional: Offer a quick connection test (e.g. SELECT 1).\nOutput Checklist\n\nAlways report:\n\nWhere the connection string was written (e.g. .env)\nWhich variable key was used (DATABASE_URL or custom key)\nThe claim URL (from .env or API response)\nThat unclaimed databases are temporary (72 hours)\nClaiming\n\nClaiming 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.\n\nAPI/SDK: Give the user the claim_url from the create response.\nCLI: npx get-db@latest claim reads the claim URL from .env and opens the browser automatically.\n\nUsers cannot claim into Vercel-linked orgs; they must choose another Neon org.\n\nDefaults and Limits\nParameter\tValue\nProvider\tAWS\nRegion\tus-east-2\nPostgres\t17\n\nRegion cannot be changed for claimable databases. Unclaimed databases have stricter quotas. Claiming resets limits to free plan defaults.\n\n\tUnclaimed\tClaimed (Free plan)\nStorage\t100 MB\t512 MB\nTransfer\t1 GB\t~5 GB\nBranches\tNo\tYes\nExpiration\t72 hours\tNone\nAuto-provisioning\n\nIf 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.\n\nSafety and UX Notes\nDo not overwrite existing env vars. Check first, then use --env or --key (CLI) or skip writing (API) to avoid conflicts.\nAsk before running destructive seed SQL (DROP, TRUNCATE, mass DELETE).\nFor production workloads, recommend standard Neon provisioning instead of temporary claimable databases.\nIf users need long-term persistence, instruct them to open the claim URL right away.\nAfter writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify .gitignore without confirmation."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/andrelandgraf/claimable-postgres",
    "publisherUrl": "https://clawhub.ai/andrelandgraf/claimable-postgres",
    "owner": "andrelandgraf",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/claimable-postgres",
    "downloadUrl": "https://openagent3.xyz/downloads/claimable-postgres",
    "agentUrl": "https://openagent3.xyz/skills/claimable-postgres/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claimable-postgres/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claimable-postgres/agent.md"
  }
}