What problem does it solve? When writing Jac full-stack applications, developers need to know which code runs on the server, which ships to the browser, and which compiles to native — and why the compiler placed a declaration where it did. This Skill explains the inference rules so you can predict placement, fix misplaced code, and pin declarations explicitly when inference gets it wrong. ## Core Features & Use Cases - Inference rules: JSX and string-path npm imports mark code as client, extern C declarations seed native placement, and everything else defaults to server, with reference propagation pulling helpers along within a module. - Placement guarantees: def:pub endpoints, walkers, and node/edge archetypes never relocate; shared objects referenced from both sides become auto-shared wire types. - Explicit overrides: Use cl/sv/na block, statement, or file-extension markers to pin placement, such as keeping secrets server-side with sv glob. - Use Case: A client component throws JobProgress is not defined at mount because it constructs a shared archetype client-side — this Skill explains why and shows the T | None = None fix. ## Quick Start Ask the AI to explain why a Jac declaration landed in the wrong bundle or how to pin a helper server-side with sv.