What problem does it solve? Adding a new component to gz-sim involves several easy-to-miss steps: creating a header-only wrapper around the Component template, choosing a unique tag class, deciding on serialization, registering with ComponentFactory, and updating the CMake header list. This Skill walks through each decision and provides copy-ready templates so nothing is forgotten. ## Core Features & Use Cases - Decision checklist: Guides the choice of data type, whether serialization is needed, and whether Cmd/Reset companion components are required. - Header templates: Provides ready-to-adapt C++ templates for both plain components and components with custom serializers using gz::msgs types. - Build and test plumbing: Covers adding the header to include/gz/sim/components/CMakeLists.txt, writing component tests, and updating Migration.md for public API changes. - Use Case: When implementing a new physics feature that needs per-entity state, use this Skill to generate the component header, register it for logging and replay, and wire it into the build correctly on the first attempt. ## Quick Start Ask the assistant to add a new gz-sim component that stores a double value and needs to be logged and replayed.