expo-ui-jetpack-compose — скилл для Codex: Jetpack Compose в Expo
Скилл подсказывает агенту, как писать нативные Android-интерфейсы через @expo/ui/jetpack-compose в приложении Expo.
npx skills add openai/plugins --skill expo-ui-jetpack-compose -a codexЧто делает expo-ui-jetpack-compose
Скилл описывает работу с пакетом @expo/ui/jetpack-compose: компоненты берутся из @expo/ui/jetpack-compose, модификаторы — из @expo/ui/jetpack-compose/modifiers. API повторяет Jetpack Compose, поэтому агент опирается на знание Compose и Material Design 3, когда выбирает компонент или модификатор. Любое дерево оборачивается в Host: <Host matchContents> даёт размер по содержимому, <Host style={{ flex: 1 }}> нужен, когда размер задаётся явно, например для родителя LazyColumn.
Инструкции действуют только для SDK 55. Для других версий скилл отправляет к документации Expo UI по нужной версии. Перед использованием компонента агент читает .d.ts-файлы пакета, чтобы уточнить API: путь ищется командой node -e "console.log(path.dirname(require.resolve('@expo/ui/jetpack-compose')))", дальше открывается {ComponentName}/index.d.ts. Документацию компонента или модификатора скилл тоже советует подтянуть перед реализацией.
Ставится пакет командой npx expo install @expo/ui, после чего нужна нативная пересборка через npx expo run:android. Для списков вместо ScrollView и FlatList из react-native берётся LazyColumn, иконки — <Icon source={require('./icon.xml')} size={24} /> с Android XML vector drawable; файлы кладутся в assets/, Metro собирает .xml без правок конфига. Если проект живёт на другой версии SDK, инструкции не подойдут — это повод свериться с документацией своей версии.
Какие задачи решает
- собрать экран на компонентах Jetpack Compose внутри Expo-приложения
- выбрать между
LazyColumnиFlatListдля прокручиваемого списка - подключить Android XML vector drawable как иконку
- уточнить точную сигнатуру компонента или модификатора по
.d.ts - задать размер дерева Compose через
Host
Примеры запросов агенту
- Собери экран настроек на компонентах из
@expo/ui/jetpack-composeсHost matchContents - Замени
FlatListнаLazyColumnи оберни его в<Host style={{ flex: 1 }}> - Добавь иконку из
assets/icons/wifi.xmlчерез компонентIcon
Как установить expo-ui-jetpack-compose
1Через Skills CLI (Vercel)
npx skills add openai/plugins --skill expo-ui-jetpack-compose -a codex2Вручную: положить файлы
.agents/skills/expo-ui-jetpack-compose/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add openai/plugins --skill expo-ui-jetpack-compose -a claude-code2Вручную: положить файлы
~/.claude/skills/expo-ui-jetpack-compose/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/expo-ui-jetpack-compose/
Вручную: положить файлы
.cursor/skills/expo-ui-jetpack-compose/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install openai/plugins expo-ui-jetpack-compose2Вручную: положить файлы
.github/skills/expo-ui-jetpack-compose/SKILL.mdКомандой платформы
gemini skills install https://github.com/openai/plugins --path plugins/expo/skills/expo-ui-jetpack-composeВручную: положить файлы
.devin/skills/expo-ui-jetpack-compose/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Скиллы Codex: как установить, где лежат и как вызвать
Вопросы о expo-ui-jetpack-compose
Как установить expo-ui-jetpack-compose в Claude?
Выполните npx skills add openai/plugins --skill expo-ui-jetpack-compose, затем npx skills add openai/plugins --skill expo-ui-jetpack-compose -a codex. После этого скилл лежит в .agents/skills/expo-ui-jetpack-compose/SKILL.md.
Что делает expo-ui-jetpack-compose?
Объясняет агенту, как использовать Views и модификаторы Jetpack Compose в приложении Expo через пакет @expo/ui/jetpack-compose, включая обёртку Host и чтение типов перед вызовом API.
Для какой версии SDK подходит этот скилл?
Инструкции рассчитаны на SDK 55. Для других версий скилл советует смотреть документацию Expo UI Jetpack Compose по соответствующей версии.
Исходный текст
SKILL.md · MIT
---
name: expo-ui-jetpack-compose
description: "`@expo/ui/jetpack-compose` package lets you use Jetpack Compose Views and modifiers in your app."
---
> The instructions in this skill apply to SDK 55 only. For other SDK versions, refer to the Expo UI Jetpack Compose docs for that version for the most accurate information.
## Installation
```bash
npx expo install @expo/ui
```
A native rebuild is required after installation (`npx expo run:android`).
## Instructions
- Expo UI's API mirrors Jetpack Compose's API. Use Jetpack Compose and Material Design 3 knowledge to decide which components or modifiers to use. If you need deeper Jetpack Compose or Material 3 guidance (e.g. which component to pick, layout patterns, theming), consult current Jetpack Compose and Material Design 3 documentation before implementing.
- Components are imported from `@expo/ui/jetpack-compose`, modifiers from `@expo/ui/jetpack-compose/modifiers`.
- **Always read the `.d.ts` type files** to confirm the exact API before using a component or modifier. Run `node -e "console.log(path.dirname(require.resolve('@expo/ui/jetpack-compose')))"` to locate the package, then read the relevant `{ComponentName}/index.d.ts` files. This is the most reliable source of truth.
- When about to use a component, fetch its docs to confirm the API - https://docs.expo.dev/versions/v55.0.0/sdk/ui/jetpack-compose/{component-name}/index.md
- When unsure about a modifier's API, refer to the docs - https://docs.expo.dev/versions/v55.0.0/sdk/ui/jetpack-compose/modifiers/index.md
- Every Jetpack Compose tree must be wrapped in `Host`. Use `<Host matchContents>` for intrinsic sizing, or `<Host style={{ flex: 1 }}>` when you need explicit size (e.g. as a parent of `LazyColumn`). Example:
```jsx
import { Host, Column, Button, Text } from "@expo/ui/jetpack-compose";
import { fillMaxWidth, paddingAll } from "@expo/ui/jetpack-compose/modifiers";
<Host matchContents>
<Column verticalArrangement={{ spacedBy: 8 }} modifiers={[fillMaxWidth(), paddingAll(16)]}>
<Text style={{ typography: "titleLarge" }}>Hello</Text>
<Button onPress={() => alert("Pressed!")}>Press me</Button>
</Column>
</Host>;
```
## Key Components
- **LazyColumn** — Use instead of react-native `ScrollView`/`FlatList` for scrollable lists. Wrap in `<Host style={{ flex: 1 }}>`.
- **Icon** — Use `<Icon source={require('./icon.xml')} size={24} />` with Android XML vector drawables. To get icons: go to [Material Symbols](https://fonts.google.com/icons), select an icon, choose the Android platform, and download the XML vector drawable. Save these as `.xml` files in your project's `assets/` directory (e.g. `assets/icons/wifi.xml`). Metro bundles `.xml` assets automatically — no metro config changes needed.
© Expo Team · MIT · openai/plugins