android-jetpack-compose-cursorrules-prompt-file — правило для Cursor
Правило для Cursor, которое задаёт агенту ориентиры по Android-разработке на Jetpack Compose: архитектура, состояние, тесты.
.cursor/rules/android-jetpack-compose-cursorrules-prompt-file.mdcЧто делает android-jetpack-compose-cursorrules-prompt-file
Файл описывает, как агенту вести себя в Android-проекте на Jetpack Compose. Внутри — набор рекомендаций: слои domain, data и presentation, корутины и Flow для асинхронности, внедрение зависимостей через Hilt, однонаправленный поток данных со ViewModel и UI State, навигация средствами Compose. Отдельно перечислены правила по UI: remember и derivedStateOf, порядок модификаторов, превью-аннотации, темизация через MaterialTheme, состояния загрузки и ошибок.
Есть блок про тесты и производительность. Тесты — юнит-тесты для ViewModel и UseCase, UI-тесты на Compose testing framework, фейковые репозитории. Производительность — меньше рекомпозиций за счёт ключей, ленивые списки через LazyColumn и LazyRow, аккуратная работа с жизненным циклом.
Структура папок в файле помечена как справочная. Автор прямо просит не навязывать её, если в проекте уже своя организация, и подстраиваться под существующую архитектуру. Это стоит учесть до того, как правило начнёт править код: агент может потянуть проект к предложенной раскладке, если явно не сказать ему обратное. Установка — один файл в .cursor/rules/.
Правило не привязано к конкретной версии Compose или Kotlin, поэтому проверять его на актуальность в свежем проекте придётся самому.
Какие задачи решает
- держать слои domain, data и presentation в одном стиле
- перевести экраны на однонаправленный поток данных
- подключить Hilt без разъезжающихся модулей
- проверить, что рекомпозиции не лишние
- написать UI-тесты на Compose testing framework
Примеры запросов агенту
- добавь новый экран с ViewModel и UI State по правилам проекта
- отрефактори этот composable, чтобы уменьшить рекомпозиции
- напиши юнит-тест для UseCase с фейковым репозиторием
Как установить android-jetpack-compose-cursorrules-prompt-file
Вручную: положить файлы
.cursor/rules/android-jetpack-compose-cursorrules-prompt-file.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/android-jetpack-compose-cursorrules-prompt-file.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/android-jetpack-compose-cursorrules-prompt-file.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/android-jetpack-compose-cursorrules-prompt-file.mdВручную: положить файлы
.clinerules/android-jetpack-compose-cursorrules-prompt-file.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о android-jetpack-compose-cursorrules-prompt-file
Как установить android-jetpack-compose-cursorrules-prompt-file в Cursor?
Скопируйте файл в .cursor/rules/android-jetpack-compose-cursorrules-prompt-file.mdc. Больше шагов нет — Cursor подхватывает правила из этой папки.
Что делает это правило?
Задаёт агенту ориентиры по Android-разработке на Jetpack Compose: архитектура, состояние, навигация, тесты и производительность.
Оно перестроит структуру папок в моём проекте?
Структура в файле помечена как справочная. Автор просит адаптироваться к существующей организации проекта, а не навязывать свою.
Исходный текст
android-jetpack-compose-cursorrules-prompt-file.mdc · CC0-1.0
---
description: "Cursor rules for Android development with Jetpack Compose integration."
globs: **/*
alwaysApply: false
---
// Android Jetpack Compose .cursorrules
// Flexibility Notice
// Note: This is a recommended project structure, but be flexible and adapt to existing project structures.
// Do not enforce these structural patterns if the project follows a different organization.
// Focus on maintaining consistency with the existing project architecture while applying Jetpack Compose best practices.
// Project Architecture and Best Practices
const androidJetpackComposeBestPractices = [
"Adapt to existing project architecture while maintaining clean code principles",
"Follow Material Design 3 guidelines and components",
"Implement clean architecture with domain, data, and presentation layers",
"Use Kotlin coroutines and Flow for asynchronous operations",
"Implement dependency injection using Hilt",
"Follow unidirectional data flow with ViewModel and UI State",
"Use Compose navigation for screen management",
"Implement proper state hoisting and composition",
];
// Folder Structure
// Note: This is a reference structure. Adapt to the project's existing organization
const projectStructure = `
app/
src/
main/
java/com/package/
data/
repository/
datasource/
models/
domain/
usecases/
models/
repository/
presentation/
screens/
components/
theme/
viewmodels/
di/
utils/
res/
values/
drawable/
mipmap/
test/
androidTest/
`;
// Compose UI Guidelines
const composeGuidelines = `
1. Use remember and derivedStateOf appropriately
2. Implement proper recomposition optimization
3. Use proper Compose modifiers ordering
4. Follow composable function naming conventions
5. Implement proper preview annotations
6. Use proper state management with MutableState
7. Implement proper error handling and loading states
8. Use proper theming with MaterialTheme
9. Follow accessibility guidelines
10. Implement proper animation patterns
`;
// Testing Guidelines
const testingGuidelines = `
1. Write unit tests for ViewModels and UseCases
2. Implement UI tests using Compose testing framework
3. Use fake repositories for testing
4. Implement proper test coverage
5. Use proper testing coroutine dispatchers
`;
// Performance Guidelines
const performanceGuidelines = `
1. Minimize recomposition using proper keys
2. Use proper lazy loading with LazyColumn and LazyRow
3. Implement efficient image loading
4. Use proper state management to prevent unnecessary updates
5. Follow proper lifecycle awareness
6. Implement proper memory management
7. Use proper background processing
`;
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules