What problem does it solve? Values crossing a JSON boundary lose their types: a Date pushed onto a queue comes back as a string, JSON.parse returns any, and component props drift out of sync with the data functions that feed them. This Skill documents a types-only package that names both sides of that boundary so the compiler catches the mismatch. ## Core Features & Use Cases - JSON boundary typing: JSONSerializable constrains what can be written (including values with toJSON like Date and URL), JSONValue types what is read back, and JSONSerialized<T> derives the post-round-trip shape of a written type. - Async and type-level utilities: ResolvedType<T> unwraps what an async function resolves to, JSONPrimitive names scalar leaves, and IsAny<T> branches on values typed as any. - Use Case: When constraining a queue message or cache entry, use JSONValue as a generic bound so invalid values like Date are rejected at compile time while the caller's literal shape is preserved. ## Quick Start Add @sdxc/types as a workspace dependency and import the JSONValue type to constrain a function that enqueues JSON-safe payloads.