{
  "schemaVersion": "1.0",
  "item": {
    "slug": "neondb-skill",
    "name": "NeonDB-skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/clawbot-ved/neondb-skill",
    "canonicalUrl": "https://clawhub.ai/clawbot-ved/neondb-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/neondb-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=neondb-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/setup-org-db.sh"
    ],
    "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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/neondb-skill"
    },
    "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/neondb-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/neondb-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/neondb-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/neondb-skill/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": "NeonDB",
        "body": "Neon is serverless Postgres — scales to zero, branches like git, instant provisioning. Perfect for AI agents needing databases without ops overhead."
      },
      {
        "title": "Why Neon for Agents?",
        "body": "Instant databases — Create in seconds, no server setup\nBranching — Fork your database like git (test without affecting prod)\nScale-to-zero — Pay nothing when idle\nConnection pooling — Built-in, no PgBouncer needed\nGenerous free tier — 0.5 GB storage, 190 compute hours/month"
      },
      {
        "title": "1. Install CLI",
        "body": "# Homebrew (recommended)\nbrew install neonctl\n\n# Or npm\nnpm i -g neonctl"
      },
      {
        "title": "2. Authenticate",
        "body": "# Interactive (opens browser)\nneonctl auth\n\n# Or with API key (get from console.neon.tech)\nexport NEON_API_KEY=your_api_key_here"
      },
      {
        "title": "3. Create Your First Project",
        "body": "neonctl projects create --name \"my-agent-db\""
      },
      {
        "title": "Projects (top-level container)",
        "body": "# List all projects\nneonctl projects list\n\n# Create project\nneonctl projects create --name \"project-name\"\n\n# Delete project\nneonctl projects delete <project-id>\n\n# Get project details\nneonctl projects get <project-id>"
      },
      {
        "title": "Branches (database snapshots)",
        "body": "# List branches\nneonctl branches list --project-id <project-id>\n\n# Create branch (fork from main)\nneonctl branches create --project-id <project-id> --name \"dev-branch\"\n\n# Create branch from specific point\nneonctl branches create --project-id <project-id> --name \"restore-test\" --parent main --timestamp \"2024-01-15T10:00:00Z\"\n\n# Reset branch to parent\nneonctl branches reset <branch-id> --project-id <project-id> --parent\n\n# Delete branch\nneonctl branches delete <branch-id> --project-id <project-id>\n\n# Compare schemas\nneonctl branches schema-diff --project-id <project-id> --base-branch main --compare-branch dev"
      },
      {
        "title": "Databases",
        "body": "# List databases\nneonctl databases list --project-id <project-id> --branch <branch-name>\n\n# Create database\nneonctl databases create --project-id <project-id> --branch <branch-name> --name \"mydb\"\n\n# Delete database\nneonctl databases delete <db-name> --project-id <project-id> --branch <branch-name>"
      },
      {
        "title": "Connection Strings",
        "body": "# Get connection string (default branch)\nneonctl connection-string --project-id <project-id>\n\n# Get connection string for specific branch\nneonctl connection-string <branch-name> --project-id <project-id>\n\n# Pooled connection (recommended for serverless)\nneonctl connection-string --project-id <project-id> --pooled\n\n# Extended format (with all details)\nneonctl connection-string --project-id <project-id> --extended"
      },
      {
        "title": "Roles (database users)",
        "body": "# List roles\nneonctl roles list --project-id <project-id> --branch <branch-name>\n\n# Create role\nneonctl roles create --project-id <project-id> --branch <branch-name> --name \"app_user\""
      },
      {
        "title": "Using psql",
        "body": "# Get connection string and connect\nneonctl connection-string --project-id <project-id> | xargs psql\n\n# Or direct\npsql \"$(neonctl connection-string --project-id <project-id>)\""
      },
      {
        "title": "Using the connection string in code",
        "body": "# Get the string\nCONNECTION_STRING=$(neonctl connection-string --project-id <project-id> --pooled)\n\n# Use in any Postgres client\npsql \"$CONNECTION_STRING\" -c \"SELECT * FROM users LIMIT 5;\""
      },
      {
        "title": "Context (Avoid Repeating Project ID)",
        "body": "Set context to avoid passing --project-id every time:\n\n# Set project context\nneonctl set-context --project-id <project-id>\n\n# Now commands use that project automatically\nneonctl branches list\nneonctl databases list\nneonctl connection-string"
      },
      {
        "title": "Create org database with branches",
        "body": "# Create project for org\nneonctl projects create --name \"website-org-db\" -o json\n\n# Create production branch (main is created by default)\n# Create dev branch for testing\nneonctl branches create --name \"dev\" --project-id <id>\n\n# Get connection strings\nneonctl connection-string main --project-id <id> --pooled  # for prod\nneonctl connection-string dev --project-id <id> --pooled   # for dev"
      },
      {
        "title": "Create leads table",
        "body": "# Connect and create schema\npsql \"$(neonctl cs --project-id <id>)\" <<EOF\nCREATE TABLE leads (\n    id SERIAL PRIMARY KEY,\n    business_name VARCHAR(255) NOT NULL,\n    category VARCHAR(100),\n    location VARCHAR(255),\n    phone VARCHAR(50),\n    email VARCHAR(255),\n    website VARCHAR(255),\n    status VARCHAR(50) DEFAULT 'identified',\n    priority VARCHAR(20) DEFAULT 'medium',\n    notes TEXT,\n    created_at TIMESTAMP DEFAULT NOW(),\n    updated_at TIMESTAMP DEFAULT NOW()\n);\n\nCREATE INDEX idx_leads_status ON leads(status);\nCREATE INDEX idx_leads_category ON leads(category);\nEOF"
      },
      {
        "title": "Branch for experiments",
        "body": "# Create a branch to test schema changes\nneonctl branches create --name \"schema-experiment\" --project-id <id>\n\n# Test your changes on the branch\npsql \"$(neonctl cs schema-experiment --project-id <id>)\" -c \"ALTER TABLE leads ADD COLUMN score INT;\"\n\n# If it works, apply to main. If not, just delete the branch\nneonctl branches delete schema-experiment --project-id <id>"
      },
      {
        "title": "Output Formats",
        "body": "# JSON (for parsing)\nneonctl projects list -o json\n\n# YAML\nneonctl projects list -o yaml\n\n# Table (default, human-readable)\nneonctl projects list -o table"
      },
      {
        "title": "Environment Variables",
        "body": "# API key (required if not using `neonctl auth`)\nexport NEON_API_KEY=your_key\n\n# Default project (alternative to set-context)\nexport NEON_PROJECT_ID=your_project_id"
      },
      {
        "title": "Check if neonctl is configured",
        "body": "neonctl me -o json 2>/dev/null && echo \"Authenticated\" || echo \"Need to run: neonctl auth\""
      },
      {
        "title": "Quick database query",
        "body": "# One-liner query\npsql \"$(neonctl cs)\" -c \"SELECT COUNT(*) FROM leads WHERE status='contacted';\""
      },
      {
        "title": "Export to CSV",
        "body": "psql \"$(neonctl cs)\" -c \"COPY (SELECT * FROM leads) TO STDOUT WITH CSV HEADER\" > leads.csv"
      },
      {
        "title": "Import from CSV",
        "body": "psql \"$(neonctl cs)\" -c \"\\COPY leads(business_name,category,location) FROM 'import.csv' WITH CSV HEADER\""
      },
      {
        "title": "\"Connection refused\"",
        "body": "Check if branch compute is active (scale-to-zero may have paused it)\nUse --pooled connection string for serverless workloads"
      },
      {
        "title": "\"Permission denied\"",
        "body": "Verify API key: neonctl me\nRe-authenticate: neonctl auth"
      },
      {
        "title": "Slow first connection",
        "body": "Normal for scale-to-zero. First connection wakes the compute (~1-2 seconds)\nUse connection pooling to maintain warm connections"
      },
      {
        "title": "Links",
        "body": "Neon Console — Web dashboard\nAPI Docs — REST API reference\nCLI Reference — Full CLI docs\nGitHub — CLI source code"
      }
    ],
    "body": "NeonDB\n\nNeon is serverless Postgres — scales to zero, branches like git, instant provisioning. Perfect for AI agents needing databases without ops overhead.\n\nWhy Neon for Agents?\nInstant databases — Create in seconds, no server setup\nBranching — Fork your database like git (test without affecting prod)\nScale-to-zero — Pay nothing when idle\nConnection pooling — Built-in, no PgBouncer needed\nGenerous free tier — 0.5 GB storage, 190 compute hours/month\nQuick Start\n1. Install CLI\n# Homebrew (recommended)\nbrew install neonctl\n\n# Or npm\nnpm i -g neonctl\n\n2. Authenticate\n# Interactive (opens browser)\nneonctl auth\n\n# Or with API key (get from console.neon.tech)\nexport NEON_API_KEY=your_api_key_here\n\n3. Create Your First Project\nneonctl projects create --name \"my-agent-db\"\n\nCore Commands\nProjects (top-level container)\n# List all projects\nneonctl projects list\n\n# Create project\nneonctl projects create --name \"project-name\"\n\n# Delete project\nneonctl projects delete <project-id>\n\n# Get project details\nneonctl projects get <project-id>\n\nBranches (database snapshots)\n# List branches\nneonctl branches list --project-id <project-id>\n\n# Create branch (fork from main)\nneonctl branches create --project-id <project-id> --name \"dev-branch\"\n\n# Create branch from specific point\nneonctl branches create --project-id <project-id> --name \"restore-test\" --parent main --timestamp \"2024-01-15T10:00:00Z\"\n\n# Reset branch to parent\nneonctl branches reset <branch-id> --project-id <project-id> --parent\n\n# Delete branch\nneonctl branches delete <branch-id> --project-id <project-id>\n\n# Compare schemas\nneonctl branches schema-diff --project-id <project-id> --base-branch main --compare-branch dev\n\nDatabases\n# List databases\nneonctl databases list --project-id <project-id> --branch <branch-name>\n\n# Create database\nneonctl databases create --project-id <project-id> --branch <branch-name> --name \"mydb\"\n\n# Delete database\nneonctl databases delete <db-name> --project-id <project-id> --branch <branch-name>\n\nConnection Strings\n# Get connection string (default branch)\nneonctl connection-string --project-id <project-id>\n\n# Get connection string for specific branch\nneonctl connection-string <branch-name> --project-id <project-id>\n\n# Pooled connection (recommended for serverless)\nneonctl connection-string --project-id <project-id> --pooled\n\n# Extended format (with all details)\nneonctl connection-string --project-id <project-id> --extended\n\nRoles (database users)\n# List roles\nneonctl roles list --project-id <project-id> --branch <branch-name>\n\n# Create role\nneonctl roles create --project-id <project-id> --branch <branch-name> --name \"app_user\"\n\nExecuting Queries\nUsing psql\n# Get connection string and connect\nneonctl connection-string --project-id <project-id> | xargs psql\n\n# Or direct\npsql \"$(neonctl connection-string --project-id <project-id>)\"\n\nUsing the connection string in code\n# Get the string\nCONNECTION_STRING=$(neonctl connection-string --project-id <project-id> --pooled)\n\n# Use in any Postgres client\npsql \"$CONNECTION_STRING\" -c \"SELECT * FROM users LIMIT 5;\"\n\nContext (Avoid Repeating Project ID)\n\nSet context to avoid passing --project-id every time:\n\n# Set project context\nneonctl set-context --project-id <project-id>\n\n# Now commands use that project automatically\nneonctl branches list\nneonctl databases list\nneonctl connection-string\n\nAgent Workflow Examples\nCreate org database with branches\n# Create project for org\nneonctl projects create --name \"website-org-db\" -o json\n\n# Create production branch (main is created by default)\n# Create dev branch for testing\nneonctl branches create --name \"dev\" --project-id <id>\n\n# Get connection strings\nneonctl connection-string main --project-id <id> --pooled  # for prod\nneonctl connection-string dev --project-id <id> --pooled   # for dev\n\nCreate leads table\n# Connect and create schema\npsql \"$(neonctl cs --project-id <id>)\" <<EOF\nCREATE TABLE leads (\n    id SERIAL PRIMARY KEY,\n    business_name VARCHAR(255) NOT NULL,\n    category VARCHAR(100),\n    location VARCHAR(255),\n    phone VARCHAR(50),\n    email VARCHAR(255),\n    website VARCHAR(255),\n    status VARCHAR(50) DEFAULT 'identified',\n    priority VARCHAR(20) DEFAULT 'medium',\n    notes TEXT,\n    created_at TIMESTAMP DEFAULT NOW(),\n    updated_at TIMESTAMP DEFAULT NOW()\n);\n\nCREATE INDEX idx_leads_status ON leads(status);\nCREATE INDEX idx_leads_category ON leads(category);\nEOF\n\nBranch for experiments\n# Create a branch to test schema changes\nneonctl branches create --name \"schema-experiment\" --project-id <id>\n\n# Test your changes on the branch\npsql \"$(neonctl cs schema-experiment --project-id <id>)\" -c \"ALTER TABLE leads ADD COLUMN score INT;\"\n\n# If it works, apply to main. If not, just delete the branch\nneonctl branches delete schema-experiment --project-id <id>\n\nOutput Formats\n# JSON (for parsing)\nneonctl projects list -o json\n\n# YAML\nneonctl projects list -o yaml\n\n# Table (default, human-readable)\nneonctl projects list -o table\n\nEnvironment Variables\n# API key (required if not using `neonctl auth`)\nexport NEON_API_KEY=your_key\n\n# Default project (alternative to set-context)\nexport NEON_PROJECT_ID=your_project_id\n\nCommon Patterns\nCheck if neonctl is configured\nneonctl me -o json 2>/dev/null && echo \"Authenticated\" || echo \"Need to run: neonctl auth\"\n\nQuick database query\n# One-liner query\npsql \"$(neonctl cs)\" -c \"SELECT COUNT(*) FROM leads WHERE status='contacted';\"\n\nExport to CSV\npsql \"$(neonctl cs)\" -c \"COPY (SELECT * FROM leads) TO STDOUT WITH CSV HEADER\" > leads.csv\n\nImport from CSV\npsql \"$(neonctl cs)\" -c \"\\COPY leads(business_name,category,location) FROM 'import.csv' WITH CSV HEADER\"\n\nTroubleshooting\n\"Connection refused\"\nCheck if branch compute is active (scale-to-zero may have paused it)\nUse --pooled connection string for serverless workloads\n\"Permission denied\"\nVerify API key: neonctl me\nRe-authenticate: neonctl auth\nSlow first connection\nNormal for scale-to-zero. First connection wakes the compute (~1-2 seconds)\nUse connection pooling to maintain warm connections\nLinks\nNeon Console — Web dashboard\nAPI Docs — REST API reference\nCLI Reference — Full CLI docs\nGitHub — CLI source code"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/clawbot-ved/neondb-skill",
    "publisherUrl": "https://clawhub.ai/clawbot-ved/neondb-skill",
    "owner": "clawbot-ved",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/neondb-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/neondb-skill",
    "agentUrl": "https://openagent3.xyz/skills/neondb-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/neondb-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/neondb-skill/agent.md"
  }
}