Cursor skills stay in lockstep with serve handlers. CI checks every bin/ path named in SKILL.md exists.
1.4 KiB
1.4 KiB
name, description
| name | description |
|---|---|
| postgres | Read Postgres as compact YAML through bin/postgres/query.go (read-only guard, named profiles). Use when a task needs table contents, column types, or a SELECT against an ops database. |
postgres
bin/postgres/query.go wraps vendored bin/db/psql-yq. Output is YAML
(cheaper than psql ASCII, easy to slice with yq).
bin/postgres/query.go --profile onlyoffice -s document_asset # column list
bin/postgres/query.go --profile onlyoffice -t task_result -l 20 # sample rows
bin/postgres/query.go --profile onlyoffice -c 'SELECT ...' # query → YAML
Ad-hoc targets without a profile:
bin/postgres/query.go --container my-pg --db app -c 'SELECT 1'
bin/postgres/query.go --dsn 'postgres://user@host:5432/db' -c 'SELECT 1'
Profiles
Connection details live in $HOME/.config/brain/db-profiles.yml (mode 600),
never in a project repo. A profile names either a container or a host;
passwords are read from a separate password_env_file and never appear in argv.
Rules
- Read-only. Any
insert|update|delete|drop|truncate|alter|create|grant| revoke|vacuum|copyis rejected with exit 3. Do not work around it. - PII. Client CRM databases: aggregate and count freely; never copy names or addresses into chat, issues or docs.
- Use
-lto keep samples small. Twenty rows answer most questions.