
Customizing Agent Native
How to configure, compose, or eject Agent-Native features into app-owned code.
Install
npx skills add BuilderIO/agent-native --skill customizing-agent-native -g -a claude-code -y- Repository
- BuilderIO/agent-native7.6k
- Category
- Design
- Updated
- 3d ago
- License
- MIT
- Context cost
- Mediumabout 2,312 tokens
- Runs scripts
- No, instructions only
What it does
How to configure, compose, or eject Agent-Native features into app-owned code. Use when overriding shared components or integrations, customizing a template, adding UI to chat or headless apps, or inspecting package source.
Customizing Agent-Native
Rule
Start with the app's registered design system and local UI adapters, then use
the public feature's props, semantic components, controller, product slots,
and callbacks. If those seams are not enough, use the eject CLI to transfer
the smallest supported feature into the app and make that copy app-owned.
Never edit node_modules, deep-import a private source file at runtime, or
patch an @agent-native/* package.
Use this order:
- Set brand tokens with the build-time theme configuration when tokens are enough.
- Register company components in
app/design-system.tswithdefineDesignSystem, then pass that definition toToolkitProvider. - Configure a public feature through its semantic components, headless controller, and product-level render slots.
- Compose app primitives behind the app's local UI adapter layer.
- Eject the smallest feature into app-owned source.
- Propose a new Toolkit seam when the same override is useful in two apps.
Ejection is for intentional product customization, not for hiding an upgrade failure or replacing Core runtime behavior.
Use A Company Design System
Keep the explicit, typed registration seam in app/design-system.ts:
import { defineDesignSystem } from "@agent-native/toolkit/design-system";
import {
AcmeActionButtonAdapter,
AcmeDialogAdapter,
} from "./design-system/acme-adapter";
export const designSystem = defineDesignSystem({
name: "Acme",
components: {
ActionButton: AcmeActionButtonAdapter,
Dialog: AcmeDialogAdapter,
},
});
Adapters translate the semantic Toolkit contract into company component props.
They are ordinary React components and may use MUI-style providers, React Aria,
CSS modules, CSS-in-JS, or another styling runtime. className and style are
optional interoperability hooks, not Tailwind or CVA requirements.


