Using PostgreSQL from a TypeScript Agent

SkillDatabases & data

Shows your agent how to connect to PostgreSQL and run SQL queries from TypeScript code.

Use Using PostgreSQL from a TypeScript Agent in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Using PostgreSQL from a TypeScript Agent and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Using PostgreSQL from a TypeScript Agent skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Using PostgreSQL from a TypeScript AgentStart free
About this skill

Using golem:rdbms/postgres from a TypeScript Golem agent. Use when the user asks to connect to PostgreSQL, run SQL, or use PostgreSQL from TypeScript agent code.

What this skill tells your AI

The instructions your AI receives, as published by golemcloud/golem in golem-skills/skills/ts/golem-add-postgres-ts/SKILL.md and read by ahel’s review.

The TypeScript SDK ships a typed PostgreSQL helper built on the golem:rdbms/postgres@1.5.0 host interface. Every operation returns a Promise and throws a typed PostgresError on failure, so use normal try / catch handling when needed.

Imports

import { Postgres, Pg } from "@golemcloud/golem-ts-sdk";
  • Postgres.open(url, options?) — open a connection.
  • Pg.* — explicit rich-type parameter wrappers (Pg.uuid, Pg.jsonb, Pg.int4, …).

Open a Connection

const conn = await Postgres.open("postgres://user:password@localhost:5432/app");

Query Data

PostgreSQL placeholders use $1, $2, ... Plain JS values are encoded automatically (string → text, integer → int4/int8, etc.); wrap a value in a Pg.* helper to pin an exact type. Rows come back as decoded { columnName: value } records.

const result = await conn.query("SELECT $1::text AS message", ["hello"]);
const message = result.rows[0]?.message as string;

Use Pg.* when the default mapping isn't what you want:

await conn.query("SELECT * FROM users WHERE id = $1", [Pg.uuid(userId)]);

Execute Statements

execute returns the number of affected rows.

const affected = await conn.execute(
  "INSERT INTO notes (id, body) VALUES ($1, $2)",
  [1, "hello"],
);

Transactions

Run a block inside a transaction — it commits on success and rolls back if the callback throws:

await conn.transaction(async (tx) => {
  tx.execute("UPDATE notes SET body = $1 WHERE id = $2", ["updated", 1]);
  tx.execute("INSERT INTO audit (note_id) VALUES ($1)", [1]);
});

Or drive it manually with begin() / commit() / rollback():

const tx = await conn.begin();
tx.execute("UPDATE notes SET body = $1 WHERE id = $2", ["updated", 1]);
await tx.commit();

Signals

GitHub stars
2k
Forks
209
Last commit
Oct 2026

ahel review

  • S4info
    community integration, published by golemcloud, not postgres

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
golem-add-postgres-ts
Source
github.com/golemcloud/golem