Explain Starknet components, embedding into contracts, and component interfaces; use when a request involves reusable contract logic or component-based design in Cairo.
Installs into .claude/skills of the current project.
Are you the author of Cairo Components?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-cairo-components)
---
name: cairo-components
description: Explain Starknet components, embedding into contracts, and component interfaces; use when a request involves reusable contract logic or component-based design in Cairo.
---
# Cairo Components
## Overview
Explain how to define, embed, and use components to share contract logic safely.
## Quick Use
- Read `references/components.md` before answering.
- Use `#[starknet::component]` and `component!` for embedding.
- Show both embeddable external functions and internal functions.
## Response Checklist
- Define component storage with `#[storage]` and an `Event` enum.
- Use `#[embeddable_as]` on impls to expose entry points.
- Embed component storage and events in the host contract.
- Add `#[abi(embed_v0)]` impl aliases when embedding.
## Example Requests
- "How do I create a reusable component?"
- "How do I embed a component into a contract?"
- "What is the difference between embeddable and internal component functions?"