---
type: JS Module
title: n-rules-cli.mjs
resource: npm/bin/n-rules-cli.mjs
docgen:
  crc: 328c01de
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 40
  issues: no-overview,internal-name:RULE_MIGRATIONS,internal-name:syncClaudeConfig,anchor-miss:https://unpkg.com/@7n/rules/schemas/n-rules.json,anchor-miss:meta.json,anchor-miss:main.json
---

Цей модуль надає CLI для управління та синхронізації правил конформності (`n-rules`), а також для інтеграції з інструментами розробки, такими як Cursor та Claude. Він автоматично завантажує, мігрує та розгортає конфігураційні файли та артефакти проєкту на основі правил, визначених у пакеті.

## Поведінка
1. **Синхронізація правил (дефолтна поведінка):**
    1. Визначає кореневу директорію проєкту.
    2. Перевіряє наявність `.n-rules.json`; якщо відсутній, мігрує застарілі конфіги (`.n-cursor.json`, `nitra-cursor.json`) або генерує новий конфіг на основі доступних правил і скілів пакету.
    3. Оновлює `package.json` з залежностями пакета, якщо це необхідно.
    4. Викликає `bun install` для оновлення залежностей.
    5. Зчитує конфіг `.n-rules.json`, автоматично нормалізуючи та сортуючи масиви `rules` та `skills`.
    6. Аналізує конфіг, автоматично додаючи правила/скіли, що існують у пакеті, але не в конфізі, та синхронізуючи `$schema`.
    7. Копіює всі керовані `.mdc` правила з пакету в `.cursor/rules`.
    8. Видаляє з `.cursor/rules` файли `.mdc` пакету, які не знаходяться у поточному конфізі.
    9. Синхронізує локальні та керовані скіли у:
        *   `.cursor/skills` (для Cursor Agent).
        *   `.claude/commands` (для Claude CLI).
        *   `.pi/skills` (для pi.dev).
    10. Оновлює файли `AGENTS.md` та `CLAUDE.md` з актуальними посиланнями на правила та скіли.
    11. Синхронізує `.claude/settings.json` та `.cursor/hooks.json` з налаштуваннями пакета.
    12. Видаляє "сирі" артефакти (орфани) у `.cursor/rules`, `.cursor/skills`, `.claude/commands`, `.pi/skills`, якщо вони не відповідають конфігу.

## Публічний API
* **`runCli`**: Виконує основну маршрутизацію команд CLI, обробляючи аргументи та викликаючи відповідні робочі функції.
* **`runSync`**: Виконує повноцінну синхронізацію конфігурації та артефактів проєкту з пакету правил.
* **`syncManagedRuleFiles`**: Копіює визначені правила (`.mdc`) з пакету до робочої директорії.
* **`syncSkills`**: Копіює артефакти скілів у директорію `.cursor/skills` відповідно до конфігурації.
* **`syncCommands`**: Генерує файли команд `.md` у `.claude/commands` на основі скілів пакету.
* **`syncPiSkills`**: Генерує файли `.md` у `.pi/skills` для забезпечення сумісності з pi.dev.
* **`syncClaudeConfig`**: Оновлює файли `.claude/settings.json` та `.cursor/hooks.json` з налаштуваннями, визначеними пакетом.
* **`syncAgentsMd`**: Перезаписує `AGENTS.md` у корені проєкту, включаючи інформацію про правила та скіли.
* **`syncClaudeMd`**: Генерує `CLAUDE.md`, що містить `@import` директиви для всіх активних правил та опис механізмів лінту.
* **`readConfig`**: Зчитує, нормалізує та автоматично доповнює конфігурацію `.n-rules.json`.
* **`migrateLegacyConfigIfNeeded`**: Виконує міграцію старого конфігураційного файлу, якщо його немає.
* **`removeOrphanManagedRuleFiles`**: Видаляє файли правил `.mdc` у робочій директорії, яких більше немає у конфігурації.

## Гарантії поведінки
*   **Стабільність конфігу:** Усі масиви ID (`rules`, `skills`, `disable-rules`, `disable-skills`) у `.n-rules.json` завжди зберігаються у відсортованому алфавітному порядку після синхронізації.
*   **JSON Schema:** Файл `.n-rules.json` завжди містить `$schema` із публічним URL-посиланням на схему пакета, або його автоматично оновлює при зчитуванні.
*   **Ізоляція:** Операції `lint` з прапорцями `--full` та `--no-fix` (full-repo run) примусово виконуються у ізольованому git-worktree, щоб гарантувати чистоту робочої області.
*   **Конфігураційне джерело:** При відсутності `.n-rules.json`, він створюється автоматично, використовуючи всі доступні правила/скіли пакету як базовий набір.
*   **Синхронізація:** При оновленні пакета (`npx`) виконується механізм само-апгрейду та перезапуску (`ReexecHandoff`), щоб гарантувати завантаження нової логіки (наприклад, оновлення `RULE_MIGRATIONS`).
*   **Дедуплікація:** Команди та скіли, що знаходяться у робочих директоріях, синхронізуються з джерелами пакету, а "орфани" (ті, що залишилися у директоріях, але відсутні в конфізі) автоматично видаляються.
