Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill yjs-getting-started명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | yjs-getting-started |
| description | > Use when this capability is needed. |
Sync Yjs documents over HTTP durable streams. No WebSocket infrastructure needed — uses standard HTTP with SSE or long-poll transport.
npm install @durable-streams/y-durable-streams yjs y-protocols lib0
yjs, y-protocols, and lib0 are peer dependencies — missing them causes
runtime import errors.
For the dev server (not needed if using Electric Cloud):
npm install -D @durable-streams/server
Two servers are needed: a Durable Streams storage server and a Yjs protocol server that sits in front of it.
import { DurableStreamTestServer } from "@durable-streams/server"
import { YjsServer } from "@durable-streams/y-durable-streams/server"
// 1. Storage server
const dsServer = new DurableStreamTestServer({ port: 4437 })
await dsServer.start()
// 2. Yjs protocol server (proxies to storage server)
const yjsServer = new YjsServer({
port: 4438,
dsServerUrl: `http://localhost:4437`,
})
await yjsServer.start()
console.log(`Yjs server ready at http://localhost:4438`)
import { YjsProvider } from "@durable-streams/y-durable-streams"
import * as Y from "yjs"
const doc = new Y.Doc()
const provider = new YjsProvider({
doc,
baseUrl: "http://localhost:4438/v1/yjs/my-service",
docId: "my-doc",
})
provider.on("synced", (synced) => {
if (synced) {
console.log("Document synced with server")
// Edit the document — changes sync automatically
doc.getText("content").insert(0, "Hello from Yjs!")
}
})
baseUrl is the service root. The provider builds URLs as
{baseUrl}/docs/{docId} internally — do not include /docs/ in baseUrl.
import { Awareness } from "y-protocols/awareness"
const awareness = new Awareness(doc)
awareness.setLocalStateField("user", {
name: "Alice",
color: "#ff0000",
})
const provider = new YjsProvider({
doc,
baseUrl: "http://localhost:4438/v1/yjs/my-service",
docId: "my-doc",
awareness,
})
// Listen for remote users
awareness.on("change", () => {
const users = Array.from(awareness.getStates().values())
.filter((s) => s?.user)
.map((s) => s.user.name)
console.log("Online:", users)
})
Use setLocalStateField("user", ...) (merges) not setLocalState(...) (replaces).
setLocalState overwrites all awareness fields, breaking cursor tracking or
other awareness data set by editor bindings.
Wrong:
npm install @durable-streams/y-durable-streams
Correct:
npm install @durable-streams/y-durable-streams yjs y-protocols lib0
Source: packages/y-durable-streams/package.json peerDependencies
/docs/ in baseUrlWrong:
new YjsProvider({
doc,
baseUrl: "http://localhost:4438/v1/yjs/my-service/docs/my-doc",
docId: "my-doc",
})
Correct:
new YjsProvider({
doc,
baseUrl: "http://localhost:4438/v1/yjs/my-service",
docId: "my-doc",
})
The provider appends /docs/{docId} internally. Doubling /docs/ produces 404s.
Source: packages/y-durable-streams/src/yjs-provider.ts docUrl()
// This will fail — YjsServer needs a running DS server
const yjsServer = new YjsServer({
port: 4438,
dsServerUrl: "http://localhost:4437", // Must be running first
})
YjsServer proxies all storage operations to the DS server. Start
DurableStreamTestServer (or Caddy) before starting YjsServer.
Source: durable-streams/durable-streams — distributed by TomeVault.