install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bind/psql" ~/.claude/skills/aiskillstore-marketplace-psql && rm -rf "$T"
manifest:
skills/bind/psql/SKILL.mdsource content
Overview
CLI tool for running SQL queries and psql meta-commands against PostgreSQL databases. Each query is executed directly via the
psql CLI - no persistent connection required.
Prerequisites
- bun runtime installed
- psql client installed
- PostgreSQL connection environment variables set in
or exported<git-root>/.env
Environment Variables
Set these in your
.env file or export them:
| Variable | Required | Default | Description |
|---|---|---|---|
| Yes | - | Database host |
| No | | Database port |
| Yes | - | Database name |
| Yes | - | Database user |
| Yes | - | Database password |
| No | - | SSL mode (disable, require, etc.) |
Example
.env:
PGHOST=localhost PGPORT=5432 PGDATABASE=myapp PGUSER=myapp PGPASSWORD=secret PGSSLMODE=disable
Command
Query
Run a SQL query, meta-command, or SQL file.
bun .opencode/skill/psql/query.js <query> [options] bun .opencode/skill/psql/query.js --file <path> [options]
Arguments:
- SQL query or meta-command to executequery
Options:
- Execute SQL file instead of inline query--file <path>
- Tuples only output (no headers or row count)--tuples
- Query timeout in milliseconds (default: 30000)--timeout <ms>
- Wrap output in JSON--json
- Show help--help
Examples:
# SQL queries bun .opencode/skill/psql/query.js "SELECT * FROM users LIMIT 5;" bun .opencode/skill/psql/query.js "SELECT COUNT(*) FROM orders WHERE status = 'pending';" # Meta-commands bun .opencode/skill/psql/query.js "\dt" bun .opencode/skill/psql/query.js "\d users" bun .opencode/skill/psql/query.js "\di" bun .opencode/skill/psql/query.js "\l" # Execute SQL file bun .opencode/skill/psql/query.js --file migrations/001_create_users.sql bun .opencode/skill/psql/query.js --file scripts/seed_data.sql # Tuples only (for scripting/parsing) bun .opencode/skill/psql/query.js "SELECT id FROM users;" --tuples # With longer timeout for slow queries bun .opencode/skill/psql/query.js "SELECT * FROM large_table;" --timeout 60000
Common Workflows
Explore Database Schema
# List all tables bun .opencode/skill/psql/query.js "\dt" # Describe a specific table bun .opencode/skill/psql/query.js "\d users" # Show indexes bun .opencode/skill/psql/query.js "\di" # Show foreign keys for a table bun .opencode/skill/psql/query.js "\d+ orders"
Run Analytical Queries
# Count records bun .opencode/skill/psql/query.js "SELECT COUNT(*) FROM orders;" # Group by aggregation bun .opencode/skill/psql/query.js "SELECT status, COUNT(*) FROM orders GROUP BY status;" # Recent activity bun .opencode/skill/psql/query.js "SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '1 day' ORDER BY created_at DESC LIMIT 10;"
Database Administration
# Check table sizes bun .opencode/skill/psql/query.js "SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC LIMIT 10;" # Check active connections bun .opencode/skill/psql/query.js "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';" # List databases bun .opencode/skill/psql/query.js "\l"
Run Migrations
# Execute a migration file bun .opencode/skill/psql/query.js --file migrations/001_create_users.sql # Execute seed data bun .opencode/skill/psql/query.js --file scripts/seed.sql
Output Behavior
- Query output is displayed directly to the user in the terminal
- Do not re-summarize or reformat query output - the user can already see it
- Use
for clean output without headers (useful for piping to other tools)--tuples - Use
for structured output when parsing programmatically--json
Notes
- Each query is executed as a separate
invocation (no persistent connection)psql - Meta-commands (starting with
) work the same as SQL queries\ - Long-running queries may need
increased from the default 30 seconds--timeout - The
flag is useful when you need to parse output or pipe to other commands--tuples