@nitra/cursor 1.8.140 → 1.8.141
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/bin/n-cursor.js +16 -0
- package/package.json +1 -1
- package/skills/lint/SKILL.md +21 -0
package/bin/n-cursor.js
CHANGED
|
@@ -551,6 +551,20 @@ async function removeOrphanManagedSkillDirs(skillsRoot, configSkills) {
|
|
|
551
551
|
return removed.toSorted((a, b) => a.localeCompare(b))
|
|
552
552
|
}
|
|
553
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Рендерить коротку секцію для CLAUDE.md: не розпаралелювати лінт (ESLint) між shells/субагентами.
|
|
556
|
+
* @returns {string[]} рядки для вставки (з порожнім рядком на початку)
|
|
557
|
+
*/
|
|
558
|
+
function buildClaudeLintParallelismSectionLines() {
|
|
559
|
+
return [
|
|
560
|
+
'',
|
|
561
|
+
'## Лінт і ESLint (без паралельних запусків)',
|
|
562
|
+
'',
|
|
563
|
+
'Щоб не запускати **кілька** одночасних **`eslint`** (і не перевантажувати диск/CPU), **заборонено** стартувати `bun run lint` / `lint-js` / `eslint` **паралельно** в різних Bash-задачах, **фонових** shells чи **субагентах** (Task тощо). Має бути **один** послідовний прогон на сесію; команда **`/n-lint`** — **не** ділити на паралельні підзадачі. Деталі: `.cursor/skills/n-lint/SKILL.md`.',
|
|
564
|
+
'',
|
|
565
|
+
]
|
|
566
|
+
}
|
|
567
|
+
|
|
554
568
|
/**
|
|
555
569
|
* Рендерить секцію Skills для CLAUDE.md з урахуванням наявних slash-команд.
|
|
556
570
|
* @returns {Promise<string[]>} готові рядки секції (або порожній масив)
|
|
@@ -610,6 +624,8 @@ async function syncClaudeMd(ignore) {
|
|
|
610
624
|
lines.push(`@${RULES_DIR}/${mdcFile}`)
|
|
611
625
|
}
|
|
612
626
|
|
|
627
|
+
lines.push(...buildClaudeLintParallelismSectionLines())
|
|
628
|
+
|
|
613
629
|
const skillsSectionLines = await buildClaudeSkillsSectionLines()
|
|
614
630
|
lines.push(...skillsSectionLines, '')
|
|
615
631
|
const claudeMdPath = join(cwd(), 'CLAUDE.md')
|
package/package.json
CHANGED
package/skills/lint/SKILL.md
CHANGED
|
@@ -47,6 +47,27 @@ bun run lint
|
|
|
47
47
|
- Якщо тестів **немає** або вони **не покривають** блок, який змінюєш — **спочатку** додай/розшир тести, переконайся, що вони стабільно проходять, **потім** роби рефакторинг, **потім** знову прогони тести й **`bun run lint`**, щоб підтвердити, що функціональність коректна й лінт чистий.
|
|
48
48
|
- Якщо після рефакторингу тести або лінт падають — **не** залишай «половинчастий» рефакторинг: відкотись або доведи зміни до зеленого стану.
|
|
49
49
|
|
|
50
|
+
## Навантаження на macOS (багато процесів `eslint` / лаги)
|
|
51
|
+
|
|
52
|
+
Часто це **не** «один ESLint розпаралелив себе всередині», а **кілька паралельних запусків** одного й того ж ланцюжка (**`bun run lint`**, **`bun run lint-js`**) у різних Bash-задачах агента (кілька shells). Кожен запуск = окремий процес **`eslint`** плюс **`oxlint`**, **`jscpd`** тощо — диск і CPU перегружаються.
|
|
53
|
+
|
|
54
|
+
**Чому взагалі кілька `eslint`:** оркестратор (Claude Code, Cursor тощо) може **розпаралелити** роботу: кілька **субагентів** / **паралельних Bash-задач** / **фонових shell**, і кожен **сам** виконує **`/n-lint`** або запускає **`eslint`**. Тоді навантаження **множиться**: не один прогон лінту, а **N прогонів** одночасно.
|
|
55
|
+
|
|
56
|
+
**Що робити агенту під час виконання цього скілу (обов’язково)**
|
|
57
|
+
|
|
58
|
+
1. **Один** запуск **`bun run lint`** (або всі кроки **`lint`**, як у **`package.json`**) — у **одному** foreground shell, **без** `run_in_background` / фонових копій тієї ж команди.
|
|
59
|
+
2. **Не** викликати **паралельні субагенти** (subagent, Task, «розбий на N паралельних завдань») лише заради лінту в одному репозиторії. Лінт не потребує шардінгу: один процес, послідовно.
|
|
60
|
+
3. Якщо ти **батьок-сесія** й уже делегував дочірнім задачам **інші** кроки — **не** доручай дочірнім і **`bun run lint`**, залиш **лише** собі один **послідовний** прогон **після** змін у файлах, або **один** виклик цілого скілу на сесію.
|
|
61
|
+
4. Якщо сесія/користувач уже запускає лінт — **не** дублювати; зачекати завершення або **не** стартувати лінт повторно в іншому shell.
|
|
62
|
+
|
|
63
|
+
**Що можна змінити у проєкті (локально або в `package.json`)**
|
|
64
|
+
|
|
65
|
+
- **ESLint** (CLI): за потреби явно **`--concurrency off`** (див. **`eslint --help`**).
|
|
66
|
+
- **oxlint**: **`--threads=1`**, якщо потрібно зменшити навантаження на CPU.
|
|
67
|
+
- **ESLint cache**: **`--cache`** / **`--cache-location .eslintcache`** — менше повторного читання з диска.
|
|
68
|
+
|
|
69
|
+
Канонічний рядок **`lint-js`** у репозиторіях з **`check js-lint`** фіксований; додаткові прапорці — з узгодженням канону або в споживацькому проєкті окремо.
|
|
70
|
+
|
|
50
71
|
## Примітка
|
|
51
72
|
|
|
52
73
|
Цей скіл **не** замінює **`npx @nitra/cursor check`**: **`lint`** перевіряє лінтери/формат у **`package.json`**, а **`check`** — програмні правила пакета **`@nitra/cursor`**. За потреби запускай обидва.
|