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)
- macOS arm64 (
- 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>(defaultread),--timeout-ms
- input: exactly one of
explain- input: exactly one of
--sql,--sql-file,--stdin - flags:
--analyze,--verbose,--buffers,--settings,--wal,--timeout-ms
- input: exactly one of
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)
- required:
schema-cache update- flags:
--all-tables,--with-markdown,--table-file-naming <table|schema-table>,--timeout-ms
- flags:
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.envat 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
--targetand rely on CLI fallback todefault_target. - If the CLI returns
TARGET_MISSING, ask the user for a connection name and do not inspect config files.
- If the user provides a connection name, pass
- 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 tables
Explain 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 validate
Doctor connectivity:
scripts/postgres-cli --project-root /path/to/repo --target app-read doctor
Update schema cache (JSON only):
scripts/postgres-cli --project-root /path/to/repo --target app-read schema-cache update
Update schema cache with markdown:
scripts/postgres-cli --project-root /path/to/repo --target app-read schema-cache update --with-markdown
Progressive 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.