@nitra/cursor 12.11.1 → 12.11.3

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 (96) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/bin/n-cursor.js +0 -15
  3. package/package.json +1 -1
  4. package/rules/adr/js/docs/hooks.md +0 -2
  5. package/rules/bun/docs/index.md +2 -2
  6. package/rules/bun/docs/main.md +9 -9
  7. package/rules/bun/js/docs/fix-layout.md +25 -0
  8. package/rules/bun/js/docs/index.md +3 -2
  9. package/rules/bun/js/fix-layout.mjs +55 -0
  10. package/rules/bun/main.json +1 -1
  11. package/rules/bun/main.mjs +53 -3
  12. package/rules/changelog/js/docs/fix-consistency.md +27 -0
  13. package/rules/changelog/js/docs/index.md +1 -0
  14. package/rules/changelog/js/fix-consistency.mjs +50 -0
  15. package/rules/ci4/policy/vscode_extensions/docs/fix-vscode_extensions.md +21 -0
  16. package/rules/ci4/policy/vscode_extensions/docs/index.md +11 -0
  17. package/rules/ci4/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  18. package/rules/ga/policy/vscode_extensions/docs/fix-vscode_extensions.md +22 -0
  19. package/rules/ga/policy/vscode_extensions/docs/index.md +11 -0
  20. package/rules/ga/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  21. package/rules/graphql/policy/vscode_extensions/docs/fix-vscode_extensions.md +21 -0
  22. package/rules/graphql/policy/vscode_extensions/docs/index.md +11 -0
  23. package/rules/graphql/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  24. package/rules/js/js/dep-policy.mdc +19 -0
  25. package/rules/js/js/dep-policy.mjs +14 -6
  26. package/rules/js/js/docs/dep-policy.md +12 -10
  27. package/rules/js/js/docs/index.md +5 -5
  28. package/rules/js/policy/vscode_extensions/docs/fix-vscode_extensions.md +22 -0
  29. package/rules/js/policy/vscode_extensions/docs/index.md +11 -0
  30. package/rules/js/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  31. package/rules/js-run/js/docs/fix-runtime.md +25 -0
  32. package/rules/js-run/js/docs/index.md +3 -2
  33. package/rules/js-run/js/fix-runtime.mjs +41 -0
  34. package/rules/nginx-default-tpl/policy/vscode_extensions/docs/fix-vscode_extensions.md +21 -0
  35. package/rules/nginx-default-tpl/policy/vscode_extensions/docs/index.md +11 -0
  36. package/rules/nginx-default-tpl/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  37. package/rules/python/docs/index.md +2 -2
  38. package/rules/python/docs/main.md +12 -10
  39. package/rules/python/main.mjs +1 -0
  40. package/rules/rego/policy/vscode_extensions/docs/fix-vscode_extensions.md +22 -0
  41. package/rules/rego/policy/vscode_extensions/docs/index.md +11 -0
  42. package/rules/rego/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  43. package/rules/rust/docs/index.md +2 -2
  44. package/rules/rust/docs/main.md +8 -6
  45. package/rules/rust/main.mjs +11 -0
  46. package/rules/rust/policy/vscode_extensions/docs/fix-vscode_extensions.md +22 -0
  47. package/rules/rust/policy/vscode_extensions/docs/index.md +11 -0
  48. package/rules/rust/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  49. package/rules/style/js/docs/fix-tooling.md +29 -0
  50. package/rules/style/js/docs/index.md +3 -2
  51. package/rules/style/js/fix-tooling.mjs +46 -0
  52. package/rules/style/policy/vscode_extensions/docs/fix-vscode_extensions.md +21 -0
  53. package/rules/style/policy/vscode_extensions/docs/index.md +11 -0
  54. package/rules/style/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  55. package/rules/tauri/policy/vscode_extensions/docs/fix-vscode_extensions.md +21 -0
  56. package/rules/tauri/policy/vscode_extensions/docs/index.md +11 -0
  57. package/rules/tauri/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  58. package/rules/text/policy/vscode_extensions/docs/fix-vscode_extensions.md +21 -0
  59. package/rules/text/policy/vscode_extensions/docs/index.md +11 -0
  60. package/rules/text/policy/vscode_extensions/fix-vscode_extensions.mjs +1 -0
  61. package/rules/vue/js/docs/packages.md +0 -2
  62. package/scripts/docs/index.md +0 -2
  63. package/scripts/lib/discover-checkable-rules.mjs +1 -0
  64. package/scripts/lib/docs/discover-checkable-rules.md +13 -155
  65. package/scripts/lib/docs/index.md +35 -35
  66. package/scripts/lib/fix/discover-t0-patterns.mjs +83 -0
  67. package/scripts/lib/fix/docs/discover-t0-patterns.md +37 -0
  68. package/scripts/lib/fix/docs/index.md +12 -10
  69. package/scripts/lib/fix/docs/llm-fix-apply.md +12 -10
  70. package/scripts/lib/fix/docs/llm-worker.md +6 -14
  71. package/scripts/lib/fix/docs/orchestrator.md +0 -2
  72. package/scripts/lib/fix/docs/t0.md +11 -10
  73. package/scripts/lib/fix/docs/vscode-ext-add.md +29 -0
  74. package/scripts/lib/fix/t0.mjs +8 -234
  75. package/scripts/lib/fix/vscode-ext-add.mjs +45 -0
  76. package/skills/doc-aggregate/SKILL.md +8 -18
  77. package/skills/doc-aggregate/js/docs/index.md +0 -1
  78. package/rules/test/coverage/coverage.mjs +0 -317
  79. package/scripts/coverage-classify/apply.mjs +0 -67
  80. package/scripts/coverage-classify/cache.mjs +0 -77
  81. package/scripts/coverage-classify/docs/apply.md +0 -206
  82. package/scripts/coverage-classify/docs/cache.md +0 -207
  83. package/scripts/coverage-classify/docs/index.md +0 -14
  84. package/scripts/coverage-classify/docs/prompt.md +0 -136
  85. package/scripts/coverage-classify/docs/verdict-schema.md +0 -28
  86. package/scripts/coverage-classify/index.mjs +0 -114
  87. package/scripts/coverage-classify/prompt.mjs +0 -126
  88. package/scripts/coverage-classify/verdict-schema.mjs +0 -35
  89. package/scripts/coverage-fix-extract.mjs +0 -122
  90. package/scripts/coverage-fix.mjs +0 -119
  91. package/scripts/docs/coverage-fix-extract.md +0 -36
  92. package/scripts/docs/coverage-fix.md +0 -181
  93. package/skills/coverage-fix/SKILL.md +0 -131
  94. package/skills/coverage-fix/main.json +0 -1
  95. package/skills/doc-aggregate/js/docgen-scan.mjs +0 -195
  96. package/skills/doc-aggregate/js/docs/docgen-scan.md +0 -76
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/js/policy/vscode_extensions
4
+ resource: npm/rules/js/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/js/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -0,0 +1,25 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-runtime.mjs
4
+ resource: npm/rules/js-run/js/fix-runtime.mjs
5
+ docgen:
6
+ crc: d3b1824f
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Детерміновано створює канонічний `jsconfig.json` у каталогах `src/` бекенд-пакетів, якщо він відсутній. Конфігурація береться з `jsconfig.json.snippet.json` (єдине джерело істини) і застосовується через публічні функції `patterns`.
14
+
15
+ ## Поведінка
16
+
17
+ 1. `patterns` надає набір правил для автоматичного виправлення.
18
+ 2. Кожне правило перевіряє, чи відсутній `jsconfig.json` у каталогах `src/` бекенд-пакетів, якщо вони існують.
19
+ 3. Якщо правило спрацьовує, воно зчитує канонічне вміст `jsconfig.json` з `policy/jsconfig/template/jsconfig.json.snippet.json`.
20
+ 4. Для кожного знайденого каталогу `src/`, якщо `jsconfig.json` відсутній, він створюється з канонічним вмістом.
21
+ 5. `patterns` повертає результат, що вказує на успішне створення файлів або на відсутність необхідних змін.
22
+
23
+ ## Гарантії поведінки
24
+
25
+ - (специфічних машинно-виведених гарантій немає)
@@ -6,6 +6,7 @@ resource: npm/rules/js-run/js/
6
6
 
7
7
  # npm/rules/js-run/js
8
8
 
9
- | Файл | Тип |
10
- | ------------------------- | --------- |
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix-runtime.mjs](fix-runtime.md) | JS Module |
11
12
  | [runtime.mjs](runtime.md) | JS Module |
@@ -0,0 +1,41 @@
1
+ /**
2
+ * T0-autofix для `js-run/js/runtime.mjs` — детерміноване створення канонічного
3
+ * `jsconfig.json` у backend-пакетах із `src/` де він відсутній. Канон читається
4
+ * з `policy/jsconfig/template/jsconfig.json.snippet.json` (єдине джерело істини).
5
+ */
6
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs'
7
+ import { join } from 'node:path'
8
+ import { fileURLToPath } from 'node:url'
9
+
10
+ const JSCONFIG_MISSING_RE = /є каталог src\/, але немає jsconfig\.json/
11
+ const JSCONFIG_MISSING_MATCH_ALL_RE = /\[([^\]]+)\] є каталог src\/, але немає jsconfig\.json/gu
12
+
13
+ const JSCONFIG_CONTENT =
14
+ readFileSync(
15
+ fileURLToPath(new URL('../policy/jsconfig/template/jsconfig.json.snippet.json', import.meta.url)),
16
+ 'utf8'
17
+ ).trimEnd() + '\n'
18
+
19
+ /** @type {import('../../../scripts/lib/fix/discover-t0-patterns.mjs').T0Pattern[]} */
20
+ export const patterns = [
21
+ {
22
+ id: 'js-run-jsconfig-create',
23
+ test: out => JSCONFIG_MISSING_RE.test(out),
24
+ apply: (out, cwd) => {
25
+ const matches = [...out.matchAll(JSCONFIG_MISSING_MATCH_ALL_RE)]
26
+ if (matches.length === 0) return { ok: false, action: 'no match' }
27
+
28
+ const created = []
29
+ for (const m of matches) {
30
+ const ws = m[1]
31
+ const target = join(cwd, ws, 'jsconfig.json')
32
+ if (!existsSync(target)) {
33
+ writeFileSync(target, JSCONFIG_CONTENT, 'utf8')
34
+ created.push(ws)
35
+ }
36
+ }
37
+ if (created.length === 0) return { ok: false, action: 'jsconfig.json вже існує в усіх воркспейсах' }
38
+ return { ok: true, action: `створено jsconfig.json: ${created.join(', ')}` }
39
+ }
40
+ }
41
+ ]
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-vscode_extensions.mjs
4
+ resource: npm/rules/nginx-default-tpl/policy/vscode_extensions/fix-vscode_extensions.mjs
5
+ docgen:
6
+ crc: 319883fc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Цей файл імпортує шаблони, необхідні для функціонування розширення VS Code.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Імпортує шаблони для виправлення розширень VS Code з іншого скрипта.
18
+
19
+ ## Гарантії поведінки
20
+
21
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/nginx-default-tpl/policy/vscode_extensions
4
+ resource: npm/rules/nginx-default-tpl/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/nginx-default-tpl/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -6,6 +6,6 @@ resource: npm/rules/python/
6
6
 
7
7
  # npm/rules/python
8
8
 
9
- | Файл | Тип |
10
- | ------------------- | --------- |
9
+ | Файл | Тип |
10
+ |---|---|
11
11
  | [main.mjs](main.md) | JS Module |
@@ -3,26 +3,28 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: npm/rules/python/main.mjs
5
5
  docgen:
6
- crc: d8a3aa1f
6
+ crc: 7021a379
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 90
9
9
  ---
10
10
 
11
- Реалізує логіку запуску `lint-python` за правилом `python.mdc` на базі [uv](https://docs.astral.sh/uv/). Якщо `pyproject.toml` у корені відсутній, процес завершується з кодом виходу 0. Якщо файл присутній, але інструмент `uv` не знайдено в PATH, це розглядається як помилка. Обов'язкові кроки включають перевірку актуальності lock-файлу (`uv lock --check`) та синхронізацію середовища (`uv sync --frozen`). Опційні лінтери (`ruff`, `mypy`) запускаються лише за умови їх доступності через `uv run`. `ruff` виконується у режимі автоматичного виправлення (`--fix`) для мутації робочого дерева та для форматування. Цей підхід відповідає канону патерну `lint-*` (серіалізація через `runStandardLint`, без прямого `withLock`).
11
+ ## Огляд
12
+
13
+ Запускає `lint-python` за правилом `python.mdc` на базі [uv](https://docs.astral.sh/uv/). Якщо `pyproject.toml` відсутній у корені, вихід дорівнює 0 без запуску інструментів. Якщо `pyproject.toml` присутній, але `uv` не знайдено в PATH, це помилка (використовується лише `uv`, без Poetry). Обов'язково виконує `uv lock --check` для перевірки актуальності lock-файлу та `uv sync --frozen` для збірки середовища. Опціональні лінтери (`ruff`, `mypy`) запускаються лише якщо доступні через `uv run`. `ruff` виконується в режимі автоматичного виправлення (`ruff check --fix .`, `ruff format .`) та перевірки коду (`mypy .`). Це відповідає канону патерну `lint-*` (серіалізація через `runStandardLint`, без прямого `withLock`).
12
14
 
13
15
  ## Поведінка
14
16
 
15
- run виконує стандартну перевірку для правила, використовуючи контекст прогону.
16
- runLintPythonSteps виконує послідовність кроків лінтування Python, перевіряючи наявність `pyproject.toml` та виконуючи команди `uv lock --check` та `uv sync --frozen`, а також запускаючи опціональні лінтери (`ruff`, `mypy`) через `uv run` на базі https://docs.astral.sh/uv/.
17
- runLintPython запускає послідовність кроків лінтування Python, серіалізуючи її через стандартний механізм перевірки.
18
- lint делегує виклик до `runLintPython`, забезпечуючи можливість запуску в режимі, що не мутує робоче дерево.
17
+ run виконує стандартну перевірку для правила.
18
+ runLintPythonSteps виконує послідовність кроків лінтування Python, включаючи перевірку `pyproject.toml`, виконання `uv lock --check` та `uv sync --frozen`, а також запуск опціональних лінтерів (`ruff`, `mypy`, `liccheck`) через `uv run` за умови їх доступності.
19
+ runLintPython запускає послідовність кроків лінтування Python, використовуючи механізм стандартного лінтування.
20
+ lint оркеструє запуск `runLintPython` для виконання лінтування Python.
19
21
 
20
22
  ## Публічний API
21
23
 
22
- run — Основна точка входу для виконання правил, яка перевіряє логіку застосування (JS-занепокложення $\rightarrow$ політика $\rightarrow$ mdc-посилання) та запускає перевірку коду (uv/ruff/mypy).
23
- runLintPythonSteps — Виконує внутрішні етапи перевірки Python-коду без збереження логу.
24
- runLintPython — Публічний інтерфейс для запуску перевірки Python-коду, який гарантує унікальність виконання через блокування та аналіз стану Git-дерева.
25
- lint — Адаптер, що керує запуском перевірки Python-коду, делегуючи цю роботу `runLintPython`.
24
+ run — Основна точка входу для виконання правил, яка перевіряє аспекти застосування (JS-занепокложення $\rightarrow$ політика $\rightarrow$ mdc-посилання) та виконує лінтинг.
25
+ runLintPythonSteps — Виконує внутрішні етапи лінтингу Python без збереження логів.
26
+ runLintPython — Публічний інтерфейс командного рядка для запуску лінтингу Python, який синхронізується з станом Git-дерева.
27
+ lint — Координатор, що викликає публічний інтерфейс для лінтингу Python.
26
28
 
27
29
  ## Гарантії поведінки
28
30
 
@@ -118,6 +118,7 @@ export function runLintPythonSteps(cwd = process.cwd(), opts = {}) {
118
118
  if (!runOptionalUvTool('ruff', readOnly ? 'ruff format --check' : 'ruff format', ruffFormat))
119
119
  return reporter.getExitCode()
120
120
  if (!runOptionalUvTool('mypy', 'mypy', ['.'])) return reporter.getExitCode()
121
+ if (!runOptionalUvTool('liccheck', 'liccheck', [])) return reporter.getExitCode()
121
122
 
122
123
  return reporter.getExitCode()
123
124
  }
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-vscode_extensions.mjs
4
+ resource: npm/rules/rego/policy/vscode_extensions/fix-vscode_extensions.mjs
5
+ docgen:
6
+ crc: 319883fc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Цей файл імпортує визначення шаблонів з іншого модуля. Це забезпечує доступ до необхідних шаблонів для роботи системних компонентів.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Імпортує визначення шаблонів з іншого модуля.
18
+ 2. Надає доступ до цих шаблонів для використання в системі.
19
+
20
+ ## Гарантії поведінки
21
+
22
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/rego/policy/vscode_extensions
4
+ resource: npm/rules/rego/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/rego/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -6,6 +6,6 @@ resource: npm/rules/rust/
6
6
 
7
7
  # npm/rules/rust
8
8
 
9
- | Файл | Тип |
10
- | ------------------- | --------- |
9
+ | Файл | Тип |
10
+ |---|---|
11
11
  | [main.mjs](main.md) | JS Module |
@@ -3,22 +3,24 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: npm/rules/rust/main.mjs
5
5
  docgen:
6
- crc: 93c44fd7
6
+ crc: cbe9e650
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- Модуль надає інструменти для забезпечення якості коду Rust. Він дозволяє виконати перевірку коду на відповідність заданим Lint-правилам або запустити повну оркестрацію форматування та аналізу коду через `cargo`. Функціонал реалізується через публічні функції `run` та `lint`.
11
+ ## Огляд
12
+
13
+ Модуль забезпечує виконання перевірки коду Rust на відповідність встановленим правилам. Він також надає функціонал для запуску повного процесу лінтингу, що включає форматування та аналіз коду.
12
14
 
13
15
  ## Поведінка
14
16
 
15
- run виконує перевірку коду Rust відповідно до політик.
16
- lint запускає оркестрацію перевірки коду Rust, використовуючи `cargo` для виконання `rustfmt` та `clippy`.
17
+ run виконує перевірку коду Rust, застосовуючи політику, визначену в документації.
18
+ lint запускає повний процес лінтингу Rust, включаючи форматування та аналіз, і повертає код виходу.
17
19
 
18
20
  ## Публічний API
19
21
 
20
- run — виконує основну логіку правила, включаючи перевірку аспектів застосування, логіки та посилань.
21
- lint — забезпечує точку входу для статичного аналізу коду Rust.
22
+ run — точка входу для виконання правила, що перевіряє логіку, пов'язану з JS-зацікавленостями, політикою та посиланнями MDC.
23
+ lint — точка входу для запуску лінтера Rust-коду.
22
24
 
23
25
  ## Гарантії поведінки
24
26
 
@@ -82,6 +82,17 @@ function runRustLint(cwd = process.cwd(), opts = {}) {
82
82
  pass,
83
83
  fail
84
84
  )
85
+
86
+ // cargo deny check licenses (opt-in): потрібен deny.toml + cargo-deny у PATH
87
+ if (existsSync(join(cwd, 'deny.toml'))) {
88
+ const hasDeny = spawnSync(cargo, ['deny', '--version'], { stdio: 'ignore', shell: false }).status === 0
89
+ if (hasDeny) {
90
+ runCargo('cargo deny check licenses', cargo, ['deny', 'check', 'licenses'], pass, fail)
91
+ } else {
92
+ pass('lint-rust: cargo deny — не встановлений (cargo install cargo-deny), перевірку ліцензій пропущено')
93
+ }
94
+ }
95
+
85
96
  return reporter.getExitCode()
86
97
  }
87
98
 
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-vscode_extensions.mjs
4
+ resource: npm/rules/rust/policy/vscode_extensions/fix-vscode_extensions.mjs
5
+ docgen:
6
+ crc: 319883fc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Цей файл імпортує визначені шаблони з іншого скрипта та надає їх для використання в інших компонентах системи.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Імпортує шаблони з іншого скрипта.
18
+ 2. Експортує ці шаблони.
19
+
20
+ ## Гарантії поведінки
21
+
22
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/rust/policy/vscode_extensions
4
+ resource: npm/rules/rust/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/rust/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -0,0 +1,29 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-tooling.mjs
4
+ resource: npm/rules/style/js/fix-tooling.mjs
5
+ docgen:
6
+ crc: d9c7a757
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль T0-autofix впроваджує детерміновані виправлення файлової системи для `style/js/tooling.mjs`. Він створює або доповнює `.stylelintignore` для ігнорування директорії `dist/` та додає `stylelint` до `package.json`, спираючись на `package.json`.
14
+
15
+ ## Поведінка
16
+
17
+ Поведінка
18
+
19
+ 1. `patterns` виконує детерміновані виправлення файлової системи для конфігурації стилізації.
20
+ 2. Перший елемент у `patterns` створює файл `.stylelintignore` у корені робочого каталогу, якщо він не існує. Це робиться для ігнорування директорії `dist/` у процесі стилізації.
21
+ 3. Другий елемент у `patterns` додає рядок `dist/` до файлу `.stylelintignore`, якщо він вже існує, але не містить цього шляху. Це забезпечує ігнорування директорії `dist/`.
22
+ 4. Третій елемент у `patterns` перевіряє, чи містить конфігурація `package.json` запис про `stylelint`.
23
+ 5. Якщо `package.json` не знайдено або є невалідним JSON, виправлення не виконується.
24
+ 6. Якщо `stylelint` вже присутній у `package.json`, виправлення не виконується.
25
+ 7. Якщо `stylelint` відсутній, він додається до `package.json` із конфігурацією, що посилається на `@nitra/stylelint-config`.
26
+
27
+ ## Гарантії поведінки
28
+
29
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
@@ -6,6 +6,7 @@ resource: npm/rules/style/js/
6
6
 
7
7
  # npm/rules/style/js
8
8
 
9
- | Файл | Тип |
10
- | ------------------------- | --------- |
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix-tooling.mjs](fix-tooling.md) | JS Module |
11
12
  | [tooling.mjs](tooling.md) | JS Module |
@@ -0,0 +1,46 @@
1
+ /**
2
+ * T0-autofix паттерни для `style/js/tooling.mjs` — детерміновані FS-виправлення:
3
+ * створення або доповнення `.stylelintignore` та додавання `stylelint` до `package.json`.
4
+ */
5
+ import { appendFileSync, existsSync, readFileSync, writeFileSync } from 'node:fs'
6
+ import { join } from 'node:path'
7
+
8
+ /** @type {import('../../../scripts/lib/fix/discover-t0-patterns.mjs').T0Pattern[]} */
9
+ export const patterns = [
10
+ {
11
+ id: 'style-stylelintignore-create',
12
+ test: out => /\.stylelintignore не існує/.test(out),
13
+ apply: (_out, cwd) => {
14
+ writeFileSync(join(cwd, '.stylelintignore'), 'dist/\n', 'utf8')
15
+ return { ok: true, action: 'створено .stylelintignore' }
16
+ }
17
+ },
18
+
19
+ {
20
+ id: 'style-stylelintignore-dist-add',
21
+ test: out => /\.stylelintignore не містить рядка dist\//.test(out),
22
+ apply: (_out, cwd) => {
23
+ appendFileSync(join(cwd, '.stylelintignore'), '\ndist/\n', 'utf8')
24
+ return { ok: true, action: 'додано dist/ до .stylelintignore' }
25
+ }
26
+ },
27
+
28
+ {
29
+ id: 'style-pkg-stylelint-add',
30
+ test: out => /Немає конфігу stylelint/.test(out),
31
+ apply: (_out, cwd) => {
32
+ const pkgPath = join(cwd, 'package.json')
33
+ if (!existsSync(pkgPath)) return { ok: false, action: 'package.json не знайдено' }
34
+ let pkg
35
+ try {
36
+ pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
37
+ } catch {
38
+ return { ok: false, action: 'package.json: невалідний JSON' }
39
+ }
40
+ if (pkg.stylelint) return { ok: false, action: 'stylelint вже є в package.json' }
41
+ pkg.stylelint = { extends: '@nitra/stylelint-config' }
42
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf8')
43
+ return { ok: true, action: 'додано stylelint до package.json' }
44
+ }
45
+ }
46
+ ]
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-vscode_extensions.mjs
4
+ resource: npm/rules/style/policy/vscode_extensions/fix-vscode_extensions.mjs
5
+ docgen:
6
+ crc: 319883fc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Завантажує шаблони для виправлення розширень VS Code.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Імпортує шаблони для виправлення розширень VS Code з файлу `../../../../scripts/lib/fix/vscode-ext-add.mjs`.
18
+
19
+ ## Гарантії поведінки
20
+
21
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/style/policy/vscode_extensions
4
+ resource: npm/rules/style/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/style/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-vscode_extensions.mjs
4
+ resource: npm/rules/tauri/policy/vscode_extensions/fix-vscode_extensions.mjs
5
+ docgen:
6
+ crc: 319883fc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Цей файл імпортує шаблони, необхідні для модифікації розширень VS Code. Він надає механізм для застосування визначених змін до розширень VS Code.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Імпортує шаблони для виправлення розширень VS Code з файлу `../../../../scripts/lib/fix/vscode-ext-add.mjs`.
18
+
19
+ ## Гарантії поведінки
20
+
21
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/tauri/policy/vscode_extensions
4
+ resource: npm/rules/tauri/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/tauri/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: JS Module
3
+ title: fix-vscode_extensions.mjs
4
+ resource: npm/rules/text/policy/vscode_extensions/fix-vscode_extensions.mjs
5
+ docgen:
6
+ crc: 319883fc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Файл імпортує шаблони для виправлення розширень VS Code. Ці шаблони використовуються для корекції розширень.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Імпортує шаблони для виправлення розширень VS Code з файлу `../../../../scripts/lib/fix/vscode-ext-add.mjs`.
18
+
19
+ ## Гарантії поведінки
20
+
21
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/text/policy/vscode_extensions
4
+ resource: npm/rules/text/policy/vscode_extensions/
5
+ ---
6
+
7
+ # npm/rules/text/policy/vscode_extensions
8
+
9
+ | Файл | Тип |
10
+ | ----------------------------------------------------- | --------- |
11
+ | [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
@@ -0,0 +1 @@
1
+ export { patterns } from '../../../../scripts/lib/fix/vscode-ext-add.mjs'
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль визначає, чи є пакет бібліотекою компонентів Vue, виходячи з даних у `package.json`, `jsconfig.json`, `package-lock.json`, `extensions.json`. Він також перевіряє відповідність усіх пакетів, що залежать від `vue`, критеріям, описаним у `vue.mdc`, і повертає код виходу.
14
12
 
15
13
  ## Поведінка
@@ -12,8 +12,6 @@ resource: npm/scripts/
12
12
  | [auto-skills.mjs](auto-skills.md) | JS Module |
13
13
  | [build-agents-commands.mjs](build-agents-commands.md) | JS Module |
14
14
  | [cli-entry.mjs](cli-entry.md) | JS Module |
15
- | [coverage-fix-extract.mjs](coverage-fix-extract.md) | JS Module |
16
- | [coverage-fix.mjs](coverage-fix.md) | JS Module |
17
15
  | [ensure-nitra-cursor-dev-dependencies.mjs](ensure-nitra-cursor-dev-dependencies.md) | JS Module |
18
16
  | [hook.mjs](hook.md) | JS Module |
19
17
  | [post-tool-use-check.mjs](post-tool-use-check.md) | JS Module |
@@ -51,6 +51,7 @@ async function listJsConcerns(jsDir) {
51
51
  if (!entry.isFile()) continue
52
52
  if (!entry.name.endsWith('.mjs')) continue
53
53
  if (entry.name.endsWith('.test.mjs')) continue
54
+ if (entry.name.startsWith('fix-')) continue
54
55
  if (entry.name.startsWith('_')) continue
55
56
  if (entry.name.startsWith('.')) continue
56
57
  const name = entry.name.slice(0, -'.mjs'.length)