К основному содержанию
скилл CX Codex

surrealdb-js — скилл для Claude Code: что делает и как установить

Обучает ИИ-агента правильной работе с JavaScript SDK для SurrealDB: от подключения и сессий до CRUD, живых подписок и связей в графе.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add surrealdb/agent-skills --skill surrealdb-js -a claude-code
Открыть на GitHub

Что делает surrealdb-js

Скилл содержит инструкции и паттерны кода для официального пакета surrealdb, работающего в Node.js, Deno, Bun и браузере. Он учит модель соблюдать строгий порядок инициализации клиента: сначала метод connect, затем выбор пространства имён и базы через use, а после — аутентификация через signin или готовый токен.

Внутри описана работа со специальными типами вроде RecordId, построение связей в графе через db.relate, методы частичной правки merge и JSON Patch. При формировании запросов через db.query скилл требует изолировать входные данные в переменные, блокируя конкатенацию сырых строк.

Для подписок на изменения в реальном времени через db.live() соединение по HTTP не подойдёт — библиотека требует WebSocket или встроенный движок вроде RocksDB либо WebAssembly.

Какие задачи решает

  • настроить подключение и авторизацию через официальный SDK surrealdb
  • выполнить CRUD-операции с типизацией и объектами RecordId
  • связать записи графовыми рёбрами через метод relate
  • подписаться на обновления таблиц в реальном времени через live

Примеры запросов агенту

  • Напиши подключение к локальному SurrealDB по WebSocket и авторизацию под root
  • Создай связь графа между пользователем и статьёй через db.relate
  • Сделай запрос к SurrealDB с фильтрацией по возрасту через безопасные параметры

Как установить surrealdb-js

1Через Skills CLI (Vercel)

npx skills add surrealdb/agent-skills --skill surrealdb-js -a claude-code

2Вручную: положить файлы

~/.claude/skills/surrealdb-js/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/surrealdb-js/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о surrealdb-js

Как установить surrealdb-js в Claude Code?

Выполните команду npx skills add surrealdb/agent-skills --skill surrealdb-js -a claude-code. Файл навыка сохранится по пути ~/.claude/skills/surrealdb-js/SKILL.md.

Что делает скилл surrealdb-js?

Он передаёт агенту точные сигнатуры методов официальной библиотеки SurrealDB, правила безопасной параметризации запросов и примеры аутентификации.

Работают ли живые запросы через HTTP?

Нет, вызов db.live() не поддерживает HTTP. Для подписок в реальном времени нужно подключение по WebSocket (ws://...) или запуск встроенного движка.

Исходный текст

SKILL.md · MIT
---
name: surrealdb-js
description: "Using SurrealDB from JavaScript and TypeScript with the official surrealdb SDK, covering connecting (WebSocket/HTTP and embedded engines), authentication, CRUD, parameterized queries, and live queries. Use when connecting to SurrealDB from Node, Deno, Bun, or the browser, using the surrealdb npm package, or performing CRUD and real-time operations from JS/TS code. Triggers: surrealdb JS, surrealdb.js, new Surreal(), db.query, db.create, db.live, TypeScript SDK, npm i surrealdb."
metadata:
  author: surrealdb
  version: "0.2.0"
---

# SurrealDB JavaScript SDK

The official SDK (`surrealdb` on npm) works in Node.js, Deno, Bun, and the
browser. It connects to a remote SurrealDB instance over WebSocket/HTTP, or runs
an embedded engine in-process. Target the **latest** stable `surrealdb` release;
install without pinning (`npm i surrealdb`) unless the user requires a specific
version.

## Installation

```bash
npm i surrealdb
# or: pnpm i surrealdb / yarn add surrealdb / bun add surrealdb
```

## Connect & select namespace/database

Always `connect`, then `use` a namespace + database, then authenticate. Close
the connection when finished.

```ts
import { Surreal } from "surrealdb";

const db = new Surreal();
await db.connect("ws://127.0.0.1:8000/rpc");
await db.use({ namespace: "test", database: "test" });
await db.signin({ username: "root", password: "root" });

// ... work ...

await db.close();
```

Run a local server with `surreal start -u root -p root rocksdb:mydb` (or
in-memory with `surreal start -u root -p root`). To run SurrealDB in-process
with no server, see [references/embedded.md](references/embedded.md).

## Authentication

```ts
// Root / namespace / database users
await db.signin({ username: "root", password: "root" });
await db.signin({ namespace: "test", username: "ns_user", password: "..." });
await db.signin({ namespace: "test", database: "test", username: "db_user", password: "..." });

// Record (scope) access — sign in / sign up against a DEFINE ACCESS method
const token = await db.signin({
  namespace: "test",
  database: "test",
  access: "user",          // name of the access method
  variables: { email: "[email protected]", pass: "secret" },
});

await db.signup({
  namespace: "test",
  database: "test",
  access: "user",
  variables: { email: "[email protected]", pass: "secret" },
});

await db.authenticate(token); // re-auth with a stored JWT
await db.invalidate();        // log out the current session
const me = await db.info();   // info about the authenticated record user
```

## CRUD

Pass a table as a string (`"person"`) or a `RecordId` for a specific record.
See [references/data-types.md](references/data-types.md) for `RecordId`, `Table`,
`Duration`, `Decimal`, and other value classes.

```ts
import { RecordId } from "surrealdb";

interface Person { id: RecordId; name: string; age?: number; }

// Create (random id, or a specific RecordId)
await db.create<Person>("person", { name: "Tobie" });
await db.create<Person>(new RecordId("person", "tobie"), { name: "Tobie" });

// Select all from a table, or a single record
const people = await db.select<Person>("person");
const tobie = await db.select<Person>(new RecordId("person", "tobie"));

// Replace the whole record(s)
await db.update<Person>(new RecordId("person", "tobie"), { name: "Tobie", age: 30 });

// Insert or update (upsert)
await db.upsert<Person>(new RecordId("person", "tobie"), { name: "Tobie" });

// Merge partial data into record(s)
await db.merge<Person>("person", { active: true });

// JSON Patch a record
await db.patch(new RecordId("person", "tobie"), [
  { op: "replace", path: "/name", value: "Tobie M H" },
]);

// Bulk insert
await db.insert<Person>("person", [{ name: "A" }, { name: "B" }]);

// Graph relation:  person:tobie ->wrote-> article:surreal
await db.relate(new RecordId("person", "tobie"), "wrote", new RecordId("article", "surreal"));

// Delete record(s)
await db.delete("person");
await db.delete(new RecordId("person", "tobie"));
```

## Queries

`db.query<T>(sql, vars)` runs raw SurrealQL and returns an **array with one entry
per statement**. Always pass user input via bound parameters, never string
interpolation.

```ts
const [people, count] = await db.query<[Person[], number]>(
  `SELECT * FROM person WHERE age > $min;
   SELECT count() FROM person GROUP ALL;`,
  { min: 18 },
);

// Bind values and RecordIds as parameters
const [found] = await db.query<[Person[]]>(
  "SELECT * FROM person WHERE id = $who",
  { who: new RecordId("person", "tobie") },
);
```

Other helpers: `db.let(name, value)` / `db.unset(name)` set session parameters
usable as `$name` in later queries; `db.run(fnName, version, args)` invokes a
defined function; `db.queryRaw()` returns the unparsed RPC response (status +
timing per statement).

## Live queries

Subscribe to real-time changes on a table with `db.live()`. Requires a
WebSocket (or embedded) connection — not HTTP. See
[references/live-queries.md](references/live-queries.md).

```ts
const queryUuid = await db.live<Person>("person", (action, result) => {
  // action: "CREATE" | "UPDATE" | "DELETE" | "CLOSE"
  console.log(action, result);
});

await db.kill(queryUuid); // stop the subscription
```

## References

- [references/data-types.md](references/data-types.md) — `RecordId`, `Table`,
  `Duration`, `Decimal`, `Uuid`, geometry, and CBOR mapping.
- [references/embedded.md](references/embedded.md) — embedded engines via
  `@surrealdb/node` (RocksDB / SurrealKV / in-memory) and `@surrealdb/wasm`
  (in-memory / IndexedDB).
- [references/live-queries.md](references/live-queries.md) — `live`,
  `subscribeLive`, and `kill` patterns.

## Resources

- [SDK documentation](https://surrealdb.com/docs/sdk/javascript)
- [GitHub repository](https://github.com/surrealdb/surrealdb.js)

© surrealdb · MIT · surrealdb/agent-skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. CX Codex +1 511 300установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. CX Codex +1 104 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. CX Codex +1 65 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора7

surrealql Помогает писать и править запросы SurrealQL к SurrealDB: записи, схемы, графовые связи, живые запросы. Ставится одной командой. CX Codex +1 694установок surrealdb-vector Помогает агенту писать запросы векторного поиска в SurrealDB: индексы HNSW, KNN-оператор, оценка похожести. CX Codex +1 524установок surrealdb-python Скилл помогает писать Python-код для SurrealDB: подключаться к серверу по WebSocket или запускать базу прямо в процессе. Пригодится для CRUD-операций и работы со встроенным хранилищем. CX Codex +1 414установок surrealql-performance Скилл для ИИ-агентов, который подсказывает, как ускорить запросы SurrealDB: структура record ID, индексы, вычисляемые поля. Пригодится, когда запрос тормозит или сканирует лишние записи. CX Codex +1 416установок surrealql-functions Подсказывает агенту точные сигнатуры встроенных функций SurrealDB по установленной версии, а не по памяти модели. CX Codex +1 413установок surrealkit Скилл учит агента работать с SurrealKit — CLI для синхронизации схем SurrealDB, планирования миграций и генерации типов. CX Codex +1 400установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой