Документация по проекту лежит в ./docs
Клади туда все генерируемые докуенты если я прошу их сохранить. В именовании между словами используй минус.
При добавлении текстов в ответ бота сохраняй их в ./config/locales и используй
от туда через I18n.t
Мы не используем переменные окружения напрямую (ENV), доставай значения через ApplicationConfig
Перед тем как отвечать на вопросы касающиеся продукта изучи ./docs/Product
- ./docs/Product - документация по продукту
- target-audience.md - целевая аудитория
- bot-descriptions.md - описания ботов
- problems.md - проблемы которые решает продукт
- telegram-descriptions.md - описания для Telegram
- core-settings.md - основные настройки
- features.md - функциональность
- user-flow.md - пользовательский поток
- ./docs/Architecture - архитектурная документация
- c4-model.md - C4 модель архитектуры
- ./docs/gems - документация по используемым gem-ам
- telegram-bot.md - Telegram bot
- ruby-llm.md - Ruby LLM
- ./docs/Other - прочая документация
- ./docs/Hidden - скрытая документация
- ./docs/ROADMAP.md - дорожная карта проекта
Модели и новые таблицы создаем через rails g model а не через прямое создание
миграций.
При планировании проекта с нуля сначала заводим модели и все необходимые
свойства схемы делаем через rails g model
Рельсовые команды запускай через ./bin/rails
В миграциях в базе вместо json всегда используй jsonb
При создании индексов в базе учти что индексы для references колонок уже создаются автоматически.
После выполнения пункта из ROADMAP отмечай его выполненным.
Перед тем как что-то делать или планировать делать с кодом изучай файлы в ./docs/Architecture
При создании тестов изучай ./docs/Testing
ВАЖНО: Всегда следуй регламенту работы со спецификациями:
- Регламент работы со спецификациями
- Статусы:
draft→need_plan→approved→implemented - Всегда проверяй статус спецификации перед началом работы
- Обновляй статусы при завершении этапов
- TDD подход: тесты первыми, затем реализация
Если делаешь обещания - записывай их в .claude/promises.md
/file:.claude-on-rails/context.md /file:.claude/promises.md
- Когда работаешь с фоновыми задачами учитывай config/queue.yml
Always use context7 when I need code generation, setup or configuration steps, or library/API documentation. This means you should automatically use the Context7 MCP tools to resolve library id and get library docs without me having to explicitly ask.
Никогда не используй в assert куски текстаз из локали. Используй полный текст через I18n.t с полным ключем. Это правило действует только если в локали не используется интерполяция.
При анализе или разработку кода для телеграм бота предварительно изучай ./docs/gems/telegram-bot.md
- Создавай новую спецификацию в ./docs/Specs/XXX_{TITLE}_Specification.md
- Реализовывай в ./docs/Implementation/Spec_XXX_{TITLE}_Implementation.md
при генерации кода учитывай настройки из .rubocop.yml
Каждый раз когда мы ловим ошибку через rescue мы отправляем уведомление в Bugsnag, по-возмоности указывая контекст который пригодится для расследования в metadata.
ВАЖНО: Отмечай пункт плана (имплементации или любого другого) в файле выполненным как только ты его сделал.
Когда создаешь спецификации (спеки) давай им номера в виде: XXX_Название.md
Когда создаешь ruby-код делай его согласно правилам .rubocop.yml
Используй minitest вместо rspec.
При создани плана импленетации, после этапа инициализации начинай с создания тестов. ВАЖНО: любую реализацию в коде начинай с тестов. Tests first! Сначала создаешь тесты, смотриш что они красные, добавляешь код, проверяешь что они зеленые. И только тогда переходишь к следующему этапу. Tests First - каждый этап функциональности начинается с тестов. RED-GREEN-REFACTOR - классический цикл TDD.
- Спеки лежат в @docs/Specs/
После того как тесты начали работать, сделай rubocop -A для измененных файлов
Перед тем как сделать git add сделай rubocop -A для измененных файлов
План имплементации всегда создается с нумерованными этапами и подпунктами имеющие чекбоксы для загрузки в TODO.
В плане создается МИНИМАЛЬНЫЙ набор тестов.
План имплементации всегда имеет такой-же номер как и спецификаций по которой он создан и имеет ссылку на неё.
После выполнения плана имплементации отмечай выполненные пункты как выполненные.
- Вместо Fetch используй mcp__tavily__tavily-extract
- Мы не используем rspec для тестов. Мы используем только minitest
- При создании тестов предпочитае фикстуры вместо фабрик
- Планы рефакторинга сохраняются в .protocols/