一键导入
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