@nitra/cursor 1.11.12 → 1.11.14

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 CHANGED
@@ -4,6 +4,20 @@
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.14] - 2026-05-16
8
+
9
+ ### Removed
10
+
11
+ - **`npm/package.json#devDependencies`** — повністю видалено блок (містив лише self-reference `@nitra/cursor: ^1.11.9`). `npx @nitra/cursor check npm-module` зафіксував порушення: `devDependencies` не публікуються користувачам пакета, але інструменти, що **потрібні** для розробки пакета, мають жити в кореневому `package.json` (у workspace-root) як `@nitra/cursor: workspace:*` (там уже є). Self-reference у `npm/package.json` лишався з попередньої практики, але **публікувався** у npm-tarball (хоч і ігнорувався установником, оскільки лізе у nested deps), забруднюючи метадані пакета.
12
+ - **`knip.json#workspaces.npm.ignoreDependencies: ["@nitra/cursor"]`** — workaround, доданий у 1.11.13 для приховання knip-violation на self-reference, тепер не потрібен (першопричина прибрана). Знято, щоб конфіг лишався чистим.
13
+
14
+ ## [1.11.13] - 2026-05-16
15
+
16
+ ### Fixed
17
+
18
+ - **`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 не зачіпало — там парсер не активний.
19
+ - **`npm/skills/fix/SKILL.md`** (+`.cursor/skills/n-fix/SKILL.md` синк) — заголовок секції перейменовано з **«Скоуп»** на **«Scope»**, бо cspell флагав «Скоуп» як unknown word. Англійський «Scope» зрозумілий і не вимагає розширення словника. Тіло секції без змін.
20
+
7
21
  ## [1.11.12] - 2026-05-15
8
22
 
9
23
  ### Removed
@@ -50,7 +64,7 @@
50
64
 
51
65
  ### Changed
52
66
 
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 додано секцію **«Скоуп»**, де явно зафіксовано: `/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`, виправляється там же, а не дублюється тут.
67
+ - **`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
68
 
55
69
  ### Fixed
56
70
 
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` або копія з `node_modules/@nitra/cursor/rules/k8s/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-канал) | `fix/<concern>/` |
138
- | JS-orchestrator лінту | `bun run lint-<id>` через `n-cursor lint-<id>` | `lint/` |
139
- | Rego-діагностика | `npx @nitra/cursor check` (fix-канал) | `policy/<concern>/` |
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.12",
3
+ "version": "1.11.14",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -52,8 +52,5 @@
52
52
  "engines": {
53
53
  "bun": ">=1.3",
54
54
  "node": ">=25"
55
- },
56
- "devDependencies": {
57
- "@nitra/cursor": "^1.11.9"
58
55
  }
59
56
  }
@@ -9,7 +9,7 @@
9
9
  * `package.json` має бути відповідний скрипт `lint-docker` / `lint-k8s`
10
10
  * (cross-file: два JSON-файли).
11
11
  *
12
- * **Що покрила Rego** (`npx @nitra/cursor check`):
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 @nitra/cursor check`,
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 @nitra/cursor check`. Тут лишився AST-скан коду через `oxc-parser`.
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 @nitra/cursor check` запускає її по всіх workspace `package.json`. Тут лишилася
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 @nitra/cursor check`
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 @nitra/cursor check`):
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 @nitra/cursor check`):
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 @nitra/cursor check`):
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-и;
@@ -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