Using PostgreSQL from a TypeScript Agent

SkillDatabases & data

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.

Available today. Use it from your connected AI after setup.

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

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

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
210
Last commit
Sep 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