Using PostgreSQL from a Scala Agent

SkillDatabases & data

Lets your Scala agent store and query data by running SQL against a PostgreSQL database.

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

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

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Using PostgreSQL from a Scala 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 Scala AgentStart free
About this skill

Using PostgreSQL from a Scala Golem agent through golem.host.Rdbms.Postgres. Use when the user asks to connect to PostgreSQL, run SQL, or use Postgres from Scala agent code.

What this skill tells your AI

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

The Scala SDK already wraps golem:rdbms/postgres@1.5.0 in golem.host.Rdbms.

Imports

import golem.host.Rdbms
import golem.host.Rdbms._

Open a Connection

Rdbms.Postgres.open("postgres://user:password@localhost:5432/app")

open, query, execute, commit, and rollback all return Either[DbError, T] instead of throwing.

Query Data

PostgreSQL placeholders use $1, $2, ...

val message =
  for {
    conn   <- Rdbms.Postgres.open("postgres://user:password@localhost:5432/app")
    result <- conn.query("SELECT $1::text", List(PostgresDbValue.Text("hello")))
    row    <- result.rows.headOption.toRight(DbError.Other("query returned no rows"))
    value  <- row.values.headOption.toRight(DbError.Other("query returned no columns"))
    text   <- value match {
                case PostgresDbValue.Text(value)    => Right(value)
                case PostgresDbValue.VarChar(value) => Right(value)
                case PostgresDbValue.BpChar(value)  => Right(value)
                case other                          => Left(DbError.Other(s"Unexpected PostgreSQL value: $other"))
              }
  } yield text

Execute Statements

conn.execute(
  "INSERT INTO notes (id, body) VALUES ($1, $2)",
  List(PostgresDbValue.Int4(1), PostgresDbValue.Text("hello")),
)

Transactions

for {
  conn <- Rdbms.Postgres.open(url)
  tx   <- conn.beginTransaction()
  _    <- tx.execute(
            "UPDATE notes SET body = $1 WHERE id = $2",
            List(PostgresDbValue.Text("updated"), PostgresDbValue.Int4(1)),
          )
  _    <- tx.commit()
} yield ()

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-scala
Source
github.com/golemcloud/golem