cli について
SpacetimeDB CLIでモジュールを開発し、データベースを管理する開発者向けのスキルです。プロジェクトの初期化、ビルド、バインディング生成、公開、クエリ、サーバー管理を扱います。
主な機能
- 01プロジェクトの初期化とビルド
- 02クライアント用・モジュール用バインディング生成
- 03データベースの公開
- 04SQLクエリとreducerの実行
- 05サーバーと認証の管理
活用シーン
- 01SpacetimeDBモジュールプロジェクトの開始
- 02クライアント用またはモジュール用バインディングの生成
- 03ローカルまたはクラウドサーバーへの公開
- 04データベースデータの確認と管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ clockworklabs/ spacetimedb --skill cliインストール後、Claude Code で/cliを入力して読み込まれたか確認します。
詳細
SpacetimeDB CLI
spacetime CLI ツールを使用したプロジェクトの初期化、モジュールのビルド、データベースの公開、データのクエリ、サーバーの管理、CLI の問題のトラブルシューティングについてサポートが必要な場合に、このスキルを使用してください。
クイックリファレンス
プロジェクトの初期化と開発
# Initialize new project
spacetime init my-project --lang rust|csharp|typescript|cpp
spacetime init my-project --template <template-id>
# Build module
spacetime build # release build
spacetime build --debug # faster iteration, slower runtime
# Dev mode (auto-rebuild, auto-publish, generates bindings)
spacetime dev
spacetime dev --client-lang typescript --module-bindings-path ./client/src/module_bindings
# Generate client bindings
spacetime generate --lang typescript|csharp|rust --out-dir ./bindings --module-path ./server
spacetime generate --lang unrealcpp --uproject-dir ./MyGame --module-path ./server --unreal-module-name MyGame
クライアントとモジュールのバインディング
spacetime generate --bindings client(デフォルト)は、データベースに接続するクライアント向けのバインディングを生成します。--bindings module は、非同期 IDC を介して別の呼び出し先データベースのリデューサーを呼び出すために、呼び出し元データベースモジュール内で使用するレシーバーバインディングを生成します。Rust と TypeScript のモジュールバインディングがサポートされています。C#/C++ のモジュールバインディングはまだ実装されていません。unrealcpp はクライアント専用です。cpp はモジュールモードでのみ使用できます。
spacetime.json では、呼び出し元データベースごとに、継承されない dependencies 配列に独自の module-path と依存関係の name を指定し、さらに呼び出し先モジュールの module-path または database を指定する必要があります。database の参照は、同じ設定内にある別のターゲットのローカルソース/ビルド設定を解決します。実行中のデータベースのスキーマを取得するものではありません。呼び出し先モジュールのソースを直接指定した場合は、そちらが優先されます。依存関係によって呼び出し先データベースが公開されたり、呼び出し元モジュールのビルド設定が継承されたりすることはありません。generate <calling-database> は、通常の generate エントリ(デフォルトではクライアントバインディング)と dependencies(モジュールバインディングを自動生成)の両方を処理します。依存関係に対して --bindings フラグや 2 つ目の generate エントリは必要ありません。依存関係では、モジュールバインディングの言語は呼び出し元モジュールの言語がデフォルトとなり、Rust/TypeScript の出力先は <calling module-path>/src/remote_bindings がデフォルトとなります。設定の out-dir を明示した場合、設定ファイルからの相対パスになります。通常の generate エントリで "bindings": "module" を選択できますが、依存関係用の言語や出力先のデフォルトは適用されません。CLI の --bindings による上書きは、生成エントリを 1 つだけ選択した場合に限り使用できます。
dev は、呼び出し元モジュールをビルドする前にルート依存関係のみを生成し、そのソースパスを監視します。子ターゲットはソースの検索に使用できますが、依存関係の再帰的な生成には使用されません。--skip-generate はレシーバー/クライアントの生成と、レシーバーのみを対象とする監視をスキップします。--skip-publish ではスキップされません。例については、https://spacetimedb.com/docs/cli-reference/spacetime-json#receiver-dependencies を参照してください。
公開とデプロイ
# Publish to Maincloud (default)
spacetime publish my-database --yes
# Publish to local server
spacetime publish my-database --server local --yes
# Clear database and republish
spacetime publish my-database --delete-data=always --yes
データベースの操作
# SQL queries
spacetime sql my-database "SELECT * FROM users"
spacetime sql my-database --interactive # REPL mode
# Call reducers (each argument is a separate positional arg)
spacetime call my-database my_reducer '"value"' '123'
# Subscribe to changes
spacetime subscribe my-database "SELECT * FROM users" --num-updates 10
# View logs
spacetime logs my-database -f # follow logs
spacetime logs my-database -n 100 # up to 100 log lines
# Describe schema
# (without --json, output is human-readable text)
spacetime describe my-database --json
spacetime describe my-database tables --json # also views, reducers, procedures, routes, env, types
spacetime describe my-database tables users --json
spacetime describe my-database reducers my_reducer --json
データベースの管理
# List databases
spacetime list
# Delete database
spacetime delete my-database
# Rename database
spacetime rename <database-identity> --to new-name
サーバーの管理
# List configured servers
spacetime server list
# Add server
spacetime server add local --url http://localhost:3000 --default
spacetime server add myserver --url https://my-spacetime.example.com
# Set default server
spacetime server set-default local
# Test connectivity
spacetime server ping local
# Start local instance
spacetime start
# Clear local data
spacetime server clear
認証
# Login (opens browser)
spacetime login
# Login with token
spacetime login --token <token>
# Show login status
spacetime login show
# Logout
spacetime logout
デフォルトサーバー
| 名前 | URL | 説明 |
|---|---|---|
maincloud | https://maincloud.spacetimedb.com | 本番環境のクラウド(デフォルト) |
local | http://127.0.0.1:3000 | ローカル開発サーバー |
共通フラグ
| フラグ | 短縮形 | 説明 |
|---|---|---|
--server | -s | 接続先サーバー(ニックネーム、ホスト名、URL) |
--yes | -y | 非対話モード(確認をスキップ) |
--anonymous | 匿名 ID を使用 | |
--module-path | -p | モジュールプロジェクトへのパス |
--no-config | spacetime.json のプロジェクト設定を無視 |
トラブルシューティング
「Not logged in」
spacetime login
# Or use --anonymous for public operations
「Server not responding」
spacetime server ping <server>
# For local: ensure spacetime start is running
「Schema conflict」
# Clear data and republish
spacetime publish my-db --delete-data=always --yes
「Build failed」
# Check Rust/C# toolchain
rustup show
# For Rust modules, ensure wasm32-unknown-unknown target
rustup target add wasm32-unknown-unknown
モジュールの言語
サーバー側(モジュール): Rust、C#、TypeScript、C++
クライアント SDK: TypeScript、C#、Rust、Unreal Engine
CLI の generate ターゲット: TypeScript、C#、Rust、Unreal C++