@nitra/cursor 5.3.4 → 5.4.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 (151) 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 +11 -0
  4. package/bin/n-cursor.js +43 -22
  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-ignore.mjs +2 -1
  22. package/{skills → rules}/doc-files/js/docgen-scan.mjs +9 -1
  23. package/{skills → rules}/doc-files/js/docs/docgen-crc.md +1 -1
  24. package/{skills → rules}/doc-files/js/docs/docgen-extract-anchors.md +1 -1
  25. package/{skills → rules}/doc-files/js/docs/docgen-extract.md +2 -2
  26. package/{skills → rules}/doc-files/js/docs/docgen-files-batch.md +1 -1
  27. package/{skills → rules}/doc-files/js/docs/docgen-gen.md +1 -1
  28. package/{skills → rules}/doc-files/js/docs/docgen-ignore.md +4 -4
  29. package/rules/doc-files/js/docs/docgen-prompts.md +39 -0
  30. package/rules/doc-files/js/docs/docgen-scan.md +54 -0
  31. package/rules/doc-files/js/docs/lint.md +36 -0
  32. package/rules/doc-files/js/docs/units-js.md +31 -0
  33. package/rules/doc-files/js/docs/units-rs.md +35 -0
  34. package/rules/doc-files/js/docs/units.md +30 -0
  35. package/rules/doc-files/js/lint.mjs +96 -0
  36. package/{skills → rules}/doc-files/js/units-rs.mjs +37 -17
  37. package/rules/doc-files/lint/docs/lint.md +37 -0
  38. package/rules/doc-files/lint/lint.mjs +105 -0
  39. package/rules/doc-files/meta.json +1 -0
  40. package/rules/docker/docs/fix.md +21 -161
  41. package/rules/efes/docs/fix.md +23 -194
  42. package/rules/feedback/docs/fix.md +10 -8
  43. package/rules/ga/docs/fix.md +10 -5
  44. package/rules/graphql/docs/fix.md +23 -119
  45. package/rules/hasura/docs/fix.md +19 -5
  46. package/rules/hasura/js/docs/internal_urls.md +34 -307
  47. package/rules/image-avif/docs/fix.md +16 -127
  48. package/rules/image-compress/docs/fix.md +20 -141
  49. package/rules/image-compress/js/docs/package_setup.md +22 -182
  50. package/rules/js-bun-db/docs/fix.md +23 -139
  51. package/rules/js-bun-db/js/docs/safety.md +33 -221
  52. package/rules/js-bun-redis/docs/fix.md +25 -114
  53. package/rules/js-bun-redis/js/docs/imports.md +18 -166
  54. package/rules/js-lint/docs/fix.md +30 -108
  55. package/rules/js-lint/js/docs/lint-findings.md +37 -17
  56. package/rules/js-lint/js/docs/lint.md +22 -238
  57. package/rules/js-lint/js/docs/tooling.md +34 -331
  58. package/rules/js-lint-ci/docs/fix.md +16 -149
  59. package/rules/js-lint-ci/js/docs/lint.md +16 -136
  60. package/rules/js-mssql/docs/fix.md +18 -123
  61. package/rules/js-mssql/js/docs/deps.md +28 -251
  62. package/rules/js-run/docs/fix.md +23 -138
  63. package/rules/js-run/js/docs/runtime.md +24 -378
  64. package/rules/k8s/docs/fix.md +18 -123
  65. package/rules/nginx-default-tpl/docs/fix.md +22 -118
  66. package/rules/nginx-default-tpl/js/docs/template.md +38 -360
  67. package/rules/npm-module/docs/fix.md +27 -89
  68. package/rules/npm-module/js/docs/header_doc_pointer.md +15 -15
  69. package/rules/npm-module/js/docs/package_structure.md +36 -258
  70. package/rules/npm-module/js/docs/rule_meta.md +25 -127
  71. package/rules/npm-module/js/docs/skill_meta.md +18 -180
  72. package/rules/php/docs/fix.md +21 -98
  73. package/rules/php/js/docs/tooling.md +20 -143
  74. package/rules/python/docs/fix.md +25 -157
  75. package/rules/python/js/docs/applies.md +20 -98
  76. package/rules/python/js/docs/tooling.md +27 -144
  77. package/rules/rego/docs/fix.md +24 -112
  78. package/rules/rego/js/docs/applies.md +20 -164
  79. package/rules/rego/js/docs/lint.md +15 -110
  80. package/rules/release/docs/fix.md +16 -114
  81. package/rules/rust/docs/fix.md +24 -119
  82. package/rules/rust/js/docs/applies.md +20 -129
  83. package/rules/security/docs/fix.md +21 -78
  84. package/rules/security/js/docs/sample_secret.md +23 -182
  85. package/rules/security/js/docs/trufflehog.md +19 -128
  86. package/rules/style-lint/docs/fix.md +16 -150
  87. package/rules/style-lint/js/docs/lint.md +21 -172
  88. package/rules/style-lint/js/docs/tooling.md +19 -184
  89. package/rules/tauri/docs/fix.md +26 -152
  90. package/rules/tauri/js/docs/cargo_mutants_config.md +21 -159
  91. package/rules/tauri/js/docs/tooling.md +20 -217
  92. package/rules/test/docs/fix.md +19 -127
  93. package/rules/test/js/data/stryker_config/docs/stryker.config.baseline.md +15 -127
  94. package/rules/test/js/data/stryker_config/docs/stryker.config.vue.baseline.md +17 -153
  95. package/rules/test/js/docs/cargo_mutants_config.md +24 -164
  96. package/rules/test/js/docs/location.md +24 -126
  97. package/rules/test/js/docs/no-process-chdir.md +20 -151
  98. package/rules/test/js/docs/no-relative-fs-path.md +24 -261
  99. package/rules/test/js/docs/stryker_config.md +48 -148
  100. package/rules/test/js/docs/vitest-config-pool-forks.md +21 -164
  101. package/rules/text/docs/fix.md +25 -113
  102. package/rules/text/js/docs/forbidden-prettier.md +21 -132
  103. package/rules/text/js/docs/formatting.md +60 -251
  104. package/rules/text/js/docs/lint.md +17 -114
  105. package/rules/vue/docs/fix.md +25 -118
  106. package/rules/vue/js/docs/packages.md +25 -323
  107. package/rules/worktree/docs/fix.md +31 -150
  108. package/scripts/coverage-classify/docs/index.md +23 -209
  109. package/scripts/coverage-classify/docs/verdict-schema.md +14 -159
  110. package/scripts/dispatcher/docs/trace.md +35 -0
  111. package/scripts/docs/auto-rules.md +37 -361
  112. package/scripts/docs/lint-cli.md +12 -13
  113. package/scripts/docs/post-tool-use-fix.md +16 -15
  114. package/scripts/docs/skills-cli.md +26 -23
  115. package/scripts/docs/sync-claude-config.md +94 -34
  116. package/scripts/docs/worktree-cli.md +11 -34
  117. package/scripts/lib/docs/assert-project-root.md +14 -16
  118. package/scripts/lib/docs/changed-files.md +24 -139
  119. package/scripts/lib/docs/discover-check-rules-from-cursor.md +14 -146
  120. package/scripts/lib/docs/rule-predicates.md +20 -17
  121. package/scripts/lib/docs/run-rule-cli.md +14 -18
  122. package/scripts/lib/docs/run-rule.md +13 -20
  123. package/scripts/lib/docs/run-standard-rule.md +12 -15
  124. package/scripts/lib/docs/sync-gitignore-worktree.md +15 -18
  125. package/scripts/lib/rule-predicates.mjs +1 -1
  126. package/scripts/sync-claude-config.mjs +4 -1
  127. package/scripts/utils/docs/with-lock.md +19 -12
  128. package/scripts/utils/with-lock.mjs +4 -2
  129. package/skills/doc-aggregate/SKILL.md +2 -2
  130. package/skills/doc-aggregate/js/docgen-ignore.mjs +6 -6
  131. package/skills/doc-aggregate/js/docs/docgen-ignore.md +1 -1
  132. package/skills/doc-aggregate/js/docs/docgen-scan.md +78 -0
  133. package/skills/doc-files/.changes/260612-0031.md +5 -0
  134. package/skills/doc-files/.changes/260612-0036.md +5 -0
  135. package/skills/doc-files/.changes/260612-0114.md +5 -0
  136. package/skills/doc-files/SKILL.md +6 -6
  137. package/skills/fix/js/docs/llm-worker.md +17 -15
  138. package/skills/fix/js/docs/orchestrator.md +30 -23
  139. package/skills/fix/js/docs/t0.md +26 -16
  140. package/skills/start-check/js/docs/check.md +26 -22
  141. package/skills/taze/js/docs/diff.md +44 -20
  142. package/skills/doc-files/js/docs/docgen-prompts.md +0 -32
  143. package/skills/doc-files/js/docs/docgen-scan.md +0 -25
  144. package/skills/doc-files/js/docs/units-rs.md +0 -35
  145. /package/{skills → rules}/doc-files/js/docgen-crc.mjs +0 -0
  146. /package/{skills → rules}/doc-files/js/docgen-extract-anchors.mjs +0 -0
  147. /package/{skills → rules}/doc-files/js/docgen-files-batch.mjs +0 -0
  148. /package/{skills → rules}/doc-files/js/docgen-gen.mjs +0 -0
  149. /package/{skills → rules}/doc-files/js/docgen-prompts.mjs +0 -0
  150. /package/{skills → rules}/doc-files/js/units-js.mjs +0 -0
  151. /package/{skills → rules}/doc-files/js/units.mjs +0 -0
@@ -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
+ - Не звертається до мережі.
@@ -1,32 +0,0 @@
1
- ---
2
- docgen:
3
- source: npm/skills/doc-files/js/docgen-prompts.mjs
4
- crc: c454d2a6
5
- ---
6
-
7
- # docgen-prompts
8
-
9
- ## Огляд
10
-
11
- Промптовий шар local-only конвеєра файлових док: будує messages-набори для секційної генерації, критики й переписування, а секцію «Гарантії поведінки» формує детерміновано без LLM. Весь стиль документа (українська, поведінковість, заборона сигнатур) зашитий у спільний system-блок.
12
-
13
- ## Поведінка
14
-
15
- 1. Для кожної секції збирається мінімальний контекст: «Огляд» — лише людиночитний витяг фактів (без коду), «Поведінка» — єдина секція з повним кодом файлу у вікні, «Публічний API» — лише список експортів з їхніми описами. Анкори (URL, константи, маркери, приклади) додаються окремим блоком, коли вони є.
16
- 2. Факт-лист перекладається в негативні й позитивні твердження для моделі: свідомі пропуски шляхів, read-only, перехоплення помилок, явне «Кешування: НЕМАЄ — не згадуй кеш» — щоб відсікти типові галюцинації ще в промпті.
17
- 3. Критик отримує чорнетку секції і закритий список критеріїв дефектів (generic-фрази, пропущені анкори, граматика, підзаголовки, скопійовані сигнатури, вигадані факти); відповідь — список проблем або `NONE`. Переписувач отримує чорнетку разом зі списком проблем і повертає лише оновлений текст.
18
- 4. «Гарантії поведінки» складаються шаблоном з маркерів факт-листа (read-only, fail-safe, кешування, пропуски шляхів, відсутність мережі) — нуль запитів і нуль generic-фраз; за відсутності маркерів — твердження про детермінованість.
19
-
20
- ## Публічний API
21
-
22
- - `sectionMessages` — секційні набори messages з мінімальним контекстом під кожну секцію.
23
- - `criticMessages` / `refineMessages` — пара критика й переписувача для одного циклу уточнення секції.
24
- - `guaranteesFromMarkers` — детермінований текст секції гарантій з маркерів.
25
- - `oneShotMessages` — один запит на весь документ для нестандартних структур файлів.
26
- - `STYLE` — спільний system-блок стилю.
27
-
28
- ## Гарантії поведінки
29
-
30
- - Код файлу потрапляє лише у промпт секції «Поведінка» й у one-shot — решта секцій працюють на факт-листі.
31
- - Формування промптів детерміноване: однакові факти й код → однакові messages.
32
- - Не звертається до мережі й не виконує LLM-викликів — лише будує тексти.
@@ -1,25 +0,0 @@
1
- ---
2
- docgen:
3
- source: npm/skills/doc-files/js/docgen-scan.mjs
4
- crc: b517ab25
5
- ---
6
-
7
- # docgen-scan
8
-
9
- ## Огляд
10
-
11
- Сканер кодових файлів і детектор стану файлових док: які джерела підлягають документуванню, де лежить їхня дока, що застаріло, що degraded. Працює і як бібліотека для batch-генерації, і як CLI (`doc-files scan` / `doc-files check`) для хуків.
12
-
13
- ## Поведінка
14
-
15
- 1. Рекурсивний обхід від кореня збирає кодові файли (`js`/`mjs`/`ts`/`vue`/`py`), пропускаючи тести, оголошення типів, ignore-дерева і теки `docs/`; для кореня з system-wide docs-layout файлові доки на верхньому рівні не плануються.
16
- 2. Для кожного джерела обчислюється шлях доки (`<dir>/docs/<stem>.md`) і стан застарілості за контрольною сумою.
17
- 3. `check` працює в режимах: `--hook` — один файл зі stdin-payload редакторського хука; `--git` — змінені відносно HEAD джерела як Stop-гейт із порогом великого прогону (`--max`, дефолт `50` або `N_CURSOR_DOC_FILES_GATE_MAX`: більше застарілих — попередження без блоку); явні шляхи — точкова перевірка.
18
- 4. Застарілі доки → exit-код `2` зі списком і підказкою перегенерації; усе свіже або великий прогін — `0`.
19
- 5. `check --degraded` — інформаційний звіт (exit `0`): свіжі за сумою доки з оцінкою нижче порогу, з кодами проблем і підказкою про `gen --retry-degraded`. Degraded — видимий борг, не гейт.
20
-
21
- ## Гарантії поведінки
22
-
23
- - Сканер read-only: жодних записів у дерево.
24
- - Рішення «застаріла/свіжа» детерміноване і залежить лише від вмісту джерела й frontmatter доки.
25
- - Stop-гейт ніколи не блокує масовий перший прогін понад поріг — захист від нескінченного блокування задач.
@@ -1,35 +0,0 @@
1
- ---
2
- docgen:
3
- source: npm/skills/doc-files/js/units-rs.mjs
4
- crc: 11099381
5
- score: 100
6
- ---
7
-
8
- # units-rs.mjs
9
-
10
- ## Огляд
11
-
12
- Файл аналізує рядки для визначення структури та елементів модуля. Він ітерує по рядках для визначення глибини, обробляє рядкові літерали для визначення зміщення, змінює глибину при зустрічі відкриваючої чи закриваючої фігу, видаляє відкриті блоки зі стека, перевіряє наявність атрибутів експонування, визначає декларації на верхньому рівні чи в модулях, а також витягує тіло функції та збирає виклики інших юнітів у тілі функції.
13
-
14
- ## Поведінка
15
-
16
- 1. Скан файлу по рядках.
17
- 2. Ітерація по рядках для визначення глибини.
18
- 3. Обробка рядкових літералів для визначення зміщення.
19
- 4. Зміна глибини при зустрічі відкриваючої фігу.
20
- 5. Зміна глибини при зустрічі закриваючої фігу.
21
- 6. Видалення відкритих блоків з стека.
22
- 7. Перевірка наявності атрибутів експонування.
23
- 8. Визначення декларацій на верхньому рівні або в модулях.
24
- 9. Визначення публічних функцій, структур, перерахувань, трейтів, типів.
25
- 10. Витягування тіла функції через пошук закриваючої фігу.
26
- 11. Збір викликів інших юнітів у тілі функції.
27
-
28
- ## Публічний API
29
-
30
- extractUnitsRs — Визначає top-level і impl-методи через підрахунок дужок по рядках. Обмеження: рядкові літерали з `{`/`}` всередині `{}` можуть дати хибну глибину.
31
-
32
- ## Гарантії поведінки
33
-
34
- - Read-only: файл не виконує операцій запису у файлову систему.
35
- - Не звертається до мережі.
File without changes
File without changes
File without changes
File without changes