@nitra/cursor 12.9.0 → 12.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/.claude-template/settings.template.json +1 -23
  2. package/CHANGELOG.md +6 -0
  3. package/bin/n-cursor.js +8 -43
  4. package/docs/stryker.config.md +0 -2
  5. package/lib/docs/llm.md +16 -21
  6. package/lib/docs/omlx.md +20 -25
  7. package/lib/llm.mjs +25 -7
  8. package/lib/omlx.mjs +10 -3
  9. package/package.json +1 -1
  10. package/rules/abie/docs/main.md +0 -2
  11. package/rules/abie/lib/docs/http-route.md +0 -2
  12. package/rules/abie/main.mdc +0 -22
  13. package/rules/adr/docs/main.md +0 -2
  14. package/rules/adr/main.mdc +0 -9
  15. package/rules/bun/docs/main.md +0 -2
  16. package/rules/bun/main.mdc +1 -15
  17. package/rules/capacitor/docs/main.md +0 -2
  18. package/rules/capacitor/main.mdc +0 -6
  19. package/rules/changelog/docs/main.md +0 -2
  20. package/rules/changelog/js/agent-workflow.mdc +1 -1
  21. package/rules/changelog/js/consistency.mjs +3 -3
  22. package/rules/changelog/js/docs/consistency.md +18 -23
  23. package/rules/changelog/main.mdc +0 -5
  24. package/rules/ci4/docs/main.md +0 -2
  25. package/rules/ci4/main.mdc +0 -5
  26. package/rules/doc-files/docs/main.md +0 -2
  27. package/rules/doc-files/js/docs/docgen-crc.md +0 -2
  28. package/rules/doc-files/js/docs/docgen-extract.md +0 -2
  29. package/rules/doc-files/js/docs/docgen-files-batch.md +0 -2
  30. package/rules/doc-files/js/docs/docgen-gen.md +0 -2
  31. package/rules/doc-files/js/docs/docgen-judge-measure.md +0 -2
  32. package/rules/doc-files/js/docs/docgen-judge.md +0 -2
  33. package/rules/doc-files/js/docs/docgen-scan.md +0 -2
  34. package/rules/doc-files/js/docs/run-lint.md +0 -2
  35. package/rules/docker/docs/main.md +0 -2
  36. package/rules/docker/js/docs/lint.md +0 -2
  37. package/rules/docker/lib/docs/docker-hadolint.md +0 -2
  38. package/rules/docker/main.mdc +1 -21
  39. package/rules/efes/docs/main.md +0 -2
  40. package/rules/efes/main.mdc +0 -1
  41. package/rules/feedback/docs/main.md +0 -2
  42. package/rules/ga/docs/main.md +0 -2
  43. package/rules/ga/js/docs/index.md +0 -1
  44. package/rules/ga/main.mdc +1 -31
  45. package/rules/graphql/docs/main.md +0 -2
  46. package/rules/graphql/main.mdc +0 -5
  47. package/rules/hasura/docs/main.md +0 -2
  48. package/rules/hasura/js/docs/index.md +3 -3
  49. package/rules/hasura/js/docs/migrations.md +0 -2
  50. package/rules/hasura/main.mdc +1 -11
  51. package/rules/image-avif/docs/main.md +0 -2
  52. package/rules/image-avif/main.mdc +1 -9
  53. package/rules/image-compress/docs/main.md +0 -2
  54. package/rules/image-compress/js/docs/index.md +0 -1
  55. package/rules/image-compress/main.mdc +1 -9
  56. package/rules/js/docs/main.md +0 -2
  57. package/rules/js/js/dep-policy.mjs +8 -4
  58. package/rules/js/js/docs/check.md +0 -2
  59. package/rules/js/js/docs/dep-policy.md +10 -12
  60. package/rules/js/js/docs/index.md +5 -5
  61. package/rules/js/js/docs/tooling.md +0 -2
  62. package/rules/js/js/docs/utils_imports.md +0 -2
  63. package/rules/js/main.mdc +0 -31
  64. package/rules/js-bun-db/docs/main.md +0 -2
  65. package/rules/js-bun-db/js/docs/safety.md +18 -23
  66. package/rules/js-bun-db/js/safety.mjs +31 -3
  67. package/rules/js-bun-db/lib/bun-sql-scan.mjs +123 -0
  68. package/rules/js-bun-db/lib/docs/bun-sql-scan.md +37 -331
  69. package/rules/js-bun-db/main.mdc +1 -23
  70. package/rules/js-bun-redis/docs/main.md +0 -2
  71. package/rules/js-bun-redis/main.mdc +0 -5
  72. package/rules/js-mssql/docs/main.md +0 -2
  73. package/rules/js-mssql/main.mdc +0 -12
  74. package/rules/js-run/docs/main.md +0 -2
  75. package/rules/js-run/js/docs/runtime.md +15 -13
  76. package/rules/js-run/js/runtime.mjs +48 -4
  77. package/rules/js-run/main.mdc +0 -25
  78. package/rules/k8s/docs/main.md +0 -2
  79. package/rules/k8s/main.mdc +0 -45
  80. package/rules/nginx-default-tpl/docs/main.md +0 -2
  81. package/rules/nginx-default-tpl/main.mdc +0 -13
  82. package/rules/npm-module/docs/main.md +0 -2
  83. package/rules/npm-module/js/docs/header_doc_pointer.md +0 -2
  84. package/rules/npm-module/js/docs/rule_meta.md +0 -2
  85. package/rules/npm-module/js/docs/skill_meta.md +0 -2
  86. package/rules/npm-module/main.mdc +1 -15
  87. package/rules/php/docs/main.md +0 -2
  88. package/rules/php/js/docs/index.md +0 -1
  89. package/rules/php/main.mdc +1 -9
  90. package/rules/python/docs/main.md +0 -2
  91. package/rules/python/js/docs/index.md +0 -1
  92. package/rules/python/main.mdc +1 -13
  93. package/rules/rego/docs/main.md +0 -2
  94. package/rules/rego/js/docs/index.md +2 -2
  95. package/rules/rego/js/docs/tooling.md +0 -2
  96. package/rules/rego/js/tooling.mdc +14 -0
  97. package/rules/rego/main.mdc +0 -9
  98. package/rules/rego/policy/package_json/package_json.mdc +12 -0
  99. package/rules/release/docs/main.md +0 -2
  100. package/rules/release/main.mdc +2 -2
  101. package/rules/rust/docs/main.md +0 -2
  102. package/rules/rust/js/docs/index.md +0 -1
  103. package/rules/rust/main.mdc +1 -11
  104. package/rules/rust/policy/package_json/package_json.mdc +12 -0
  105. package/rules/security/docs/main.md +0 -2
  106. package/rules/security/js/docs/index.md +0 -1
  107. package/rules/security/main.mdc +0 -13
  108. package/rules/style/docs/main.md +0 -2
  109. package/rules/style/js/docs/index.md +2 -2
  110. package/rules/style/js/docs/tooling.md +0 -2
  111. package/rules/style/main.mdc +1 -23
  112. package/rules/tauri/docs/main.md +0 -2
  113. package/rules/tauri/main.mdc +1 -11
  114. package/rules/test/docs/main.md +0 -2
  115. package/rules/test/js/docs/no-console-store-restore.md +0 -2
  116. package/rules/test/js/docs/sandbox-aware-test.md +0 -2
  117. package/rules/test/js/docs/stryker_config.md +0 -2
  118. package/rules/test/js/docs/vitest-config-pool-forks.md +0 -2
  119. package/rules/test/main.mdc +1 -21
  120. package/rules/text/docs/main.md +0 -2
  121. package/rules/text/js/docs/cspell-fix.md +0 -2
  122. package/rules/text/js/docs/run-dotenv-linter.md +0 -2
  123. package/rules/text/js/docs/run-shellcheck.md +0 -2
  124. package/rules/text/js/docs/run-v8r.md +0 -2
  125. package/rules/text/main.mdc +0 -33
  126. package/rules/tool-surface/docs/main.md +0 -2
  127. package/rules/vue/docs/main.md +0 -2
  128. package/rules/vue/main.mdc +0 -22
  129. package/rules/worktree/docs/main.md +0 -2
  130. package/scripts/docs/auto-rules.md +0 -2
  131. package/scripts/docs/auto-skills.md +0 -2
  132. package/scripts/docs/hook.md +13 -12
  133. package/scripts/docs/post-tool-use-check.md +0 -2
  134. package/scripts/docs/sync-claude-config.md +1 -3
  135. package/scripts/docs/sync-setup-bun-deps-action.md +0 -2
  136. package/scripts/hook.mjs +3 -4
  137. package/scripts/lib/docs/check-mdc-template-refs.md +0 -2
  138. package/scripts/lib/docs/index.md +35 -35
  139. package/scripts/lib/docs/inline-template-links.md +6 -8
  140. package/scripts/lib/docs/list-project-rules-mdc.md +0 -2
  141. package/scripts/lib/docs/list-rule-ids.md +0 -2
  142. package/scripts/lib/docs/mirror-parity.md +8 -10
  143. package/scripts/lib/docs/read-n-cursor-config-lite.md +0 -2
  144. package/scripts/lib/docs/rule-meta.md +0 -2
  145. package/scripts/lib/docs/run-lint.md +0 -2
  146. package/scripts/lib/docs/run-rule-cli.md +0 -2
  147. package/scripts/lib/docs/run-rule.md +0 -2
  148. package/scripts/lib/docs/run-standard-lint.md +0 -2
  149. package/scripts/lib/docs/run-standard-rule.md +0 -2
  150. package/scripts/lib/docs/skill-meta.md +0 -2
  151. package/scripts/lib/docs/timing-summary.md +0 -2
  152. package/scripts/lib/docs/worktree-notice.md +0 -2
  153. package/scripts/lib/fix/docs/analyze-escalation.md +0 -2
  154. package/scripts/lib/fix/docs/index.md +10 -9
  155. package/scripts/lib/fix/docs/llm-worker.md +18 -8
  156. package/scripts/lib/fix/docs/orchestrator.md +44 -20
  157. package/scripts/lib/fix/docs/run-conformance-check.md +0 -2
  158. package/scripts/lib/fix/docs/t0.md +0 -2
  159. package/scripts/lib/fix/docs/verbose-block.md +27 -0
  160. package/scripts/lib/fix/llm-worker.mjs +75 -22
  161. package/scripts/lib/fix/orchestrator.mjs +13 -3
  162. package/scripts/lib/fix/verbose-block.mjs +82 -0
  163. package/scripts/lib/inline-template-links.mjs +32 -22
  164. package/scripts/lib/mirror-parity.mjs +2 -2
  165. package/scripts/sync-claude-config.mjs +7 -4
  166. package/scripts/utils/docs/resolve-js-root.md +0 -2
  167. package/skills/doc-files/SKILL.md +9 -24
  168. package/skills/llm-patch/SKILL.md +4 -4
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль сканує репозиторій для пошуку файлів, що відповідають шаблону `*.test.{mjs,js}`. Він перевіряє вміст кожного такого файлу на наявність прямих присвоєнь методів консолі. Публічна функція `check` виявляє такі присвоєння. (test.mdc)
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль сканує тестові файли, що відповідають шаблону `*.test.{mjs,js}` у вказаному корені репозиторію. Він перевіряє, чи файли, що містять глибоку навігацію (визначену як використання `import.meta.dirname` або `import.meta.url` з чотирма або більше рівнями `..`), захищені викликом `withTmpDir` або `test.skipIf` з посиланням на змінну середовища `env.STRYKER_MUTATOR_WORKER`. Перевірка фіксує порушення (test.mdc) у разі відсутності необхідної ізоляції для тестових файлів з глибокою навігацією.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль перевіряє готовність JavaScript-проєктів до виконання тестів. Він збирає кореневі каталоги проєктів, використовуючи публічну функцію `check` для валідації. Перевірка гарантує наявність необхідних конфігураційних файлів, зокрема `mutation.json` та `package.json`, у кожному знайденому проєкті. Модуль свідомо пропускає каталоги `node_modules`. Він також додає відповідні артефакти тестів до `.gitignore` у коренях проєктів. (test.mdc)
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Визначає шлях до конфігураційного файлу Vitest. Перевіряє, чи встановлено в цьому файлі `pool: 'forks'`. (test.mdc)
14
12
 
15
13
  Поведінка:
@@ -7,22 +7,6 @@ alwaysApply: false
7
7
 
8
8
  Правило **test** керує розміщенням тестових файлів, безпекою ізоляції тестів (заборона `process.chdir`, відносних шляхів у FS, ручного store/restore console), налаштуванням Vitest/Stryker baseline та конфігурацією cargo-mutants для Rust.
9
9
 
10
- [test-location](./js/location.mdc)
11
-
12
- [test-no-process-chdir](./js/no-process-chdir.mdc)
13
-
14
- [test-no-relative-fs-path](./js/no-relative-fs-path.mdc)
15
-
16
- [test-no-console-store-restore](./js/no-console-store-restore.mdc)
17
-
18
- [test-sandbox-aware-test](./js/sandbox-aware-test.mdc)
19
-
20
- [test-vitest-config-pool-forks](./js/vitest-config-pool-forks.mdc)
21
-
22
- [test-stryker-config](./js/stryker_config.mdc)
23
-
24
- [test-cargo-mutants-config](./js/cargo_mutants_config.mdc)
25
-
26
10
  ## Покриття + мутаційне тестування
27
11
 
28
12
  Канонічна команда — `n-cursor coverage`: збирає метрики покриття (`vitest run --coverage`, `cargo llvm-cov` тощо) і мутаційного тестування (Stryker з vitest-runner + `coverageAnalysis: 'perTest'`, `cargo-mutants`) з усіх активних провайдерів у `.n-cursor.json#rules` і пише `COVERAGE.md` у корінь проєкту.
@@ -35,8 +19,4 @@ alwaysApply: false
35
19
 
36
20
  ### Multi-workspace iteration
37
21
 
38
- У monorepo `n-cursor coverage` ітерує усі workspaces з власним `package.json` і агрегує метрики lcov + Stryker у єдиний `JS`-рядок `COVERAGE.md`. Workspace без тестів пропускається без помилки.
39
-
40
- ## Швидкий gate через conftest
41
-
42
- [test-package_json](./policy/package_json/package_json.mdc)
22
+ У monorepo `n-cursor coverage` ітерує усі workspaces з власним `package.json` і агрегує метрики lcov + Stryker у єдиний `JS`-рядок `COVERAGE.md`. Workspace без тестів пропускається без помилки.
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Цей модуль є CLI-обгорткою над канонічним `lint-text` (text.mdc) та викликається через `n-cursor lint text` (оркестраторний адаптер `lint`). Він автоматично встановлює необхідні інструменти (`shellcheck`, `dotenv-linter`) через `ensureTool` (brew/scoop/GitHub Release per-platform) та перевіряє наявність `patch` (для авто-фіксу shellcheck). Функція `runLintTextCli` послідовно виконує: 1) перевірку правопису з `@nitra/cspell-dict` (`cspell .`); 2) авто-фікс та фінальну перевірку `.sh` файлів (`shellcheck`); 3) авто-фікс та фінальну перевірку `.env*` файлів (`dotenv-linter`); 4) авто-фікс Markdown-документів (`markdownlint-cli2 --fix "**\/*.md" "**\/*.mdc"`); 5) schema-валідацію JSON/YAML/TOML через `v8r`. При першому ненульовому коді з ланцюжка повертається код виходу, і наступні кроки не запускаються. Конфігурації, на які спирається код: meta.json.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль інтегрує cspell у ланцюжку lint-text для класифікації невідомих слів згідно зі схемою docs/specs/2026-06-15-opportunistic-llm-fix-tier.md. Він виявляє невідомі слова, класифікує їх за допомогою LLM у межах omlx-класифікації. Валідні слова автоматично дописуються до `.cspell.json#words` (відповідно до конфігурацій .cspell.json та meta.json). Невалідні знахідки залишаються для ручного рев'ю. Процес є read-only (нуль мутацій), оскільки fix-режим не переписує файли, а лише класифікує знахідки. Після дописування словника виконується re-detect. Гейт-механізм гарантує, що cspell поверне ненульовий код, якщо нерозкласифіковані або потенційні одруки залишилися.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль запускає `dotenv-linter` для валідації конфігураційних файлів `.env*` відповідно до стандартів (наприклад, `LowercaseKey`). Процес включає два етапи: спочатку автоматичне виправлення порушень за допомогою `dotenv-linter fix`, а потім фінальну перевірку за допомогою `dotenv-linter check`. Інструмент очікується у системному PATH і не включається у залежності проєкту. Він рекурсивно шукає файли, виключаючи `node_modules` та `.envrc`. Якщо `dotenv-linter` відсутній, виводиться інструкція щодо його встановлення (наприклад, `brew install dotenv-linter`) та повертається код помилки. Усі деталі роботи можна знайти за посиланням https://git.io/JLbXn.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Скрипт забезпечує відповідність shell-скриптів стандартам, виконуючи дві послідовні дії: спочатку застосовує автоматичні виправлення для проблем, виявлених `shellcheck` за допомогою формату виводу `diff` та команди `patch -p1` у корені проєкту; потім проводить фінальну перевірку всіх зібраних файлів. Скрипт збирає всі відстежувані shell-скрипти у робочому дереві, ігноруючи директорії `node_modules`. Якщо скриптів не знайдено, процес завершується з кодом 0. Якщо `shellcheck` або `patch` відсутні у PATH, скрипт завершується з кодом 1, надаючи підказки для їх встановлення. Після циклу автовиправлень будь-яке попередження чи помилка від `shellcheck` призводить до ненульового коду виходу.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Скрипт виконує єдиний виклик `v8r` для перевірки відповідності всіх файлів, які підтримує `v8r` (json, json5, yaml, yml, toml), визначеним контрактам. Це замінює необхідність у кількох окремих викликах `v8r`. Скрипт автоматично використовує каталог схем `@nitra/cursor`, який визначається у `v8r-catalog.json`. Якщо не надано додаткових аргументів, він шукає файли за типовими шаблонами у дереві проєкту. Механізм гарантує, що перевірка всіх розширень відбувається, навіть якщо один із глобів не знаходить файлів, оскільки він обходить проблему падіння `v8r` з кодом 98.
14
12
 
15
13
  ## Поведінка
@@ -6,40 +6,7 @@ version: '1.30'
6
6
 
7
7
  Правило охоплює весь текстовий стек проєкту: форматування (oxfmt), перевірку правопису (cspell), shell-скрипти (shellcheck), `.env`-файли (dotenv-linter), Markdown (markdownlint-cli2), JSON/YAML/TOML-схеми (v8r) та CI-workflow.
8
8
 
9
- [text-vscode](./js/vscode.mdc)
10
-
11
- [text-oxfmt](./js/oxfmt.mdc)
12
-
13
- [text-forbidden-prettier](./js/forbidden-prettier.mdc)
14
-
15
- [text-cspell](./js/cspell.mdc)
16
-
17
- [text-markdownlint](./js/markdownlint.mdc)
18
-
19
- [text-shellcheck](./js/shellcheck.mdc)
20
-
21
- [text-dotenv-linter](./js/dotenv-linter.mdc)
22
-
23
- [text-v8r](./js/v8r.mdc)
24
-
25
- [text-package-json](./js/package-json.mdc)
26
-
27
- [text-ci-lint-text](./js/ci-lint-text.mdc)
28
-
29
9
  ## Швидкий gate через conftest
30
10
 
31
11
  Rego-пакети, що перевіряються через conftest (auto-discovered за `target.json` поряд із `.rego`):
32
12
 
33
- [text-policy-cspell](./policy/cspell/cspell.mdc)
34
-
35
- [text-policy-lint_text](./policy/lint_text/lint_text.mdc)
36
-
37
- [text-policy-markdownlint](./policy/markdownlint/markdownlint.mdc)
38
-
39
- [text-policy-oxfmtrc](./policy/oxfmtrc/oxfmtrc.mdc)
40
-
41
- [text-policy-package_json](./policy/package_json/package_json.mdc)
42
-
43
- [text-policy-vscode_extensions](./policy/vscode_extensions/vscode_extensions.mdc)
44
-
45
- [text-policy-vscode_settings](./policy/vscode_settings/vscode_settings.mdc)
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль виконує валідацію контенту, застосовуючи правила, визначені в конфігурації, що зчитується з meta.json. Він обробляє запити, пов'язані з JavaScript, та взаємодіє з MDC. При запуску як CLI, він ініціалізує та виконує повний цикл перевірки, надаючи фінальний звіт.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль виконує перевірку, застосовуючи політику та обробляючи логіку JavaScript. Він забезпечує повний запуск правила, завантажуючи конфігурації, такі як meta.json, застосовуючи білі списки та підбиваючи підсумки. При запуску як окрема утиліта командного рядка, виконується повний цикл перевірки через публічну функцію run. Модуль є Read-only і кешує дані у межах прогону.
14
12
 
15
13
  ## Поведінка
@@ -9,32 +9,10 @@ alwaysApply: false
9
9
 
10
10
  Правило охоплює стандарти написання Vue 3 SFC з Composition API, конфігурацію Vite-проєкту, UI-бібліотеки, заборонені патерни та вимоги до тестування.
11
11
 
12
- [vue-composition-api](./js/composition-api.mdc)
13
-
14
- [vue-quasar-ui](./js/quasar-ui.mdc)
15
-
16
- [vue-structure](./js/structure.mdc)
17
-
18
- [vue-vite-config](./js/vite-config.mdc)
19
-
20
- [vue-vite-env](./js/vite-env.mdc)
21
-
22
- [vue-vue-imports](./js/vue-imports.mdc)
23
-
24
- [vue-node-imports](./js/node-imports.mdc)
25
-
26
- [vue-testing](./js/testing.mdc)
27
-
28
- [vue-nheader-layout](./js/nheader-layout.mdc)
29
-
30
- [vue-tfm-translations](./js/tfm-translations.mdc)
31
-
32
12
  ## Швидкий gate через conftest
33
13
 
34
14
  Rego-перевірки (запускаються через `npx @nitra/cursor fix vue`):
35
15
 
36
- [vue-package_json](./policy/package_json/package_json.mdc)
37
-
38
16
  ## Перевірка
39
17
 
40
18
  `npx @nitra/cursor fix vue` — перевіряє залежності, `vite.config`, наявність **`src/vite-env.d.ts`** з `/// <reference types="vite/client" />` та **`jsconfig.json`** у корені Vue-пакета; обходить джерела Vue-пакета (`.vue`, `.ts`, `.js` тощо) на заборонені value-імпорти з модуля `vue` (дозволені лише type-only та side-effect `import 'vue'`) і додатково сканує `.vue` SFC на імпорти Node-нативних модулів (`node:*` префікс або bare-ім'я вбудованого модуля Node — `fs`, `path`, `timers/promises` тощо). Імпорти аналізуються через **oxc-parser** (`module.staticImports`); для `.vue` вміст `<script>` витягується з SFC, далі той самий парсер (логіка в `npm/rules/vue/js/packages/vue-forbidden-imports.mjs`).
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль виконує перевірку, застосовуючи політики, визначені в meta.json. Він обробляє JS-запити та звертається до MDC-ресурсів. Модуль є Read-only, тобто не здійснює записів у файлову систему чи бази даних. При запуску як окрема утиліта командного рядка, він виконує правила, використовуючи публічну функцію run. Дані кешуються у межах одного прогону.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Автоматично визначає правила та скіли для конфігурації `.n-cursor.json`, скануючи мета-дані з `npm/rules/<id>/main.json` та аналізуючи структуру проєкту, зокрема `package.json`. Система виводить `AUTO_RULE_ORDER` (алфавітно) та `AUTO_RULE_DEPENDENCIES` для кожного правила. Для кожного правила обчислюється специфікація активації (`specMatches`), яка може бути безумовною (`always`), заснованою на шаблонах файлів (`glob`), або предикатною. Процес враховує винятки (`disable-rules`) та виконує транзитивне розгортання залежностей. Збираються контент-факти (GQL, bun-sql, hasura) для точного застосування правил. Також відбувається автоматичне виявлення скілів з `./auto-skills.mjs`, після чого всі виявлені правила та скіли зливаються у конфіг, враховуючи міграцію ID.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Визначає, які скіли мають автоматично активуватися, скануючи `npm/skills/` та аналізуючи `main.json` кожного скілу. Логіка активації базується на конфігурації скілу: скіл може активуватися завжди (`auto: "завжди"`), якщо всі перелічені правила виявлені (`auto: ["rule", …]`), або бути opt-in, якщо поле `auto` відсутнє у `main.json`. Це забезпечує, що визначення автоматичної активації скілів є детермінованим, оскільки `main.json` є джерелом правди. Результати сканування використовуються для встановлення `AUTO_SKILL_ORDER` та `AUTO_SKILL_RULE_DEPENDENCIES`, що впливає на роботу з `.n-cursor.json`.
14
12
 
15
13
  ## Поведінка
@@ -3,27 +3,28 @@ type: JS Module
3
3
  title: hook.mjs
4
4
  resource: npm/scripts/hook.mjs
5
5
  docgen:
6
- crc: 8a19fee4
7
- model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
- score: 90
6
+ crc: 602cd023
7
+ model: claude-sonnet-4-6
8
+ score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
- Модуль є точкою входу для хуків Claude Code. Він зчитує контекст, отримуючи шлях до файлу з вхідного потоку або визначаючи його через Git. У режимі `--post-tool-use` шлях до файлу зчитується з JSON, що надходить у stdin. У режимі `--stop` визначається робоче дерево проти HEAD (`git diff HEAD` + untracked). Після зчитування контексту, він делегує виконання перевірки за допомогою `runLint`. Код виходу, отриманий від перевірки, перекодовується у відповідний протокол хука (1 $\rightarrow$ 2).
11
+ Точка входу для хуків Claude Code. У режимі `--post-tool-use` зчитує `file_path` зі stdin JSON (PostToolUse hook), запускає lint для цього файлу та перевіряє актуальність файлової документації (`doc-files`). У режимі `--stop` визначає змінені файли (`git diff HEAD` + untracked) і запускає lint по всьому робочому дереву. Повертає exit-код у hook-протоколі (ненуль → 2).
14
12
 
15
13
  ## Поведінка
16
14
 
17
- extractFilePath: Витягує шлях до файлу з JSON, отриманого з вхідного потоку.
18
- runHookCli: Виконує логіку хука, визначаючи файли для перевірки на основі аргументів командного рядка, запускає перевірку та повертає відповідний код виходу.
15
+ `runHookCli` виконує відповідну логіку залежно від переданого режиму:
16
+
17
+ - **`--post-tool-use`**: читає stdin JSON → витягує `tool_input.file_path` → запускає `runLint` для цього файлу (read-only, усі per-file правила включно з `doc-files`) → повертає 2 при порушеннях.
18
+ - **`--stop`**: визначає всі змінені файли через `collectChangedFiles` → запускає `runLint` (read-only) → повертає 2 при порушеннях.
19
+
20
+ Якщо `file_path` відсутній у stdin або stdin порожній — завершується з кодом 0 (нема що перевіряти).
19
21
 
20
22
  ## Публічний API
21
23
 
22
- extractFilePath — витягує шлях до файлу з вхідних даних JSON хука Claude Code PostToolUse.
23
- runHookCli — виконує команду для хука n-cursor.
24
+ - `extractFilePath(json)` — витягує `tool_input.file_path` зі stdin JSON Claude Code PostToolUse hook; повертає `null` якщо JSON відсутній або поле не знайдено.
25
+ - `runHookCli(argv)`CLI-точка входу для `n-cursor hook`; повертає Promise<number> (0 — чисто, 1 — невідомий режим, 2 — є порушення).
24
26
 
25
27
  ## Гарантії поведінки
26
28
 
27
29
  - Read-only: не виконує операцій запису (ФС/БД).
28
- - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
29
- - За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
30
+ - Не кидає винятків назовні: помилки stdin та parse-помилки повертають null/0.
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Цей модуль є PostToolUse hook, який виконує read-only детект конформності всіх активованих правил після кожного редагування файлу (`Edit` / `Write` / `MultiEdit`). Він отримує шлях до файлу з вхідного JSON. Якщо файл відсутній, модуль завершує роботу з кодом 0. Інакше, він запускає детект конформності по всіх правилах, не виконуючи жодних мутацій чи викликів LLM. Код виходу 1 інформує про наявність порушень конформності, хоча PostToolUse не блокує поточний обмін.
14
12
 
15
13
  ## Поведінка
@@ -3,13 +3,11 @@ type: JS Module
3
3
  title: sync-claude-config.mjs
4
4
  resource: npm/scripts/sync-claude-config.mjs
5
5
  docgen:
6
- crc: 88f4080d
6
+ crc: 553933fa
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 85
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Синхронізує конфігурацію Claude Code (`.claude/settings.json`, slash-команди з `commands/` темплейту, ADR Stop-hook) та Cursor hooks (`.cursor/hooks.json`) у поточний проєкт із темплейтів пакету `npm/.claude-template/`. Здійснює злиття конфігурацій: користувацькі поля зберігаються у `.claude/settings.json`, а дозволи (`permissions.allow`) зливаються через union. Керовані хуки, ідентифіковані командою-маркером `MANAGED_HOOK_COMMAND_MARKERS`, перезаписуються. Копіює ADR Stop-hook (`.claude/hooks/capture-decisions.sh`) та ADR normalize Stop-hook (`.claude/hooks/normalize-decisions.sh`) залежно від налаштувань у `.n-cursor.json`. Також зливає фрагмент `.gitignore` з канонічного шаблону, додаючи необхідні записи для ADR.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Копіює composite GitHub Action `setup-bun-deps` з каталогу `github-actions/setup-bun-deps/` у корені tarball пакету `@nitra/cursor` у цільовий репозиторій за шлях `.github/actions/setup-bun-deps/action.yml`. Це забезпечує можливість для workflow з правил `ga`, `js` або `text` викликати цей action для налаштування залежностей Bun одразу після виконання `actions/checkout@v6`.
14
12
 
15
13
  ## Поведінка
package/scripts/hook.mjs CHANGED
@@ -58,15 +58,14 @@ export async function runHookCli(argv) {
58
58
  return 1
59
59
  }
60
60
 
61
- let files
62
61
  if (postToolUse) {
63
62
  const fp = extractFilePath(await readStdin())
64
63
  if (!fp) return 0
65
- files = [fp]
66
- } else {
67
- files = collectChangedFiles(cwd)
64
+ const code = await runLint({ files: [fp], readOnly: true, cwd })
65
+ return code !== 0 ? 2 : 0
68
66
  }
69
67
 
68
+ const files = collectChangedFiles(cwd)
70
69
  const code = await runLint({ files, readOnly: true, cwd })
71
70
  return code !== 0 ? 2 : 0
72
71
  }
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Визначає список файлів шаблонів, що знаходяться у каталогах `fix` та `policy`, які не є цільовими посиланнями у файлі `<id>.mdc` як markdown link targets. Це дозволяє ідентифікувати ресурси шаблонів, які не були згадані в контексті правила.
14
12
 
15
13
  ## Поведінка
@@ -6,39 +6,39 @@ resource: npm/scripts/lib/
6
6
 
7
7
  # npm/scripts/lib
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [assert-project-root.mjs](assert-project-root.md) | JS Module |
12
- | [changed-files.mjs](changed-files.md) | JS Module |
13
- | [check-mdc-template-refs.mjs](check-mdc-template-refs.md) | JS Module |
14
- | [check-reporter.mjs](check-reporter.md) | JS Module |
15
- | [diff-added-lines.mjs](diff-added-lines.md) | JS Module |
9
+ | Файл | Тип |
10
+ | --------------------------------------------------------------------------- | --------- |
11
+ | [assert-project-root.mjs](assert-project-root.md) | JS Module |
12
+ | [changed-files.mjs](changed-files.md) | JS Module |
13
+ | [check-mdc-template-refs.mjs](check-mdc-template-refs.md) | JS Module |
14
+ | [check-reporter.mjs](check-reporter.md) | JS Module |
15
+ | [diff-added-lines.mjs](diff-added-lines.md) | JS Module |
16
16
  | [discover-check-rules-from-cursor.mjs](discover-check-rules-from-cursor.md) | JS Module |
17
- | [discover-checkable-rules.mjs](discover-checkable-rules.md) | JS Module |
18
- | [ensure-tool.mjs](ensure-tool.md) | JS Module |
19
- | [generated-markdown.mjs](generated-markdown.md) | JS Module |
20
- | [gha-workflow.mjs](gha-workflow.md) | JS Module |
21
- | [inline-template-links.mjs](inline-template-links.md) | JS Module |
22
- | [list-project-rules-mdc.mjs](list-project-rules-mdc.md) | JS Module |
23
- | [list-rule-ids.mjs](list-rule-ids.md) | JS Module |
24
- | [load-cursor-config.mjs](load-cursor-config.md) | JS Module |
25
- | [mirror-parity.mjs](mirror-parity.md) | JS Module |
26
- | [read-n-cursor-config-lite.mjs](read-n-cursor-config-lite.md) | JS Module |
27
- | [resolve-target-files.mjs](resolve-target-files.md) | JS Module |
28
- | [root-notice.mjs](root-notice.md) | JS Module |
29
- | [rule-meta-helpers.mjs](rule-meta-helpers.md) | JS Module |
30
- | [rule-meta.mjs](rule-meta.md) | JS Module |
31
- | [rule-predicates.mjs](rule-predicates.md) | JS Module |
32
- | [run-conftest-batch.mjs](run-conftest-batch.md) | JS Module |
33
- | [run-lint-step.mjs](run-lint-step.md) | JS Module |
34
- | [run-lint.mjs](run-lint.md) | JS Module |
35
- | [run-rule-cli.mjs](run-rule-cli.md) | JS Module |
36
- | [run-rule.mjs](run-rule.md) | JS Module |
37
- | [run-standard-lint.mjs](run-standard-lint.md) | JS Module |
38
- | [run-standard-rule.mjs](run-standard-rule.md) | JS Module |
39
- | [skill-meta.mjs](skill-meta.md) | JS Module |
40
- | [sync-gitignore-worktree.mjs](sync-gitignore-worktree.md) | JS Module |
41
- | [template.mjs](template.md) | JS Module |
42
- | [timing-summary.mjs](timing-summary.md) | JS Module |
43
- | [workspaces.mjs](workspaces.md) | JS Module |
44
- | [worktree-notice.mjs](worktree-notice.md) | JS Module |
17
+ | [discover-checkable-rules.mjs](discover-checkable-rules.md) | JS Module |
18
+ | [ensure-tool.mjs](ensure-tool.md) | JS Module |
19
+ | [generated-markdown.mjs](generated-markdown.md) | JS Module |
20
+ | [gha-workflow.mjs](gha-workflow.md) | JS Module |
21
+ | [inline-template-links.mjs](inline-template-links.md) | JS Module |
22
+ | [list-project-rules-mdc.mjs](list-project-rules-mdc.md) | JS Module |
23
+ | [list-rule-ids.mjs](list-rule-ids.md) | JS Module |
24
+ | [load-cursor-config.mjs](load-cursor-config.md) | JS Module |
25
+ | [mirror-parity.mjs](mirror-parity.md) | JS Module |
26
+ | [read-n-cursor-config-lite.mjs](read-n-cursor-config-lite.md) | JS Module |
27
+ | [resolve-target-files.mjs](resolve-target-files.md) | JS Module |
28
+ | [root-notice.mjs](root-notice.md) | JS Module |
29
+ | [rule-meta-helpers.mjs](rule-meta-helpers.md) | JS Module |
30
+ | [rule-meta.mjs](rule-meta.md) | JS Module |
31
+ | [rule-predicates.mjs](rule-predicates.md) | JS Module |
32
+ | [run-conftest-batch.mjs](run-conftest-batch.md) | JS Module |
33
+ | [run-lint-step.mjs](run-lint-step.md) | JS Module |
34
+ | [run-lint.mjs](run-lint.md) | JS Module |
35
+ | [run-rule-cli.mjs](run-rule-cli.md) | JS Module |
36
+ | [run-rule.mjs](run-rule.md) | JS Module |
37
+ | [run-standard-lint.mjs](run-standard-lint.md) | JS Module |
38
+ | [run-standard-rule.mjs](run-standard-rule.md) | JS Module |
39
+ | [skill-meta.mjs](skill-meta.md) | JS Module |
40
+ | [sync-gitignore-worktree.mjs](sync-gitignore-worktree.md) | JS Module |
41
+ | [template.mjs](template.md) | JS Module |
42
+ | [timing-summary.mjs](timing-summary.md) | JS Module |
43
+ | [workspaces.mjs](workspaces.md) | JS Module |
44
+ | [worktree-notice.mjs](worktree-notice.md) | JS Module |
@@ -3,24 +3,22 @@ type: JS Module
3
3
  title: inline-template-links.mjs
4
4
  resource: npm/scripts/lib/inline-template-links.mjs
5
5
  docgen:
6
- crc: b659349c
6
+ crc: e1bed533
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
- Цей модуль реалізує механізми вбудовування контенту в текстові документи, використовуючи конфігурації з `package.json.snippet.json` та `package.json`. Він замінює посилання в тексті на вміст файлів-шаблонів, розташованих у каталозі правил, а також на вміст файлів з розширенням .mdc, які не є шаблонами. Функції дозволяють вставляти посилання на шаблони (`inlineTemplateLinks`) та включати вміст Markdown (`inlineMarkdownIncludes`).
11
+ Модуль інтегрує зовнішній контент у текстовий вивід, використовуючи конфігурації з `package.json.snippet.json` та `package.json`. Він замінює посилання на шаблони в тексті на їхній вміст за допомогою `inlineTemplateLinks` та доповнює текст вмістом усіх знайдених файлів `.mdc` з директорій `js/` та `policy/<concern>/` за допомогою `appendDiscoveredMdcFiles`.
14
12
 
15
13
  ## Поведінка
16
14
 
17
- inlineTemplateLinks замінює посилання в тексті на вбудовані блоки з вмістом файлів, що містять шаблони, якщо ці файли знаходяться в каталозі правил.
18
- inlineMarkdownIncludes замінює посилання в тексті на вміст файлів з розширенням .mdc, якщо ці файли не є шаблонами.
15
+ inlineTemplateLinks замінює посилання на шаблони в тексті на вбудовані блоки з вмістом відповідних файлів.
16
+ appendDiscoveredMdcFiles додає вміст усіх знайдених файлів \*.mdc з директорій js/ та policy/<concern>/ до наданого тексту.
19
17
 
20
18
  ## Публічний API
21
19
 
22
- inlineTemplateLinks — Замінює посилання у Markdown, що містять `/template/`, на вбудовані блокові конструкції, зчитуючи вміст з вказаного файлу. Викидає помилку, якщо цільове посилання не знайдено.
23
- inlineMarkdownIncludesЗамінює посилання у Markdown, що закінчуються на `.mdc` не є шляхом `/template/`), на сирий вміст відповідного файлу Markdown. Викидає помилку, якщо цільове посилання не знайдено.
20
+ inlineTemplateLinks — Замінює посилання у Markdown, що містять `/template/`, на вбудовані блоки, зчитуючи вміст з вказаного файлу. Викидає помилку, якщо цільове посилання не знайдено.
21
+ appendDiscoveredMdcFilesДодає всі знайдені файли з розширенням `.mdc` з підкаталогів `js/` та `policy/<concern>/`. Спочатку додаються файли з `js/` (у алфавітному порядку), а потім файли з підкаталогів `policy/` алфавітному порядку за назвою `concern`, а потім за назвою файлу).
24
22
 
25
23
  ## Гарантії поведінки
26
24
 
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Цей модуль визначає шлях до `.mdc`-файлів правил у проєкті-споживачі, що зберігаються у директорії, вказаній константою CURSOR_RULES_DIR. Він надає відсортований список імен цих файлів. Це винесення логіки з `bin/n-cursor.js` забезпечує розділення відповідальності між інструментом командного рядка та функцією перевірки конформності.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Перебирає директорії у `rules/` та фільтрує їх, вибираючи лише ті, що містять єдиний канонічний entrypoint (`rules/<id>/main.mjs`), згідно з ADR 2026-06-21. Функція повертає список ідентифікаторів правил, які відповідають цьому канону. Операція є лише для читання файлової системи.
14
12
 
15
13
  ## Поведінка
@@ -3,31 +3,29 @@ type: JS Module
3
3
  title: mirror-parity.mjs
4
4
  resource: npm/scripts/lib/mirror-parity.mjs
5
5
  docgen:
6
- crc: 093ff2bb
6
+ crc: 91a0c9f2
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
- Модуль забезпечує паритет дзеркал правил, порівнюючи вміст `.cursor/rules/n-<id>.mdc` з канонічним вмістом `npm/rules/<id>/<id>.mdc`. Він визначає, які дзеркала відстежувати, формує очікуваний вміст цих дзеркал після застосування шаблонів (трансформу, що застосовує `readBundledRuleContent` $\rightarrow$ `inlineTemplateLinks`), та виявляє дрейф, що виникає, коли канонічний `.mdc` змінюється без регенерації дзеркала.
11
+ Модуль реалізує механізм перевірки паралельності (parity) дзеркал правил. Він визначає список дзеркал, створює очікуваний вміст для кожного дзеркала, трансформуючи канонічний файл `npm/rules/<id>/<id>.mdc` з inlined-шаблонами — тим самим трансформом, що застосовує синк (`readBundledRuleContent` → `inlineTemplateLinks`). Механізм виявляє дрейф, коли фактичний вміст дзеркала `.cursor/rules/n-<id>.mdc` відрізняється від очікуваного, що виникає при зміні канонічного `.mdc` без регенерації дзеркала.
14
12
 
15
13
  ## Поведінка
16
14
 
17
15
  listManagedMirrors
18
- Визначає список керованих дзеркал правил, що мають канонічне джерело у `npm/rules`.
16
+ Визначає список керованих дзеркал правил, які мають канонічне джерело в `npm/rules`.
19
17
 
20
18
  expectedMirrorContent
21
- Формує очікуваний вміст дзеркала, застосовуючи трансформації до канонічного файлу.
19
+ Створює очікуваний вміст дзеркала, трансформуючи канонічний файл з вбудованими шаблонами.
22
20
 
23
21
  findMirrorDrift
24
- Виявляє ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного.
22
+ Виявляє ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного вмісту, отриманого з канону.
25
23
 
26
24
  ## Публічний API
27
25
 
28
- listManagedMirrors — перераховує керовані дзеркала, які мають визначене основне джерело.
29
- expectedMirrorContent — визначає бажаний вміст дзеркала, використовуючи шаблонне заміщення даних.
30
- findMirrorDrift — знаходить ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного.
26
+ listManagedMirrors — перераховує лише ті дзеркала, які мають визначене основне джерело (канон).
27
+ expectedMirrorContent — визначає, як має виглядати вміст дзеркала, використовуючи канонічну версію з вбудованими шаблонами.
28
+ findMirrorDrift — виявляє ідентифікатори дзеркал, чий фактичний вміст відрізняється від очікуваного.
31
29
 
32
30
  ## Гарантії поведінки
33
31
 
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль надає легкий, лише для читання, інтерфейс для парсингу конфігурації `.n-cursor.json`. Він призначений для ізольованих, окремих викликів `check.mjs`. Модуль визначає стан кожного правила, ґрунтуючись на вмісті `.n-cursor.json`. Якщо файл відсутній, правило вважається активним (поведінка "open by default"). Якщо файл присутній, стан правила залежить від списків `rules` та `disableRules` у конфігурації. Модуль повертає об'єкт, що містить списки активних та вимкнених правил.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Парсер метаданих правил з `npm/rules/<id>/main.json` інтерпретує специфікації активації (`auto`) та області дії (`lint`). Він нормалізує логіку, визначену у `main.json.auto`, яка може бути константою `RULE_ALWAYS="завжди"`, списком залежностей, об'єктом з шаблоном `glob`, або предикатом. Код лише зчитує дані та не виконує операцій з файловою системою чи базами даних. При виникненні помилок він перехоплює їх, повертаючи безпечне значення замість винятків.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль керує процесом лінтування коду. Він визначає набір активних правил лінтування, використовуючи конфігурації з `meta.json` та `.n-cursor.json`. Модуль надає можливість вибрати ці правила за допомогою `selectLintRules` та ініціювати запуск перевірки коду за допомогою `runLint`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 95
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Standalone CLI runner для одного правила. Викликається з `rules/<id>/check.mjs` у блоці `if (import.meta.main)`, що робить його повним еквівалентом `bun rules/<id>/check.mjs` або `npx @nitra/cursor fix <id>`. Цей запуск є свідомим (debug / override) і виконується без whitelist-гейту. Ініціалізує кеш для проходження файлової системи та виконує стандартну перевірку, друкуючи summary результату та повертаючи aggregated exit-code.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Файл оркеструє виконання одного правила під CLI `fix`. Він послідовно застосовує `applies`-гейт, а потім виконує JS-концерни та Policy-концерни. Резолвер ділить кеш між концернами, а кожен concern має власний механізм звітності, що об'єднується в єдиний exit-код правила. Процес спирається на конфігураційні файли, зокрема `target.json` та `.n-cursor.json`.
14
12
 
15
13
  ## Поведінка