@nitra/cursor 5.3.3 → 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.
- package/.claude-template/settings.template.json +2 -2
- package/.pi-template/extensions/n-cursor-adr/docs/index.md +13 -24
- package/CHANGELOG.md +17 -0
- package/bin/n-cursor.js +43 -22
- package/lib/docs/llm.md +23 -12
- package/lib/docs/models.md +29 -18
- package/lib/docs/omlx-trace.md +51 -0
- package/lib/docs/omlx.md +31 -15
- package/lib/omlx.mjs +2 -5
- package/package.json +1 -1
- package/rules/abie/docs/fix.md +17 -11
- package/rules/adr/docs/fix.md +25 -140
- package/rules/bun/docs/fix.md +18 -151
- package/rules/capacitor/docs/fix.md +16 -13
- package/rules/capacitor/js/docs/platforms.md +31 -43
- package/rules/changelog/docs/fix.md +25 -169
- package/rules/ci4/docs/fix.md +11 -14
- package/rules/doc-files/doc-files.mdc +60 -0
- package/rules/doc-files/docs/fix.md +31 -0
- package/rules/doc-files/fix.mjs +19 -0
- package/{skills → rules}/doc-files/js/docgen-extract.mjs +42 -19
- package/{skills → rules}/doc-files/js/docgen-ignore.mjs +2 -1
- package/{skills → rules}/doc-files/js/docgen-scan.mjs +9 -1
- package/{skills → rules}/doc-files/js/docs/docgen-crc.md +1 -1
- package/rules/doc-files/js/docs/docgen-extract-anchors.md +45 -0
- package/rules/doc-files/js/docs/docgen-extract.md +39 -0
- package/rules/doc-files/js/docs/docgen-files-batch.md +35 -0
- package/rules/doc-files/js/docs/docgen-gen.md +46 -0
- package/rules/doc-files/js/docs/docgen-ignore.md +37 -0
- package/rules/doc-files/js/docs/docgen-prompts.md +39 -0
- package/rules/doc-files/js/docs/docgen-scan.md +54 -0
- package/rules/doc-files/js/docs/lint.md +36 -0
- package/rules/doc-files/js/docs/units-js.md +31 -0
- package/rules/doc-files/js/docs/units-rs.md +35 -0
- package/rules/doc-files/js/docs/units.md +30 -0
- package/rules/doc-files/js/lint.mjs +96 -0
- package/{skills → rules}/doc-files/js/units-rs.mjs +37 -17
- package/rules/doc-files/lint/docs/lint.md +37 -0
- package/rules/doc-files/lint/lint.mjs +105 -0
- package/rules/doc-files/meta.json +1 -0
- package/rules/docker/docs/fix.md +21 -161
- package/rules/efes/docs/fix.md +23 -194
- package/rules/feedback/docs/fix.md +10 -8
- package/rules/ga/docs/fix.md +10 -5
- package/rules/graphql/docs/fix.md +23 -119
- package/rules/hasura/docs/fix.md +19 -5
- package/rules/hasura/js/docs/internal_urls.md +34 -307
- package/rules/image-avif/docs/fix.md +16 -127
- package/rules/image-compress/docs/fix.md +20 -141
- package/rules/image-compress/js/docs/package_setup.md +22 -182
- package/rules/js-bun-db/docs/fix.md +23 -139
- package/rules/js-bun-db/js/docs/safety.md +33 -221
- package/rules/js-bun-redis/docs/fix.md +25 -114
- package/rules/js-bun-redis/js/docs/imports.md +18 -166
- package/rules/js-lint/docs/fix.md +30 -108
- package/rules/js-lint/js/docs/lint-findings.md +37 -17
- package/rules/js-lint/js/docs/lint.md +22 -238
- package/rules/js-lint/js/docs/tooling.md +34 -331
- package/rules/js-lint-ci/docs/fix.md +16 -149
- package/rules/js-lint-ci/js/docs/lint.md +16 -136
- package/rules/js-mssql/docs/fix.md +18 -123
- package/rules/js-mssql/js/docs/deps.md +28 -251
- package/rules/js-run/docs/fix.md +23 -138
- package/rules/js-run/js/docs/runtime.md +24 -378
- package/rules/k8s/docs/fix.md +18 -123
- package/rules/nginx-default-tpl/docs/fix.md +22 -118
- package/rules/nginx-default-tpl/js/docs/template.md +38 -360
- package/rules/npm-module/docs/fix.md +27 -89
- package/rules/npm-module/js/docs/header_doc_pointer.md +15 -15
- package/rules/npm-module/js/docs/package_structure.md +36 -258
- package/rules/npm-module/js/docs/rule_meta.md +25 -127
- package/rules/npm-module/js/docs/skill_meta.md +18 -180
- package/rules/php/docs/fix.md +21 -98
- package/rules/php/js/docs/tooling.md +20 -143
- package/rules/python/docs/fix.md +25 -157
- package/rules/python/js/docs/applies.md +20 -98
- package/rules/python/js/docs/tooling.md +27 -144
- package/rules/rego/docs/fix.md +24 -112
- package/rules/rego/js/docs/applies.md +20 -164
- package/rules/rego/js/docs/lint.md +15 -110
- package/rules/release/docs/fix.md +16 -114
- package/rules/rust/docs/fix.md +24 -119
- package/rules/rust/js/docs/applies.md +20 -129
- package/rules/security/docs/fix.md +21 -78
- package/rules/security/js/docs/sample_secret.md +23 -182
- package/rules/security/js/docs/trufflehog.md +19 -128
- package/rules/style-lint/docs/fix.md +16 -150
- package/rules/style-lint/js/docs/lint.md +21 -172
- package/rules/style-lint/js/docs/tooling.md +19 -184
- package/rules/tauri/docs/fix.md +26 -152
- package/rules/tauri/js/docs/cargo_mutants_config.md +21 -159
- package/rules/tauri/js/docs/tooling.md +20 -217
- package/rules/test/docs/fix.md +19 -127
- package/rules/test/js/data/stryker_config/docs/stryker.config.baseline.md +15 -127
- package/rules/test/js/data/stryker_config/docs/stryker.config.vue.baseline.md +17 -153
- package/rules/test/js/docs/cargo_mutants_config.md +24 -164
- package/rules/test/js/docs/location.md +24 -126
- package/rules/test/js/docs/no-process-chdir.md +20 -151
- package/rules/test/js/docs/no-relative-fs-path.md +24 -261
- package/rules/test/js/docs/stryker_config.md +48 -148
- package/rules/test/js/docs/vitest-config-pool-forks.md +21 -164
- package/rules/text/docs/fix.md +25 -113
- package/rules/text/js/docs/forbidden-prettier.md +21 -132
- package/rules/text/js/docs/formatting.md +60 -251
- package/rules/text/js/docs/lint.md +17 -114
- package/rules/vue/docs/fix.md +25 -118
- package/rules/vue/js/docs/packages.md +25 -323
- package/rules/worktree/docs/fix.md +31 -150
- package/scripts/coverage-classify/docs/index.md +23 -209
- package/scripts/coverage-classify/docs/verdict-schema.md +14 -159
- package/scripts/dispatcher/docs/trace.md +35 -0
- package/scripts/docs/auto-rules.md +37 -361
- package/scripts/docs/lint-cli.md +12 -13
- package/scripts/docs/post-tool-use-fix.md +16 -15
- package/scripts/docs/skills-cli.md +26 -23
- package/scripts/docs/sync-claude-config.md +94 -34
- package/scripts/docs/worktree-cli.md +11 -34
- package/scripts/lib/docs/assert-project-root.md +14 -16
- package/scripts/lib/docs/changed-files.md +24 -139
- package/scripts/lib/docs/discover-check-rules-from-cursor.md +14 -146
- package/scripts/lib/docs/rule-predicates.md +20 -17
- package/scripts/lib/docs/run-rule-cli.md +14 -18
- package/scripts/lib/docs/run-rule.md +13 -20
- package/scripts/lib/docs/run-standard-rule.md +12 -15
- package/scripts/lib/docs/sync-gitignore-worktree.md +15 -18
- package/scripts/lib/rule-predicates.mjs +1 -1
- package/scripts/sync-claude-config.mjs +4 -1
- package/scripts/utils/docs/with-lock.md +19 -12
- package/scripts/utils/with-lock.mjs +4 -2
- package/skills/doc-aggregate/SKILL.md +2 -2
- package/skills/doc-aggregate/js/docgen-ignore.mjs +6 -6
- package/skills/doc-aggregate/js/docs/docgen-ignore.md +1 -1
- package/skills/doc-aggregate/js/docs/docgen-scan.md +78 -0
- package/skills/doc-files/.changes/260612-0012.md +5 -0
- package/skills/doc-files/.changes/260612-0031.md +5 -0
- package/skills/doc-files/.changes/260612-0036.md +5 -0
- package/skills/doc-files/.changes/260612-0114.md +5 -0
- package/skills/doc-files/SKILL.md +6 -6
- package/skills/fix/js/docs/llm-worker.md +17 -15
- package/skills/fix/js/docs/orchestrator.md +30 -23
- package/skills/fix/js/docs/t0.md +26 -16
- package/skills/start-check/js/docs/check.md +26 -22
- package/skills/taze/js/docs/diff.md +44 -20
- package/skills/doc-files/js/docs/docgen-extract-anchors.md +0 -27
- package/skills/doc-files/js/docs/docgen-extract.md +0 -29
- package/skills/doc-files/js/docs/docgen-files-batch.md +0 -25
- package/skills/doc-files/js/docs/docgen-gen.md +0 -30
- package/skills/doc-files/js/docs/docgen-prompts.md +0 -32
- package/skills/doc-files/js/docs/docgen-scan.md +0 -25
- package/skills/doc-files/js/docs/units-rs.md +0 -35
- /package/{skills → rules}/doc-files/js/docgen-crc.mjs +0 -0
- /package/{skills → rules}/doc-files/js/docgen-extract-anchors.mjs +0 -0
- /package/{skills → rules}/doc-files/js/docgen-files-batch.mjs +0 -0
- /package/{skills → rules}/doc-files/js/docgen-gen.mjs +0 -0
- /package/{skills → rules}/doc-files/js/docgen-prompts.mjs +0 -0
- /package/{skills → rules}/doc-files/js/units-js.mjs +0 -0
- /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
|
+
- Не звертається до мережі.
|
|
@@ -31,7 +31,7 @@ docgen:
|
|
|
31
31
|
## Оркестрацію веде JS, не модель; конвеєр — local-only
|
|
32
32
|
|
|
33
33
|
Уся важка робота — черга, батчинг, виклики LLM і штамп CRC — живе в JS-команді
|
|
34
|
-
`doc-files
|
|
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
|
|
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 — не помилка: дока існує, борг видно у `
|
|
69
|
+
preflight). Degraded — не помилка: дока існує, борг видно у `lint-doc-files --degraded`.
|
|
70
70
|
|
|
71
71
|
### Крок 3 (за потреби): перевірка перед завершенням
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
npx @nitra/cursor doc-files
|
|
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
|
|
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:
|
|
4
|
+
crc: 6507b5b7
|
|
5
|
+
score: 100
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# llm-worker.mjs
|
|
8
9
|
|
|
9
10
|
## Огляд
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
MODEL визначає основну модель для виконання операцій. MODEL_HEAVY визначає модель для посиленої обробки. runLlmWorker корегує одне визначене правило порушення через LLM.
|
|
12
13
|
|
|
13
14
|
## Поведінка
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
MODEL
|
|
17
|
+
Визначає модель за замовчуванням для роботи.
|
|
18
|
+
|
|
19
|
+
MODEL_HEAVY
|
|
20
|
+
Визначає модель для важкої ескалації.
|
|
21
|
+
|
|
22
|
+
runLlmWorker
|
|
23
|
+
Виправляє одне правило порушення через LLM.
|
|
16
24
|
|
|
17
25
|
## Публічний API
|
|
18
26
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
runLlmWorker — Виправляє порушення
|
|
27
|
+
MODEL — Створює модель.
|
|
28
|
+
MODEL_HEAVY — Створює важку модель.
|
|
29
|
+
runLlmWorker — Виправляє одне порушення правила через pi (C1 pattern).
|
|
22
30
|
|
|
23
31
|
## Гарантії поведінки
|
|
24
32
|
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
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:
|
|
4
|
+
crc: e77aaf7b
|
|
5
|
+
score: 100
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# orchestrator.mjs
|
|
8
9
|
|
|
9
10
|
## Огляд
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
runOrchestratorCli
|
|
13
|
+
Запускає ітеративний цикл для перевірки набору правил. Проходить через кроки T0-auto та T1, взаємодіючи з LLM-воркерами. Завершує роботу, перевіряючи, чи всі правила виконані, повертаючи нуль або одиницю залежно від кінцевого стану.
|
|
12
14
|
|
|
13
15
|
## Поведінка
|
|
14
16
|
|
|
15
|
-
1.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
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
|
+
- Не звертається до мережі.
|
package/skills/fix/js/docs/t0.md
CHANGED
|
@@ -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
|
-
|
|
12
|
+
applyT0Auto застосовує паттерни T0-auto до вихідного результату.
|
|
13
|
+
|
|
14
|
+
filterT0AutoRules фільтрує список правил, для яких присутній хоча б один T0-auto паттерн.
|
|
15
|
+
|
|
16
|
+
runT0AutoCli запускає перевірку, застосовує T0-auto до провальних правил, виводить результат та перевіряє стан через check-gate.
|
|
6
17
|
|
|
7
18
|
## Поведінка
|
|
8
19
|
|
|
9
|
-
applyT0Auto
|
|
10
|
-
|
|
11
|
-
|
|
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 —
|
|
17
|
-
- runT0AutoCli —
|
|
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
|
-
-
|
|
22
|
-
-
|
|
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:
|
|
4
|
+
crc: 1f8fb2f0
|
|
5
|
+
score: 95
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# check.mjs
|
|
8
9
|
|
|
9
10
|
## Огляд
|
|
10
11
|
|
|
11
|
-
Файл
|
|
12
|
+
Файл надає інструменти для класифікації типів процесу, сканування конфігурації воркспейсів, парсингу логів та запуску скриптів.
|
|
12
13
|
|
|
13
14
|
## Поведінка
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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 —
|
|
24
|
-
- scanStartWorkspaces —
|
|
25
|
-
- parseStartLog —
|
|
26
|
-
- runWorkspaceStart —
|
|
27
|
-
- runStartCheckCli —
|
|
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
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- Minor та patch оновлення не включаються в результат.
|
|
30
|
-
- Результат завжди детермінований, тобто при однаковому вході скрипт завжди повертає однаковий результат.
|
|
31
|
-
- Скрипт не використовує кешування.
|
|
32
|
-
- Скрипт не кидає винятків.
|
|
33
|
-
- Скрипт перехоплює помилки та повертає `false` та `null`.
|
|
54
|
+
- Read-only: файл не виконує операцій запису у файлову систему.
|
|
55
|
+
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
56
|
+
- За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
|
|
57
|
+
- Не звертається до мережі.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
docgen:
|
|
3
|
-
source: npm/skills/doc-files/js/docgen-extract-anchors.mjs
|
|
4
|
-
crc: e80e0827
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# docgen-extract-anchors
|
|
8
|
-
|
|
9
|
-
## Огляд
|
|
10
|
-
|
|
11
|
-
Детермінований витяг «анкорів» — конкретних фрагментів коду, які модель зобов'язана згадати в документації, щоб не зісковзнути на generic-фрази. Анкори підставляються у промпти окремим блоком обов'язкового включення, а їх покриття перевіряється скорером.
|
|
12
|
-
|
|
13
|
-
## Поведінка
|
|
14
|
-
|
|
15
|
-
1. З тексту джерела збираються п'ять категорій анкорів: усі URL; експортовані константи-рядки з непорожнім значенням; маркери повідомлень про помилки виду `(rule.mdc)`; посилання на json-конфіги проєкту; code-block-приклади з провідного коментаря файлу (де автор зазвичай показує контракт).
|
|
16
|
-
2. Кожна категорія дедуплікується зі збереженням порядку появи.
|
|
17
|
-
3. Для промпта анкори форматуються в компактний текстовий блок з інструкціями, де саме їх згадати; якщо анкорів немає взагалі — блок не додається, щоб не вводити модель в оману «обов'язковими» полями.
|
|
18
|
-
|
|
19
|
-
## Публічний API
|
|
20
|
-
|
|
21
|
-
- `extractAnchors` — текст джерела → категоризовані анкори.
|
|
22
|
-
- `anchorsToPrompt` — анкори → текстовий блок для system-промпта або порожній рядок.
|
|
23
|
-
|
|
24
|
-
## Гарантії поведінки
|
|
25
|
-
|
|
26
|
-
- Повністю детермінований і read-only; жодних LLM-викликів і мережі.
|
|
27
|
-
- Працює по сирому тексту без AST: дешево і свідомо толерує надлишок (зайвий анкор — менша проблема, ніж пропущений).
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
docgen:
|
|
3
|
-
source: npm/skills/doc-files/js/docgen-extract.mjs
|
|
4
|
-
crc: 26bb2901
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# docgen-extract
|
|
8
|
-
|
|
9
|
-
## Огляд
|
|
10
|
-
|
|
11
|
-
Детермінований екстрактор фактів про кодовий файл (нуль токенів): з тексту джерела збирається факт-лист, на якому конвеєр будує промпти, маркери поведінки й список заборонених до згадки внутрішніх імен.
|
|
12
|
-
|
|
13
|
-
## Поведінка
|
|
14
|
-
|
|
15
|
-
1. Провідний блок-коментар файлу (до першого коду) стає «наміром файлу»; з документувальних коментарів перед кожним експортом витягуються опис, параметри та опис повернення, відкидаючи беззмістовні заглушки.
|
|
16
|
-
2. Збираються всі експортовані оголошення з безпосередньо передуючими їм коментарями.
|
|
17
|
-
3. Імпорти класифікуються на stdlib / npm / внутрішні; імена символів, імпортованих із внутрішніх модулів, складають список internalSymbols — модель не має згадувати їх у доці, а скорер штрафує за витік.
|
|
18
|
-
4. Маркери поведінки визначаються евристиками по тексту: read-only (немає запису у файлову систему), перехоплення помилок, повернення false/null при невдачі, звертання до мережі, кешування, свідомі пропуски шляхів.
|
|
19
|
-
5. Для розширень поза js/mjs/ts повертається позначка unsupported — конвеєр переходить на one-shot-шлях.
|
|
20
|
-
|
|
21
|
-
## Публічний API
|
|
22
|
-
|
|
23
|
-
- `extractFacts` — головна точка: текст джерела + шлях → факт-лист `{header, exports, imports, internalSymbols, markers}` або `{unsupported: true}`.
|
|
24
|
-
|
|
25
|
-
## Гарантії поведінки
|
|
26
|
-
|
|
27
|
-
- Повністю детермінований: однаковий вхід → однаковий факт-лист; жодних LLM-викликів і мережі.
|
|
28
|
-
- Read-only: файл не виконує операцій запису у файлову систему.
|
|
29
|
-
- Евристики свідомо толерують надлишок (зайвий маркер — менша проблема, ніж пропущений).
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
docgen:
|
|
3
|
-
source: npm/skills/doc-files/js/docgen-files-batch.mjs
|
|
4
|
-
crc: 20a14675
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# docgen-files-batch
|
|
8
|
-
|
|
9
|
-
## Огляд
|
|
10
|
-
|
|
11
|
-
CLI-оркестратор масової генерації файлових док (`doc-files gen` / `doc-files stamp`): черга, вибір цілей, preflight локального сервера, запис док зі свіжою контрольною сумою і degraded-маркером. Уся важка робота живе тут, а не в контексті агента.
|
|
12
|
-
|
|
13
|
-
## Поведінка
|
|
14
|
-
|
|
15
|
-
1. Дерево проєкту сканується, цілі обираються за режимом: за замовчуванням — застарілі доки; `--overwrite` — усі; `--retry-degraded` — свіжі за сумою, але з оцінкою нижче порогу. Зріз великого прогону — `--from N --limit M`.
|
|
16
|
-
2. Перед генерацією — preflight локального сервера: «сервер лежить», «модель не влазить у пам'ять зайнятої машини» чи «потрібен API-ключ» зупиняють прогін одним зрозумілим повідомленням замість лавини помилок по файлах.
|
|
17
|
-
3. Кожна ціль генерується локальним конвеєром; дока пишеться поряд із джерелом у `docs/` зі свіжою сумою. Якщо оцінка нижча за поріг — у frontmatter додаються оцінка й коди проблем, файл рахується як degraded.
|
|
18
|
-
4. Підсумок: кількість успішних, degraded і помилкових файлів; за наявності degraded — підказка про `--retry-degraded`. Помилка хоча б одного файлу → exit-код `1`.
|
|
19
|
-
5. `stamp` детерміновано перештамповує frontmatter у наявних доках без LLM (міграція док без суми), зберігаючи наявні поля якості.
|
|
20
|
-
|
|
21
|
-
## Гарантії поведінки
|
|
22
|
-
|
|
23
|
-
- Жодних хмарних викликів: збій локальної генерації стає помилкою чи degraded-маркером, а не ескалацією.
|
|
24
|
-
- Доки пишуться атомарно по файлу: успішні цілі не відкочуються через подальші збої.
|
|
25
|
-
- Прогін ніколи не комітить — рішення про фіксацію приймає користувач.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
docgen:
|
|
3
|
-
source: npm/skills/doc-files/js/docgen-gen.mjs
|
|
4
|
-
crc: 2d6e5f79
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# docgen-gen
|
|
8
|
-
|
|
9
|
-
## Огляд
|
|
10
|
-
|
|
11
|
-
Генератор однієї файлової доки local-only конвеєра: файл → українська поведінкова md-документація локальною моделлю, з детермінованим скорингом і позначкою degraded замість будь-яких хмарних ескалацій.
|
|
12
|
-
|
|
13
|
-
## Поведінка
|
|
14
|
-
|
|
15
|
-
1. З джерела детерміновано витягуються факти (намір файлу, експорти, маркери поведінки) та анкори (URL, константи, маркери помилок, конфіги, приклади з header-коментаря) — без жодного токена.
|
|
16
|
-
2. Для підтримуваних структур документ збирається посекційно окремими викликами моделі: «Огляд» — лише з фактів, «Поведінка» — єдина секція з кодом у вікні, «Публічний API» — зі списку експортів; «Гарантії поведінки» — детермінований шаблон із маркерів без LLM. Для непідтримуваних структур (`vue`/`py` до появи юніт-шару) — один виклик на весь документ без скорингу.
|
|
17
|
-
3. Чорнетки секцій проходять детермінований пост-лінт (зрізання сигнатур, обгорток, випадкових заголовків); найвразливіші секції — один цикл критика-редактора.
|
|
18
|
-
4. Зібраний документ оцінюється детермінованим скорером (наявність огляду, змістовність поведінки, галюцинація кешу, витік внутрішніх імен). Якщо оцінка нижча за поріг — один повторний прогін з вищою температурою, перемагає кращий за оцінкою (вимикається `N_CURSOR_DOCGEN_BEST_OF=0`).
|
|
19
|
-
5. Результат повертається з оцінкою, списком проблем і прапором degraded; рішення про повторну генерацію приймає batch-обгортка або користувач — конвеєр ніколи не звертається до хмари.
|
|
20
|
-
|
|
21
|
-
## Публічний API
|
|
22
|
-
|
|
23
|
-
- `generateDoc` — головна точка: шлях файлу → `{ md, ms, score, issues, degraded, model }`.
|
|
24
|
-
- `DEFAULT_LOCAL_MODEL` — модель конвеєра: `N_CURSOR_DOCGEN_MODEL` → каскад локальних тирів → локальний omlx-дефолт напряму.
|
|
25
|
-
|
|
26
|
-
## Гарантії поведінки
|
|
27
|
-
|
|
28
|
-
- Local-only: жодних хмарних викликів і pre-route за складністю — будь-який файл генерується локальною моделлю.
|
|
29
|
-
- Скоринг і пост-лінт детерміновані: однаковий вхід → однакова оцінка.
|
|
30
|
-
- Помилка транспорту прокидається назовні — не маскується під degraded.
|