spacetimedb-serialization
Installation
SKILL.md
Use this skill for low-level encoding, wire formats, and module ABI work.
Core encoding facts
- Prefer generated SDKs and module APIs unless the task is explicitly custom tooling, protocol inspection, ABI work, or serialization debugging.
- BSATN encodes product values as field values in order; field names are not encoded.
- BSATN encodes strings as
u32byte length followed by UTF-8 bytes. - BSATN encodes integer and float primitive payloads in little-endian form; floats use their raw IEEE bit representation.
- SATS JSON product values can be arrays by field order or objects by field name.
- SATS JSON encodes integer types as JSON numbers, so large 64-bit, 128-bit, and 256-bit values can lose precision in normal JavaScript number handling.
- Sum values are tagged unions; the tag is the variant index or name depending on the format.
ABI cautions
- WebAssembly ABI functions use the C ABI on
wasm32and often communicate through pointer/length pairs. - Most host functions return
u16, with0meaning success; outputs are written through out pointers. - Some UTF-8 handling is lossy; invalid bytes may be replaced.
- Buffer functions have explicit ownership rules. Do not reuse consumed host buffers.