spacetimedb-serialization について
spacetimedb-serializationは、低レベルのエンコード、ワイヤーフォーマット、モジュールABIを扱う技術スキルです。カスタムツール、プロトコル調査、ABI作業、シリアライズのデバッグを行う開発者向けに、BSATN、SATS JSON、WebAssembly ABIの要点をまとめています。
主な機能
- 01BSATNのフィールド順と基本型のエンコードを解説
- 02SATS JSONの積型値形式を説明
- 03整数と浮動小数点数のエンコードを整理
- 04WebAssemblyモジュールABIを概説
- 05バッファ所有権とUTF-8の注意点を提示
活用シーン
- 01BSATNシリアライズデータのデバッグ
- 02SATS JSON表現と精度リスクの確認
- 03WebAssemblyモジュールABIの作業
- 04カスタムツール向けワイヤーフォーマットの分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-serializationインストール後、Claude Code で/spacetimedb-serializationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/bsatn.mdsats-json.mdwebassembly-abi.md詳細
低レベルのエンコーディング、ワイヤ形式、モジュール ABI に関する作業には、このスキルを使用してください。
エンコーディングの基本事項
- タスクがカスタムツールの開発、プロトコルの調査、ABI 作業、またはシリアライズのデバッグであることが明確な場合を除き、生成済みの SDK やモジュール API を優先してください。
- BSATN は、積型の値をフィールドの値として順番にエンコードします。フィールド名はエンコードされません。
- BSATN は、文字列を
u32のバイト長と、それに続く UTF-8 バイト列としてエンコードします。 - BSATN は、整数および浮動小数点プリミティブのペイロードをリトルエンディアン形式でエンコードします。浮動小数点数には、生の IEEE ビット表現が使用されます。
- SATS JSON の積型の値は、フィールド順の配列またはフィールド名を使ったオブジェクトとして表現できます。
- SATS JSON は整数型を JSON の数値としてエンコードするため、通常の JavaScript の数値処理では、大きな 64 ビット、128 ビット、256 ビットの値の精度が失われることがあります。
- 和型の値はタグ付きユニオンです。タグは形式に応じて、バリアントのインデックスまたは名前になります。
ABI に関する注意事項
- WebAssembly ABI の関数は
wasm32上で C ABI を使用し、多くの場合、ポインターと長さのペアを介してデータをやり取りします。 - ほとんどのホスト関数は
u16を返し、0は成功を意味します。出力は out ポインターを介して書き込まれます。 - UTF-8 の処理でデータが失われる場合があります。無効なバイトは置換されることがあります。
- バッファー関数には明示的な所有権ルールがあります。消費済みのホストバッファーを再利用しないでください。
リファレンスマップ
| 必要な情報 | 開く |
|---|---|
| BSATN | references/bsatn.md |
| SATS JSON | references/sats-json.md |
| WebAssembly モジュール ABI | references/webassembly-abi.md |
ガイダンス
- ユーザーのタスクがシリアライズ、ABI、またはカスタムツールに関するものであることが明確な場合を除き、高レベルの SDK とモジュール API を優先してください。
- バイトレベルの例は、リファレンスの表記法に沿ったものにしてください。
- 通常のクライアント/サーバーコードの場合は、関連する SDK、リデューサー、テーブル、またはプロシージャのスキルに案内してください。
コメント
Markdown 対応