Imported from beamngdrive2342/DnevnikFlutter-Pro (
AGENTS.md). Install upstream withnpx skills add beamngdrive2342/DnevnikFlutter-Pro. Copyright stays with the author.
AGENTS.md - DnevnikFlutter (Школьный Дневник 10А)
📌 Мета-информация
- Name: DnevnikFlutter / dnevnik_app
- Goal: Мобильное Flutter-приложение для расписания уроков и домашних заданий класса школьников, помошник-чит для учебы.
- Audience: Школьники/студенты
- Phase: prototype
- Tech Stack: Flutter 3.x, Dart SDK ^3.8.0, Riverpod 3 (state management), go_router 17 (навигация), Firestore (backend), freezed + json_serializable (модели), flutter_secure_storage, flutter_dotenv
👤 ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ И ЕГО ПРЕДПОЧТЕНИЯ
- Роль: Студент/ученик, создающий проект для себя и своего класса в учебных целях.
- Стиль общения: ИИ-ассистент (ты) должен подробно и понятно объяснять сложные концепции (архитектуру, Riverpod, Firebase), чтобы пользователь мог учиться в процессе разработки.
- Видение продукта (AI-помощник): Ответы встроенного AI-ассистента должны быть максимально короткими и быстрыми, чтобы ученикам было удобно делать ДЗ и возможно использовать в школе.
- Интерфейс: Сохраняем текущий красивый дизайн "Sahara Warm Minimalism". Специальная маскировка (под калькулятор и т.д.) не нужна.
- Приоритеты развития: Сбалансированный подход — одновременная работа над стабильностью (написание тестов), новыми мощными фичами (push-уведомления, моментальные AI-решения) и интеграцией с электронным дневником.
🎯 ОБЯЗАТЕЛЬНО ПРОЧИТАЙ ПЕРЕД НАЧАЛОМ
- ✅ Прочитай этот файл (AGENTS.md) целиком
- ✅ Прочитай
index.mdв корне, чтобы понять карту проекта - ✅ Прочитай
docs/wiki/PROJECT_CONTEXT.md - ✅ Прочитай последний session log в
logs/sessions/ - ✅ Прочитай
docs/wiki/DECISIONS.md - ✅ Прочитай
src/pubspec.yaml— актуальные зависимости - ✅ Изучи структуру
src/lib/перед написанием кода (см.src/lib/index.md)
Спрашивай, если непонятно. Не угадывай.
🚫 НИКОГДА НЕ ДЕЛАЙ
- ❌ Не удаляй файлы без явного подтверждения пользователя
- ❌ Не выдумывай данные расписания / домашних заданий без источников
- ❌ Не меняй
.envи секреты (Firebase API ключи и т.д.) - ❌ Не публикуй в Play Store / App Store без разрешения
- ❌ Не делай код без плана (сначала обсуди архитектуру)
- ❌ Не угадывай бизнес-логику (структуру расписания, модели данных) — спрашивай.
- ❌ Не добавляй зависимости в
pubspec.yamlбез явного одобрения - ❌ Не запускай
flutter cleanилиflutter pub upgradeбез подтверждения - ❌ Не предлагай ручную отрисовку чертежей/графиков ГДЗ на Canvas (CustomPaint), это немасштабируемо. Стратегия: переводить текст из картинок в Markdown/LaTeX, решение по чертежам пока открыто.
✅ ВСЕГДА ДЕЛАЙ
- ✅ После каждой задачи → создай/обнови session log в
logs/sessions/YYYY-MM-DD.md - ✅ Если меняешь архитектуру → обнови
docs/wiki/DECISIONS.md - ✅ Если меняешь код → обнови
docs/outputs/CHANGELOG.md - ✅ Перед изменением Firestore rules → спроси разрешение
- ✅ ВСЕГДА СПРАШИВАЙ ПОЛЬЗОВАТЕЛЯ ПЕРЕД ВЫПОЛНЕНИЕМ ЗАДАЧИ И ВНЕДРЕНИЕМ (запрашивай ревью плана), если нет явного согласия.
- ✅ Следуй паттернам Riverpod 3 (используй
@riverpodаннотации черезfreezed) - ✅ Используй
go_routerдля навигации — не Navigator 1.0 - ✅ Модели данных — через
freezed+json_serializable - ✅ Запускай
dart run build_runner buildпосле изменения freezed-моделей
📂 ФАЙЛОВЫЕ ЗОНЫ
| Папка | Назначение | Изменяемая? |
|---|---|---|
src/lib/ |
Исходный код Flutter | Да |
src/lib/data/ |
Модели данных, репозитории | Да |
src/lib/providers/ |
Riverpod провайдеры | Да |
src/lib/screens/ |
Экраны приложения | Да |
src/lib/widgets/ |
Переиспользуемые виджеты | Да |
src/lib/router/ |
go_router конфигурация | Да |
src/lib/theme/ |
Темы, стили, цвета | Да |
src/lib/utils/ |
Утилиты и хелперы | Да |
docs/ |
Документация (память проекта, см. docs/index.md) |
Только агент |
logs/sessions/ |
История сессий работы и выводы (Lessons Learned) | Только агент |
.skills/ |
Локальные Skills | Нет |
outputs/ |
Готовые артефакты (APK, экспорты) | Да |
prompts/ |
Шаблоны промптов для задач | Да |
src/.env |
Переменные окружения (секреты) | ❌ Никогда |
src/firestore.rules |
Правила безопасности Firestore | Только с разрешения |
📊 КАК ОТЧИТЫВАТЬСЯ
После каждой задачи используй этот формат:
Что было запрошено
[Переформулируй задачу одним предложением]
Что было сделано
- ✅ Пункт 1
- ✅ Пункт 2
- ⚠️ Требует доработки: X
Какие файлы изменены
src/lib/screens/...src/lib/providers/...docs/outputs/CHANGELOG.md
Команды для проверки
cd src
flutter analyze
flutter test
dart run build_runner build --delete-conflicting-outputs
Следующий шаг
[Одно предложение о том, что дальше]
🔄 ТРИ ЗОЛОТЫХ ПРАВИЛА
Правило 1: Код как референс, не копипаста
- Читаешь существующий код для понимания паттернов ✅
- Пишешь сам, следуя архитектуре Riverpod + go_router ✅
- Копируешь куски кода 1-в-1 ❌
Правило 2: Единый источник правды
- Файлы > память чата
- После изменений → обнови документацию в
docs/wiki/илиdocs/outputs/ - Новый агент читает файлы и сразу в курсе
- ВНИМАНИЕ (Критическая ошибка прошлого): ВСЕГДА проверяй
.gitignore. Убедись, что файлы памяти (Second Brain, напримерCHANGELOG.mdвdocs/outputs/) действительно трекаются в Git и успешно пушатся. Если они попадают под игнор, используйgit add -fили исправь.gitignore(например,/outputs/вместоoutputs/). Память проекта ОБЯЗАНА обновляться на GitHub!
Правило 3: Самопроверка перед сдачей
- ✅ Единый компонент/виджет? (не дублируем)
- ✅ Обработка пустых данных? (расписание не загружено, нет ДЗ)
- ✅ Нет хардкода? (тексты, цвета — через тему и константы)
- ✅ Нет костылей? (временные setState вместо Riverpod)
- ✅ Покрыто тестами в
src/test/? - ✅
flutter analyzeне выдаёт ошибок?
Если ответ «нет» — не сдавай, доделай.
🛠️ SKILLS ИСПОЛЬЗУЕМЫЕ В ПРОЕКТЕ
Явно упоминай их в промтах:
brainstorming— перед добавлением нового экрана или фичиfrontend-design— для UI/UX виджетовsystematic-debugging— при неожиданном поведенииverification-before-completion— перед сдачей задачиwriting-plans— для сложных многошаговых задач
💬 КАК БУДУ ИНСТРУКТИРОВАТЬ
Промты будут в этом формате:
# ЗАДАЧА
[Конкретное действие — например: "добавь экран просмотра ДЗ по предмету"]
# КОНТЕКСТ
[Данные, условия — например: "ДЗ хранятся в Firestore, структура: /homework/{date}/{subject}"]
# ИСТОЧНИКИ
- AGENTS.md — правила
- docs/wiki/PROJECT_CONTEXT.md — контекст
- src/lib/data/ — модели данных
# ОГРАНИЧЕНИЯ
- Не выдумывай структуру данных
- Спрашивай если непонятно
- Используй только существующие зависимости из pubspec.yaml
# ОТЧЁТ
- Что сделано / не сделано
- Какие файлы изменены
- Команды для проверки
Если промпт не в этом формате — можешь попросить уточнения.
Этот файл — договор между тобой и агентом. Следуй ему.