@nitra/cursor 5.3.4 → 6.0.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 (173) hide show
  1. package/.claude-template/settings.template.json +2 -2
  2. package/.pi-template/extensions/n-cursor-adr/docs/index.md +13 -24
  3. package/CHANGELOG.md +21 -0
  4. package/bin/n-cursor.js +47 -24
  5. package/lib/docs/models.md +29 -18
  6. package/lib/docs/omlx-trace.md +51 -0
  7. package/lib/docs/omlx.md +31 -15
  8. package/lib/omlx.mjs +2 -5
  9. package/package.json +1 -1
  10. package/rules/abie/docs/fix.md +17 -11
  11. package/rules/adr/docs/fix.md +25 -140
  12. package/rules/bun/docs/fix.md +18 -151
  13. package/rules/capacitor/docs/fix.md +16 -13
  14. package/rules/capacitor/js/docs/platforms.md +31 -43
  15. package/rules/changelog/docs/fix.md +25 -169
  16. package/rules/ci4/docs/fix.md +11 -14
  17. package/rules/doc-files/doc-files.mdc +60 -0
  18. package/rules/doc-files/docs/fix.md +31 -0
  19. package/rules/doc-files/fix.mjs +19 -0
  20. package/{skills → rules}/doc-files/js/docgen-extract.mjs +42 -19
  21. package/{skills → rules}/doc-files/js/docgen-files-batch.mjs +18 -5
  22. package/{skills → rules}/doc-files/js/docgen-gen.mjs +46 -5
  23. package/{skills → rules}/doc-files/js/docgen-ignore.mjs +2 -1
  24. package/{skills → rules}/doc-files/js/docgen-scan.mjs +11 -3
  25. package/{skills → rules}/doc-files/js/docs/docgen-crc.md +1 -1
  26. package/{skills → rules}/doc-files/js/docs/docgen-extract-anchors.md +1 -1
  27. package/{skills → rules}/doc-files/js/docs/docgen-extract.md +2 -2
  28. package/{skills → rules}/doc-files/js/docs/docgen-files-batch.md +2 -2
  29. package/{skills → rules}/doc-files/js/docs/docgen-gen.md +2 -2
  30. package/{skills → rules}/doc-files/js/docs/docgen-ignore.md +4 -4
  31. package/rules/doc-files/js/docs/docgen-prompts.md +39 -0
  32. package/rules/doc-files/js/docs/docgen-scan.md +54 -0
  33. package/rules/doc-files/js/docs/lint.md +36 -0
  34. package/rules/doc-files/js/docs/units-js.md +31 -0
  35. package/rules/doc-files/js/docs/units-rs.md +35 -0
  36. package/rules/doc-files/js/docs/units.md +30 -0
  37. package/rules/doc-files/js/lint.mjs +96 -0
  38. package/{skills → rules}/doc-files/js/units-rs.mjs +37 -17
  39. package/rules/doc-files/lint/docs/lint.md +37 -0
  40. package/rules/doc-files/lint/lint.mjs +105 -0
  41. package/rules/doc-files/meta.json +1 -0
  42. package/rules/docker/docs/fix.md +21 -161
  43. package/rules/efes/docs/fix.md +23 -194
  44. package/rules/feedback/docs/fix.md +10 -8
  45. package/rules/ga/docs/fix.md +10 -5
  46. package/rules/ga/meta.json +1 -1
  47. package/rules/graphql/docs/fix.md +23 -119
  48. package/rules/hasura/docs/fix.md +19 -5
  49. package/rules/hasura/js/docs/internal_urls.md +34 -307
  50. package/rules/image-avif/docs/fix.md +16 -127
  51. package/rules/image-compress/docs/fix.md +20 -141
  52. package/rules/image-compress/js/docs/package_setup.md +22 -182
  53. package/rules/js-bun-db/docs/fix.md +23 -139
  54. package/rules/js-bun-db/js/docs/safety.md +33 -221
  55. package/rules/js-bun-redis/docs/fix.md +25 -114
  56. package/rules/js-bun-redis/js/docs/imports.md +18 -166
  57. package/rules/js-lint/docs/fix.md +30 -108
  58. package/rules/js-lint/js/docs/lint-findings.md +37 -17
  59. package/rules/js-lint/js/docs/lint.md +22 -238
  60. package/rules/js-lint/js/docs/tooling.md +34 -331
  61. package/rules/js-lint/js/lint.mjs +19 -12
  62. package/rules/js-lint/js-lint.mdc +1 -1
  63. package/rules/js-lint/meta.json +1 -1
  64. package/rules/js-lint-ci/docs/fix.md +16 -149
  65. package/rules/js-lint-ci/js/docs/lint.md +16 -136
  66. package/rules/js-lint-ci/js-lint-ci.mdc +1 -1
  67. package/rules/js-lint-ci/meta.json +1 -1
  68. package/rules/js-mssql/docs/fix.md +18 -123
  69. package/rules/js-mssql/js/docs/deps.md +28 -251
  70. package/rules/js-run/docs/fix.md +23 -138
  71. package/rules/js-run/js/docs/runtime.md +24 -378
  72. package/rules/k8s/docs/fix.md +18 -123
  73. package/rules/nginx-default-tpl/docs/fix.md +22 -118
  74. package/rules/nginx-default-tpl/js/docs/template.md +38 -360
  75. package/rules/npm-module/docs/fix.md +27 -89
  76. package/rules/npm-module/js/docs/header_doc_pointer.md +15 -15
  77. package/rules/npm-module/js/docs/package_structure.md +36 -258
  78. package/rules/npm-module/js/docs/rule_meta.md +25 -127
  79. package/rules/npm-module/js/docs/skill_meta.md +18 -180
  80. package/rules/npm-module/js/rule_meta.mjs +3 -3
  81. package/rules/php/docs/fix.md +21 -98
  82. package/rules/php/js/docs/tooling.md +20 -143
  83. package/rules/python/docs/fix.md +25 -157
  84. package/rules/python/js/docs/applies.md +20 -98
  85. package/rules/python/js/docs/tooling.md +27 -144
  86. package/rules/rego/docs/fix.md +24 -112
  87. package/rules/rego/js/docs/applies.md +20 -164
  88. package/rules/rego/js/docs/lint.md +15 -110
  89. package/rules/rego/meta.json +1 -1
  90. package/rules/release/docs/fix.md +16 -114
  91. package/rules/rust/docs/fix.md +24 -119
  92. package/rules/rust/js/docs/applies.md +20 -129
  93. package/rules/security/docs/fix.md +21 -78
  94. package/rules/security/js/docs/sample_secret.md +23 -182
  95. package/rules/security/js/docs/trufflehog.md +19 -128
  96. package/rules/security/meta.json +1 -1
  97. package/rules/style-lint/docs/fix.md +16 -150
  98. package/rules/style-lint/js/docs/lint.md +21 -172
  99. package/rules/style-lint/js/docs/tooling.md +19 -184
  100. package/rules/style-lint/js/lint.mjs +4 -3
  101. package/rules/style-lint/meta.json +1 -1
  102. package/rules/tauri/docs/fix.md +26 -152
  103. package/rules/tauri/js/docs/cargo_mutants_config.md +21 -159
  104. package/rules/tauri/js/docs/tooling.md +20 -217
  105. package/rules/test/docs/fix.md +19 -127
  106. package/rules/test/js/data/stryker_config/docs/stryker.config.baseline.md +15 -127
  107. package/rules/test/js/data/stryker_config/docs/stryker.config.vue.baseline.md +17 -153
  108. package/rules/test/js/docs/cargo_mutants_config.md +24 -164
  109. package/rules/test/js/docs/location.md +24 -126
  110. package/rules/test/js/docs/no-process-chdir.md +20 -151
  111. package/rules/test/js/docs/no-relative-fs-path.md +24 -261
  112. package/rules/test/js/docs/stryker_config.md +48 -148
  113. package/rules/test/js/docs/vitest-config-pool-forks.md +21 -164
  114. package/rules/text/docs/fix.md +25 -113
  115. package/rules/text/js/docs/forbidden-prettier.md +21 -132
  116. package/rules/text/js/docs/formatting.md +60 -251
  117. package/rules/text/js/docs/lint.md +17 -114
  118. package/rules/text/js/lint.mjs +5 -3
  119. package/rules/text/lint/docs/lint.md +1 -1
  120. package/rules/text/lint/docs/run-dotenv-linter.md +1 -1
  121. package/rules/text/lint/docs/run-shellcheck.md +1 -1
  122. package/rules/text/lint/lint.mjs +13 -9
  123. package/rules/text/lint/run-dotenv-linter.mjs +13 -10
  124. package/rules/text/lint/run-shellcheck.mjs +10 -6
  125. package/rules/text/meta.json +1 -1
  126. package/rules/vue/docs/fix.md +25 -118
  127. package/rules/vue/js/docs/packages.md +25 -323
  128. package/rules/worktree/docs/fix.md +31 -150
  129. package/scripts/coverage-classify/docs/index.md +23 -209
  130. package/scripts/coverage-classify/docs/verdict-schema.md +14 -159
  131. package/scripts/dispatcher/docs/trace.md +35 -0
  132. package/scripts/docs/auto-rules.md +37 -361
  133. package/scripts/docs/lint-cli.md +12 -13
  134. package/scripts/docs/post-tool-use-fix.md +16 -15
  135. package/scripts/docs/skills-cli.md +26 -23
  136. package/scripts/docs/sync-claude-config.md +94 -34
  137. package/scripts/docs/worktree-cli.md +11 -34
  138. package/scripts/lib/docs/assert-project-root.md +14 -16
  139. package/scripts/lib/docs/changed-files.md +24 -139
  140. package/scripts/lib/docs/discover-check-rules-from-cursor.md +14 -146
  141. package/scripts/lib/docs/rule-meta.md +1 -1
  142. package/scripts/lib/docs/rule-predicates.md +20 -17
  143. package/scripts/lib/docs/run-rule-cli.md +14 -18
  144. package/scripts/lib/docs/run-rule.md +13 -20
  145. package/scripts/lib/docs/run-standard-rule.md +12 -15
  146. package/scripts/lib/docs/sync-gitignore-worktree.md +15 -18
  147. package/scripts/lib/rule-meta.mjs +10 -6
  148. package/scripts/lib/rule-predicates.mjs +1 -1
  149. package/scripts/lint-cli.mjs +28 -20
  150. package/scripts/sync-claude-config.mjs +4 -1
  151. package/scripts/utils/docs/with-lock.md +19 -12
  152. package/scripts/utils/with-lock.mjs +4 -2
  153. package/skills/doc-aggregate/SKILL.md +2 -2
  154. package/skills/doc-aggregate/js/docgen-ignore.mjs +6 -6
  155. package/skills/doc-aggregate/js/docs/docgen-ignore.md +1 -1
  156. package/skills/doc-aggregate/js/docs/docgen-scan.md +78 -0
  157. package/skills/doc-files/.changes/260612-0031.md +5 -0
  158. package/skills/doc-files/.changes/260612-0036.md +5 -0
  159. package/skills/doc-files/.changes/260612-0114.md +5 -0
  160. package/skills/doc-files/SKILL.md +6 -6
  161. package/skills/fix/js/docs/llm-worker.md +17 -15
  162. package/skills/fix/js/docs/orchestrator.md +30 -23
  163. package/skills/fix/js/docs/t0.md +26 -16
  164. package/skills/start-check/js/docs/check.md +26 -22
  165. package/skills/taze/js/docs/diff.md +44 -20
  166. package/skills/doc-files/js/docs/docgen-prompts.md +0 -32
  167. package/skills/doc-files/js/docs/docgen-scan.md +0 -25
  168. package/skills/doc-files/js/docs/units-rs.md +0 -35
  169. /package/{skills → rules}/doc-files/js/docgen-crc.mjs +0 -0
  170. /package/{skills → rules}/doc-files/js/docgen-extract-anchors.mjs +0 -0
  171. /package/{skills → rules}/doc-files/js/docgen-prompts.mjs +0 -0
  172. /package/{skills → rules}/doc-files/js/units-js.mjs +0 -0
  173. /package/{skills → rules}/doc-files/js/units.mjs +0 -0
@@ -1,25 +1,32 @@
1
+ ---
2
+ docgen:
3
+ source: npm/scripts/utils/with-lock.mjs
4
+ crc: 21848085
5
+ score: 95
6
+ ---
7
+
1
8
  # with-lock.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Цей файл реалізує механізм захисту від одночасного виконання критичних операцій, забезпечуючи атомарний lock та дедуплікацію даних для інтенсивних команд. Він використовується для запобігання конфліктів при одночасному виконанні операцій, які можуть призвести до пошкодження даних або непередбачуваних результатів. Механізм гарантує, що кожен прогін операцій виконується без повторень та з атомарним lock.
12
+ Файл реалізує механізм захисту важких команд через атомарне блокування та унікалізацію результатів. Функції дозволяють перевіряти можливість повторного використання результату з кешу та виконувати команду через серіалізований механізм. Механізм використовує `mkdirSync-based lock` та `sha256-dedup` з TTL.
6
13
 
7
14
  ## Поведінка
8
15
 
9
- - `shouldDedup`: Перевіряє, чи можна повторно використати кешований результат, враховуючи код виходу, відбитковий дерева та час завершення.
10
- - `withLock`: Встановлює lock-директорію, запускає вказану функцію, кешує результат та повторно використовує його, якщо можливо, з використанням дедуплікації за відбитком.
16
+ shouldDedup
17
+ Перевіряє можливість повторного використання результату з кешу.
18
+
19
+ withLock
20
+ Серіалізує важку команду через атомарний lock та dedup.
11
21
 
12
22
  ## Публічний API
13
23
 
14
- - shouldDedup — Перевіряє, чи можна використовувати попередньо обчислену відповідь для уникнення повторних обчислень.
15
- - withLock — Забезпечує унікальність виконання важкої операції за допомогою блокування та перевірки на основі відбитків.
24
+ shouldDedup — Чи можна пропустити повторний прогін за кешованим result.json.
25
+ withLock — Серіалізує важку команду через атомарний lock і dedup за fingerprint.
16
26
 
17
27
  ## Гарантії поведінки
18
28
 
19
- - **Атомарність:** Операції lock та dedup виконуються як атомарні дії.
20
- - **Захист від помилок:** У разі виникнення помилки, функція повертає `false` та `null`.
21
- - **Детектування неактивного PID:** Перевіряється, чи процес, що утримує lock, все ще активний.
22
- - **Дедуплікація з обмеженням часу:** Проводиться дедуплікація за допомогою SHA256 з обмеженням часу (TTL).
23
- - **Кешування:** Результати прогону кешуються для прискорення наступних проходів.
24
- - **Відсутність винятків:** Функції не викликають винятків.
25
- - **Створення директорій:** Використовується `mkdirSync` для створення директорій.
29
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
30
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
31
+ - Кешує результати в межах одного прогону.
32
+ - Не звертається до мережі.
@@ -126,9 +126,11 @@ export async function withLock(key, runFn, opts = {}) {
126
126
  /* result.json не існує або пошкоджений */
127
127
  }
128
128
 
129
- const onSignal = () => {
129
+ // Після release лок ре-рейзиться той самий сигнал: `once` вже зняв обробник,
130
+ // тож процес завершується дефолтною дією з коректним кодом (130/143)
131
+ const onSignal = signal => {
130
132
  release()
131
- process.exit(130)
133
+ process.kill(process.pid, signal)
132
134
  }
133
135
  process.once('SIGINT', onSignal)
134
136
  process.once('SIGTERM', onSignal)
@@ -29,10 +29,10 @@ Tier 3 — **один** субагент-синтезатор після зав
29
29
  - Файлові доки мають бути свіжі. Перевір і за потреби онови перед агрегацією:
30
30
 
31
31
  ```bash
32
- npx @nitra/cursor doc-files check --git
32
+ npx @nitra/cursor lint-doc-files --git
33
33
  ```
34
34
 
35
- Якщо багато застарілих — спершу прожени `npx @nitra/cursor doc-files gen`.
35
+ Якщо багато застарілих — спершу прожени `npx @nitra/cursor fix-doc-files`.
36
36
 
37
37
  ## Крок 1: Tier 2 — module-summary
38
38
 
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Re-export спільного списку ignore-глобів зі скіла doc-files.
2
+ * Re-export спільного списку ignore-глобів із правила doc-files.
3
3
  *
4
- * Канонічне джерело — `npm/skills/doc-files/js/docgen-ignore.mjs`: обидва скіли
5
- * (file-level доки і агрегати) мусять бачити однакове дерево кодових файлів,
6
- * інакше агрегат посилатиметься на файли без док (або навпаки). Залежність
7
- * спрямована doc-aggregate → doc-files за ADR про розбиття docgen.
4
+ * Канонічне джерело — `npm/rules/doc-files/js/docgen-ignore.mjs`: скіл doc-aggregate
5
+ * і правило doc-files мусять бачити однакове дерево кодових файлів, інакше агрегат
6
+ * посилатиметься на файли без док (або навпаки). Залежність спрямована
7
+ * doc-aggregate → doc-files за ADR про розбиття docgen.
8
8
  */
9
- export * from '../../doc-files/js/docgen-ignore.mjs'
9
+ export * from '../../../rules/doc-files/js/docgen-ignore.mjs'
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/doc-aggregate/js/docgen-ignore.mjs
4
- crc: 8821af65
4
+ crc: 5faaffd0
5
5
  ---
6
6
 
7
7
  # docgen-ignore
@@ -0,0 +1,78 @@
1
+ ---
2
+ docgen:
3
+ source: npm/skills/doc-aggregate/js/docgen-scan.mjs
4
+ crc: 193dd362
5
+ score: 100
6
+ ---
7
+
8
+ # docgen-scan.mjs
9
+
10
+ ## Огляд
11
+
12
+ isSourceFile
13
+ Перевіряє, чи є файл коду, який слугує джерелом для документування.
14
+
15
+ scanSourceFiles
16
+ Рекурсивно збирає кодові файли проєкту за позикс-шляхами від кореня.
17
+
18
+ slugForModule
19
+ Генерує стабільний slug модуля на основі його відносного шляху.
20
+
21
+ findModuleRoots
22
+ Знаходить абсолютні шляхи коренів модулів, використовуючи дані з package.json.
23
+
24
+ nearestModuleRoot
25
+ Визначає найближчий модуль-предок для заданого файлу серед усіх доступних коренів модулів.
26
+
27
+ scanForModules
28
+ Лістить логічні модулі, збираючи члени-файли та інформацію про наявність документації.
29
+
30
+ resolveRoot
31
+ Парсить аргументи для визначення абсолютної кореневої директорії.
32
+
33
+ runDocAggregateModulesCli
34
+ Сканує модулі та виводить масив JSON у stdout.
35
+
36
+ ## Поведінка
37
+
38
+ isSourceFile
39
+ Перевіряє, чи є файл кодовим джерелом для документування
40
+
41
+ scanSourceFiles
42
+ Рекурсивно збирає кодові файли проєкту по позикс-шляхах від кореня
43
+
44
+ slugForModule
45
+ Генерує стабільний slug модуля з його відносним шляхом
46
+
47
+ findModuleRoots
48
+ Знаходить абсолютні шляхи коренів модулів з файлами package.json
49
+
50
+ nearestModuleRoot
51
+ Знаходить найближчий модуль-предок для файлу серед наявних коренів модулів
52
+
53
+ scanForModules
54
+ Лістить логічні модулі, збираючи члени-файли та інформацію про наявність документації
55
+
56
+ resolveRoot
57
+ Парсить аргументи для визначення абсолютного кореня
58
+
59
+ runDocAggregateModulesCli
60
+ Сканує модулі та виводить JSON-масив у stdout
61
+
62
+ ## Публічний API
63
+
64
+ - isSourceFile — визначає, чи є файл коду для документування.
65
+ - scanSourceFiles — рекурсивно збирає файли коду проєкту (від кореня за POSIX-шляхом).
66
+ - slugForModule — генерує стабільний slug модуля з його відносним шляхом (для лейблів/логів).
67
+ - findModuleRoots — знаходить кореневі директорії модулів у `package.json` (корінь — це модуль).
68
+ - nearestModuleRoot — визначає найближчий модуль-предок для файлу (найдовший збіг шляху).
69
+ - scanForModules — лістить логічні модулі проєкту з членами-файлами та `docPath module-summary`. Пропускає модулі без кодових файлів.
70
+ - resolveRoot — парсить аргумент `--root <dir>`; за замовчуванням використовує поточну директорію.
71
+ - runDocAggregateModulesCli — виконує команду `doc-aggregate modules`, скануючи модулі та виводячи JSON-масив у stdout.
72
+
73
+ ## Гарантії поведінки
74
+
75
+ - Read-only: файл не виконує операцій запису у файлову систему.
76
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
77
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
78
+ - Не звертається до мережі.
@@ -0,0 +1,5 @@
1
+ ---
2
+ bump: patch
3
+ section: Changed
4
+ ---
5
+ стале-доки після Rust: оновлено CRC для docgen-prompts, docgen-scan, units-rs; додано units-js.md; тести extractFacts(.rs)
@@ -0,0 +1,5 @@
1
+ ---
2
+ bump: patch
3
+ section: Added
4
+ ---
5
+ docs: units.md (docgen для units.mjs — фасад Rust/JS)
@@ -0,0 +1,5 @@
1
+ ---
2
+ bump: patch
3
+ section: Added
4
+ ---
5
+ doc-files: регенерація всіх stale doc-файлів; manifests.mjs (303KB) → docgen-ignore
@@ -31,7 +31,7 @@ docgen:
31
31
  ## Оркестрацію веде JS, не модель; конвеєр — local-only
32
32
 
33
33
  Уся важка робота — черга, батчинг, виклики LLM і штамп CRC — живе в JS-команді
34
- `doc-files gen`. **Ти не диспатчиш субагентів і не тримаєш сотні файлів у контексті**
34
+ `fix-doc-files`. **Ти не диспатчиш субагентів і не тримаєш сотні файлів у контексті**
35
35
  — тому навіть масовий перший прогін усього репо не «заморює». Цей скіл **тонкий**: твоє завдання —
36
36
  запустити генерацію і прочитати підсумок.
37
37
 
@@ -50,7 +50,7 @@ docgen:
50
50
  ### Крок 1: Генерація застарілих/відсутніх док
51
51
 
52
52
  ```bash
53
- npx @nitra/cursor doc-files gen
53
+ npx @nitra/cursor fix-doc-files
54
54
  ```
55
55
 
56
56
  Команда сама: перевіряє omlx (preflight: «сервер лежить» / «модель не влазить у пам'ять
@@ -66,18 +66,18 @@ npx @nitra/cursor doc-files gen
66
66
 
67
67
  Дочекайся підсумку `✓ OK: <N> ⚠ degraded: <D> ✗ Err: <E>`. Якщо є помилки — перелічи
68
68
  проблемні файли. Exit-код `1` означає, що хоча б один файл не згенерувався (або не пройшов
69
- preflight). Degraded — не помилка: дока існує, борг видно у `check --degraded`.
69
+ preflight). Degraded — не помилка: дока існує, борг видно у `lint-doc-files --degraded`.
70
70
 
71
71
  ### Крок 3 (за потреби): перевірка перед завершенням
72
72
 
73
73
  ```bash
74
- npx @nitra/cursor doc-files check --git
74
+ npx @nitra/cursor lint-doc-files --git
75
75
  ```
76
76
 
77
77
  Перевіряє змінені у задачі джерела (`git diff --name-only HEAD`) проти CRC їхніх док.
78
78
  Цю ж перевірку виконує **Stop-hook** як твердий гейт: завершити задачу зі застарілими
79
79
  доками не можна (виняток — масовий прогін понад поріг `N_CURSOR_DOC_FILES_GATE_MAX`, дефолт 50).
80
- Degraded-доки гейт **не** блокує (CRC свіжий); їх список — `doc-files check --degraded`.
80
+ Degraded-доки гейт **не** блокує (CRC свіжий); їх список — `lint-doc-files --degraded`.
81
81
 
82
82
  ## Правила стилю документа (за adr/ci4)
83
83
 
@@ -97,4 +97,4 @@ Degraded-доки гейт **не** блокує (CRC свіжий); їх спи
97
97
  усі теки `docs/`, а також `*.test.*` / `*.spec.*` / `*.d.ts`. Кореневий repo `docs/` —
98
98
  system-wide only: file-level docs туди не пишуться. Список glob-ів — `docgen-ignore.mjs`.
99
99
  - Агрегуюча документація (module-summary, доменні доки) — окремий скіл `doc-aggregate`, за запитом.
100
- - Для наявних док без CRC одноразово: `npx @nitra/cursor doc-files stamp` (штампує frontmatter без LLM).
100
+ - Для наявних док без CRC одноразово: `npx @nitra/cursor fix-doc-files --stamp` (штампує frontmatter без LLM).
@@ -1,33 +1,35 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/fix/js/llm-worker.mjs
4
- crc: 8317f878
4
+ crc: 6507b5b7
5
+ score: 100
5
6
  ---
6
7
 
7
8
  # llm-worker.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Цей файл є LLM-робітником, який збирає контекст для n-fix оркестратора, зокрема правила з файлів .mdc та звіти про порушення. Він передає цей контекст великій мовній моделі (LLM) для генерації JSON з пропозиціями змін. Після отримання змін, скрипт застосовує їх до відповідних ресурсів.
12
+ MODEL визначає основну модель для виконання операцій. MODEL_HEAVY визначає модель для посиленої обробки. runLlmWorker корегує одне визначене правило порушення через LLM.
12
13
 
13
14
  ## Поведінка
14
15
 
15
- runLlmWorker: Виправляє одне rule-порушення через pi (C1 pattern). Збирає контекст з rule .mdc, файлів з violation output, та передає його в pi для отримання JSON зі змінами. Застосовує зміни, якщо вони були отримані від pi. Якщо pi не повернув JSON, або не зміг застосувати зміни, повертає помилку. Використовує модель Claude HAIKU за замовчуванням, або модель, вказану в опціях.
16
+ MODEL
17
+ Визначає модель за замовчуванням для роботи.
18
+
19
+ MODEL_HEAVY
20
+ Визначає модель для важкої ескалації.
21
+
22
+ runLlmWorker
23
+ Виправляє одне правило порушення через LLM.
16
24
 
17
25
  ## Публічний API
18
26
 
19
- MODEL_HAIKUГенерує короткі вірші.
20
- MODEL_SONNETГенерує вірші у форматі сонету.
21
- runLlmWorker — Виправляє порушення правил, використовуючи pi (C1 pattern).
27
+ MODELСтворює модель.
28
+ MODEL_HEAVYСтворює важку модель.
29
+ runLlmWorker — Виправляє одне порушення правила через pi (C1 pattern).
22
30
 
23
31
  ## Гарантії поведінки
24
32
 
25
- - Приймає контекст з файлів `.mdc` та файлів з violation.
26
- - Повертає JSON з пропозиціями змін.
27
- - Застосовує зміни, отримані від `pi`.
28
- - Використовує LLM для генерації змін.
29
- - Викликає LLM через `pi`.
30
- - Не використовує tool-use.
31
- - Не кидає винятків.
32
- - У разі невдачі повертає `false` та `null`.
33
- - Не використовує кешування.
33
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
34
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
35
+ - Не звертається до мережі.
@@ -1,38 +1,45 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/fix/js/orchestrator.mjs
4
- crc: 8b7a7de5
4
+ crc: e77aaf7b
5
+ score: 100
5
6
  ---
6
7
 
7
8
  # orchestrator.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Файл `convergence-loop` є автономним оркестратором для n-fix, який забезпечує перевірку та виправлення коду без участі LLM. Він ініціює детерміністичні перевірки, regex-парсинг та ітеративні процеси з використанням LLM для вирішення складних проблем. Цей компонент є ключовим елементом системи, що автоматизує процес забезпечення коректності коду n-fix.
12
+ runOrchestratorCli
13
+ Запускає ітеративний цикл для перевірки набору правил. Проходить через кроки T0-auto та T1, взаємодіючи з LLM-воркерами. Завершує роботу, перевіряючи, чи всі правила виконані, повертаючи нуль або одиницю залежно від кінцевого стану.
12
14
 
13
15
  ## Поведінка
14
16
 
15
- 1. **Ініціалізація:** Запускається оркестратор, визначаються максимальна кількість ітерацій (за замовчуванням 3) та порогове значення для ескалації LLM (за замовчуванням 2 невдачі).
16
- 2. **Первинна перевірка:** Виконується детермінована перевірка (T0) на основі заданих правил, без залучення LLM. Результат перевірки записується.
17
- 3. **Автоматичний фікс (T0-auto):** Якщо перевірка виявила порушення, запускається автоматичний фікс, який використовує regex для виявлення та виправлення проблем.
18
- 4. **Ітерація:** Програма повторює наступні кроки до досягнення максимальної кількості ітерацій:
19
- - **Перевірка (T0):** Виконується детермінована перевірка (T0) на основі поточного стану.
20
- - **Автоматичний фікс (T0-auto):** Якщо перевірка виявила порушення, запускається автоматичний фікс.
21
- - **Виклик LLM (T1):** Для кожного порушення, яке не було виправлено автоматичним фіксом, викликається LLM (haiku або sonnet, залежно від кількості попередніх невдач) для генерації рішення.
22
- - **Оцінка рішення LLM:** LLM генерує рішення, яке оцінюється на предмет успіху.
23
- - **Оновлення стану:** Якщо рішення LLM успішне, порушення виправляється, і кількість невдалих спроб LLM для цього правила встановлюється на нуль.
24
- 5. **Фінальна перевірка:** Після завершення всіх ітерацій виконується остаточна перевірка, щоб визначити, чи були виправлені всі порушення.
25
- 6. **Повернення результату:** Оркестратор повертає код 0, якщо всі правила були виправлені, і код 1, якщо хоча б одне правило залишилося не виправленим. У випадку помилки парсингу JSON, повертається null.
17
+ 1. Парсинг аргументів
18
+ Приймає аргументи командного рядка після 'fix'
19
+ Визначає максимальну кількість ітерацій
20
+ Визначає фільтр правил
21
+ 2. Початкова перевірка
22
+ Запускає перевірку стану
23
+ Отримує початковий набір правил
24
+ Перевіряє наявність помилок
25
+ 3. Ітеративний цикл
26
+ Повторює ітерації до максимального ліміту
27
+ Виконує крок T0-auto
28
+ Перевіряє кількість провалів після кроку T0
29
+ Якщо провалів немає, завершує цикл
30
+ Виконує крок T1
31
+ Запускає роботу з LLM-воркерами для кожного правила
32
+ Збільшує лічильник провалів для невдалих правил
33
+ Перевіряє стан після LLM
34
+ Перевіряє наявність невирішених правил
35
+ 4. Завершення
36
+ Перевіряє, чи всі правила вирішено
37
+ Повертає нуль у разі чистого стану
38
+ Повертає одиницю у разі невирішеного стану
26
39
 
27
40
  ## Гарантії поведінки
28
41
 
29
- - Оркестратор запускається при виклику `runOrchestratorCli`.
30
- - Програма виконує цикл з перевірок, поки не буде досягнуто максимальну кількість ітерацій (`maxIter`).
31
- - Після кожної ітерації (`T0`, `T0-auto`, `T1`) виконується перевірка.
32
- - `T0` виконується детерміновано без використання LLM.
33
- - `T0-auto` виконує regex-парсинг та застосовує програмний фікс у разі виявлення порушення.
34
- - `T1` використовує LLM через `pi` (ескалація до `haiku` та `sonnet`).
35
- - `check-gate` повторно запускає `T0` після кожної ітерації.
36
- - У разі помилки програма повертає `false` або `null`.
37
- - Програма кешує результати для оптимізації роботи в межах одного запуску.
38
- - Програма не взаємодіє з мережею.
42
+ - Read-only: файл не виконує операцій запису у файлову систему.
43
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
44
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
45
+ - Не звертається до мережі.
@@ -1,29 +1,39 @@
1
+ ---
2
+ docgen:
3
+ source: npm/skills/fix/js/t0.mjs
4
+ crc: 51311329
5
+ score: 90
6
+ ---
7
+
1
8
  # t0.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Файл `t0-auto` забезпечує детермінований рівень виправлень для n-fix оркестратора, автоматично застосовуючи програмні фікси на основі аналізу вихідних даних `n-cursor fix --json`. Він парсить повідомлення про порушення, видобуваючи з них інформацію про цільові файли або рядки для вставки, і застосовує відповідні фікси. Це дозволяє швидко та передбачувано виправляти помилки, не використовуючи LLM, і є першим етапом у конвергентному циклі виправлення.
12
+ applyT0Auto застосовує паттерни T0-auto до вихідного результату.
13
+
14
+ filterT0AutoRules фільтрує список правил, для яких присутній хоча б один T0-auto паттерн.
15
+
16
+ runT0AutoCli запускає перевірку, застосовує T0-auto до провальних правил, виводить результат та перевіряє стан через check-gate.
6
17
 
7
18
  ## Поведінка
8
19
 
9
- applyT0Auto: Застосовує всі T0-auto паттерни до вхідного `violationOutput` та повертає об'єкт, що вказує, чи застосовано фікс, та список виконаних дій.
10
- filterT0AutoRules: Повертає список id правил, для яких є хоч один T0-auto паттерн, на основі `failedRules`.
11
- runT0AutoCli: Запускає `n-cursor fix --json`, застосовує T0-auto, повторно перевіряє check-gate та виводить підсумок. Повертає 0 у разі успіху, 1 у разі помилки.
20
+ applyT0Auto
21
+ Застосовує паттерни T0-auto до одного вихідного результату
22
+
23
+ filterT0AutoRules
24
+ Фільтрує список правил, для яких існує хоча б один T0-auto паттерн
25
+
26
+ runT0AutoCli
27
+ Запускає перевірку, застосовує T0-auto до провальних правил, виводить результат та перевіряє стан через check-gate
12
28
 
13
29
  ## Публічний API
14
30
 
15
- - applyT0Auto — Застосовує автоматичні правила виправлення до виявлених проблем.
16
- - filterT0AutoRules — Визначає ідентифікатори правил, які мають T0-auto паттерни.
17
- - runT0AutoCli — Запускає CLI-інструмент для автоматичного виправлення, включаючи перевірку та звітність.
31
+ - applyT0Auto — застосовує всі T0-auto шаблони до одного виводу порушення.
32
+ - filterT0AutoRules — повертає ідентифікатори правил, що мають хоча б один T0-auto шаблон у виводі порушення.
33
+ - runT0AutoCli — виконує команду `n-cursor fix-t0 [правило...]`.
34
+ - Запускає `fix --json`, застосовує T0-auto до кожного порушення, повторно перевіряє check-gate, виводить звіт.
18
35
 
19
36
  ## Гарантії поведінки
20
37
 
21
- - `applyT0Auto` застосовує програмний фікс, якщо `violationOutput` містить інформацію, яку можна видобути за допомогою регулярних виразів, і `violation-message` містить цільове значення, що відповідає одному з ідентифікаторів правил T0-auto. Результат: `applied` - boolean, `actions` - string[] (список виконаних дій).
22
- - `listT0AutoRules` повертає список ідентифікаторів правил T0-auto, які мають хоча б один паттерн.
23
- - `runT0AutoCli` повертає код виходу 0, якщо процес виконано успішно, і 1, якщо виявлено порушення.
24
- - T0-auto запускається першим у конвергентному циклі.
25
- - T1 запускається лише для решти.
26
- - Система перехоплює помилки та не кидає винятки.
27
- - В системі немає кешування.
28
- - Вхідні дані `applyT0Auto` повинні відповідати формату JSON, вихідному від `n-cursor fix --json`.
29
- - Якщо `violation-message` не містить інформації, яку можна видобути за допомогою регулярних виразів, `applyT0Auto` не виконує жод
38
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
39
+ - Не звертається до мережі.
@@ -1,40 +1,44 @@
1
1
  ---
2
2
  docgen:
3
3
  source: npm/skills/start-check/js/check.mjs
4
- crc: 1809127a
4
+ crc: 1f8fb2f0
5
+ score: 95
5
6
  ---
6
7
 
7
8
  # check.mjs
8
9
 
9
10
  ## Огляд
10
11
 
11
- Файл `n-cursor start-check scan|run` є частиною smoke-перевірки для скілу `n-start-check`. Він автоматично аналізує та запускає воркспейси, визначаючи тип стартового скрипта (сервер чи CLI) та перевіряючи успішність його виконання з обмеженням часу. Результати аналізу та запуску записуються у форматі JSON для подальшого аналізу та діагностики проблем.
12
+ Файл надає інструменти для класифікації типів процесу, сканування конфігурації воркспейсів, парсингу логів та запуску скриптів.
12
13
 
13
14
  ## Поведінка
14
15
 
15
- - `classifyStartType` визначає, чи є команда `start` CLI чи довгим процесом (сервером).
16
- - `scanStartWorkspaces` сканує монорепо, визначаючи воркспейси з `start`, їхні команди та типи.
17
- - `parseStartLog` витягує готовність, першу помилку та хвіст логу з процесу.
18
- - `runWorkspaceStart` запускає команду `start` воркспейсу з grace-таймаутом, класифікує результат та повертає інформацію про процес.
19
- - `runStartCheckCli` виконує `scan` або `run` воркспейсу, приймаючи аргументи командного рядка.
16
+ classifyStartType
17
+ Визначає тип процесу як сервер чи CLI на основі команди.
18
+
19
+ scanStartWorkspaces
20
+ Сканує монорепо для отримання інформації про наявність та конфігурацію `start` скриптів у воркспейсах.
21
+
22
+ parseStartLog
23
+ Парсить лог процесу для визначення готовності, першої помилки та останніх рядків.
24
+
25
+ runWorkspaceStart
26
+ Запускає `start` для одного воркспейсу з тайм-аутом і класифікує результат.
27
+
28
+ runStartCheckCli
29
+ Обробляє аргументи командного рядка для сканування або запуску тестування воркспейсів.
20
30
 
21
31
  ## Публічний API
22
32
 
23
- - classifyStartType — Визначає, чи є команда `start` сервером або CLI.
24
- - scanStartWorkspaces — Перевіряє монорепо на наявність команди `start` та її типу у кожному воркспейсі.
25
- - parseStartLog — Аналізує лог процесу `start` для виявлення статусу, помилок та кінця.
26
- - runWorkspaceStart — Запускає команду `start` у воркспейсі з обмеженим часом та визначає результат.
27
- - runStartCheckCli — Запускає CLI для сканування воркспейсів з `start` та індивідуального запуску воркспейсу з подальшим виводом результатів у JSON.
33
+ - classifyStartType — визначає, чи команда `start` належить до довготривалого процесу (серверу) чи одноразової дії (CLI).
34
+ - scanStartWorkspaces — переглядає монорепо, витягуючи команду `start`, її команду та тип для кожного воркспейсу.
35
+ - parseStartLog — витягує з логу стадії: готовність (сервер), перша помилка або фінальний результат.
36
+ - runWorkspaceStart — ініціює запуск `start` для одного воркспейсу з обмеженням часу та класифікує отриманий результат.
37
+ - runStartCheckCli — CLI-команда: команда `scan` генерує список воркспейсів зі `start`; команда `run <ws>` запускає один воркспейс і виводить класифікований результат у stdout.
28
38
 
29
39
  ## Гарантії поведінки
30
40
 
31
- - Скрипт детерміновано виконує перевірку запуску воркспейса.
32
- - Скрипт використовує `spawnSync` з таймаутом для запуску процесів.
33
- - Скрипт інтерпретує exit-коди та парсить логи.
34
- - Результат перевірки воркспейса представлений у форматі `[{workspace, name, hasStart, startCmd, type}]`.
35
- - У разі невдачі перевірки, скрипт повертає `false` або `null`.
36
- - Скрипт не кидає винятків.
37
- - Скрипт не використовує кешування.
38
- - Скрипт не взаємодіє з мережею.
39
- - Результат запуску воркспейса представлений у форматі `{workspace, type, exitCode, timedOut, status, ready, firstError, logTail, sideEffects}`.
40
- - `sideEffects` містить відкат стану воркспейса до його початкового стану перед запуском.
41
+ - Read-only: файл не виконує операцій запису у файлову систему.
42
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
43
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
44
+ - Не звертається до мережі.
@@ -1,33 +1,57 @@
1
+ ---
2
+ docgen:
3
+ source: npm/skills/taze/js/diff.mjs
4
+ crc: fe4d76ce
5
+ score: 100
6
+ ---
7
+
1
8
  # diff.mjs
2
9
 
3
10
  ## Огляд
4
11
 
5
- Файл `n-cursor taze diff` порівнює поточну версію `package.json` з її резервною копією (`package.json.taze-bak`) для виявлення змін залежностей. Він класифікує ці зміни за семантикою версій (major, minor, patch) та надає список оновлень, які потребують уваги. Це автоматизує процес, який раніше виконувався вручну, забезпечуючи швидкий та точний аналіз змін у залежностях монорепо.
12
+ parseVersion
13
+ Парсить версію з specifier.
14
+
15
+ isBreaking
16
+ Перевіряє перехід версій згідно з caret-семантикою.
17
+
18
+ diffPackageJson
19
+ Порівнює об'єкти package.json і повертає зміни залежностей.
20
+
21
+ collectTazeDiff
22
+ Збирає diff по всьому монорепо порівнюючи бекап та новий файл.
23
+
24
+ runTazeCli
25
+ Друкує результат diff у форматі JSON.
6
26
 
7
27
  ## Поведінка
8
28
 
9
- `parseVersion` парсує версійний specifier, ігноруючи range-префікси, і повертає об'єкт з major, minor та patch компонентами, або null, якщо spec не є semver.
10
- `isBreaking` визначає, чи є перехід від старої до нової версії "breaking" за caret-семантикою.
11
- `diffPackageJson` порівнює два об'єкти `package.json`, виявляє major-оновлення та підраховує minor/patch зміни для залежностей.
12
- `collectTazeDiff` збирає diff по всіх воркспейсах монорепо, порівнюючи `package.json` з бекапом, та повертає список major-оновлень, кількість minor/patch змін, загальну кількість порівняних воркспейсів та кількість воркспейсів, які були порівняні.
13
- `runTazeCli` запускає CLI `n-cursor taze diff`, збирає diff по воркспейсах, та виводить результат у форматі JSON.
29
+ parseVersion
30
+ Парсить версію з specifier
31
+
32
+ isBreaking
33
+ Перевіряє перехід версій згідно з caret-семантикою
34
+
35
+ diffPackageJson
36
+ Порівнює об'єкти package.json і повертає зміни залежностей
37
+
38
+ collectTazeDiff
39
+ Збирає diff по всьому монорепо порівнюючи бекап та новий файл
40
+
41
+ runTazeCli
42
+ Друкує результат diff у форматі JSON
14
43
 
15
44
  ## Публічний API
16
45
 
17
- - parseVersion — Розбирає semver-версію з специфікатора.
18
- - isBreaking — Визначає, чи є перехід breaking за caret-семантикою.
19
- - diffPackageJson — Порівнює два package.json-об'єкти та визначає зміни залежностей.
20
- - collectTazeDiff — Збирає diff для монорепо, порівнюючи package.json з резервною копією.
21
- - runTazeCli — Запускає CLI для виведення компактного JSON з інформацією про major-оновлення та кількість minor/patch.
46
+ parseVersion — витягує версію з specifier-а, ігноруючи range-префікси.
47
+ isBreaking — визначає, чи є перехід між версіями breaking за caret-семантикою (зміна найлівішої ненульової частини).
48
+ diffPackageJson — порівнює два package.json-об'єкти та генерує список змін залежностей.
49
+ collectTazeDiff — збирає різницю між версіями всього монорепо, порівнюючи `package.json` з його резервною копією у кожному воркспейсі.
50
+ runTazeCli — виконує команду `n-cursor taze diff` для виведення компактного JSON зі списком major-оновлень та лічилки minor/patch.
22
51
 
23
52
  ## Гарантії поведінки
24
53
 
25
- - Скрипт повертає `true`, якщо всі воркспейси монорепо успішно порівняні.
26
- - Скрипт повертає `false` та `null`, якщо виникла будь-яка помилка під час порівняння.
27
- - Результат порівняння завжди є `null`, якщо `package.json` або `package.json.taze-bak` не є валідним JSON.
28
- - Результат порівняння містить список major-оновлень, визначених за caret-семантикою.
29
- - Minor та patch оновлення не включаються в результат.
30
- - Результат завжди детермінований, тобто при однаковому вході скрипт завжди повертає однаковий результат.
31
- - Скрипт не використовує кешування.
32
- - Скрипт не кидає винятків.
33
- - Скрипт перехоплює помилки та повертає `false` та `null`.
54
+ - Read-only: файл не виконує операцій запису у файлову систему.
55
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
56
+ - За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
57
+ - Не звертається до мережі.