Postgres

sanjay3290/ai-skills/skills/postgres

by sanjay3290281d88df199357e3091a3be5c743a0fca9a9ae1bApache-2.0Listed Oct 9, 2026Updated Oct 9, 2026

Execute read-only SQL queries against multiple PostgreSQL databases. Use when: (1) querying PostgreSQL databases, (2) exploring database schemas/tables, (3) running SELECT queries for data analysis, (4) checking database contents. Supports multiple database connections with descriptions for intelligent auto-selection. Blocks all write operations (INSERT, UPDATE, DELETE, DROP, etc.) for safety.

Includes scriptsData & Analytics
AI-generated overview

Runs read-only SQL queries against configured PostgreSQL databases, with schema exploration and multi-database selection.

What it does
Executes safe, read-only SQL against one or more configured PostgreSQL databases through a Python script. It can list configured connections, list tables, show schema, and run SELECT, SHOW, EXPLAIN or WITH queries with a row limit. Write operations are blocked, and results are returned as readable text output.
When to use it
Use it when you need to query PostgreSQL data, explore database schemas or tables, or check database contents for analysis. It fits read-only investigation across several databases where the right connection must be chosen from descriptions.
Requirements
Python 3.8+ and the psycopg2-binary package from requirements.txt. A connections.json file with host, database, user and password credentials is needed, plus network access to the database hosts. The skill ships an executable script, scripts/query.py.

PostgreSQL Read-Only Query Skill

Execute safe, read-only queries against configured PostgreSQL databases.

Requirements

  • Python 3.8+
  • psycopg2-binary: pip install -r requirements.txt

Setup

Create connections.json in the skill directory or ~/.config/claude/postgres-connections.json.

Security: Set file permissions to 600 since it contains credentials:

bash
chmod 600 connections.json
json
{  "databases": [    {      "name": "production",      "description": "Main app database - users, orders, transactions",      "host": "db.example.com",      "port": 5432,      "database": "app_prod",      "user": "readonly_user",      "password": "your-password",      "sslmode": "require"    }  ]}

Config Fields

FieldRequiredDescription
nameYesIdentifier for the database (case-insensitive)
descriptionYesWhat data this database contains (used for auto-selection)
hostYesDatabase hostname
portNoPort number (default: 5432)
databaseYesDatabase name
userYesUsername
passwordYesPassword
sslmodeNoSSL mode: disable, allow, prefer (default), require, verify-ca, verify-full

Usage

List configured databases

bash
python3 scripts/query.py --list

Query a database

bash
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"

List tables

bash
python3 scripts/query.py --db production --tables

Show schema

bash
python3 scripts/query.py --db production --schema

Limit results

bash
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

Database Selection

Match user intent to database description:

User asks aboutLook for description containing
users, accountsusers, accounts, customers
orders, salesorders, transactions, sales
analytics, metricsanalytics, metrics, reports
logs, eventslogs, events, audit

If unclear, run --list and ask user which database.

Safety Features

  • Read-only session: Connection uses PostgreSQL readonly=True mode (primary protection)
  • Query validation: Only SELECT, SHOW, EXPLAIN, WITH queries allowed
  • Single statement: Multiple statements per query rejected
  • SSL support: Configurable SSL mode for encrypted connections
  • Query timeout: 30-second statement timeout enforced
  • Memory protection: Max 10,000 rows per query to prevent OOM
  • Column width cap: 100 char max per column for readable output
  • Credential sanitization: Error messages don't leak passwords

Troubleshooting

ErrorSolution
Config not foundCreate connections.json in skill directory
Authentication failedCheck username/password in config
Connection timeoutVerify host/port, check firewall/VPN
SSL errorTry "sslmode": "disable" for local databases
Permission warningRun chmod 600 connections.json

Exit Codes

  • 0: Success
  • 1: Error (config missing, auth failed, invalid query, database error)

Workflow

  1. Run --list to show available databases
  2. Match user intent to database description
  3. Run --tables or --schema to explore structure
  4. Execute query with appropriate LIMIT

Source and attribution

Source:sanjay3290/ai-skillsinskills/postgresat commit281d88d

License: Apache-2.0

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal