feat: generate brain tools skill from OpenAPI; rename db-yaml to postgres (#21)
Cursor skills stay in lockstep with serve handlers. CI checks every bin/ path named in SKILL.md exists.
This commit is contained in:
@@ -45,5 +45,6 @@ are not wired yet); do not treat it as a graph walk.
|
||||
- If recall looks wrong, run `bin/brain/eval.go`; it gates control questions and
|
||||
should stay at or above 95% recall@5.
|
||||
- Agents: `GET /openapi.json` and `POST /mcp` on `bin/brain/serve.go` (same
|
||||
handlers; tool names match paths `search`/`get`/`stats`/`audit`).
|
||||
handlers; tool names match paths `search`/`get`/`stats`/`audit`). Generated
|
||||
list: [tools.md](tools.md).
|
||||
- Never report an unconfirmed single-source local answer as fact.
|
||||
@@ -0,0 +1,11 @@
|
||||
# brain HTTP / MCP tools
|
||||
|
||||
Generated from `internal/httpapi.Ops`. Do not edit by hand.
|
||||
|
||||
Serve: `bin/brain/serve.go` (`GET /openapi.json`, `POST /mcp`).
|
||||
|
||||
- `search` — deduction search (facts → info → web)
|
||||
- `get` — read one leaf by id
|
||||
- `stats` — index health
|
||||
- `audit` — facts confidence histogram
|
||||
- `ingest` — rebuild hint (write is v2)
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
name: db-yaml
|
||||
description: >-
|
||||
Read any Postgres as compact YAML through db/psql-yq, with a read-only guard and
|
||||
named profiles. Use when a task needs table contents, column types or a SELECT
|
||||
against cs_brain or another project database.
|
||||
---
|
||||
|
||||
# db-yaml
|
||||
|
||||
`bin/db/psql-yq` (vendored in this repo) talks to Postgres and returns YAML,
|
||||
which is far cheaper than a psql ASCII table and easy to slice with `yq`.
|
||||
|
||||
```bash
|
||||
bin/db/psql-yq --profile onlyoffice -s document_asset # column list
|
||||
bin/db/psql-yq --profile onlyoffice -t task_result -l 20 # sample rows as YAML
|
||||
bin/db/psql-yq --profile onlyoffice -c 'SELECT ...' # query -> YAML
|
||||
```
|
||||
|
||||
Ad-hoc targets without a profile:
|
||||
|
||||
```bash
|
||||
bin/db/psql-yq --container my-pg --db app -c 'SELECT 1'
|
||||
bin/db/psql-yq --dsn 'postgres://user@host:5432/db' -c 'SELECT 1'
|
||||
```
|
||||
|
||||
## Profiles
|
||||
|
||||
Connection details live in `~/.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|copy` is rejected with exit 3. Do not work around it.
|
||||
- **PII.** `cs_brain` holds client data. Aggregate and count freely; never copy
|
||||
names or addresses into chat, issues or docs.
|
||||
- Use `-l` to keep samples small. Twenty rows answer most questions.
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
name: postgres
|
||||
description: >-
|
||||
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`).
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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|copy` is 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 `-l` to keep samples small. Twenty rows answer most questions.
|
||||
Reference in New Issue
Block a user