원클릭으로
spacetimedb-agent
SpacetimeDB module creation, table definitions, reducer functions, client subscriptions, and real-time sync patterns.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
SpacetimeDB module creation, table definitions, reducer functions, client subscriptions, and real-time sync patterns.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when user asks to 'lint agent configs', 'validate skills', 'check CLAUDE.md', 'validate hooks', 'lint MCP'. Validates agent configuration files against 385 rules.
Interprets Culture Index (CI) surveys, behavioral profiles, and personality assessment data. Supports individual profile interpretation, team composition analysis (gas/brake/glue), burnout detection, profile comparison, hiring profiles, manager coaching, interview transcript analysis for trait prediction, candidate debrief, onboarding planning, and conflict mediation. Accepts extracted JSON or PDF input via OpenCV extraction script.
Creates devcontainers with Claude Code, language-specific tooling (Python/Node/Rust/Go), and persistent volumes. Use when adding devcontainer support to a project, setting up isolated development environments, or configuring sandboxed Claude Code workspaces.
Analyzes smart contract codebases to identify state-changing entry points for security auditing. Detects externally callable functions that modify state, categorizes them by access level (public, admin, role-restricted, contract-only), and generates structured audit reports. Excludes view/pure/read-only functions. Use when auditing smart contracts (Solidity, Vyper, Solana/Rust, Move, TON, CosmWasm) or when asked to find entry points, audit flows, external functions, access control patterns, or privileged operations.
Draws 4 Tarot cards to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
Configures mewt or muton mutation testing campaigns — scopes targets, tunes timeouts, and optimizes long-running runs. Use when the user mentions mewt, muton, mutation testing, or wants to configure or optimize a mutation testing campaign.
| name | spacetimedb-agent |
| description | SpacetimeDB module creation, table definitions, reducer functions, client subscriptions, and real-time sync patterns. |
| version | 0.1.0 |
| author | Jero (LATTICE / MARPA Design Studios) |
| triggers | ["create a spacetimedb module","spacetimedb table","spacetimedb reducer","real-time database","spacetime sync"] |
| tools | ["Bash","Read","Write","Edit"] |
USE WHEN the user wants to create SpacetimeDB modules, define tables with real-time subscriptions, write reducer functions, or set up client-side sync for multiplayer/real-time applications.
Generates SpacetimeDB server modules (Rust or C#) and client integration code for real-time applications with automatic state synchronization.
use spacetimedb::{spacetimedb, ReducerContext, Identity, Timestamp};
#[spacetimedb(table)]
pub struct Player {
#[primarykey]
pub identity: Identity,
pub name: String,
pub x: f32,
pub y: f32,
pub online: bool,
}
#[spacetimedb(reducer)]
pub fn set_name(ctx: &ReducerContext, name: String) {
if let Some(mut player) = Player::filter_by_identity(&ctx.sender) {
player.name = name;
Player::update_by_identity(&ctx.sender, player);
}
}
#[spacetimedb(init)]
pub fn init(_ctx: &ReducerContext) {
// Called once when module is first published
}
#[spacetimedb(connect)]
pub fn on_connect(ctx: &ReducerContext) {
Player::insert(Player {
identity: ctx.sender,
name: String::new(),
x: 0.0,
y: 0.0,
online: true,
}).unwrap();
}
#[spacetimedb(disconnect)]
pub fn on_disconnect(ctx: &ReducerContext) {
if let Some(mut player) = Player::filter_by_identity(&ctx.sender) {
player.online = false;
Player::update_by_identity(&ctx.sender, player);
}
}
import { SpacetimeDBClient, Identity } from "@clockworklabs/spacetimedb-sdk";
const client = new SpacetimeDBClient("ws://localhost:3000", "my_module");
// Subscribe to all online players
client.subscribe(["SELECT * FROM Player WHERE online = true"]);
// Listen for table updates
Player.onInsert((player, reducerEvent) => {
console.log(`Player joined: ${player.name}`);
});
Player.onUpdate((oldPlayer, newPlayer, reducerEvent) => {
console.log(`Player moved: ${newPlayer.x}, ${newPlayer.y}`);
});
// Call a reducer
client.call("set_name", ["MyPlayer"]);
# Install
curl -fsSL https://install.spacetimedb.com | bash
# Create module
spacetime init --lang rust my_module
spacetime init --lang csharp my_module
# Publish
spacetime publish my_module
# Generate client bindings
spacetime generate --lang typescript --out-dir client/src/module_bindings
# View logs
spacetime logs my_module
# SQL query
spacetime sql my_module "SELECT * FROM Player"
#[spacetimedb(table)]
pub struct Item {
#[primarykey]
#[autoinc]
pub id: u64,
#[unique]
pub name: String,
pub owner: Identity,
}
#[spacetimedb(table)]
#[spacetimedb(scheduled(tick))]
pub struct TickSchedule {
#[primarykey]
#[autoinc]
pub id: u64,
pub scheduled_at: spacetimedb::ScheduleAt,
}
#[spacetimedb(reducer)]
pub fn tick(ctx: &ReducerContext, _schedule: TickSchedule) {
// Runs on schedule
}
#[primarykey] fieldfilter_by_* for indexed lookups, SQL subscriptions for complex queriesspacetime start before publishing to cloud