mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2026-02-05 03:32:18 +00:00
feat: добавлена новый skill flutter_dev и документация (#46)
This commit is contained in:
32
.agent/skills/flutter_dev/SKILL.md
Normal file
32
.agent/skills/flutter_dev/SKILL.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
name: flutter_dev
|
||||
description: Скилл для разработки Flutter-приложений по стандартам компании Friflex. Используйте этот скилл при написании кода, создании новых фич, проведении ревью или настройке архитектуры проекта. Включает правила именования, структуру слоев (data/domain/presentation) и стандарты Git.
|
||||
---
|
||||
|
||||
# Flutter Dev Skill (Friflex Standards)
|
||||
|
||||
Этот скилл содержит набор правил и инструкций для разработки Flutter-приложений. Основная цель — соблюдение единого стиля кода, архитектурных подходов и процессов разработки.
|
||||
|
||||
## Основные принципы
|
||||
|
||||
1. **Архитектура**: Проект делится на слои: `data`, `domain` и `presentation`.
|
||||
2. **Именование**: Интерфейсы всегда начинаются с префикса `I`. Экраны имеют постфикс `Screen`.
|
||||
3. **Документация**: Весь публичный API должен быть покрыт документацией `///`.
|
||||
4. **Git**: Коммиты и PR на русском языке по стандарту Conventional Commits.
|
||||
|
||||
## Справочники (References)
|
||||
|
||||
Для получения детальной информации по конкретным областям обращайтесь к следующим файлам:
|
||||
|
||||
- [Правила именования и стиль кода](references/codestyle.md) — именование классов, методов, переменных и структура файлов.
|
||||
- [Структура проекта и слои](references/project_structure.md) — детальное описание папок и взаимодействия между уровнями архитектуры.
|
||||
- [Работа с Git и ветками](references/gitflow.md) — типы коммитов, именование веток и процессы релизов.
|
||||
- [Документирование кода](references/documentation.md) — стандарты `///`, использование шаблонов и правила для TODO.
|
||||
- [Стандарты проекта](references/project_standards.md) — управление сгенерированными файлами, `pubspec.lock` и сборка.
|
||||
|
||||
## Когда использовать этот скилл
|
||||
|
||||
- При создании новых классов или файлов (проверка именования).
|
||||
- При реализации новой feature (выбор структуры папок).
|
||||
- Перед созданием Pull Request (проверка соответствия стандартам).
|
||||
- При возникновении вопросов по архитектурному взаимодействию слоев.
|
||||
34
.agent/skills/flutter_dev/references/codestyle.md
Normal file
34
.agent/skills/flutter_dev/references/codestyle.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Правила именования и стиль кода
|
||||
|
||||
Мы придерживаемся рекомендаций **Effective Dart** и внутренних правил компании.
|
||||
|
||||
## Именование
|
||||
|
||||
### Интерфейсы
|
||||
- Начинаются с заглавной буквы **I**.
|
||||
- Пример: `IAuthRepository`, `IUserRepository`.
|
||||
|
||||
### Классы и файлы
|
||||
- **Классы**: `UpperCamelCase`. Приватные — с префиксом `_`. Должны содержать тип в конце (например, `UserEntity`).
|
||||
- **Файлы**: `snake_case`. Структура: `[раздел]_[тип].dart`. Пример: `user_details_screen.dart`.
|
||||
|
||||
### Репозитории
|
||||
- Основная реализация — без постфикса (`AuthRepository`).
|
||||
- Альтернативные реализации — с постфиксами: `Network`, `Local`, `Mock`.
|
||||
|
||||
### Виджеты
|
||||
- **Экраны**: Постфикс `Screen` (`ShopListScreen`).
|
||||
- **Контент экрана**: Постфикс `View` (`ShopListView`).
|
||||
- **Глобальные виджеты**: Префикс `App` (`AppButton`).
|
||||
- В названии **не должно** быть слова `widget`.
|
||||
|
||||
## Методы и переменные
|
||||
- **Методы**: Начинаются с глагола (`fetch`, `put`, `update`, `delete`). Не должны содержать `And/Or`.
|
||||
- **Переменные/Константы**: `lowerCamelCase`.
|
||||
|
||||
## Структура класса (порядок элементов)
|
||||
1. Конструкторы (default, named, factory).
|
||||
2. Static элементы (methods, const fields).
|
||||
3. Инстанс-поля (final, потом обычные; public, потом private).
|
||||
4. Геттеры/Сеттеры.
|
||||
5. Методы (overridden, public, protected, private).
|
||||
29
.agent/skills/flutter_dev/references/documentation.md
Normal file
29
.agent/skills/flutter_dev/references/documentation.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Документирование кода
|
||||
|
||||
## Документация (///)
|
||||
- Оформляется с использованием `///` над объектом.
|
||||
- Обязательна для всех классов, конструкторов, полей, методов и фабрик.
|
||||
- Должна быть краткой, емкой и указывать на назначение.
|
||||
|
||||
### Шаблоны
|
||||
- **Классы**: Используйте `{@template name}` и `{@endtemplate}`.
|
||||
- **Конструкторы**: Если один — `{@macro name}`.
|
||||
- **Параметры**: Используйте ссылки в квадратных скобках `[paramName]`.
|
||||
|
||||
### Пример метода
|
||||
```dart
|
||||
/// Метод для расчета температуры.
|
||||
/// Принимает:
|
||||
/// - [grad] - параметр для расчета.
|
||||
/// Возвращает температуру в градусах. Null при ошибке.
|
||||
int? calcTemperature({required int grad}) { ... }
|
||||
```
|
||||
|
||||
## Комментарии (//)
|
||||
- Используются только там, где код не очевиден.
|
||||
- Не должны повторять то, что и так понятно из имен переменных или структуры.
|
||||
|
||||
## TODO
|
||||
- Формат определяется линтером.
|
||||
- Указывать имя разработчика в контексте.
|
||||
- Указывать ссылку на задачу в скобках, если она известна.
|
||||
26
.agent/skills/flutter_dev/references/gitflow.md
Normal file
26
.agent/skills/flutter_dev/references/gitflow.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Работа с Git и ветками
|
||||
|
||||
## Pull Requests
|
||||
- Язык описания — **Русский**.
|
||||
- Описание должно содержать суть изменений, ссылку на задачу и список deprecated-кода.
|
||||
|
||||
## Коммиты (Conventional Commits)
|
||||
Типы:
|
||||
- `feat`: Новая функциональность.
|
||||
- `fix`: Исправление ошибок.
|
||||
- `refactor`: Рефакторинг без смены логики.
|
||||
- `docs`: Документация.
|
||||
- `chore`: Инструменты, зависимости (`pubspec.yaml`).
|
||||
- `test`, `build`, `ci`.
|
||||
|
||||
## Именование веток
|
||||
Формат: `тип/PRIME-номер_описание`
|
||||
- `feat/PRIME-123_auth`
|
||||
- `fix/PRIME-456_typo`
|
||||
|
||||
## Процесс Feature-разработки
|
||||
1. Создаем ветку от `main`.
|
||||
2. Вносим изменения, делаем коммиты.
|
||||
3. PR с названием по правилам (например, `feat(auth): PRIME-17 Добавить вход`).
|
||||
4. После Review — **squash commit** в `main`.
|
||||
5. Удаление ветки.
|
||||
26
.agent/skills/flutter_dev/references/project_standards.md
Normal file
26
.agent/skills/flutter_dev/references/project_standards.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Стандарты проекта
|
||||
|
||||
## Управление файлами
|
||||
|
||||
### Сгенерированные файлы (*.g.dart, *.freezed.dart)
|
||||
- **Хранить в репозитории**.
|
||||
- Это обеспечивает работоспособность `main` ветки сразу после чекаута без долгого ожидания генерации.
|
||||
- Нужно контролировать конфликты при слиянии и периодически актуализировать.
|
||||
|
||||
### pubspec.lock
|
||||
- **Хранить** для приложений (applications).
|
||||
- **Не хранить** для пакетов (packages).
|
||||
- По умолчанию хранить GMS версию как базовую.
|
||||
|
||||
## Сборка и запуск
|
||||
- Используйте анализатор `friflex_lint_rules`.
|
||||
- Перед созданием PR обязательно:
|
||||
1. Форматирование кода (`dart format`).
|
||||
2. Проверка анализатором на отсутствие ошибок.
|
||||
|
||||
## Технологический стек
|
||||
- Роутинг: `go_router`.
|
||||
- State Manager: `flutter_bloc`.
|
||||
- DI: Ручная реализация через `InheritedWidget`.
|
||||
- API: `dio`.
|
||||
- Ресурсы: `flutter_gen`.
|
||||
33
.agent/skills/flutter_dev/references/project_structure.md
Normal file
33
.agent/skills/flutter_dev/references/project_structure.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Структура проекта
|
||||
|
||||
Проект строится на основе фич и слоев.
|
||||
|
||||
## Общая иерархия
|
||||
- `/assets` — графические ресурсы.
|
||||
- `/lib` — основной код.
|
||||
- `/app` — глобальные настройки, интерфейсы и реализации.
|
||||
- `/di` — конфигурация зависимостей.
|
||||
- `/routing` — описание путей.
|
||||
- `/features` — функциональные модули приложения.
|
||||
- `/gen` — сгенерированный код.
|
||||
|
||||
## Структура Feature-папки
|
||||
Каждая фича делится на три слоя:
|
||||
|
||||
1. **Data** (Поставщик данных):
|
||||
- `/dto` — модели данных для API.
|
||||
- `/repository` — реализация интерфейсов репозиториев.
|
||||
2. **Domain** (Бизнес-логика):
|
||||
- `/entity` — чистые модели для использования в UI.
|
||||
- `/repository` — **интерфейсы** репозиториев.
|
||||
- `/state` — управление состоянием (BLoC).
|
||||
- `/service` — реализации бизнес-сервисов.
|
||||
3. **Presentation** (Представление):
|
||||
- `/screens` — виджеты экранов (`*Screen`).
|
||||
- `/components` — переиспользуемые компоненты внутри фичи.
|
||||
|
||||
## Правила взаимодействия
|
||||
- **Data** → доступ к **Entity** (для маппинга), не знает про UI.
|
||||
- **Domain** → не знает про **Data** (работает через интерфейсы) и **Presentation**.
|
||||
- **Presentation** → работает через **Domain**, не знает про **Data**.
|
||||
- Объекты внутри фичи инкапсулированы. Глобальные объекты выносятся в `/app`.
|
||||
Reference in New Issue
Block a user