# Соответствовать стандартам и обновляться (/ru/docs/build-stay-compliant)

Ваш инструмент работает сегодня. Эта страница показывает, как сохранить это, пока меняются cli-core и cli-base: где
лежат правила, какие проверки их подтверждают и что делать, когда выпуск меняет то, чем пользуется ваш инструмент.

## Справочник [#справочник]

Правила, которым следует каждый инструмент WireCat, — в
[справочнике стандартов](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/README.md). Он входит в `@wirecat/cli-base`, поэтому у вашего
инструмента он лежит в `node_modules/@wirecat/cli-base/docs/standards/README.md` той же версии, что и проверки, которые
он запускает. Начните со [списка для нового CLI](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/new-cli.md): каждый шаг называет проверку, которая его
подтверждает.

Страницы, которые инструмент на общем хранилище читает первыми:

* [Модель данных](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/data-model.md): сущности, записи источников, `external_id`, имена полей, связи;
* [Хранилище](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/store.md): области хранилища, миграции, никакого SQL из инструмента;
* [Архитектура](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/architecture.md): слои и что в каком пакете;
* [Безопасность](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/security.md) и [Аккаунты](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/accounts.md): секреты и явный профиль.

## Проверки [#проверки]

* **`cli-dev lint`** (из cli-base) читает команды, которые печатает ваш инструмент, и проверяет имена, флаги, справку и
  правила вывода. Известные расхождения один раз записываются в `lint/baseline/`; список только сокращается, а
  исключений может быть не больше десяти.
* **`cli-dev audit`** сравнивает ваши команды с другими инструментами: обязательные корневые команды и один контракт
  для одного пути команды.
* **Общая настройка проверки кода** (Biome с плагинами WireCat) проверяет исходники: никаких глубоких импортов во
  внутренности cli-core, никакой оболочки, собранной из строк.
* Правило, которое машина проверить не может, помечено в справочнике как «review only». Прочитайте его, прежде чем
  менять эту часть.

## Версии и ломающие изменения [#версии-и-ломающие-изменения]

cli-core и cli-base выходят, как только изменение готово, и выпуск может ломать вызывающий код
([WC-REL-8](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/releases.md#wc-rel-8--any-package-may-release-at-any-time)). До версии 1.0.0 минорная версия может ломать
вызывающий код, и журнал изменений cli-core пишет, как именно, в разделе «Changed — may break callers».

Когда выходит новый cli-core:

1. Прочитайте его раздел журнала изменений, начиная с ломающей части.
2. Поднимите cli-core в своём инструменте в тот же день, что и другие инструменты, чтобы все открывали общее хранилище с
   одной схемой.
3. Запустите тесты и `cli-dev lint`, затем выпускайте.

Общее хранилище движется только вперёд. Новый cli-core может мигрировать файл; старая сборка тогда отказывается его
открывать и говорит обновиться, вместо того чтобы прочитать его неверно
([WC-STORE-10](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/store.md#wc-store-10--an-older-build-refuses-a-store-it-cannot-read-and-says-to-upgrade)).
Поэтому инструмент, оставшийся на старом cli-core, может перестать работать, когда владелец обновит другой инструмент.

Инструмент, созданный из cli-template, получает и последующие изменения шаблона командой
`npx @wirecat/cli-template upgrade`: см. [Обновляйтесь](/llms.mdx/docs/ru/build-create-cli/content.md#%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D1%8F%D0%B9%D1%82%D0%B5%D1%81%D1%8C).

## Скоро [#скоро]

* **Проверка исходников на доступ к хранилищу**, чтобы инструмент, который напрямую импортирует драйвер SQLite, не
  проходил проверку.

## Что сломается, если это пропустить [#что-сломается-если-это-пропустить]

Инструмент, пропустивший обновление, читает хранилище, которое уже не понимает, и отказывается запускаться. Инструмент,
отключивший правило проверки, расходится с остальными, и агенты, выучившие команды одного инструмента, ошибаются в
вашем.

К началу: [Основы за пять минут](/llms.mdx/docs/ru/build-concepts/content.md).
