Skip to main content
ClaudeWave
Slash Command440 repo starsupdated today

psql-query

The psql-query command executes read-only PostgreSQL analytics queries against development or test databases in Elixir Phoenix projects. Use it to analyze database metrics, user statistics, query performance, and table sizes by running SELECT queries through psql, Mix tasks, or the Tidewave MCP integration when available, while strictly preventing production database access.

Install in Claude Code
Copy
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/oliver-kriska/claude-elixir-phoenix/HEAD/.claude/commands/psql-query.md -o ~/.claude/commands/psql-query.md
Then start a new Claude Code session; the slash command loads automatically.

psql-query.md

# PostgreSQL Analytics

Run analytics queries against the local database using psql or `mix run`.

## Rules

- NEVER run against production
- Use READ-ONLY queries (SELECT only)
- For complex analysis, use `Repo.query/2` in a Mix task
- Format results as ASCII tables or pipe to `column -t`

## Tidewave Integration

If Tidewave MCP is available, prefer it over psql/mix run:

- `mcp__tidewave__execute_sql_query` for direct SQL queries
- `mcp__tidewave__project_eval` for Ecto-based queries via `Repo.query!/2` or `Repo.all/1`

Fall back to psql/mix run only if Tidewave is not detected.

## Workflow

1. Check if Tidewave MCP is available — if yes, use `mcp__tidewave__execute_sql_query`
2. Otherwise, detect database URL from `config/dev.exs` or `DATABASE_URL`
3. Run query via: `psql $DATABASE_URL -c "YOUR QUERY" --expanded`
4. For Ecto: `mix run -e 'MyApp.Repo.query!("SELECT ...") |> IO.inspect()'`
5. Summarize results

## Example prompts

- "How many users signed up this week?"
- "Show me the slowest queries from pg_stat_statements"
- "What's the table size distribution?"
- "Show index usage stats"