# Cairo Components

> Explain Starknet components, embedding into contracts, and component interfaces; use when a request involves reusable contract logic or component-based design in Cairo.

- Skill: `teddyjfpender/cairo-components` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add teddyjfpender/cairo-components`
- Raw SKILL.md: https://api.skillmd.com/api/skills/teddyjfpender/cairo-components/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: teddyjfpender (https://skillmd.com/u/teddyjfpender)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/teddyjfpender/cairo-components

---


# 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?"

