postgres
Original:🇺🇸 English
Translated
1 scriptsChecked / no sensitive code detected
Exécute des requêtes SQL en lecture seule sur plusieurs bases de données PostgreSQL. À utiliser pour : (1) interroger des bases PostgreSQL, (2) explorer les schémas/tables, (3) exécuter des requêtes SELECT pour l'analyse de données, (4) vérifier le contenu des bases. Supporte plusieurs connexions avec descriptions pour une sélection automatique intelligente. Bloque toutes les opérations d'écriture (INSERT, UPDATE, DELETE, DROP, etc.) par sécurité.
6installs
Added on
NPX Install
npx skill4agent add dedalus-erp-pas/hexagone-foundation-skills postgresTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →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 in the skill directory or .
connections.json~/.config/claude/postgres-connections.jsonSecurity: Set file permissions to since it contains credentials:
600bash
chmod 600 connections.jsonjson
{
"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
| Field | Required | Description |
|---|---|---|
| name | Yes | Identifier for the database (case-insensitive) |
| description | Yes | What data this database contains (used for auto-selection) |
| host | Yes | Database hostname |
| port | No | Port number (default: 5432) |
| database | Yes | Database name |
| user | Yes | Username |
| password | Yes | Password |
| sslmode | No | SSL mode: disable, allow, prefer (default), require, verify-ca, verify-full |
Usage
List configured databases
bash
python3 scripts/query.py --listQuery a database
bash
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"List tables
bash
python3 scripts/query.py --db production --tablesShow schema
bash
python3 scripts/query.py --db production --schemaLimit results
bash
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100Database Selection
Match user intent to database :
description| User asks about | Look for description containing |
|---|---|
| users, accounts | users, accounts, customers |
| orders, sales | orders, transactions, sales |
| analytics, metrics | analytics, metrics, reports |
| logs, events | logs, events, audit |
If unclear, run and ask user which database.
--listSafety Features
- Read-only session: Connection uses PostgreSQL mode (primary protection)
readonly=True - 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
| Error | Solution |
|---|---|
| Config not found | Create |
| Authentication failed | Check username/password in config |
| Connection timeout | Verify host/port, check firewall/VPN |
| SSL error | Try |
| Permission warning | Run |
Exit Codes
- 0: Success
- 1: Error (config missing, auth failed, invalid query, database error)
Workflow
- Run to show available databases
--list - Match user intent to database description
- Run or
--tablesto explore structure--schema - Execute query with appropriate LIMIT