pgtool

A CLI tool for exploring and debugging PostgreSQL databases with JSON-first output designed for AI agents.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "pgtool" with this command: npx skills add thilinatlm/claude-plugins/thilinatlm-claude-plugins-pgtool

PostgreSQL

A CLI tool for exploring and debugging PostgreSQL databases with JSON-first output designed for AI agents.

CLI Discovery

The CLI is located at ./scripts/pgtool-cli/ relative to this SKILL.md file.

Platform Script

Unix/Linux/macOS pgtool

Windows pgtool.ps1

Claude Code: Use ${CLAUDE_PLUGIN_ROOT}/skills/pgtool/scripts/pgtool-cli/pgtool (or pgtool.ps1 on Windows).

For setup instructions, see SETUP.md in this directory.

Important

  • Always use pgtool-cli for all database operations. Do NOT use psql directly.

  • If pgtool-cli encounters an error or limitation, report the issue to the user and stop. Do not fall back to psql or other tools.

  • Always add LIMIT to SELECT queries to avoid fetching excessive data.

Commands

List Schemas

pgtool schemas

Output: {"ok":true,"schemas":[{"name":"public","owner":"postgres"}]}

List Tables

Tables in default schema

pgtool tables

Tables in a specific schema

pgtool tables auth

Output: {"ok":true,"schema":"public","tables":[{"name":"users","type":"table","rowEstimate":1000,"sizeHuman":"256 KB"}]}

Describe Table

Get column details with primary key and foreign key information.

Table in default schema

pgtool describe users

Table in specific schema

pgtool describe auth.users

Output includes column types, nullability, defaults, PK/FK info, and foreign key references.

List Indexes

pgtool indexes users

Output: {"ok":true,"indexes":[{"name":"users_pkey","unique":true,"primary":true,"columns":["id"],"type":"btree"}]}

List Constraints

pgtool constraints users

Output includes PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, and EXCLUDE constraints.

List Relationships

Get all foreign key relationships in a schema.

pgtool relationships pgtool relationships auth

Output: {"ok":true,"relationships":[{"fromTable":"orders","fromColumns":["user_id"],"toTable":"users","toColumns":["id"]}]}

Execute Query

pgtool query "SELECT * FROM users WHERE active = true LIMIT 100"

Output: {"ok":true,"rows":[...],"rowCount":5,"fields":["id","name","email"]}

Best Practices:

  • Always add LIMIT to SELECT queries to avoid fetching excessive data

  • DML statements (INSERT, UPDATE, DELETE) with RETURNING are fully supported

  • Use parameterized values in WHERE clauses to avoid SQL injection

Sample Table Rows

Get sample data from a table quickly.

Default: 5 rows

pgtool sample users

Custom limit

pgtool sample users --limit 10

Specific schema

pgtool sample auth.users

Output: {"ok":true,"schema":"public","table":"users","rows":[...],"rowCount":5,"columns":["id","name","email"]}

Count Table Rows

Get exact row count (not estimate).

pgtool count users pgtool count auth.sessions

Output: {"ok":true,"schema":"public","table":"users","count":12345}

Plain: public.users: 12,345 rows

Search Tables and Columns

Find tables and columns matching a pattern.

pgtool search email pgtool search user

Output:

{ "ok": true, "pattern": "email", "matches": { "tables": [{ "schema": "public", "name": "emails" }], "columns": [ { "schema": "public", "table": "users", "column": "email", "type": "varchar(255)" }, { "schema": "public", "table": "contacts", "column": "email_address", "type": "text" } ] } }

Schema Overview

Compact ERD-like view showing tables, primary keys, and relationships.

pgtool overview pgtool overview auth

Output (plain):

Schema: public (3 tables)

users (1.2k rows) PK: id → orders.user_id, profiles.user_id

orders (45k rows) PK: id FK: user_id → users.id → order_items.order_id

products (500 rows) PK: id

Explain Query Plan

Analyze query execution plan.

With ANALYZE (executes query)

pgtool explain "SELECT * FROM users WHERE email = 'x'"

Without ANALYZE (plan only)

pgtool explain "SELECT * FROM users WHERE id = 1" --no-analyze

Output: {"ok":true,"query":"SELECT...","plan":["Seq Scan on users...","..."]}

Error Responses

All errors follow a consistent JSON format with ok: false , an error code, and a helpful hint:

Configuration not found:

{ "ok": false, "error": "Configuration file not found", "code": "CONFIG_NOT_FOUND", "hint": "Create a .pgtool.json file in your project root with database connection details." }

Connection failed:

{ "ok": false, "error": "Could not connect to database server: connect ECONNREFUSED 127.0.0.1:5432", "code": "CONNECTION_FAILED", "hint": "Verify host and port in .pgtool.json and ensure PostgreSQL is running" }

Authentication failed:

{ "ok": false, "error": "Authentication failed", "code": "PERMISSION_DENIED", "hint": "Check your username and password in .pgtool.json" }

Table not found:

{ "ok": false, "error": "relation "nonexistent_table" does not exist", "code": "TABLE_NOT_FOUND", "hint": "Check that the table exists and you have permission to access it" }

Error codes: CONFIG_NOT_FOUND , CONFIG_INVALID , CONNECTION_FAILED , QUERY_FAILED , TABLE_NOT_FOUND , SCHEMA_NOT_FOUND , PERMISSION_DENIED , TIMEOUT

Common Usage Patterns

Exploring a new database:

  • pgtool schemas

  • See available schemas

  • pgtool overview

  • Quick view of tables and relationships

  • pgtool tables <schema>

  • List tables with sizes

  • pgtool describe <table>

  • Understand table structures

  • pgtool sample <table>

  • See example data

Finding data:

  • pgtool search <pattern>

  • Find tables/columns by name

  • pgtool sample <table>

  • Quick data preview

  • pgtool count <table>

  • Get exact row count

  • pgtool query "SELECT..."

  • Custom queries

Debugging data issues:

  • pgtool describe <table>

  • Verify column types

  • pgtool sample <table>

  • Check actual data

  • pgtool explain "SELECT..."

  • Analyze query performance

  • pgtool indexes <table>

  • Check index coverage

Understanding relationships:

  • pgtool overview

  • Visual relationship map

  • pgtool relationships

  • Get all FK relationships

  • pgtool constraints <table>

  • See specific table constraints

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

specdev

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

clippy-advanced

No summary provided by upstream source.

Repository SourceNeeds Review