--- name: claude-md-master description: Главный навык для жизненного цикла CLAUDE.md: создание, обновление и улучшение на основе проверенных данных репозитория с поддержкой нескольких модулей. Используй при создании или обновлении файлов CLAUDE.md. --- # Мастер CLAUDE.md (создание, обновление, улучшение) ## Когда использовать - Пользователь просит создать, улучшить, обновить или стандартизировать файлы CLAUDE.md. ## Основные правила - Включай только сведения, проверенные по репозиторию или конфигурации. - Никогда не добавляй секреты, токены, учётные данные или пользовательские данные. - Никогда не добавляй временные инструкции или правила для отдельной задачи. - Пиши кратко: корневой файл — не более 200 строк, файл модуля — не более 120. - Используй списки, избегай длинной прозы. - Команды должны быть пригодны для копирования и взяты из документации, скриптов или CI репозитория. - Пропускай пустые разделы, не добавляй текст ради объёма. ## Обязательные исходные данные (изучи перед созданием) - Конфигурация сборки и пакетов для обнаруженного стека (корень и модули). - Конфигурация статического анализа, если она есть. - Фактическая структура модулей и паттерны исходного кода: проверь реальные каталоги и файлы. - Характерные корни исходников каждого модуля, чтобы извлечь структуру пакетов и функций, ключевые типы и используемые аннотации. ## Исследование (быстрое и адресное) 1. Найди существующие варианты: `CLAUDE.md`, `.claude.md`, `.claude.local.md`. 2. Определи стек и точки входа с помощью минимального чтения: - `README.md`, нужные разделы `docs/*`; - файлы сборки и пакетов (см. справочники по стекам); - конфигурацию среды: `Dockerfile`, `docker-compose.yml`, `.env.example`, `config/*`; - CI: `.github/workflows/*`, `.gitlab-ci.yml`, `.circleci/*`. 3. Бери команды только если они существуют в скриптах, конфигурации или документации репозитория. 4. Определи структуру из нескольких модулей: - Android/Gradle: прочитай подключения в `settings.gradle` или `settings.gradle.kts`; - iOS: найди несколько targets/workspaces в `*.xcodeproj`/`*.xcworkspace`; - если у нескольких модулей или targets есть `src/` либо конфигурация сборки, запланируй для них отдельные CLAUDE.md. 5. Для каждого предполагаемого модуля прочитай файл сборки и минимум документации, чтобы узнать назначение, точки входа и команды. 6. Проверь корни исходников на: - верхнеуровневые каталоги пакетов или функций и правила разделения слоёв; - используемые ключевые аннотации и типы (по справочнику стека); - правила именования в кодовой базе. 7. Собери неочевидные рабочие процедуры и подводные камни из документации или повторяющихся паттернов кода. Производительность: - Предпочитай список файлов и адресное чтение. - Не читай файл целиком, если достаточно раздела или символа. - Пропускай большие каталоги: `node_modules`, `vendor`, `build`, `dist`. ## Справочники по стекам (шаблон 2) Читай нужный справочник только при обнаружении признаков стека: - Android/Gradle → `references/android.md` - iOS/Xcode/Swift → `references/ios.md` - PHP → `references/php.md` - Go → `references/go.md` - React (web) → `references/react-web.md` - React Native → `references/react-native.md` - Rust → `references/rust.md` - Python → `references/python.md` - Java/JVM → `references/java.md` - Node tooling → `references/node.md` - .NET/C# → `references/dotnet.md` - Dart/Flutter → `references/flutter.md` - Ruby/Rails → `references/ruby.md` - Elixir/Erlang → `references/elixir.md` - C/C++/CMake → `references/cpp.md` - Другое или неизвестное → `references/generic.md` (запасной вариант, когда нет подходящего специального справочника) Если обнаружено несколько стеков, читай несколько справочников. Если стек не распознан, используй общий справочник. ## Правило вывода для нескольких модулей (обязательно при их наличии) - Всегда создавай корневой `CLAUDE.md`. - Также создавай `CLAUDE.md` в корне каждого значимого модуля или target. - «Значимый» — со своей конфигурацией сборки и `src/` (или аналогом). - Пропускай каталоги только для инструментов: `buildSrc`, `gradle`, `scripts`, `tools`. - Файл модуля должен описывать именно модуль и избегать повторов: - назначение, ключевые пути, точки входа, тесты и команды модуля, если они есть; - общую информацию подключай через `@/CLAUDE.md`. ## Правило CLAUDE.md для бизнес-модулей (все стеки) Для каталогов бизнес-логики монорепозитория (`src/`, `lib/`, `packages/`, `internal/`): - создавай `CLAUDE.md` для модулей, где больше пяти файлов ИЛИ есть собственный README; - пропускай каталоги только со вспомогательным кодом: `Helper`, `Utils`, `Common`, `Shared`, `Exception`, `Trait`, `Constants`; - слоистая структура не обязательна: описывай модуль независимо от архитектуры; - не больше 120 строк на модульный CLAUDE.md; - для общей архитектуры и паттернов ссылайся на корень через `@/CLAUDE.md`; - включай назначение, структуру, ключевые классы, зависимости и точки входа. ## Обязательные разделы результата (в каждом модульном CLAUDE.md) Включай эти разделы, если они обнаружены в кодовой базе; пропускай лишь при их отсутствии: - **Перечень функций и компонентов:** верхнеуровневые каталоги в корне исходников. - **Основные и общие модули:** каталоги вспомогательного или общего кода. - **Навигация и маршруты:** графы навигации, маршруты или роутеры. - **Шаблон сетевого/API-слоя:** клиенты API, конечные точки, оболочки ответов. - **Шаблон DI/внедрения:** модули, контейнеры или настройка внедрения. - **Файлы сборки и конфигурации:** конфигурация модуля (ProGuard, манифесты и т. д.). Точные паттерны обнаружения и описания смотри в справочниках по стекам. ## Порядок обновления (обязателен) 1. Предлагай только точечные добавления; показывай различия для каждого файла. 2. До применения обновлений спрашивай разрешение: **Cursor IDE:** Используй инструмент AskQuestion с вариантами: - id: "approval" - prompt: "Применить эти обновления CLAUDE.md?" - options: [{"id": "yes", "label": "Да, применить"}, {"id": "no", "label": "Нет, отменить"}] **Claude Code (терминал):** Покажи предлагаемые изменения и спроси: «Одобряешь эти обновления? (yes/no)» Остановись и дождись ответа пользователя. **Другие окружения (запасной путь):** Если структурированного инструмента вопросов нет: 1. Чётко покажи предлагаемые изменения. 2. Спроси: «Одобряешь эти обновления? Ответь yes, чтобы применить, или no, чтобы отменить». 3. Дождись явного подтверждения пользователя. 3. Примени изменения, сохраняя пользовательский текст. Если CLAUDE.md отсутствует, предложи новый файл на утверждение. ## Правила извлечения содержания (обязательно) - Только из кодовой базы: - извлекай используемые имена типов, классов и аннотаций, реальные шаблоны путей и правила именования; - никогда не извлекай жёстко заданные значения, секреты, ключи API и предметную бизнес-логику; - никогда не вставляй фрагменты кода в правила «Делай/Не делай». ## Проверка перед записью - [ ] Каждое правило ссылается на реальные типы и пути кодовой базы. - [ ] В разделах «Делай/Не делай» нет примеров кода. - [ ] Паттерны соответствуют текущей кодовой базе, а не устарели. ## Правила содержания - Включай команды, обзор архитектуры, ключевые пути, тестирование, подводные камни и особенности работы. - Исключай общие советы, очевидные сведения и непроверенные утверждения. - Используй импорты `@path/to/file`, чтобы избежать повторов. - Формат «Делай/Не делай» необязателен; сохраняй его только если он уже использован в файле. - Избегай примеров кода, кроме коротких команд для копирования. ## Стратегия для существующего файла Определение: - Если есть `` → повторный запуск. - Иначе → первый запуск. Первый запуск при существующем файле: - создай резервную копию `CLAUDE.md` → `CLAUDE.md.bak`; - используй `.bak` как источник и извлекай только полезные сведения, относящиеся к проекту; - создай новый краткий файл и добавь маркер. Повторный запуск: - сохраняй пользовательские разделы и формулировки, кроме устаревших и неверных; - исправляй только то, что расходится с текущим состоянием репозитория; - добавляй недостающие разделы, только если они дают реальную пользу. Никогда не меняй `.claude.local.md`. ## Результат После обновлений выведи краткий отчёт: ``` ## Отчёт об обновлении CLAUDE.md - /CLAUDE.md [CREATED | BACKED_UP+CREATED | UPDATED] - //CLAUDE.md [CREATED | UPDATED] - Резервные копии: перечисли все файлы `.bak` ``` ## Контрольный список - Описание конкретно и содержит слова-триггеры. - Не осталось заполнителей. - Не включены секреты. - Соблюдено правило «сначала отчёт». - Справочные файлы вложены не глубже одного уровня.