---
type: JS Module
title: main.mjs
resource: npm/rules/adr/hooks/main.mjs
docgen:
  crc: 89b68c68
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 100
  issues: judge:inaccurate:0.98
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

Цей файл перевіряє відповідність локальної конфігурації та структурних елементів проєкту, які визначені у `settings.json`, `settings.local.json` та `.cursor/hooks.json`. Він валідує наявність та структуру хук-артефактів, зазначених у цих конфігураційних файлах, та забезпечує, що певні шляхи свідомо виключені з обробки (наприклад, `.git`). (adr.mdc)

## Поведінка

Поведінка:
1. Викликається функція main з поточним робочим каталогом як аргументом.
2. Ініціалізується механізм збору результатів перевірки.
3. Для кожного визначеного хук-артефакта перевіряється відповідність локального хук-скрипта канонічному файлу, що міститься у пакеті, та перевіряється наявність необхідних файлів.
4. Перевіряється наявність файлу проєкту `settings.json`, який є необхідним для роботи Stop-hook.
5. Перевіряється конфігурація хуків у `.cursor/hooks.json` на наявність відповідних маркерів для кожного хук-артефакта.
6. Перевіряється файл `.gitignore` на відповідність для всіх лог-файлів хуків, щоб гарантувати їхнє ігнорування.
7. Перевіряється файл `.gitignore` на відповідність для всіх файлів стану (state files) хуків нормалізації, щоб гарантувати їхнє ігнорування.
8. Перевіряється наявність каталогу `docs/adr/`, який є обов'язковим місцем для розміщення ADR-ів.
9. Виконується інформативна перевірка стану capture-бекенду: дефолтний `pi` (npm-first lookup — root `.bin`, nested `@nitra/cursor` `.bin`, системний шлях — і наявність локальної моделі) разом зі станом cloud-фолбеку `claude`/`cursor-agent`, доступного через `CAPTURE_DECISIONS_BACKEND`.
10. Механізм збору результатів повертає кінцевий код виходу.
11. Код не перевіряє шляхи, що стосуються `.git`.
12. Функція main не здійснює жодного запису у файлову систему чи бази даних.

## Гарантії поведінки

- Read-only: не виконує операцій запису (ФС/БД).
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
- Свідомо пропускає шляхи: `.git`.
