@nitra/cursor 1.6.23 → 1.6.26

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/mdc/docker.mdc CHANGED
@@ -93,13 +93,13 @@ jobs:
93
93
  run: bun run lint-docker
94
94
  ```
95
95
 
96
- Версія бінарника **v2.12.0** узгоджуй з **`HADOLINT_IMAGE`** у **`npm/scripts/utils/docker-hadolint.mjs`**.
96
+ Узгоджуй версію hadolint **v2.12.0** з **`HADOLINT_IMAGE`** у **`npm/scripts/utils/docker-hadolint.mjs`**.
97
97
 
98
98
  Кореневий скрипт **`lint`** (див. **`n-bun.mdc`**) має викликати **`lint-docker`**, якщо він існує.
99
99
 
100
100
  ## Запуск
101
101
 
102
- 1. **`bun run lint-docker`** — **`run-docker.mjs`**: **`Dockerfile`** та **`*.Dockerfile`** (див. **`lint-docker`**); у CI встанови бінарник (приклад у workflow).
102
+ 1. **`bun run lint-docker`** — **`run-docker.mjs`**: **`Dockerfile`** та **`*.Dockerfile`** (див. **`lint-docker`**); у CI встанови hadolint (приклад у workflow).
103
103
  2. **`npx @nitra/cursor check docker`** — **`check-docker.mjs`**, виклик hadolint як у **`docker-hadolint.mjs`** (**`PATH`** або **`docker run`** з **`hadolint/hadolint:v2.12.0`**).
104
104
  3. Кореневий **`.hadolint.yaml`**: вимкнення правил, trusted registries — [документація](https://github.com/hadolint/hadolint#configure).
105
105
 
@@ -113,7 +113,7 @@ jobs:
113
113
 
114
114
  ## Редактор
115
115
 
116
- Розширення VS Code / Cursor: **`exiasr.hadolint`** (потрібен бінарник hadolint) — за потреби в **`.vscode/extensions.json`**.
116
+ Розширення VS Code / Cursor: **`exiasr.hadolint`** (потрібна утиліта hadolint) — за потреби в **`.vscode/extensions.json`**.
117
117
 
118
118
  ## Перевірка
119
119
 
package/mdc/k8s.mdc CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: K8s YAML — $schema (yaml-language-server); lint-k8s (kubeconform, kubescape); check-k8s
3
- version: '1.5'
3
+ version: '1.7'
4
4
  globs: "**/k8s/**/*.{yaml,yml}"
5
5
  alwaysApply: false
6
6
  ---
@@ -28,9 +28,9 @@ alwaysApply: false
28
28
 
29
29
  **Залежності:** виконувані файли kubeconform і kubescape у **PATH**; не додавай їх у **devDependencies** npm (аналогія до `v8r` у `n-text.mdc`). Локально: наприклад `brew install kubeconform kubescape` або релізи з GitHub.
30
30
 
31
- **Версія Kubernetes для kubeconform** має відповідати PIN yannh у цьому правилі та в **`check-k8s.mjs`** (зараз **`-kubernetes-version 1.29.1`** для набору **`v1.29.1-standalone-strict`**). Для CRD додатково підключай реєстр [datreeio/CRDs-catalog](https://github.com/datreeio/CRDs-catalog) другим **`-schema-location`**, як у [прикладах kubeconform](https://github.com/yannh/kubeconform#readme). За потреби **`-ignore-missing-schemas`**, якщо частина CRD ще без публічної схеми.
31
+ **Версія Kubernetes для kubeconform** має відповідати PIN yannh у цьому правилі та в **`check-k8s.mjs`** (зараз **`-kubernetes-version 1.33.9`** semver без префікса `v`, еквівалент релізу **v1.33.9**; набір схем **`v1.33.9-standalone-strict`**). Для CRD додатково підключай реєстр [datreeio/CRDs-catalog](https://github.com/datreeio/CRDs-catalog) другим **`-schema-location`**, як у [прикладах kubeconform](https://github.com/yannh/kubeconform#readme). За потреби **`-ignore-missing-schemas`**, якщо частина CRD ще без публічної схеми.
32
32
 
33
- **kubescape:** типово **`kubescape scan <каталог-k8s>`**; поріг серйозності підлаштуй під проєкт (наприклад **`--severity-threshold high`**). Перший запуск може завантажувати артефакти — у CI потрібна мережа або [offline](https://github.com/kubescape/kubescape#readme).
33
+ **kubescape:** типово **`kubescape scan <каталог-k8s>`**; поріг серйозності підлаштуй під проєкт (наприклад **`--severity-threshold high`**). Перший запуск може завантажувати артефакти — у CI потрібна мережа або [offline](https://github.com/kubescape/kubescape#readme). На відміну від kubeconform, у **kubescape scan** немає прапорця **`-kubernetes-version`**: перевірка йде за **framework/control** (NSA, MITRE, CIS тощо), а не проти OpenAPI-схеми конкретного релізу Kubernetes. **Орієнтир** для репозиторію той самий, що й для kubeconform — кластер **v1.33.9** (див. **`-kubernetes-version 1.33.9`** вище); для CIS і подібних наближень обирай актуальний framework під політику команди (**`kubescape list frameworks`**, див. [CLI reference](https://github.com/kubescape/kubescape/blob/master/docs/cli-reference.md)).
34
34
 
35
35
  У репозиторії пакета **`@nitra/cursor`** скрипт **`lint-k8s`** делегує обхід дерев і виклики **`npm/scripts/run-k8s.mjs`**. У інших проєктах можна скопіювати цей скрипт або зібрати еквівалентні команди в **`package.json`**.
36
36
 
@@ -115,7 +115,7 @@ jobs:
115
115
 
116
116
  ## Що закодовано в `check-k8s.mjs`
117
117
 
118
- При зміні правил синхронно оновлюй **`YANNH_PIN`**, **`YANNH_GROUPS`**, а в **`run-k8s.mjs`** — константу **`KUBERNETES_VERSION`** (число з PIN, наприклад `v1.29.1-standalone-strict` → **`1.29.1`**).
118
+ При зміні правил синхронно оновлюй **`YANNH_PIN`**, **`YANNH_GROUPS`**, а в **`run-k8s.mjs`** — константу **`KUBERNETES_VERSION`** (число з PIN, наприклад `v1.33.9-standalone-strict` → **`1.33.9`**).
119
119
 
120
120
  - Обхід з пропуском `node_modules`, `.git`, `dist`, `coverage`, `.turbo`, `.next`.
121
121
  - **`file:`** у `$schema` — URL до apiVersion/kind не звіряється; **`https:`** — kustomization за іменем файлу → Schema Store; `v1` → yannh; група з `YANNH_GROUPS` → yannh; інакше → datree.
@@ -130,7 +130,7 @@ jobs:
130
130
  Орієнтир — **перший документ** (до наступного `---`).
131
131
 
132
132
  1. **Ім’я** `kustomization.yaml` або `kustomization.yml` → `https://json.schemastore.org/kustomization.json`.
133
- 2. **`apiVersion: v1`** → yannh, PIN **`v1.29.1-standalone-strict`**:
133
+ 2. **`apiVersion: v1`** → yannh, PIN **`v1.33.9-standalone-strict`**:
134
134
  `https://raw.githubusercontent.com/yannh/kubernetes-json-schema/<PIN>/<kind>-v1.json`
135
135
  `<kind>`: літери в нижньому регістрі без роздільників між CamelCase (наприклад `Service` → `service`).
136
136
  3. **`apiVersion: group/version`** і **group** у **`YANNH_GROUPS`** у скрипті → yannh:
@@ -103,7 +103,10 @@ spec:
103
103
  В Dockerfile потрібно додати команду для стиснення файлів, які потім використовуватимуться з `gzip_static on`:
104
104
 
105
105
  ```dockerfile
106
- RUN for s in js css map xml webmanifest html wasm; do find /usr/share/nginx/html -type f -name "*.$$s" -exec gzip -k {} +; done
106
+ RUN find /usr/share/nginx/html -type f \( \
107
+ -name '*.js' -o -name '*.css' -o -name '*.map' -o -name '*.xml' -o \
108
+ -name '*.webmanifest' -o -name '*.html' -o -name '*.wasm' -o -name '*.ttf' \
109
+ \) -exec gzip -k {} +
107
110
  ```
108
111
 
109
112
  Поруч з файлом default.conf.template повинні бути конфігураційні файли *.ini для різних середовищ. В Dockerfile повинна бути команда, для заміни плейсхолдерів в цих файлах на значення з середовища:
package/mdc/text.mdc CHANGED
@@ -144,7 +144,7 @@ jobs:
144
144
  {
145
145
  "version": "0.2",
146
146
  "language": "nitra",
147
- "ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report"],
147
+ "ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report", "*.svg", "**/k8s/**/*.yaml"],
148
148
  "import": ["@nitra/cspell-dict/cspell-ext.json"],
149
149
  "words": []
150
150
  }
@@ -190,7 +190,7 @@ jobs:
190
190
  {
191
191
  "version": "0.2",
192
192
  "language": "en,uk,nitra",
193
- "ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report"],
193
+ "ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report", "*.svg", "**/k8s/**/*.yaml"],
194
194
  "import": [
195
195
  "@nitra/cspell-dict/cspell-ext.json",
196
196
  "@cspell/dict-uk-ua/cspell-ext.json"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/cursor",
3
- "version": "1.6.23",
3
+ "version": "1.6.26",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -2,7 +2,7 @@
2
2
  * Запускає hadolint для Dockerfile / Containerfile у всьому репозиторії (див. docker.mdc).
3
3
  *
4
4
  * Знаходить Dockerfile, Dockerfile.*, Containerfile, Containerfile.*; пропускає node_modules, .git
5
- * тощо. Спочатку бінарник hadolint з PATH, інакше docker run з образом hadolint/hadolint.
5
+ * тощо. Спочатку hadolint з PATH, інакше docker run з образом hadolint/hadolint.
6
6
  * Кореневий .hadolint.yaml підхоплюється hadolint автоматично.
7
7
  */
8
8
  import { basename } from 'node:path'
@@ -12,7 +12,7 @@ import { pass } from './utils/pass.mjs'
12
12
  import { walkDir } from './utils/walkDir.mjs'
13
13
 
14
14
  /** Версія набору схем yannh — узгоджено з k8s.mdc */
15
- const YANNH_PIN = 'v1.29.1-standalone-strict'
15
+ const YANNH_PIN = 'v1.33.9-standalone-strict'
16
16
 
17
17
  const KUSTOMIZATION_SCHEMA = 'https://json.schemastore.org/kustomization.json'
18
18
 
@@ -6,10 +6,11 @@
6
6
  * без виклику зовнішніх CLI.
7
7
  *
8
8
  * kubeconform перевіряє маніфести проти OpenAPI-схем Kubernetes; kubescape — сканування на
9
- * misconfiguration / compliance (NSA, MITRE, CIS тощо). Обидва бінарники очікуються в PATH
9
+ * misconfiguration / compliance (NSA, MITRE, CIS тощо). Обидві утиліти очікуються в PATH
10
10
  * (локально: Homebrew, релізи GitHub; у CI — крок установки з k8s.mdc).
11
11
  *
12
12
  * Версія `-kubernetes-version` для kubeconform узгоджена з PIN yannh у check-k8s.mjs / k8s.mdc.
13
+ * Kubescape не має аналога цього прапорця; орієнтир цільового кластера — та сама лінія релізу (див. k8s.mdc).
13
14
  */
14
15
  import { spawnSync } from 'node:child_process'
15
16
  import { basename, dirname } from 'node:path'
@@ -17,7 +18,7 @@ import { basename, dirname } from 'node:path'
17
18
  import { walkDir } from './utils/walkDir.mjs'
18
19
 
19
20
  /** Версія Kubernetes для kubeconform — синхронно з YANNH_PIN (без префікса v і суфікса -standalone-strict). */
20
- const KUBERNETES_VERSION = '1.29.1'
21
+ const KUBERNETES_VERSION = '1.33.9'
21
22
 
22
23
  /** Додатковий реєстр схем для CRD (як у README kubeconform). */
23
24
  const DATREE_CRD_SCHEMA_LOCATION =
@@ -69,7 +70,7 @@ async function findK8sRoots(root) {
69
70
  /**
70
71
  * Запускає kubeconform для переліку каталогів.
71
72
  * @param {string[]} dirs абсолютні шляхи до `…/k8s`
72
- * @returns {number} код виходу процесу kubeconform (127, якщо бінарник не знайдено)
73
+ * @returns {number} код виходу процесу kubeconform (127, якщо kubeconform відсутній у PATH)
73
74
  */
74
75
  function runKubeconform(dirs) {
75
76
  const args = [
@@ -93,8 +94,9 @@ function runKubeconform(dirs) {
93
94
 
94
95
  /**
95
96
  * Запускає kubescape scan для кожного каталогу окремо (узгоджено з прикладами CLI).
97
+ * Немає прапорця версії Kubernetes — за потреби додай `scan framework <ім’я>` під CIS/інші набори.
96
98
  * @param {string[]} dirs абсолютні шляхи до `…/k8s`
97
- * @returns {number} 0 при успіху, інакше код останнього невдалого scan або 127, якщо бінарник не знайдено
99
+ * @returns {number} 0 при успіху, інакше код останнього невдалого scan або 127, якщо kubescape відсутній у PATH
98
100
  */
99
101
  function runKubescape(dirs) {
100
102
  for (const d of dirs) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Спільна логіка виклику hadolint для шляхів до Dockerfile (див. docker.mdc).
3
3
  *
4
- * Відносні шляхи з прямими слешами для контейнера; спочатку бінарник hadolint з PATH,
4
+ * Відносні шляхи з прямими слешами для контейнера; спочатку hadolint з PATH,
5
5
  * інакше docker run з образом HADOLINT_IMAGE. Використовується check-docker.mjs та
6
6
  * run-docker.mjs.
7
7
  */