Postgres CLI (V2)
Use postgres-cli to query PostgreSQL through named connection targets.
Platform Support
scripts/postgres-cliis the canonical launcher path inside the installed skill directory.- Prebuilt binaries are expected in
scripts/bin/for:
- macOS arm64 (postgres-cli-darwin-arm64) - Linux x86_64 (postgres-cli-linux-x86_64) - Windows x86_64 (postgres-cli-windows-x86_64.exe)
- If no compatible binary exists and source + Cargo are available, launcher falls back to
cargo run --release.
Available Scripts
scripts/postgres-cli- Launcher that selects a platform binary.scripts/build-release-binary.sh- Builds and places a binary for current host intoscripts/bin/.scripts/refresh-binaries-from-release.sh <tag>- Downloads release binaries intoscripts/bin/.
When To Use
- The user asks to inspect Postgres data.
- The user asks to run SQL against a configured target.
- The user asks for schema introspection.
- The user asks to validate DB CLI config or debug connectivity.
- The user asks to refresh schema cache for agent context.
Setup
Read Setup Guide.
V2 Command Contract
Global flags (before subcommand):
--project-root <path>(optional; default cwd)--target <name>(optional ifdefault_targetset)--format <json|text|csv|tsv>(defaultjson)--output <path>(optional output file)--no-summary(suppresses text summary)
Subcommands:
query
- input: exactly one of --sql, --sql-file, --stdin - flags: --mode <read|write> (default read), --timeout-ms
explain
- input: exactly one of --sql, --sql-file, --stdin - flags: --analyze, --verbose, --buffers, --settings, --wal, --timeout-ms
introspect
- required: --kind <schemas|tables|columns|indexes|constraints|views|materialized-views|functions|triggers|enums|rowcounts|rowcounts-exact> - optional filters: --schema (repeatable), --table schema.table (repeatable)
schema-cache update
- flags: --all-tables, --with-markdown, --table-file-naming <table|schema-table>, --timeout-ms
targets listconfig validatedoctor
Safety Rules
- Prefer read targets for normal data inspection.
query --mode readblocks mutating SQL.- Mutating SQL requires
query --mode writeandallow_write=trueon target. explain --analyzeon mutating SQL requires write-enabled target.
Operational Guardrails
- MUST use
scripts/postgres-clifrom the installed skill directory for all database interactions. - MUST NOT execute
psqldirectly, even ifpsqlis installed. - MUST NOT read secret/config files directly:
- .agents/postgres-cli/postgres.toml - .agent/postgres-cli/postgres.toml - .agents/postgres-cli/.env - .agent/postgres-cli/.env - .env at repository root
- MUST treat target selection as:
- If the user provides a connection name, pass --target <name>. - If the user does not provide a connection, omit --target and rely on CLI fallback to default_target. - If the CLI returns TARGET_MISSING, ask the user for a connection name and do not inspect config files.
- MUST NOT bypass CLI write-safety controls by using direct DB tools.
Command Patterns
Run read query:
scripts/postgres-cli --project-root /path/to/repo --target app-read query --sql "SELECT now();"Run write query intentionally:
scripts/postgres-cli --project-root /path/to/repo --target app-write query --mode write --sql "UPDATE users SET active = true WHERE id = 1;"Introspect tables:
scripts/postgres-cli --project-root /path/to/repo --target app-read introspect --kind tablesExplain a query:
scripts/postgres-cli --project-root /path/to/repo --target app-read explain --sql "SELECT * FROM users WHERE id = 1;"Validate config:
scripts/postgres-cli --project-root /path/to/repo config validateDoctor connectivity:
scripts/postgres-cli --project-root /path/to/repo --target app-read doctorUpdate schema cache (JSON only):
scripts/postgres-cli --project-root /path/to/repo --target app-read schema-cache updateUpdate schema cache with markdown:
scripts/postgres-cli --project-root /path/to/repo --target app-read schema-cache update --with-markdownProgressive Schema Loading
When schema context is needed, use this order:
- Read
.agents/postgres-cli/schema/index.json. - Load only required files from
.agents/postgres-cli/schema/tables/*.json. - Read
.agents/postgres-cli/schema/relations.jsonwhen join/relationship reasoning is needed. - If markdown was generated, consult
.mdfiles only for human-friendly display. - If cache is missing or stale, run
schema-cache update.
Agent Guidelines
- Pass
--targetwhenever the user provides a connection name. - If the user did not provide a connection name, allow
default_targetfallback. - Default to
--format jsonfor machine parsing. - Prefer
query --mode readunless the user explicitly requests data mutation. - Return relevant result rows and summarize key findings.
- If a consuming repo provides a repo-root
scripts/postgres-cliwrapper, prefer that path to avoid launcher discovery work.