@nitra/cursor 1.11.12 → 1.11.13
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/CHANGELOG.md +8 -1
- package/README.md +6 -6
- package/package.json +4 -4
- package/rules/bun/fix/layout/check.mjs +1 -1
- package/rules/image-compress/fix/package_setup/check.mjs +1 -1
- package/rules/js-bun-redis/fix/imports/check.mjs +1 -1
- package/rules/js-run/fix/runtime/check.mjs +2 -2
- package/rules/php/fix/tooling/check.mjs +1 -1
- package/rules/style-lint/fix/tooling/check.mjs +1 -1
- package/rules/text/fix/formatting/check.mjs +1 -1
- package/skills/fix/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
Формат — [Keep a Changelog](https://keepachangelog.com/uk/1.1.0/), нумерація — [SemVer](https://semver.org/lang/uk/).
|
|
6
6
|
|
|
7
|
+
## [1.11.13] - 2026-05-16
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **`npm/rules/{bun,image-compress,js-bun-redis,js-run,php,style-lint,text}/fix/<concern>/check.mjs`** — escape `@nitra` як `\@nitra` у JSDoc-блоках (`/** … */`), де `npx @nitra/cursor check` стояв всередині backticks. ESLint-плагін `jsdoc/escape-inline-tags` парсив `@nitra` як інлайн-тег (false-positive у backticks) і видавав 8 warnings. Виправлення — escape-символ `\` перед `@`, як уже зроблено в інших місцях коду (CHANGELOG 1.11.5 для `js-run`). Pass-повідомлення та `//`-коментарі поза JSDoc не зачіпало — там парсер не активний.
|
|
12
|
+
- **`npm/skills/fix/SKILL.md`** (+`.cursor/skills/n-fix/SKILL.md` синк) — заголовок секції перейменовано з **«Скоуп»** на **«Scope»**, бо cspell флагав «Скоуп» як unknown word. Англійський «Scope» зрозумілий і не вимагає розширення словника. Тіло секції без змін.
|
|
13
|
+
|
|
7
14
|
## [1.11.12] - 2026-05-15
|
|
8
15
|
|
|
9
16
|
### Removed
|
|
@@ -50,7 +57,7 @@
|
|
|
50
57
|
|
|
51
58
|
### Changed
|
|
52
59
|
|
|
53
|
-
- **`npm/skills/fix/SKILL.md`** (+`.cursor/skills/n-fix/SKILL.md` синк) — `/n-fix` більше **не запускає** `bun run lint` і **не делегує** до `/n-lint`. Крок 6 (`bun run lint` з делегуванням, доданий у 1.11.6) повністю видалено; замість нього на початку SKILL.md додано секцію
|
|
60
|
+
- **`npm/skills/fix/SKILL.md`** (+`.cursor/skills/n-fix/SKILL.md` синк) — `/n-fix` більше **не запускає** `bun run lint` і **не делегує** до `/n-lint`. Крок 6 (`bun run lint` з делегуванням, доданий у 1.11.6) повністю видалено; замість нього на початку SKILL.md додано секцію **«Scope»**, де явно зафіксовано: `/n-fix` опікується лише структурою проєкту (правила `.cursor/rules/` + `npx @nitra/cursor check`), а лінт-порушення у самому коді (ESLint/oxlint/jscpd/cspell/knip/sonarjs/stylelint) — поза скоупом і виправляються винятково через `/n-lint`. Кроки 7→6 і 8→7 переномеровано; остаточний пункт 7 додатково нагадує, що лінт-помилки не входять у критерій успіху `/n-fix`. Мета — щоб агент, що виконує `/n-fix`, не плутав свою задачу з `/n-lint` і не запускав важкий `bun run lint` без потреби; те, що діагностує `/n-lint`, виправляється там же, а не дублюється тут.
|
|
54
61
|
|
|
55
62
|
### Fixed
|
|
56
63
|
|
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
### Правило `k8s` і Kustomize
|
|
48
48
|
|
|
49
|
-
У цільовому репозиторії з маніфестами під **`**/k8s`** дотримуйтесь **`rules/k8s/k8s.mdc`** з пакету (після синку — `.cursor/rules/n-k8s.mdc
|
|
49
|
+
У цільовому репозиторії з маніфестами під **`**/k8s`** дотримуйтесь **`rules/k8s/k8s.mdc`** з пакету (після синку — `.cursor/rules/n-k8s.mdc`або копія з`node_modules/@nitra/cursor/rules/k8s/k8s.mdc`).
|
|
50
50
|
|
|
51
51
|
Коротко:
|
|
52
52
|
|
|
@@ -132,11 +132,11 @@ npm/rules/<id>/
|
|
|
132
132
|
|
|
133
133
|
**Принцип:** технологія реалізації визначає директорію.
|
|
134
134
|
|
|
135
|
-
| Що реалізує
|
|
136
|
-
|
|
|
137
|
-
| JS-діагностика + автофікс | `npx @nitra/cursor check` (fix-канал)
|
|
138
|
-
| JS-orchestrator лінту
|
|
139
|
-
| Rego-діагностика
|
|
135
|
+
| Що реалізує | Канал виклику | Куди |
|
|
136
|
+
| ------------------------- | ---------------------------------------------- | ------------------- |
|
|
137
|
+
| JS-діагностика + автофікс | `npx @nitra/cursor check` (fix-канал) | `fix/<concern>/` |
|
|
138
|
+
| JS-orchestrator лінту | `bun run lint-<id>` через `n-cursor lint-<id>` | `lint/` |
|
|
139
|
+
| Rego-діагностика | `npx @nitra/cursor check` (fix-канал) | `policy/<concern>/` |
|
|
140
140
|
|
|
141
141
|
`fix/` і `policy/` обидва живлять fix-канал (`npx @nitra/cursor check` запускає і JS-checks, і rego-policies), але **розділені за технологією**: JS у `fix/`, rego у `policy/`. `lint/` тримає лише JS, що оркеструє `bun run lint-<id>`.
|
|
142
142
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitra/cursor",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.13",
|
|
4
4
|
"description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"picomatch": "^4.0.4",
|
|
50
50
|
"yaml": "^2.8.3"
|
|
51
51
|
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@nitra/cursor": "^1.11.9"
|
|
54
|
+
},
|
|
52
55
|
"engines": {
|
|
53
56
|
"bun": ">=1.3",
|
|
54
57
|
"node": ">=25"
|
|
55
|
-
},
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"@nitra/cursor": "^1.11.9"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* `package.json` має бути відповідний скрипт `lint-docker` / `lint-k8s`
|
|
10
10
|
* (cross-file: два JSON-файли).
|
|
11
11
|
*
|
|
12
|
-
* **Що покрила Rego** (`npx
|
|
12
|
+
* **Що покрила Rego** (`npx \@nitra/cursor check`):
|
|
13
13
|
* - `npm/policy/bun/bunfig/` — `[install].linker == "hoisted"` у `bunfig.toml`;
|
|
14
14
|
* - `npm/policy/bun/package_json/` — відсутність `packageManager` / `dependencies`
|
|
15
15
|
* у кореневому `package.json`, у `devDependencies` лише `@nitra/*`, агрегований
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - застарілий `.minify-image-cache.tsv` (з версій < 3.2) видалений з кореня та
|
|
10
10
|
* з `.gitignore`.
|
|
11
11
|
*
|
|
12
|
-
* **Що покрила Rego** (`npx
|
|
12
|
+
* **Що покрила Rego** (`npx \@nitra/cursor check`,
|
|
13
13
|
* `npm/policy/image_compress/package_json/`):
|
|
14
14
|
* - `scripts.lint-image` викликає `npx \@nitra/minify-image --src=. --write`
|
|
15
15
|
* без `--avif` (AVIF — окреме правило `image-avif`);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Перевірку `dependencies` (заборона `ioredis` / `node-redis` / `redis` / `@redis/*` у будь-якому
|
|
10
10
|
* `package.json`) винесено в Rego-полісі `npm/policy/js_bun_redis/package_json/`; її запускає
|
|
11
|
-
* `npx
|
|
11
|
+
* `npx \@nitra/cursor check`. Тут лишився AST-скан коду через `oxc-parser`.
|
|
12
12
|
*/
|
|
13
13
|
import { existsSync } from 'node:fs'
|
|
14
14
|
import { readFile } from 'node:fs/promises'
|
|
@@ -392,7 +392,7 @@ function packageJsonHasViteDevDependency(pkgJson) {
|
|
|
392
392
|
/**
|
|
393
393
|
* Завантажує `package.json` пакета (якщо є). Заборону `@nitra/bunyan` / `bunyan`
|
|
394
394
|
* у dependencies/devDependencies перенесено в Rego (`npm/policy/js_run/package_json/`);
|
|
395
|
-
* `npx
|
|
395
|
+
* `npx \@nitra/cursor check` запускає її по всіх workspace `package.json`. Тут лишилася
|
|
396
396
|
* лише AST-перевірка імпортів.
|
|
397
397
|
* @param {string} rootDir відносний шлях workspace
|
|
398
398
|
* @returns {Promise<unknown>} розпарсений package.json або null
|
|
@@ -406,7 +406,7 @@ async function loadPackageJson(rootDir) {
|
|
|
406
406
|
/**
|
|
407
407
|
* Перевіряє наявність `k8s/base/configmap.yaml` пакета. Структуру (наявність
|
|
408
408
|
* `OTEL_RESOURCE_ATTRIBUTES` з обов'язковими `service.name=` / `service.namespace=`)
|
|
409
|
-
* перенесено в Rego (`npm/policy/js_run/configmap/`); `npx
|
|
409
|
+
* перенесено в Rego (`npm/policy/js_run/configmap/`); `npx \@nitra/cursor check`
|
|
410
410
|
* запускає її на всіх `k8s/base/configmap.yaml`.
|
|
411
411
|
* @param {string} rootDir відносний шлях workspace
|
|
412
412
|
* @param {(msg: string) => void} passFn успішне повідомлення
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - наявність `composer.json` у корені;
|
|
6
6
|
* - наявність `.github/workflows/lint-php.yml`.
|
|
7
7
|
*
|
|
8
|
-
* **Що покрила Rego** (`npx
|
|
8
|
+
* **Що покрила Rego** (`npx \@nitra/cursor check`):
|
|
9
9
|
* - `npm/policy/php/package_json/` — наявність скрипта `lint-php` у `package.json`;
|
|
10
10
|
* - `npm/policy/php/lint_php_yml/` — крок `run: bun run lint-php` у workflow.
|
|
11
11
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* (cross-file: треба знати, чи є поле, чи немає);
|
|
8
8
|
* - `.stylelintignore` у корені.
|
|
9
9
|
*
|
|
10
|
-
* **Що покрила Rego** (`npx
|
|
10
|
+
* **Що покрила Rego** (`npx \@nitra/cursor check`):
|
|
11
11
|
* - `npm/policy/style_lint/package_json/` — скрипт `lint-style` через `npx stylelint`,
|
|
12
12
|
* `@nitra/stylelint-config` у `devDependencies`, поле `stylelint.extends`;
|
|
13
13
|
* - `npm/policy/style_lint/lint_style_yml/` — `npx stylelint` у `run` workflow;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* варіантах, run-shellcheck-text.mjs, обовʼязкові glob-и);
|
|
15
15
|
* - workflow `lint-text.yml` має крок `bun run lint-text`.
|
|
16
16
|
*
|
|
17
|
-
* **Що покрила Rego** (`npx
|
|
17
|
+
* **Що покрила Rego** (`npx \@nitra/cursor check`):
|
|
18
18
|
* - `npm/policy/text/oxfmtrc/` — обовʼязкові ключі `.oxfmtrc.json` і канонічні
|
|
19
19
|
* значення (semi/singleQuote/tabWidth/useTabs/printWidth) + `ignorePatterns`
|
|
20
20
|
* канонічні glob-и;
|
package/skills/fix/SKILL.md
CHANGED
|
@@ -6,7 +6,7 @@ description: >-
|
|
|
6
6
|
|
|
7
7
|
# n-fix — автоматичне виправлення проєкту
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Scope
|
|
10
10
|
|
|
11
11
|
Цей скіл відповідає **лише за структуру** проєкту: щоб `.cursor/rules/` + `npx @nitra/cursor check` були задоволені (наявність конфігів, залежностей, скриптів, GitHub workflows, відсутність заборонених файлів). **Лінт-порушення у самому коді** (ESLint, oxlint, jscpd, cspell, knip, sonarjs, stylelint тощо) — **поза скоупом**; їх діагностує й виправляє **`/n-lint`** (`bun run lint`). Не запускай `bun run lint` із цього скілу і не намагайся виправляти його порушення тут — це задача `/n-lint`. Якщо `npx @nitra/cursor check` чистий, а `bun run lint` лишився червоним — запусти `/n-lint` окремо.
|
|
12
12
|
|