Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .cursor/rules/n-js.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -210,14 +210,13 @@ Rego-пакет: `js_lint.jscpd`

## Rego-gate `package.json`

Rego-пакет: `js_lint.package_json`
Rego-пакет: `js.package_json`

Цільовий файл: `package.json` (корінь і workspace-пакети).

Що перевіряється:

- `"type"` — точна відповідність `"module"` (з канон-snippet)
- `scripts.lint-js` — нормалізована точна відповідність (collapse whitespace)
- `engines.node` — semver-парсинг: major >= 24 (inverse, без template)
- `engines.bun` — semver-парсинг: >= 1.4 (inverse, без template)
- `devDependencies["@nitra/eslint-config"]` — наявність ключа + semver >= порогу зі snippet (`^3.10.0`); `workspace:*` завжди проходить
Expand Down
2 changes: 1 addition & 1 deletion .cursor/rules/n-test.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ await withTmpDir(async dir => {
})
```

Приклад у репо: `npm/rules/text/markdownlint/tests/fix-markdownlint-native.test.mjs` — `initGitAndTrack` створює tmp-репо, бо фікс бере файли через `git ls-files`.
Приклад у репо: `npm/rules/text/run-shellcheck/tests/run-shellcheck-fixer-helpers.test.mjs` — тест `listShellScriptPaths всередині git-репо`.

**Виняток** — top-level smoke-аудит тести, що **за визначенням** перевіряють інваріанти **живого** репо (структура файлів, узгодженість CHANGELOG з `package.json`, кожне правило має fixture). Приклади: `tests/integration-repo-checks.test.mjs`, `tests/check-rule-fixtures.test.mjs`. Такі тести **не дають додаткового coverage у unit-сенсі** — концерни, які вони перевіряють, уже покриті per-rule unit-тестами (`rules/<rule>/js/tests/`). Захищаємо їх `test.skipIf(env.STRYKER_MUTATOR_WORKER)` від запуску всередині Stryker-sandbox:

Expand Down
4 changes: 4 additions & 0 deletions .cursor/rules/n-text.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,8 @@ Rego-пакет: `text.package_json`

У CI — `--no-fix` (нуль мутацій): авто-фікс пропускається, лише `check`.

**Відсутній інструмент під `--fix` — гучна помилка, не тихий no-op.** Раніше `--fix` без `dotenv-linter` у `PATH` звітував «нічого не змінено», і порушення лишалося червоним без пояснення. Тепер це помилка з install-підказкою. Так само гучним став ненульовий код виходу самого `dotenv-linter fix` (криві аргументи, немає прав на запис) — раніше він відкидався цілком.

## shellcheck: перевірка shell-скриптів

**shellcheck** — інструмент лише в **`PATH`**, **не** додавай до `dependencies` / `devDependencies`. VSCode-розширення — канон у `vscode_extensions` (`timonwong.shellcheck`).
Expand All @@ -332,6 +334,8 @@ ShellCheck не має прапорця `--fix`. Авто-виправлення

Delta-лінт (`npx @7n/rules lint`) перевіряє лише змінені `*.sh`-файли; повний прогін (`--full`) — усі tracked `*.sh` у репо.

**Збої авто-фіксу тепер гучні, не тихі.** Раніше `--fix` без `shellcheck` чи без `patch` у `PATH`, а також невдалий `patch -p1` (конфлікт, зіпсований hunk), рапортували «нічого не змінено» — порушення лишалося червоним без жодного пояснення. Тепер кожен із цих випадків — помилка з причиною та іменем файлу.

## v8r: валідація JSON/YAML/TOML за Schema Store

**`v8r`** — інструмент валідації файлів за схемами з [Schema Store](https://www.schemastore.org/). Використовуй лише через **`bunx v8r`**, не в `devDependencies`.
Expand Down
Loading