[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-kak-my-ispolzuem-claude-code-nuxt-rust-monorepo":3},{"article":4,"author":63},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":43,"related_articles":44},"dc000000-0000-0000-0000-000000000012","a0000000-0000-0000-0000-000000000016","Как мы используем Claude Code для поддержки монорепо Nuxt 4 + Rust","kak-my-ispolzuem-claude-code-nuxt-rust-monorepo","Взгляд изнутри на то, как Open Soft использует Claude Code как ежедневный инструмент разработки для нашего продакшн-монорепо. Реальные рабочие процессы для мультифайлового рефакторинга, написания миграций, генерации тестов, ревью кода и кастомных инструментов с хуками и MCP-серверами.","## Наш стек и почему Claude Code подходит\n\nВ Open Soft наш основной продукт — это веб-сайт, построенный как монорепо: фронтенд на Nuxt 4 с TypeScript и бэкенд API на Rust\u002FAxum с PostgreSQL. Кодовая база охватывает два языка, две системы сборки, общие контракты данных, миграции базы данных, i18n-файлы для 10 языков и инфраструктуру деплоя. Изменения часто затрагивают обе стороны стека одновременно.\n\nМы начали использовать Claude Code в середине 2025 года, и он стал нашим наиболее используемым инструментом разработки. Не потому, что он пишет код за нас, а потому, что он рассуждает о всей нашей кодовой базе так, как ни один другой инструмент не может. Когда вы говорите Claude Code «добавь поле published_at в articles», он читает Rust-миграцию, обновляет SQL-запросы в хендлере, модифицирует TypeScript-типы во фронтенде, корректирует Nuxt-компонент страницы, обновляет все 10 файлов локализации и запускает сборку для проверки. Именно это кросс-стековое понимание делает его незаменимым для разработки в монорепо.\n\n## CLAUDE.md: обучение агента вашим конвенциям\n\nОснова эффективного использования Claude Code — файл `CLAUDE.md`. Это файл с инструкциями на уровне проекта, который Claude Code читает в начале каждой сессии. Думайте о нём как о документации для онбординга, но для вашего AI-агента.\n\nНаш `CLAUDE.md` включает:\n\n- **Конвенции коммитов:** Каждый коммит должен начинаться с `TASK-XXX:` и использовать повелительное наклонение\n- **Обзор архитектуры:** Структура монорепо, какие директории что содержат\n- **Правила стиля кода:** TypeScript strict mode, никаких `any`, только Composition API, синтаксис `\u003Cscript setup>`\n- **Правила i18n:** Все 10 локалей должны быть синхронизированы, ключи отсортированы по алфавиту, ключи на простом английском\n- **Правила безопасности:** Никаких секретов в коммитах, параметризованный SQL, явные CORS-origins\n- **Команды разработки:** `npm run dev`, `cargo run`, `make fixtures` и т.д.\n\nClaude Code следует этим конвенциям стабильно. Когда он генерирует сообщение коммита, он использует префикс `TASK-XXX:`. Когда добавляет ключ перевода, он добавляет его во все 10 файлов локализации в алфавитном порядке. Когда пишет SQL, использует параметризованные запросы. Это устраняет целую категорию замечаний на ревью — нарушения конвенций.\n\nМы также поддерживаем `CLAUDE.md` файлы для отдельных директорий: для бэкенда (`\u002Fserver\u002FCLAUDE.md`) и фикстур (`\u002Fserver\u002Ffixtures\u002FCLAUDE.md`), предоставляя контекстно-специфичные инструкции, которые активируются при работе Claude Code в этих директориях.\n\n## Мультифайловый рефакторинг: убойный сценарий использования\n\nРабочий процесс, который экономит нам больше всего времени, — это кросс-стековый рефакторинг. Вот реальный пример из нашего проекта.\n\n**Задача:** Добавить SEO-поля (`meta_title`, `meta_description`, `focus_keyword`, `robots_meta`) в систему статей.\n\nБез Claude Code это изменение требует:\n1. Написать SQL-миграцию, добавляющую 4 колонки\n2. Обновить Rust-структуру `Article`\n3. Обновить Rust DTO `CreateArticle` и `UpdateArticle`\n4. Обновить все SQL-запросы в хендлере articles (SELECT, INSERT, UPDATE)\n5. Обновить TypeScript-тип `Article` на фронтенде\n6. Обновить форму админ-редактора для новых полей\n7. Обновить страницу блог-поста для рендеринга мета-тегов\n8. Обновить логику генерации sitemap\n9. Обновить все файлы фикстур новыми полями\n10. Запустить миграции, пересобрать, протестировать\n\nС Claude Code мы вводим одну команду:\n\n```\nДобавь SEO-поля (meta_title, meta_description, focus_keyword, robots_meta) в articles.\nНапиши миграцию, обнови Rust-модель и хендлер, обнови фронтенд-типы\nи админ-редактор, добавь мета-теги на страницу блога и обнови фикстуры.\n```\n\nClaude Code выполняет это за один агентный цикл:\n- Читает существующие файлы миграций для понимания схемы\n- Читает Rust-модель для понимания текущей структуры\n- Читает хендлер для нахождения всех SQL-запросов\n- Читает фронтенд-типы и компоненты\n- Вносит все изменения в 12+ файлов\n- Запускает `cargo check` для проверки компиляции Rust-кода\n- Запускает `npm run build` для проверки сборки фронтенда\n- Исправляет ошибки и итерирует до успешного прохождения обоих\n\nВесь процесс занимает около 5 минут вместо 45-60 минут ручной работы. Что ещё важнее, он ловит баги перекрёстных ссылок, которые пропускают люди.\n\n## Написание миграций\n\nМиграции базы данных особенно хорошо подходят для Claude Code, потому что требуют понимания текущей схемы, желаемого конечного состояния и безопасного пути трансформации между ними.\n\nКогда мы просим Claude Code написать миграцию, он:\n1. Читает все существующие файлы миграций для понимания текущей схемы\n2. Читает Rust-модели для понимания целевого состояния\n3. Пишет SQL миграции с правильными `ALTER TABLE` выражениями\n4. Добавляет защиты `IF NOT EXISTS` для идемпотентности где уместно\n5. Обновляет Rust-модели и хендлеры для использования новой схемы\n\nClaude Code производит полную, работающую функциональность: файл миграции, модель с serde-деривами, хендлер со всеми CRUD-операциями на параметризованных sqlx-запросах, регистрацию маршрутов в `main.rs` и корректную обработку ошибок.\n\n## Генерация тестов\n\nМы активно используем Claude Code для генерации тестовых фикстур и SQL seed-данных. Наши файлы фикстур содержат реалистичный, объёмный контент (статьи на 1500+ слов) с корректными SEO-метаданными, и писать их вручную — утомительно и чревато ошибками.\n\nРабочий процесс:\n1. Описываем нужные статьи (тема, угол, техническая глубина)\n2. Claude Code генерирует SQL INSERT-выражения с полным Markdown-контентом\n3. Следует нашим UUID-конвенциям (`d0000000-...` для статей, `a0000000-...` для категорий)\n4. Добавляет `ON CONFLICT (slug) DO NOTHING` для идемпотентности\n5. Связывает статьи с тегами через junction-таблицу `article_tags`\n\nДля Rust unit-тестов Claude Code читает реализацию, выявляет граничные случаи и генерирует тестовые функции с описательными именами.\n\n## Ревью кода с Claude Code\n\nПеред открытием merge request мы запускаем Claude Code как ревьюера:\n\n```\nПроверь все изменения на этой ветке на баги, проблемы безопасности,\nпроблемы производительности и соответствие нашим конвенциям из CLAUDE.md.\n```\n\nClaude Code:\n- Запускает `git diff main...HEAD` для просмотра всех изменений\n- Анализирует каждый файл на потенциальные проблемы\n- Проверяет SQL-инъекции (непараметризованные запросы)\n- Верифицирует наличие i18n-ключей во всех 10 локалях\n- Проверяет вызовы `.unwrap()` в продакшн-коде на Rust\n- Проверяет обработку ошибок на соответствие нашим паттернам\n- Сообщает о находках с путями к файлам и номерами строк\n\nЭто ловит около 30% проблем, которые иначе были бы найдены на человеческом ревью, позволяя людям сосредоточиться на архитектуре и бизнес-логике.\n\n## Хуки: автоматизация контроля качества\n\nClaude Code поддерживает хуки — скрипты, которые запускаются автоматически до или после определённых действий. Мы используем хуки для обеспечения качества:\n\n**Pre-commit хук:** Запускает `cargo fmt --check` и `cargo clippy` перед тем, как Claude Code создаст коммит. Если что-то не проходит, Claude Code исправляет проблемы и повторяет.\n\n**Post-edit хук:** После того как Claude Code модифицирует любой файл в `\u002Fi18n\u002Flocales\u002F`, хук запускает скрипт, проверяющий идентичность наборов ключей во всех 10 файлах локализации. Если ключи отсутствуют, Claude Code добавляет их.\n\nХуки превращают Claude Code из движка подсказок в агента, обеспечивающего качество. Он не может случайно закоммитить неотформатированный код или неполные переводы.\n\n## MCP-серверы: расширение возможностей Claude Code\n\nModel Context Protocol (MCP) серверы позволяют дать Claude Code доступ к внешним инструментам. Мы используем два кастомных MCP-сервера:\n\n1. **MCP-сервер базы данных:** Позволяет Claude Code напрямую запрашивать наш PostgreSQL для разработки. При отладке проблем с данными Claude Code может выполнять SELECT-запросы для инспекции реального состояния БД, понять проблему и написать исправление — всё в одном цикле.\n\n2. **MCP-сервер статуса деплоя:** Подключается к нашему CI\u002FCD-пайплайну. Claude Code может проверить, успешен ли последний деплой, прочитать логи сборки и диагностировать ошибки.\n\nMCP-серверы — это простые JSON-RPC сервисы. Реализация одного занимает около 100 строк кода. Рычаг огромен — каждый MCP-сервер добавляет новую возможность, которую Claude Code может использовать автономно в своём агентном цикле.\n\n## Советы для больших кодовых баз с контекстом 1M\n\nКонтекстное окно Claude Code в 1M токенов — его самая мощная функция для работы с монорепо. Вот как мы максимизируем его:\n\n**Позвольте Claude Code исследовать.** Не пытайтесь заранее выбрать, какие файлы показать. Опишите, что вам нужно, и позвольте Claude Code использовать свои инструменты (`Grep`, `Glob`, `Read`) для поиска релевантного кода.\n\n**Используйте CLAUDE.md для стабильного контекста.** Информация, которая не меняется между сессиями — архитектура, конвенции, команды — помещается в CLAUDE.md, чтобы Claude Code не тратил контекст на повторное обнаружение.\n\n**Разбивайте мега-задачи на фазы.** Даже с 1M токенов задача вроде «рефакторинг всей системы аутентификации» выигрывает от поэтапного подхода: сначала анализ и план, потом реализация модуль за модулем, потом тестирование.\n\n**Доверяйте агентному циклу.** Когда Claude Code вносит изменение, запускает сборку, видит ошибку и исправляет её — этот цикл и есть главная функция. Не прерывайте его на полпути. Дайте ему сойтись.\n\n## Подводные камни и обходные пути\n\n**Подводный камень: Claude Code переусложняет.** Иногда он добавляет абстракции или паттерны, которые не нужны. Обходной путь: добавьте «KISS — Не переусложняй» в ваш CLAUDE.md.\n\n**Подводный камень: устаревший контекст в длинных сессиях.** После множества правок понимание Claude Code текущего состояния файлов может сместиться. Обходной путь: начинайте новую сессию для каждой крупной задачи.\n\n**Подводный камень: недетерминированный вывод.** Один и тот же промпт может дать разный код при разных запусках. Обходной путь: используйте конкретные, детальные промпты.\n\n**Подводный камень: качество тестовых данных.** AI-сгенерированные тестовые данные могут быть внутренне противоречивыми. Обходной путь: всегда проверяйте сгенерированные фикстуры и запускайте полный набор тестов.\n\n**Подводный камень: агрессивные изменения файлов.** Claude Code иногда модифицирует файлы, которые вы не просили трогать. Обходной путь: тщательно проверяйте дифф перед принятием.\n\n## FAQ\n\n### Сколько стоит Claude Code при ежедневном использовании?\n\nДля нашей команды из 4 разработчиков мы тратим примерно $200-300\u002Fмесяц на использование API Claude Code по всем проектам. Max план за $20\u002Fмесяц на разработчика — более предсказуемая альтернатива.\n\n### Работает ли Claude Code офлайн?\n\nНет. Claude Code требует подключения к интернету для связи с API Anthropic. Вся обработка кода происходит на стороне сервера.\n\n### Может ли Claude Code сломать нашу сборку?\n\nДа, но он ловит большинство проблем сам. Claude Code запускает ваши команды сборки как часть агентного цикла. Если `cargo check` падает, он читает ошибку и исправляет. По нашему опыту, около 90% сборок проходят с первого раза, а 99% — после цикла самокоррекции.\n\n### Как вы обрабатываете секреты и переменные окружения?\n\nClaude Code уважает `.gitignore` и может быть настроен на исключение чувствительных файлов. Мы никогда не храним секреты в репозитории. Наши `.env` файлы в gitignore, а `.env.example` используется для документации необходимых переменных без значений.\n\n### Подходит ли Claude Code для разработчика-одиночки?\n\nОпределённо. В некоторых отношениях он ещё ценнее для одиночных разработчиков, потому что служит второй парой глаз для ревью кода, базой знаний для запоминания конвенций проекта и мультипликатором силы для рутинных задач.\n\n## Заключение\n\nClaude Code — это не волшебная палочка, которая пишет приложение за вас. Это мультипликатор силы, который превосходит в кросс-стековом рассуждении, обеспечении конвенций и утомительных мультифайловых изменениях. Комбинация CLAUDE.md для постоянных знаний о проекте, хуков для обеспечения качества и MCP-серверов для доступа к внешним инструментам делает его наиболее способным AI-инструментом разработки для работы с монорепо.\n\nКлючевой инсайт после 9 месяцев ежедневного использования: Claude Code наиболее ценен не для написания нового кода, а для поддержки существующего — рефакторинга, миграции, тестирования и ревью. Это задачи, которые занимают 70% времени разработчика и больше всего выигрывают от агента, понимающего всю кодовую базу.","\u003Ch2 id=\"claude-code\">Наш стек и почему Claude Code подходит\u003C\u002Fh2>\n\u003Cp>В Open Soft наш основной продукт — это веб-сайт, построенный как монорепо: фронтенд на Nuxt 4 с TypeScript и бэкенд API на Rust\u002FAxum с PostgreSQL. Кодовая база охватывает два языка, две системы сборки, общие контракты данных, миграции базы данных, i18n-файлы для 10 языков и инфраструктуру деплоя. Изменения часто затрагивают обе стороны стека одновременно.\u003C\u002Fp>\n\u003Cp>Мы начали использовать Claude Code в середине 2025 года, и он стал нашим наиболее используемым инструментом разработки. Не потому, что он пишет код за нас, а потому, что он рассуждает о всей нашей кодовой базе так, как ни один другой инструмент не может. Когда вы говорите Claude Code «добавь поле published_at в articles», он читает Rust-миграцию, обновляет SQL-запросы в хендлере, модифицирует TypeScript-типы во фронтенде, корректирует Nuxt-компонент страницы, обновляет все 10 файлов локализации и запускает сборку для проверки. Именно это кросс-стековое понимание делает его незаменимым для разработки в монорепо.\u003C\u002Fp>\n\u003Ch2 id=\"claude-md\">CLAUDE.md: обучение агента вашим конвенциям\u003C\u002Fh2>\n\u003Cp>Основа эффективного использования Claude Code — файл \u003Ccode>CLAUDE.md\u003C\u002Fcode>. Это файл с инструкциями на уровне проекта, который Claude Code читает в начале каждой сессии. Думайте о нём как о документации для онбординга, но для вашего AI-агента.\u003C\u002Fp>\n\u003Cp>Наш \u003Ccode>CLAUDE.md\u003C\u002Fcode> включает:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Конвенции коммитов:\u003C\u002Fstrong> Каждый коммит должен начинаться с \u003Ccode>TASK-XXX:\u003C\u002Fcode> и использовать повелительное наклонение\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Обзор архитектуры:\u003C\u002Fstrong> Структура монорепо, какие директории что содержат\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Правила стиля кода:\u003C\u002Fstrong> TypeScript strict mode, никаких \u003Ccode>any\u003C\u002Fcode>, только Composition API, синтаксис \u003Ccode>&lt;script setup&gt;\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Правила i18n:\u003C\u002Fstrong> Все 10 локалей должны быть синхронизированы, ключи отсортированы по алфавиту, ключи на простом английском\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Правила безопасности:\u003C\u002Fstrong> Никаких секретов в коммитах, параметризованный SQL, явные CORS-origins\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Команды разработки:\u003C\u002Fstrong> \u003Ccode>npm run dev\u003C\u002Fcode>, \u003Ccode>cargo run\u003C\u002Fcode>, \u003Ccode>make fixtures\u003C\u002Fcode> и т.д.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Claude Code следует этим конвенциям стабильно. Когда он генерирует сообщение коммита, он использует префикс \u003Ccode>TASK-XXX:\u003C\u002Fcode>. Когда добавляет ключ перевода, он добавляет его во все 10 файлов локализации в алфавитном порядке. Когда пишет SQL, использует параметризованные запросы. Это устраняет целую категорию замечаний на ревью — нарушения конвенций.\u003C\u002Fp>\n\u003Cp>Мы также поддерживаем \u003Ccode>CLAUDE.md\u003C\u002Fcode> файлы для отдельных директорий: для бэкенда (\u003Ccode>\u002Fserver\u002FCLAUDE.md\u003C\u002Fcode>) и фикстур (\u003Ccode>\u002Fserver\u002Ffixtures\u002FCLAUDE.md\u003C\u002Fcode>), предоставляя контекстно-специфичные инструкции, которые активируются при работе Claude Code в этих директориях.\u003C\u002Fp>\n\u003Ch2 id=\"\">Мультифайловый рефакторинг: убойный сценарий использования\u003C\u002Fh2>\n\u003Cp>Рабочий процесс, который экономит нам больше всего времени, — это кросс-стековый рефакторинг. Вот реальный пример из нашего проекта.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Задача:\u003C\u002Fstrong> Добавить SEO-поля (\u003Ccode>meta_title\u003C\u002Fcode>, \u003Ccode>meta_description\u003C\u002Fcode>, \u003Ccode>focus_keyword\u003C\u002Fcode>, \u003Ccode>robots_meta\u003C\u002Fcode>) в систему статей.\u003C\u002Fp>\n\u003Cp>Без Claude Code это изменение требует:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Написать SQL-миграцию, добавляющую 4 колонки\u003C\u002Fli>\n\u003Cli>Обновить Rust-структуру \u003Ccode>Article\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Обновить Rust DTO \u003Ccode>CreateArticle\u003C\u002Fcode> и \u003Ccode>UpdateArticle\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Обновить все SQL-запросы в хендлере articles (SELECT, INSERT, UPDATE)\u003C\u002Fli>\n\u003Cli>Обновить TypeScript-тип \u003Ccode>Article\u003C\u002Fcode> на фронтенде\u003C\u002Fli>\n\u003Cli>Обновить форму админ-редактора для новых полей\u003C\u002Fli>\n\u003Cli>Обновить страницу блог-поста для рендеринга мета-тегов\u003C\u002Fli>\n\u003Cli>Обновить логику генерации sitemap\u003C\u002Fli>\n\u003Cli>Обновить все файлы фикстур новыми полями\u003C\u002Fli>\n\u003Cli>Запустить миграции, пересобрать, протестировать\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>С Claude Code мы вводим одну команду:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Добавь SEO-поля (meta_title, meta_description, focus_keyword, robots_meta) в articles.\nНапиши миграцию, обнови Rust-модель и хендлер, обнови фронтенд-типы\nи админ-редактор, добавь мета-теги на страницу блога и обнови фикстуры.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Claude Code выполняет это за один агентный цикл:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Читает существующие файлы миграций для понимания схемы\u003C\u002Fli>\n\u003Cli>Читает Rust-модель для понимания текущей структуры\u003C\u002Fli>\n\u003Cli>Читает хендлер для нахождения всех SQL-запросов\u003C\u002Fli>\n\u003Cli>Читает фронтенд-типы и компоненты\u003C\u002Fli>\n\u003Cli>Вносит все изменения в 12+ файлов\u003C\u002Fli>\n\u003Cli>Запускает \u003Ccode>cargo check\u003C\u002Fcode> для проверки компиляции Rust-кода\u003C\u002Fli>\n\u003Cli>Запускает \u003Ccode>npm run build\u003C\u002Fcode> для проверки сборки фронтенда\u003C\u002Fli>\n\u003Cli>Исправляет ошибки и итерирует до успешного прохождения обоих\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Весь процесс занимает около 5 минут вместо 45-60 минут ручной работы. Что ещё важнее, он ловит баги перекрёстных ссылок, которые пропускают люди.\u003C\u002Fp>\n\u003Ch2 id=\"\">Написание миграций\u003C\u002Fh2>\n\u003Cp>Миграции базы данных особенно хорошо подходят для Claude Code, потому что требуют понимания текущей схемы, желаемого конечного состояния и безопасного пути трансформации между ними.\u003C\u002Fp>\n\u003Cp>Когда мы просим Claude Code написать миграцию, он:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Читает все существующие файлы миграций для понимания текущей схемы\u003C\u002Fli>\n\u003Cli>Читает Rust-модели для понимания целевого состояния\u003C\u002Fli>\n\u003Cli>Пишет SQL миграции с правильными \u003Ccode>ALTER TABLE\u003C\u002Fcode> выражениями\u003C\u002Fli>\n\u003Cli>Добавляет защиты \u003Ccode>IF NOT EXISTS\u003C\u002Fcode> для идемпотентности где уместно\u003C\u002Fli>\n\u003Cli>Обновляет Rust-модели и хендлеры для использования новой схемы\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Claude Code производит полную, работающую функциональность: файл миграции, модель с serde-деривами, хендлер со всеми CRUD-операциями на параметризованных sqlx-запросах, регистрацию маршрутов в \u003Ccode>main.rs\u003C\u002Fcode> и корректную обработку ошибок.\u003C\u002Fp>\n\u003Ch2 id=\"\">Генерация тестов\u003C\u002Fh2>\n\u003Cp>Мы активно используем Claude Code для генерации тестовых фикстур и SQL seed-данных. Наши файлы фикстур содержат реалистичный, объёмный контент (статьи на 1500+ слов) с корректными SEO-метаданными, и писать их вручную — утомительно и чревато ошибками.\u003C\u002Fp>\n\u003Cp>Рабочий процесс:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Описываем нужные статьи (тема, угол, техническая глубина)\u003C\u002Fli>\n\u003Cli>Claude Code генерирует SQL INSERT-выражения с полным Markdown-контентом\u003C\u002Fli>\n\u003Cli>Следует нашим UUID-конвенциям (\u003Ccode>d0000000-...\u003C\u002Fcode> для статей, \u003Ccode>a0000000-...\u003C\u002Fcode> для категорий)\u003C\u002Fli>\n\u003Cli>Добавляет \u003Ccode>ON CONFLICT (slug) DO NOTHING\u003C\u002Fcode> для идемпотентности\u003C\u002Fli>\n\u003Cli>Связывает статьи с тегами через junction-таблицу \u003Ccode>article_tags\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Для Rust unit-тестов Claude Code читает реализацию, выявляет граничные случаи и генерирует тестовые функции с описательными именами.\u003C\u002Fp>\n\u003Ch2 id=\"claude-code\">Ревью кода с Claude Code\u003C\u002Fh2>\n\u003Cp>Перед открытием merge request мы запускаем Claude Code как ревьюера:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Проверь все изменения на этой ветке на баги, проблемы безопасности,\nпроблемы производительности и соответствие нашим конвенциям из CLAUDE.md.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Claude Code:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Запускает \u003Ccode>git diff main...HEAD\u003C\u002Fcode> для просмотра всех изменений\u003C\u002Fli>\n\u003Cli>Анализирует каждый файл на потенциальные проблемы\u003C\u002Fli>\n\u003Cli>Проверяет SQL-инъекции (непараметризованные запросы)\u003C\u002Fli>\n\u003Cli>Верифицирует наличие i18n-ключей во всех 10 локалях\u003C\u002Fli>\n\u003Cli>Проверяет вызовы \u003Ccode>.unwrap()\u003C\u002Fcode> в продакшн-коде на Rust\u003C\u002Fli>\n\u003Cli>Проверяет обработку ошибок на соответствие нашим паттернам\u003C\u002Fli>\n\u003Cli>Сообщает о находках с путями к файлам и номерами строк\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Это ловит около 30% проблем, которые иначе были бы найдены на человеческом ревью, позволяя людям сосредоточиться на архитектуре и бизнес-логике.\u003C\u002Fp>\n\u003Ch2 id=\"\">Хуки: автоматизация контроля качества\u003C\u002Fh2>\n\u003Cp>Claude Code поддерживает хуки — скрипты, которые запускаются автоматически до или после определённых действий. Мы используем хуки для обеспечения качества:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Pre-commit хук:\u003C\u002Fstrong> Запускает \u003Ccode>cargo fmt --check\u003C\u002Fcode> и \u003Ccode>cargo clippy\u003C\u002Fcode> перед тем, как Claude Code создаст коммит. Если что-то не проходит, Claude Code исправляет проблемы и повторяет.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Post-edit хук:\u003C\u002Fstrong> После того как Claude Code модифицирует любой файл в \u003Ccode>\u002Fi18n\u002Flocales\u002F\u003C\u002Fcode>, хук запускает скрипт, проверяющий идентичность наборов ключей во всех 10 файлах локализации. Если ключи отсутствуют, Claude Code добавляет их.\u003C\u002Fp>\n\u003Cp>Хуки превращают Claude Code из движка подсказок в агента, обеспечивающего качество. Он не может случайно закоммитить неотформатированный код или неполные переводы.\u003C\u002Fp>\n\u003Ch2 id=\"mcp-claude-code\">MCP-серверы: расширение возможностей Claude Code\u003C\u002Fh2>\n\u003Cp>Model Context Protocol (MCP) серверы позволяют дать Claude Code доступ к внешним инструментам. Мы используем два кастомных MCP-сервера:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>MCP-сервер базы данных:\u003C\u002Fstrong> Позволяет Claude Code напрямую запрашивать наш PostgreSQL для разработки. При отладке проблем с данными Claude Code может выполнять SELECT-запросы для инспекции реального состояния БД, понять проблему и написать исправление — всё в одном цикле.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>MCP-сервер статуса деплоя:\u003C\u002Fstrong> Подключается к нашему CI\u002FCD-пайплайну. Claude Code может проверить, успешен ли последний деплой, прочитать логи сборки и диагностировать ошибки.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>MCP-серверы — это простые JSON-RPC сервисы. Реализация одного занимает около 100 строк кода. Рычаг огромен — каждый MCP-сервер добавляет новую возможность, которую Claude Code может использовать автономно в своём агентном цикле.\u003C\u002Fp>\n\u003Ch2 id=\"1m\">Советы для больших кодовых баз с контекстом 1M\u003C\u002Fh2>\n\u003Cp>Контекстное окно Claude Code в 1M токенов — его самая мощная функция для работы с монорепо. Вот как мы максимизируем его:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Позвольте Claude Code исследовать.\u003C\u002Fstrong> Не пытайтесь заранее выбрать, какие файлы показать. Опишите, что вам нужно, и позвольте Claude Code использовать свои инструменты (\u003Ccode>Grep\u003C\u002Fcode>, \u003Ccode>Glob\u003C\u002Fcode>, \u003Ccode>Read\u003C\u002Fcode>) для поиска релевантного кода.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Используйте CLAUDE.md для стабильного контекста.\u003C\u002Fstrong> Информация, которая не меняется между сессиями — архитектура, конвенции, команды — помещается в CLAUDE.md, чтобы Claude Code не тратил контекст на повторное обнаружение.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Разбивайте мега-задачи на фазы.\u003C\u002Fstrong> Даже с 1M токенов задача вроде «рефакторинг всей системы аутентификации» выигрывает от поэтапного подхода: сначала анализ и план, потом реализация модуль за модулем, потом тестирование.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Доверяйте агентному циклу.\u003C\u002Fstrong> Когда Claude Code вносит изменение, запускает сборку, видит ошибку и исправляет её — этот цикл и есть главная функция. Не прерывайте его на полпути. Дайте ему сойтись.\u003C\u002Fp>\n\u003Ch2 id=\"\">Подводные камни и обходные пути\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Подводный камень: Claude Code переусложняет.\u003C\u002Fstrong> Иногда он добавляет абстракции или паттерны, которые не нужны. Обходной путь: добавьте «KISS — Не переусложняй» в ваш CLAUDE.md.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Подводный камень: устаревший контекст в длинных сессиях.\u003C\u002Fstrong> После множества правок понимание Claude Code текущего состояния файлов может сместиться. Обходной путь: начинайте новую сессию для каждой крупной задачи.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Подводный камень: недетерминированный вывод.\u003C\u002Fstrong> Один и тот же промпт может дать разный код при разных запусках. Обходной путь: используйте конкретные, детальные промпты.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Подводный камень: качество тестовых данных.\u003C\u002Fstrong> AI-сгенерированные тестовые данные могут быть внутренне противоречивыми. Обходной путь: всегда проверяйте сгенерированные фикстуры и запускайте полный набор тестов.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Подводный камень: агрессивные изменения файлов.\u003C\u002Fstrong> Claude Code иногда модифицирует файлы, которые вы не просили трогать. Обходной путь: тщательно проверяйте дифф перед принятием.\u003C\u002Fp>\n\u003Ch2 id=\"faq\">FAQ\u003C\u002Fh2>\n\u003Ch3>Сколько стоит Claude Code при ежедневном использовании?\u003C\u002Fh3>\n\u003Cp>Для нашей команды из 4 разработчиков мы тратим примерно $200-300\u002Fмесяц на использование API Claude Code по всем проектам. Max план за $20\u002Fмесяц на разработчика — более предсказуемая альтернатива.\u003C\u002Fp>\n\u003Ch3>Работает ли Claude Code офлайн?\u003C\u002Fh3>\n\u003Cp>Нет. Claude Code требует подключения к интернету для связи с API Anthropic. Вся обработка кода происходит на стороне сервера.\u003C\u002Fp>\n\u003Ch3>Может ли Claude Code сломать нашу сборку?\u003C\u002Fh3>\n\u003Cp>Да, но он ловит большинство проблем сам. Claude Code запускает ваши команды сборки как часть агентного цикла. Если \u003Ccode>cargo check\u003C\u002Fcode> падает, он читает ошибку и исправляет. По нашему опыту, около 90% сборок проходят с первого раза, а 99% — после цикла самокоррекции.\u003C\u002Fp>\n\u003Ch3>Как вы обрабатываете секреты и переменные окружения?\u003C\u002Fh3>\n\u003Cp>Claude Code уважает \u003Ccode>.gitignore\u003C\u002Fcode> и может быть настроен на исключение чувствительных файлов. Мы никогда не храним секреты в репозитории. Наши \u003Ccode>.env\u003C\u002Fcode> файлы в gitignore, а \u003Ccode>.env.example\u003C\u002Fcode> используется для документации необходимых переменных без значений.\u003C\u002Fp>\n\u003Ch3>Подходит ли Claude Code для разработчика-одиночки?\u003C\u002Fh3>\n\u003Cp>Определённо. В некоторых отношениях он ещё ценнее для одиночных разработчиков, потому что служит второй парой глаз для ревью кода, базой знаний для запоминания конвенций проекта и мультипликатором силы для рутинных задач.\u003C\u002Fp>\n\u003Ch2 id=\"\">Заключение\u003C\u002Fh2>\n\u003Cp>Claude Code — это не волшебная палочка, которая пишет приложение за вас. Это мультипликатор силы, который превосходит в кросс-стековом рассуждении, обеспечении конвенций и утомительных мультифайловых изменениях. Комбинация CLAUDE.md для постоянных знаний о проекте, хуков для обеспечения качества и MCP-серверов для доступа к внешним инструментам делает его наиболее способным AI-инструментом разработки для работы с монорепо.\u003C\u002Fp>\n\u003Cp>Ключевой инсайт после 9 месяцев ежедневного использования: Claude Code наиболее ценен не для написания нового кода, а для поддержки существующего — рефакторинга, миграции, тестирования и ревью. Это задачи, которые занимают 70% времени разработчика и больше всего выигрывают от агента, понимающего всю кодовую базу.\u003C\u002Fp>\n","ru","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:34.673425Z","Как мы используем Claude Code для монорепо Nuxt 4 + Rust","Узнайте, как Open Soft использует Claude Code для мультифайлового рефакторинга, написания миграций, генерации тестов и ревью кода в монорепо Nuxt 4 + Rust.","claude code монорепо рабочий процесс",null,"index, follow",[22,27,31,35,39],{"id":23,"name":24,"slug":25,"created_at":26},"c0000000-0000-0000-0000-000000000008","AI","ai","2026-03-28T10:44:21.513630Z",{"id":28,"name":29,"slug":30,"created_at":26},"c0000000-0000-0000-0000-000000000012","DevOps","devops",{"id":32,"name":33,"slug":34,"created_at":26},"c0000000-0000-0000-0000-000000000004","Nuxt","nuxt",{"id":36,"name":37,"slug":38,"created_at":26},"c0000000-0000-0000-0000-000000000001","Rust","rust",{"id":40,"name":41,"slug":42,"created_at":26},"c0000000-0000-0000-0000-000000000002","TypeScript","typescript","Инженерия",[45,51,57],{"id":46,"title":47,"slug":48,"excerpt":49,"locale":12,"category_name":43,"published_at":50},"d0200000-0000-0000-0000-000000000013","Почему Бали становится хабом импакт-технологий Юго-Восточной Азии в 2026 году","pochemu-bali-stanovitsya-khabom-impakt-tekhnologiy-2026","Бали занимает 16-е место среди стартап-экосистем Юго-Восточной Азии. Растущая концентрация Web3-разработчиков, ИИ-стартапов в области устойчивого развития и компаний в сфере эко-тревел-технологий формирует нишу столицы импакт-технологий региона.","2026-03-28T10:44:37.953039Z",{"id":52,"title":53,"slug":54,"excerpt":55,"locale":12,"category_name":43,"published_at":56},"d0200000-0000-0000-0000-000000000012","Защита данных в ASEAN: чек-лист разработчика для мультистранового комплаенса","zashchita-dannykh-asean-chek-list-razrabotchika-komplaens","Семь стран ASEAN имеют собственные законы о защите данных с разными моделями согласия, требованиями к локализации и штрафами. Практический чек-лист для разработчиков мультистрановых приложений.","2026-03-28T10:44:37.944001Z",{"id":58,"title":59,"slug":60,"excerpt":61,"locale":12,"category_name":43,"published_at":62},"d0200000-0000-0000-0000-000000000011","Цифровая трансформация Индонезии на $29 миллиардов: возможности для софтверных компаний","tsifrovaya-transformatsiya-indonezii-29-milliardov-vozmozhnosti-dlya-kompaniy","Рынок IT-услуг Индонезии вырастет с $24,37 млрд в 2025 году до $29,03 млрд в 2026 году. Облачная инфраструктура, искусственный интеллект, электронная коммерция и дата-центры обеспечивают самый быстрый рост в Юго-Восточной Азии.","2026-03-28T10:44:37.917095Z",{"id":13,"name":64,"slug":65,"bio":66,"photo_url":19,"linkedin":19,"role":67,"created_at":68,"updated_at":68},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]