К основному содержанию
скилл CX Codex

camerax — скилл для Claude Code: что делает и как установить

Помогает писать код камеры на Android через библиотеку CameraX. Подсказывает правильные паттерны для записи видео, миграции с Camera2 и работы с ML Kit.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add android/skills --skill camerax -a claude-code
Открыть на GitHub

Что делает camerax

Скилл задаёт агенту правила работы с библиотекой CameraX, утилитами Camera2Interop и библиотекой Media3. Он предотвращает типичные ошибки с неизменяемыми билдерами в API Android. Например, при настройке VideoCapture через метод prepareRecording вызов .withAudioEnabled() возвращает новый экземпляр, который легко потерять без явного переприсваивания переменной.

Внутри собраны готовые схемы переноса устаревших реализаций android.hardware.Camera и android.hardware.camera2 на современный стек Jetpack. Инструкции охватывают подключение MlKitAnalyzer, ручные настройки сенсора, съёмку в RAW и адаптацию интерфейса под складные смартфоны. Для тестирования скилл прямо запрещает моки из Mockito на сложных интерфейсах вроде ImageProxy, требуя писать фейковые объекты и проверять условия через Google Truth.

Запись звука сразу сломается без системного разрешения RECORD_AUDIO. Скилл принуждает агента проверять этот пермишен отдельно от доступа к самой камере и переводить все фоновые колбэки в главный поток перед обновлением UI.

Какие задачи решает

  • перенести старый код с Camera1 или Camera2 на современный CameraX
  • настроить запись видео в VideoCapture без потери звуковых параметров
  • подключить анализ кадров через MlKitAnalyzer
  • написать надёжные тесты с FakeCameraConfig без использования Mockito

Примеры запросов агенту

  • Помоги переписать вызов VideoCapture, чтобы включить запись звука без потери настроек билдера
  • Как перевести проект с Camera2 на CameraX и сохранить низкоуровневые параметры через Camera2Interop?
  • Напиши юнит-тест для ImageAnalysis с использованием FakeCameraConfig и ассертов Truth

Как установить camerax

1Через Skills CLI (Vercel)

npx skills add android/skills --skill camerax -a claude-code

2Вручную: положить файлы

~/.claude/skills/camerax/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/camerax/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о camerax

Как установить camerax в Claude Code?

Выполните команду npx skills add android/skills --skill camerax -a claude-code. Конфигурация запишется по пути ~/.claude/skills/camerax/SKILL.md.

Что делает скилл camerax?

Он направляет ИИ-агента при разработке Android-приложений для съёмки: задаёт архитектуру конвейеров CameraX, учит работе с многокамерными устройствами и складными экранами.

Почему скилл запрещает использовать Mockito для тестов камеры?

Сложные интерфейсы вроде ImageProxy требуют точного воспроизведения состояний жизненного цикла. Обычные моки здесь нестабильны, поэтому скилл требует собирать легковесные фейки и использовать проверки Google Truth.

Исходный текст

SKILL.md · Apache-2.0
---
name: camerax
description: Provide technical guidance for Android camera development with CameraX.
  Use when implementing camera features, handling asynchronous recording lifecycles,
  wiring low-level hardware interop using CameraX, or integrating ML Kit or Media3
  effects.
license: Complete terms in LICENSE.txt
metadata:
  author: Google LLC
  last-updated: '2026-10-08'
  keywords:
  - recipe
  - Android
  - Camera
  - Camera1
  - Camera2
  - CameraX
  - migration
  - Compose
  - guide
  - dependencies
  - PreviewView
  - CameraXViewfinder
  - ImageCapture
  - VideoCapture
  - ImageAnalysis.
---

This skill provides procedural guidance and standard patterns for building
camera applications on Android, with a focus on CameraX, including its
`Camera2Interop` utilities, and Media3 integrations.

## Core workflows

### Handling immutable API patterns

Various Android camera and media APIs, especially CameraX `VideoCapture`, use a
**fluent, immutable builder-like pattern** where methods return a new instance.
Failing to reassign these results in settings, such as audio, being ignored.

**Pattern: Reassignment is required**


```kotlin
// WRONG
run {
  val pending = recorder.prepareRecording(context, opts)
  pending.withAudioEnabled() // This returns a new instance which is ignored
  val active = pending.start(exec, listener)
}

// CORRECT
run {
  val pending = recorder.prepareRecording(context, opts)
      .withAudioEnabled() // Chaining works
  val active = pending.start(exec, listener)
}

// ALSO CORRECT
run {
  var pending = recorder.prepareRecording(context, opts)
  pending = pending.withAudioEnabled() // Reassignment
  val active = pending.start(exec, listener)
}
```

<br />

See [immutability](references/immutability.md) for a list of affected classes.

### Migrating to CameraX

When migrating legacy camera codebases to the CameraX Jetpack library:

- **Camera1 to CameraX** : For migrating legacy `android.hardware.Camera` implementations, surface handling, and manual lifecycles, see the [Camera1 migration guide](references/camera1-to-camerax.md).
- **Camera2 to CameraX** : For migrating more recent but verbose `android.hardware.camera2` implementations, session state callbacks, and interop patterns, see the [Camera2 migration guide](references/camera2-to-camerax.md).

### Comprehensive feature blueprinting

For multi-step features that involve multiple files and hardware-level wiring,
follow the [Structural Blueprinting](references/expert-blueprints.md) approach to avoid
system timeouts. Such complex features include:

- **Manual controls** : Break down into the `ViewModel` state, the controller layer, and the `Camera2Interop` wiring in the session.
- **RAW capture**: Separate JPEG and RAW output configurations into discrete build steps.
- **Custom effects** : Prefer `Media3Effect` or `SurfaceProcessor` over manual OpenGL pipelines unless absolute performance is required.
- **Low-light** : See [low-light](references/low-light.md) for Night Mode and LLB guidance.
- **Foldables** : See [foldables](references/foldables.md) for handling dynamic postures and hinge states.
- **XR, AR, and VR** : See [xr](references/xr.md) for spatial tracking, passthrough synchronization, and latency guardrails.
- **Thermals and power** : See [thermals](references/thermals.md) for managing `StreamUseCase` optimizations and `PowerManager` thermal states.
- **Testing and mocking** : See [testing](references/testing.md) for using `FakeCameraConfig`, handling asynchronous lifecycles, and validating analysis pipelines.
- **ML Kit spatial analysis** : See [mlkit-spatial](references/mlkit-spatial.md) for coordinate mapping, rotation logic, and mirrored lens handling.
- **Wear OS camera remote** : See [wear-os](references/wear-os.md) for circular UI constraints, Data Layer API syncing, and remote trigger logic.

See [expert-blueprints](references/expert-blueprints.md) for step-by-step guides.

### API discovery

Always use higher-level abstractions instead of low-level manual wiring:

- **Analysis** : Use `MlKitAnalyzer` instead of manual `ImageAnalysis.Analyzer`.
- **Filters and effects** : Use `Media3Effect` for standard post-processing.
- **Multi-camera** : Use `ConcurrentCamera` APIs for dual-stream setups.

See [modern-apis](references/modern-apis.md) for current recommendations.

### Code quality and architectural rules

Adhere to the following Android ecosystem standard patterns when building your
camera implementations:

- **Testing, fakes over mocks** : Avoid mocking libraries like `Mockito`, especially for multi-step CameraX interfaces like `ImageProxy`. Build "Fakes" to verify state rather than unreliable implementation details.
- **Google Truth assertions** : Use `assertThat` over standard `JUnit` assertions like `assertEquals` for improved readability.
- **Explicit test runners** : Always define an explicit `@RunWith` for test classes to ensure the CI environment executes them correctly.
- **Semantic UI merging** : When building custom camera controls in Compose, such as a button with an `Icon` and `Text`, use `semantics {
  mergeDescendants = true }` to ensure screen readers announce them as a single, coherent unit.

## Hardware and device diversity

Camera apps run on a wide variety of hardware, from mobile phones and
foldables to tablets, laptops, and even smart appliances. Have consideration
for the specific hardware the app is running on.

- **Form factors**: Account for screen size and orientation changes on foldables and tablets.
- **Multi-camera arrays**: Some devices have a rear-facing camera and a front-facing camera. Other devices have multiple rear-facing cameras, such as wide-angle and telephoto lenses.
- **Feature parity**: Features like flash or auto-focus behave differently across hardware. For example, CameraX handles both physical flash, back, and screen-based flash, front, and both must be considered when implementing flash functionality.

## Common pitfalls

- **Asynchronous lifecycles** : Check `isRecording` state before attempting to stop or pause. Handle `VideoRecordEvent.Start` for UI state updates, not just the initial call.
- **Thread safety**: Camera callbacks often run on background executors. Dispatch UI updates on the main thread.
- **Permission handling** : Check `CAMERA` permission; check for `RECORD_AUDIO` specifically when enabling audio in `VideoCapture`.

© Google LLC · Apache-2.0 · android/skills

Похожие скиллы

Всё по теме «Мобильная разработка» →
kotlin-coroutines-flows affaan-m Скилл подсказывает паттерны Kotlin Coroutines и Flow для Android и KMP. Пригодится при отладке отмены, параллельных задач и тестов. CX Codex +1 4 800установок android-kotlin alinaqi Подсказывает агенту структуру Android-проекта на Kotlin: Coroutines, Jetpack Compose, Hilt, Room и тесты на MockK. Включается сам при работе с файлами .kt. CX Codex +1 3 300установок sentry-android-sdk getsentry Скилл сканирует проект на Android и пошагово настраивает отслеживание ошибок, трейсинг и сессии в Sentry. Пригодится при подключении мониторинга в кодовую базу на Kotlin или Java. CX Codex +1 2 300установок android-jetpack-compose-cursorrules-prompt-file PatrickJS Правило для Cursor, которое задаёт агенту ориентиры по Android-разработке на Jetpack Compose: архитектура, состояние, тесты. ★ 41 011звёзд репо clerk-android clerk Скилл помогает агенту подключить Clerk к нативному Android-приложению на Kotlin и Jetpack Compose — через готовые AuthView/UserButton или свой поток авторизации. CX Codex +1 14 400установок android-clean-architecture affaan-m Подсказывает агенту, как раскладывать Android- и KMP-проект по слоям: модули, зависимости, UseCase, репозитории, работа с Room, SQLDelight и Ktor. CX Codex +1 5 200установок

Из того же набора24

appfunctions Находит пользовательские сценарии в коде Android и генерирует код на Kotlin для вызова функций через ИИ-агентов без открытия экрана приложения. CX Codex +1 1 600установок verified-email Ведёт агента по внедрению проверки email через Android Credential Manager — без одноразовых кодов. Пригодится, если в приложении есть регистрация или восстановление доступа. CX Codex +1 1 500установок play-policy-insights Проверяет код Android-приложения на соответствие правилам Google Play до отправки в стор. Находит скрытый сбор данных и необоснованные системные разрешения. CX Codex +1 1 300установок wear-compose-m3 Скилл ведёт агента по Wear OS Compose Material3: миграция с Material 2.5 и Horologist, готовые примеры компонентов, требования к сборке. CX Codex +1 1 200установок agp-9-upgrade Ведёт Android-проект с AGP 8 на Android Gradle Plugin 9: поднимает зависимости, переводит сборку на встроенный Kotlin и новый DSL. CX Codex +1 1 200установок android-profiler Скилл собирает и разбирает данные о производительности Android: от трейсов Perfetto и утечек памяти до зависаний UI и расхода батареи. CX Codex +1 1 000установок leanback-to-compose-tv-migration Скилл ведёт миграцию Android TV с Leanback и Android Views на Jetpack Compose for TV. Пригодится, когда переписываешь browse, settings или playback экран. CX Codex +1 772установок media3-cast-integration Встраивает поддержку Google Cast в Android-приложения через Jetpack Media3. Настраивает зависимости, манифест, плееры CastPlayer или RemoteCastPlayer и UI на Compose. CX Codex +1 771установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой