Community코딩 & 개발github.com

24601/surreal-skills

SurrealDB Surrealism WASM 확장 개발. Rust 함수를 작성하고 WASM으로 컴파일한 후 데이터베이스 모듈로 배포합니다. surreal-skills 컬렉션의 일부입니다.

surreal-skills란 무엇인가요?

이 스킬은 SurrealDB 3.x에서 도입된 Surrealism 프레임워크를 사용하여 Rust로 작성된 사용자 정의 함수를 WebAssembly(WASM)로 컴파일하고 데이터베이스 모듈로 배포하는 방법을 제공합니다. 개발자는 `#[surrealism]` 매크로로 함수를 주석 처리하고, `surreal module compile` 명령어로 WASM 바이너리를 생성한 후 `DEFINE BUCKET`과 `DEFINE MODULE`을 통해 SurrealDB에 등록할 수 있습니다. 주요 사용 사례로는 사용자 정의 스칼라 함수, 테스트용 가짜 데이터 생성, 도메인 특화 로직(예: 언어 처리, 금융 모델링, 사용자 정의 인코딩), SurrealDB 핵심에 포함되지 않은 Rust 크레이트 기능 활용 등이 있습니다. 이 스킬은 Cursor, Claude Code, Codex 등 주요 AI 에이전트 플랫폼에서 사용 가능하며, SurrealDB CLI v3.1.4+와 Rust의 `wasm32-unknown-unknown` 타겟이 필요합니다. Surrealism은 현재 활발히 개발 중이며 API가 변경될 수 있으므로 GitHub 저장소를 통해 피드백을 제출할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealism

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Surrealism -- SurrealDB용 WASM 확장

SurrealDB 3의 새로운 기능입니다. Rust로 사용자 정의 함수를 작성하고 WebAssembly(WASM)로 컴파일한 후 SurrealQL에서 호출 가능한 네이티브 데이터베이스 모듈로 배포합니다.

전제 조건

  • Rust 툴체인(stable)과 wasm32-unknown-unknown 타겟
  • SurrealDB CLI v3.1.4+ (surreal module 하위 명령어가 포함된 surreal 바이너리)
  • SurrealQL의 DEFINE MODULE 및 DEFINE BUCKET 구문에 대한 이해

개발 워크플로우

1. 주석 처리 -- surrealism.toml + Rust 함수에 #[surrealism] 추가
2. 컴파일   -- surreal module compile  (.wasm 바이너리 생성)
3. 등록     -- SurrealQL에서 DEFINE BUCKET + DEFINE MODULE 실행

빠른 시작

# 새 Surrealism 프로젝트 생성
cargo new --lib my_extension
cd my_extension

# WASM 타겟 추가
rustup target add wasm32-unknown-unknown

# surrealism.toml 생성 (필수 매니페스트)
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML

# 확장 프로그램 작성 (#[surrealism]으로 함수 주석 처리)
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

#[surrealism]
fn greet(name: String) -> String {
    format!("Hello, {}!", name)
}
RUST

# SurrealDB CLI로 WASM 컴파일
surreal module compile

# SurrealDB에 등록
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- WASM 파일에 대한 접근 권한 부여
DEFINE BUCKET my_bucket;

-- 모듈 함수 등록
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';

-- 쿼리에서 함수 사용
SELECT my_extension::greet('World');

사용 사례

  • SurrealQL에서 호출 가능한 사용자 정의 스칼라 함수
  • 테스트용 가짜/모의 데이터 생성
  • 도메인 특화 로직 (언어 처리, 정량 금융, 사용자 정의 인코딩)
  • SurrealDB 핵심에 포함되기에는 너무 특화된 Rust 크레이트 기능 활용
  • 전체 텍스트 검색을 위한 사용자 정의 분석기

상태

Surrealism은 현재 활발히 개발 중이며 아직 안정화되지 않았습니다. API는 SurrealDB 3.x 릴리스 간에 변경될 수 있습니다. 피드백은 surrealdb/surrealdb 저장소의 GitHub 이슈/PR을 통해 제출해 주세요.

전체 문서

전체 안내는 메인 스킬의 규칙 파일을 참조하세요:

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

관련 스킬