mcpField
C
cli

cli

github.com/clockworklabsデータ・データベース25.5k122 回インストール1 日前に更新
リポジトリ

cli について

SpacetimeDB CLIでモジュールを開発し、データベースを管理する開発者向けのスキルです。プロジェクトの初期化、ビルド、バインディング生成、公開、クエリ、サーバー管理を扱います。

主な機能

  1. 01プロジェクトの初期化とビルド
  2. 02クライアント用・モジュール用バインディング生成
  3. 03データベースの公開
  4. 04SQLクエリとreducerの実行
  5. 05サーバーと認証の管理

活用シーン

  1. 01SpacetimeDBモジュールプロジェクトの開始
  2. 02クライアント用またはモジュール用バインディングの生成
  3. 03ローカルまたはクラウドサーバーへの公開
  4. 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説明
maincloudhttps://maincloud.spacetimedb.com本番環境のクラウド(デフォルト)
localhttp://127.0.0.1:3000ローカル開発サーバー

共通フラグ

フラグ短縮形説明
--server-s接続先サーバー(ニックネーム、ホスト名、URL)
--yes-y非対話モード(確認をスキップ)
--anonymous匿名 ID を使用
--module-path-pモジュールプロジェクトへのパス
--no-configspacetime.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++

コメント