@nitra/cursor 12.8.9 → 12.10.0

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.
Files changed (274) hide show
  1. package/.claude-template/settings.template.json +1 -23
  2. package/CHANGELOG.md +14 -1
  3. package/bin/n-cursor.js +21 -48
  4. package/docs/stryker.config.md +0 -2
  5. package/lib/docs/llm.md +16 -21
  6. package/lib/docs/omlx.md +20 -25
  7. package/lib/llm.mjs +25 -7
  8. package/lib/omlx.mjs +10 -3
  9. package/package.json +5 -5
  10. package/rules/abie/docs/index.md +0 -1
  11. package/rules/abie/docs/main.md +0 -2
  12. package/rules/abie/lib/docs/http-route.md +9 -12
  13. package/rules/abie/lib/http-route.mjs +3 -0
  14. package/rules/abie/main.mdc +0 -22
  15. package/rules/abie/policy/health_check_policy/health_check_policy.mdc +3 -1
  16. package/rules/abie/policy/health_check_policy/health_check_policy.rego +27 -0
  17. package/rules/adr/docs/index.md +0 -1
  18. package/rules/adr/docs/main.md +0 -2
  19. package/rules/adr/js/madr_format.mdc +13 -1
  20. package/rules/adr/main.mdc +0 -9
  21. package/rules/bun/docs/index.md +0 -1
  22. package/rules/bun/docs/main.md +0 -2
  23. package/rules/bun/main.mdc +1 -15
  24. package/rules/bun/policy/package_json/package_json.rego +12 -0
  25. package/rules/capacitor/docs/index.md +0 -1
  26. package/rules/capacitor/docs/main.md +0 -2
  27. package/rules/capacitor/main.mdc +0 -6
  28. package/rules/changelog/docs/index.md +0 -1
  29. package/rules/changelog/docs/main.md +0 -2
  30. package/rules/changelog/js/agent-workflow.mdc +1 -1
  31. package/rules/changelog/js/consistency.mjs +3 -3
  32. package/rules/changelog/js/docs/consistency.md +18 -23
  33. package/rules/changelog/main.mdc +0 -5
  34. package/rules/ci4/docs/index.md +0 -1
  35. package/rules/ci4/docs/main.md +0 -2
  36. package/rules/ci4/main.mdc +0 -5
  37. package/rules/doc-files/docs/index.md +0 -1
  38. package/rules/doc-files/docs/main.md +7 -11
  39. package/rules/doc-files/js/docs/docgen-crc.md +0 -2
  40. package/rules/doc-files/js/docs/docgen-extract.md +0 -2
  41. package/rules/doc-files/js/docs/docgen-files-batch.md +0 -2
  42. package/rules/doc-files/js/docs/docgen-gen.md +0 -2
  43. package/rules/doc-files/js/docs/docgen-judge-measure.md +0 -2
  44. package/rules/doc-files/js/docs/docgen-judge.md +0 -2
  45. package/rules/doc-files/js/docs/docgen-scan.md +0 -2
  46. package/rules/doc-files/js/docs/run-lint.md +0 -2
  47. package/rules/doc-files/main.mjs +2 -3
  48. package/rules/docker/docs/index.md +0 -1
  49. package/rules/docker/docs/main.md +0 -2
  50. package/rules/docker/js/docs/lint.md +0 -2
  51. package/rules/docker/lib/docs/docker-hadolint.md +0 -2
  52. package/rules/docker/main.mdc +1 -21
  53. package/rules/efes/docs/index.md +0 -1
  54. package/rules/efes/docs/main.md +0 -2
  55. package/rules/efes/main.mdc +0 -1
  56. package/rules/feedback/docs/index.md +0 -1
  57. package/rules/feedback/docs/main.md +0 -2
  58. package/rules/ga/docs/index.md +0 -1
  59. package/rules/ga/docs/main.md +0 -2
  60. package/rules/ga/js/docs/index.md +0 -1
  61. package/rules/ga/main.mdc +1 -31
  62. package/rules/graphql/docs/index.md +0 -1
  63. package/rules/graphql/docs/main.md +0 -2
  64. package/rules/graphql/main.mdc +0 -5
  65. package/rules/hasura/docs/index.md +0 -1
  66. package/rules/hasura/docs/main.md +0 -2
  67. package/rules/hasura/js/docs/index.md +1 -0
  68. package/rules/hasura/js/docs/migrations.md +28 -0
  69. package/rules/hasura/js/migrations.mjs +47 -0
  70. package/rules/hasura/main.mdc +1 -11
  71. package/rules/image-avif/docs/index.md +0 -1
  72. package/rules/image-avif/docs/main.md +0 -2
  73. package/rules/image-avif/main.mdc +1 -9
  74. package/rules/image-compress/docs/index.md +0 -1
  75. package/rules/image-compress/docs/main.md +0 -2
  76. package/rules/image-compress/js/docs/index.md +0 -1
  77. package/rules/image-compress/main.mdc +1 -9
  78. package/rules/js/docs/index.md +0 -1
  79. package/rules/js/docs/main.md +0 -2
  80. package/rules/js/js/dep-policy.mjs +91 -0
  81. package/rules/js/js/docs/check.md +0 -2
  82. package/rules/js/js/docs/dep-policy.md +34 -0
  83. package/rules/js/js/docs/index.md +5 -4
  84. package/rules/js/js/docs/tooling.md +0 -2
  85. package/rules/js/js/docs/utils_imports.md +0 -2
  86. package/rules/js/main.mdc +0 -31
  87. package/rules/js/policy/package_json/package_json.rego +16 -0
  88. package/rules/js-bun-db/docs/index.md +0 -1
  89. package/rules/js-bun-db/docs/main.md +0 -2
  90. package/rules/js-bun-db/js/docs/safety.md +18 -23
  91. package/rules/js-bun-db/js/safety.mjs +31 -3
  92. package/rules/js-bun-db/lib/bun-sql-scan.mjs +123 -0
  93. package/rules/js-bun-db/lib/docs/bun-sql-scan.md +37 -331
  94. package/rules/js-bun-db/main.mdc +1 -23
  95. package/rules/js-bun-redis/docs/index.md +0 -1
  96. package/rules/js-bun-redis/docs/main.md +0 -2
  97. package/rules/js-bun-redis/main.mdc +0 -5
  98. package/rules/js-mssql/docs/index.md +0 -1
  99. package/rules/js-mssql/docs/main.md +0 -2
  100. package/rules/js-mssql/main.mdc +0 -12
  101. package/rules/js-run/docs/index.md +0 -1
  102. package/rules/js-run/docs/main.md +0 -2
  103. package/rules/js-run/js/docs/runtime.md +15 -13
  104. package/rules/js-run/js/runtime.mjs +48 -4
  105. package/rules/js-run/main.mdc +0 -25
  106. package/rules/k8s/docs/index.md +0 -1
  107. package/rules/k8s/docs/main.md +0 -2
  108. package/rules/k8s/main.mdc +0 -45
  109. package/rules/nginx-default-tpl/docs/index.md +0 -1
  110. package/rules/nginx-default-tpl/docs/main.md +0 -2
  111. package/rules/nginx-default-tpl/main.mdc +0 -13
  112. package/rules/npm-module/docs/index.md +0 -1
  113. package/rules/npm-module/docs/main.md +0 -2
  114. package/rules/npm-module/js/docs/header_doc_pointer.md +0 -2
  115. package/rules/npm-module/js/docs/rule_meta.md +0 -2
  116. package/rules/npm-module/js/docs/skill_meta.md +0 -2
  117. package/rules/npm-module/main.mdc +1 -15
  118. package/rules/php/docs/index.md +0 -1
  119. package/rules/php/docs/main.md +0 -2
  120. package/rules/php/js/docs/index.md +0 -1
  121. package/rules/php/main.mdc +1 -9
  122. package/rules/python/docs/index.md +0 -1
  123. package/rules/python/docs/main.md +0 -2
  124. package/rules/python/js/docs/index.md +0 -1
  125. package/rules/python/main.mdc +1 -13
  126. package/rules/rego/docs/index.md +0 -1
  127. package/rules/rego/docs/main.md +0 -2
  128. package/rules/rego/js/docs/index.md +1 -1
  129. package/rules/rego/js/docs/tooling.md +26 -0
  130. package/rules/rego/js/tooling.mdc +14 -0
  131. package/rules/rego/js/tooling.mjs +24 -0
  132. package/rules/rego/main.mdc +0 -9
  133. package/rules/rego/policy/package_json/package_json.mdc +12 -0
  134. package/rules/rego/policy/package_json/package_json.rego +21 -0
  135. package/rules/rego/policy/package_json/target.json +4 -0
  136. package/rules/release/docs/index.md +0 -1
  137. package/rules/release/docs/main.md +0 -2
  138. package/rules/release/main.mdc +2 -2
  139. package/rules/rust/docs/index.md +0 -1
  140. package/rules/rust/docs/main.md +0 -2
  141. package/rules/rust/js/docs/index.md +0 -1
  142. package/rules/rust/main.mdc +1 -11
  143. package/rules/rust/policy/lint_rust_yml/lint_rust_yml.rego +24 -0
  144. package/rules/rust/policy/package_json/package_json.mdc +12 -0
  145. package/rules/rust/policy/package_json/package_json.rego +20 -0
  146. package/rules/rust/policy/package_json/target.json +4 -0
  147. package/rules/security/docs/index.md +0 -1
  148. package/rules/security/docs/main.md +0 -2
  149. package/rules/security/js/docs/index.md +0 -1
  150. package/rules/security/main.mdc +0 -13
  151. package/rules/style/docs/index.md +0 -1
  152. package/rules/style/docs/main.md +0 -2
  153. package/rules/style/js/docs/index.md +0 -1
  154. package/rules/style/js/docs/tooling.md +12 -10
  155. package/rules/style/js/tooling.mjs +8 -2
  156. package/rules/style/main.mdc +1 -23
  157. package/rules/style/policy/lint_style_yml/lint_style_yml.rego +5 -0
  158. package/rules/tauri/docs/index.md +0 -1
  159. package/rules/tauri/docs/main.md +0 -2
  160. package/rules/tauri/main.mdc +1 -11
  161. package/rules/test/docs/index.md +0 -1
  162. package/rules/test/docs/main.md +0 -2
  163. package/rules/test/js/docs/index.md +2 -0
  164. package/rules/test/js/docs/no-console-store-restore.md +30 -0
  165. package/rules/test/js/docs/sandbox-aware-test.md +30 -0
  166. package/rules/test/js/docs/stryker_config.md +0 -2
  167. package/rules/test/js/docs/vitest-config-pool-forks.md +0 -2
  168. package/rules/test/js/no-console-store-restore.mjs +88 -0
  169. package/rules/test/js/sandbox-aware-test.mjs +89 -0
  170. package/rules/test/main.mdc +1 -21
  171. package/rules/text/docs/index.md +0 -1
  172. package/rules/text/docs/main.md +0 -2
  173. package/rules/text/js/docs/cspell-fix.md +0 -2
  174. package/rules/text/js/docs/run-dotenv-linter.md +0 -2
  175. package/rules/text/js/docs/run-shellcheck.md +0 -2
  176. package/rules/text/js/docs/run-v8r.md +0 -2
  177. package/rules/text/main.mdc +0 -33
  178. package/rules/tool-surface/docs/index.md +0 -1
  179. package/rules/tool-surface/docs/main.md +0 -2
  180. package/rules/vue/docs/index.md +0 -1
  181. package/rules/vue/docs/main.md +0 -2
  182. package/rules/vue/main.mdc +0 -22
  183. package/rules/worktree/docs/index.md +0 -1
  184. package/rules/worktree/docs/main.md +0 -2
  185. package/scripts/docs/auto-rules.md +0 -2
  186. package/scripts/docs/auto-skills.md +0 -2
  187. package/scripts/docs/hook.md +30 -0
  188. package/scripts/docs/index.md +1 -2
  189. package/scripts/docs/post-tool-use-check.md +0 -2
  190. package/scripts/docs/sync-claude-config.md +1 -3
  191. package/scripts/docs/sync-setup-bun-deps-action.md +0 -2
  192. package/scripts/hook.mjs +71 -0
  193. package/scripts/lib/docs/check-mdc-template-refs.md +0 -2
  194. package/scripts/lib/docs/index.md +35 -36
  195. package/scripts/lib/docs/inline-template-links.md +6 -8
  196. package/scripts/lib/docs/list-project-rules-mdc.md +0 -2
  197. package/scripts/lib/docs/list-rule-ids.md +0 -2
  198. package/scripts/lib/docs/mirror-parity.md +8 -10
  199. package/scripts/lib/docs/read-n-cursor-config-lite.md +0 -2
  200. package/scripts/lib/docs/rule-meta.md +0 -2
  201. package/scripts/lib/docs/run-lint.md +9 -10
  202. package/scripts/lib/docs/run-rule-cli.md +0 -2
  203. package/scripts/lib/docs/run-rule.md +7 -9
  204. package/scripts/lib/docs/run-standard-lint.md +0 -2
  205. package/scripts/lib/docs/run-standard-rule.md +0 -2
  206. package/scripts/lib/docs/skill-meta.md +0 -2
  207. package/scripts/lib/docs/timing-summary.md +0 -2
  208. package/scripts/lib/docs/worktree-notice.md +0 -2
  209. package/scripts/lib/fix/docs/analyze-escalation.md +0 -2
  210. package/scripts/lib/fix/docs/index.md +10 -10
  211. package/scripts/lib/fix/docs/llm-worker.md +18 -8
  212. package/scripts/lib/fix/docs/orchestrator.md +44 -20
  213. package/scripts/lib/fix/docs/run-conformance-check.md +0 -2
  214. package/scripts/lib/fix/docs/t0.md +0 -2
  215. package/scripts/lib/fix/docs/verbose-block.md +27 -0
  216. package/scripts/lib/fix/llm-worker.mjs +75 -22
  217. package/scripts/lib/fix/orchestrator.mjs +13 -3
  218. package/scripts/lib/fix/verbose-block.mjs +82 -0
  219. package/scripts/lib/inline-template-links.mjs +32 -22
  220. package/scripts/lib/mirror-parity.mjs +2 -2
  221. package/scripts/lib/run-lint.mjs +15 -2
  222. package/scripts/lib/run-rule.mjs +1 -2
  223. package/scripts/sync-claude-config.mjs +7 -4
  224. package/scripts/utils/docs/resolve-js-root.md +0 -2
  225. package/skills/adr-normalize/SKILL.md +1 -0
  226. package/skills/coverage-fix/SKILL.md +1 -0
  227. package/skills/doc-aggregate/SKILL.md +1 -0
  228. package/skills/doc-files/SKILL.md +10 -24
  229. package/skills/lint/SKILL.md +24 -19
  230. package/skills/llm-patch/SKILL.md +5 -4
  231. package/skills/publish-telegram/SKILL.md +1 -0
  232. package/skills/start-check/SKILL.md +1 -0
  233. package/skills/taze/SKILL.md +3 -2
  234. package/types/bin/n-cursor.d.ts +1 -1
  235. package/rules/abie/docs/fix.md +0 -37
  236. package/rules/adr/docs/fix.md +0 -37
  237. package/rules/bun/docs/fix.md +0 -30
  238. package/rules/capacitor/docs/fix.md +0 -36
  239. package/rules/changelog/docs/fix.md +0 -37
  240. package/rules/ci4/docs/fix.md +0 -32
  241. package/rules/doc-files/docs/fix.md +0 -29
  242. package/rules/docker/docs/fix.md +0 -35
  243. package/rules/efes/docs/fix.md +0 -37
  244. package/rules/feedback/docs/fix.md +0 -30
  245. package/rules/ga/docs/fix.md +0 -30
  246. package/rules/graphql/docs/fix.md +0 -37
  247. package/rules/hasura/docs/fix.md +0 -39
  248. package/rules/image-avif/docs/fix.md +0 -28
  249. package/rules/image-compress/docs/fix.md +0 -27
  250. package/rules/js/docs/fix.md +0 -37
  251. package/rules/js-bun-db/docs/fix.md +0 -30
  252. package/rules/js-bun-redis/docs/fix.md +0 -32
  253. package/rules/js-mssql/docs/fix.md +0 -30
  254. package/rules/js-run/docs/fix.md +0 -36
  255. package/rules/k8s/docs/fix.md +0 -31
  256. package/rules/nginx-default-tpl/docs/fix.md +0 -35
  257. package/rules/npm-module/docs/fix.md +0 -34
  258. package/rules/php/docs/fix.md +0 -35
  259. package/rules/python/docs/fix.md +0 -38
  260. package/rules/rego/docs/fix.md +0 -31
  261. package/rules/release/docs/fix.md +0 -28
  262. package/rules/rust/docs/fix.md +0 -32
  263. package/rules/security/docs/fix.md +0 -33
  264. package/rules/style/docs/fix.md +0 -28
  265. package/rules/tauri/docs/fix.md +0 -39
  266. package/rules/test/docs/fix.md +0 -31
  267. package/rules/text/docs/fix.md +0 -37
  268. package/rules/tool-surface/docs/fix.md +0 -32
  269. package/rules/vue/docs/fix.md +0 -32
  270. package/rules/worktree/docs/fix.md +0 -40
  271. package/scripts/docs/post-tool-use-fix.md +0 -32
  272. package/scripts/docs/worktree-cli.md +0 -27
  273. package/scripts/lib/docs/worktree.md +0 -42
  274. package/scripts/lib/fix/docs/run-fix-check.md +0 -33
@@ -8,10 +8,12 @@ Rego-пакет: `abie.health_check_policy`
8
8
 
9
9
  - `apiVersion` — точно `networking.gke.io/v1`;
10
10
  - `metadata.name` — непорожній рядок;
11
+ - `metadata.namespace` — `dev`;
11
12
  - `spec.default.config.type` — `HTTP`;
12
13
  - `spec.default.config.httpHealthCheck.requestPath` — непорожній, починається з `/`;
13
- - `spec.default.config.httpHealthCheck.port` — `8080`;
14
+ - `spec.default.config.httpHealthCheck.port` — `8080` (обов'язковий, відсутність теж помилка);
14
15
  - `spec.targetRef.kind` — `Service`;
16
+ - `spec.targetRef.group` — порожній рядок `''` (якщо поле присутнє);
15
17
  - `spec.targetRef.name` — `<metadata.name>-hl` (якщо `metadata.name` вже закінчується на `-hl` — використовується як є).
16
18
 
17
19
  FS-парність HCP↔Deployment та modeline `$schema` у `hc.yaml` — поза Rego, у `js/hc_pairing.mjs`. JS-опис структури та приклад — у `js/hc_pairing.mdc`.
@@ -61,6 +61,15 @@ deny contains "HealthCheckPolicy: metadata.name має бути непорожн
61
61
  trim_space(name) == ""
62
62
  }
63
63
 
64
+ # ── deny: metadata.namespace ──────────────────────────────────────────────
65
+
66
+ deny contains msg if {
67
+ is_health_check_policy
68
+ ns := object.get(object.get(input, "metadata", {}), "namespace", "")
69
+ ns != "dev"
70
+ msg := sprintf("HealthCheckPolicy: metadata.namespace має бути dev (зараз %q) (abie.mdc)", [ns])
71
+ }
72
+
64
73
  # ── deny: spec.default.config.type ────────────────────────────────────────
65
74
 
66
75
  deny contains "HealthCheckPolicy: spec.default.config.type має бути HTTP (abie.mdc)" if {
@@ -87,6 +96,12 @@ deny contains msg if {
87
96
 
88
97
  # ── deny: port == 8080 ────────────────────────────────────────────────────
89
98
 
99
+ deny contains "HealthCheckPolicy: spec.default.config.httpHealthCheck.port має бути 8080 (abie.mdc)" if {
100
+ is_health_check_policy
101
+ is_object(http_health_check)
102
+ object.get(http_health_check, "port", null) == null
103
+ }
104
+
90
105
  deny contains msg if {
91
106
  is_health_check_policy
92
107
  is_object(http_health_check)
@@ -108,6 +123,18 @@ deny contains msg if {
108
123
  msg := sprintf("HealthCheckPolicy: targetRef.kind має бути Service (зараз %q) (abie.mdc)", [kind])
109
124
  }
110
125
 
126
+ # ── deny: targetRef.group == '' ───────────────────────────────────────────
127
+
128
+ deny contains msg if {
129
+ is_health_check_policy
130
+ target_ref := object.get(object.get(input, "spec", {}), "targetRef", {})
131
+ is_object(target_ref)
132
+ group := object.get(target_ref, "group", null)
133
+ group != null
134
+ group != ""
135
+ msg := sprintf("HealthCheckPolicy: targetRef.group має бути порожнім рядком '' (зараз %q) (abie.mdc)", [group])
136
+ }
137
+
111
138
  # ── deny: targetRef.name = `<hcp.metadata.name>-hl` (exact, з нормалізацією)
112
139
 
113
140
  deny contains msg if {
@@ -8,5 +8,4 @@ resource: npm/rules/adr/
8
8
 
9
9
  | Файл | Тип |
10
10
  |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль виконує логіку перевірок, обробляючи JS-запити та звертаючись до MDC. При запуску як окремий інструмент, він ініціює повний цикл правил, включаючи завантаження конфігурацій з meta.json. Модуль має лише читачний доступ до файлової системи та баз даних. Під час виконання він використовує кешування у межах прогону для оптимізації.
14
12
 
15
13
  ## Поведінка
@@ -93,4 +93,16 @@ docs/adr/
93
93
  └── hooks.json # Cursor Agent stop-hooks для тих самих скриптів
94
94
  ```
95
95
 
96
- `.gitignore` у корені проєкту повинен містити базові рядки (`node_modules/`, `dist/`, `*.secret`) і патерни для ADR Stop-hook (**`.claude/hooks/*.log`**, `.claude/hooks/.normalize-state`, `.claude/hooks/.normalize.lock`). Канонічний фрагмент (дописується `npx @nitra/cursor`, коли правило `adr` увімкнене): [.gitignore.snippet](./templates/hooks/.gitignore.snippet).
96
+ `.gitignore` у корені проєкту повинен містити базові рядки (`node_modules/`, `dist/`, `*.secret`) і патерни для ADR Stop-hook (**`.claude/hooks/*.log`**, `.claude/hooks/.normalize-state`, `.claude/hooks/.normalize.lock`). Канонічний фрагмент (дописується `npx @nitra/cursor`, коли правило `adr` увімкнене):
97
+
98
+ ```gitignore
99
+ node_modules/
100
+ dist/
101
+ *.secret
102
+
103
+ # @nitra/cursor (adr) — локальні артефакти Stop-hook, не коміти
104
+ .claude/hooks/*.log
105
+ .claude/hooks/.normalize-state
106
+ .claude/hooks/.normalize.lock
107
+ .claude/scheduled_tasks.lock
108
+ ```
@@ -6,8 +6,6 @@ version: '2.2'
6
6
 
7
7
  Правило `adr` автоматично фіксує архітектурні рішення (ADR) після кожної сесії через Stop-хуки і батч-нормалізує чернетки у канонічний формат MADR v4.
8
8
 
9
- [adr-madr-format](./js/madr_format.mdc)
10
-
11
9
  ## Stop-hook у `.claude/settings.json`
12
10
 
13
11
  Канонічний запис, який вставляє sync (поряд із PostToolUse fix-хуком — той живе в іншій події, тут не показаний):
@@ -76,10 +74,3 @@ Cursor Agent читає project-level **`.cursor/hooks.json`**. `npx @nitra/curs
76
74
  | `adr.settings_json` | `.claude/settings.json` | Наявність обох Stop-хуків у `hooks.Stop[]` |
77
75
  | `adr.settings_local_json` | `.claude/settings.local.json` | Відсутність дублів Stop-хуків у local-файлі |
78
76
 
79
- [adr-settings-policy](./js/settings_policy.mdc)
80
-
81
- [adr-settings_json-policy](./policy/settings_json/settings_json.mdc)
82
-
83
- [adr-settings_local_json-policy](./policy/settings_local_json/settings_local_json.mdc)
84
-
85
- [adr-hooks](./js/hooks.mdc)
@@ -8,5 +8,4 @@ resource: npm/rules/bun/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль валідує дані, застосовуючи правила, визначені у конфігурації meta.json, та збирає посилання на MDC. При виклику публічної функції run він здійснює повний запуск правила, включаючи завантаження конфігурацій та застосування білих списків. Результат виконання повертається як код виходу процесу.
14
12
 
15
13
  ## Поведінка
@@ -5,18 +5,4 @@ alwaysApply: false
5
5
  version: '2.1'
6
6
  ---
7
7
 
8
- Проект використовує тільки Bun для керування залежностями та запуску скриптів.
9
-
10
- [bun-layout](./js/layout.mdc)
11
-
12
- [bun-bunfig](./js/bunfig.mdc)
13
-
14
- [bun-package_json](./js/package_json.mdc)
15
-
16
- [bun-lint](./js/lint.mdc)
17
-
18
- ## Швидкий gate через conftest
19
-
20
- [bun-policy-bunfig](./policy/bunfig/bunfig.mdc)
21
-
22
- [bun-policy-package_json](./policy/package_json/package_json.mdc)
8
+ Проект використовує тільки Bun для керування залежностями та запуску скриптів.
@@ -24,6 +24,18 @@ deny contains msg if {
24
24
  msg := sprintf("package.json: поле %s — %s", [field, reason])
25
25
  }
26
26
 
27
+ # ── deny: scripts.lint / scripts.lint-* заборонені (bun.mdc lint) ────────
28
+
29
+ deny contains msg if {
30
+ is_object(input.scripts)
31
+ some script_name, _ in input.scripts
32
+ regex.match(`^lint(-.*)?$`, script_name)
33
+ msg := sprintf(
34
+ "package.json: scripts.%s заборонений — лінт запускається через n-cursor lint, не через package.json-скрипти (bun.mdc)",
35
+ [script_name]
36
+ )
37
+ }
38
+
27
39
  # ── deny: devDependencies — лише `@nitra/*` + root-only тестові peer/tools ─
28
40
 
29
41
  deny contains msg if {
@@ -8,5 +8,4 @@ resource: npm/rules/capacitor/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль застосовує політику та логіку, визначену в конфігурації meta.json, для валідації. При запуску як CLI ініціюється повний запуск правила, що включає завантаження конфігурацій, застосування білих списків та підбиття підсумків. Модуль є лише для читання (не виконує записів у файлову систему чи базу даних) і використовує кешування даних у межах одного прогону.
14
12
 
15
13
  ## Поведінка
@@ -7,12 +7,6 @@ version: '1.1'
7
7
 
8
8
  Правило перевіряє версію `@capacitor/core` у `package.json` та коректність використання CocoaPods/SPM у iOS-шарі Capacitor-проєкту.
9
9
 
10
- [capacitor-version](./js/version.mdc)
11
-
12
- [capacitor-ios-spm](./js/ios_spm.mdc)
13
-
14
10
  ## Швидкий gate через conftest
15
11
 
16
- [capacitor-package_json](./policy/package_json/package_json.mdc)
17
-
18
12
  JS-перевірка (`platforms.mjs`) — authoritative: підтримує `||`-діапазони, hyphen-range, workspace-monorepo та iOS-специфічну логіку (Podfile).
@@ -8,5 +8,4 @@ resource: npm/rules/changelog/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль відповідає за виконання політики, використовуючи дані з meta.json. Він забезпечує перевірку та застосування логіки, визначеної в конфігурації. Виклик функції run ініціює процес виконання правила, включаючи кешування даних у межах одного прогону.
14
12
 
15
13
  ## Поведінка
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Якщо в цій сесії ти змінив(ла) файли в пакетному workspace** (код, rego, правила, скіли, скрипти, конфіги, тести — **не** лише `docs/` / `doc/`) — **не завершуй задачу**, поки не виконаєш **усі три** кроки нижче в **тому ж** наборі змін. Це не «опційно після синку» — це частина PR.
4
4
 
5
- 1. **Поклади change-файл** `<ws>/.changes/YYMMDD-HHMM.md` з frontmatter `bump:` (`major|minor|patch`) + `section:` (`Added|Changed|Fixed|Removed`) і текстом опису. Команда: `npx @nitra/cursor change --bump <…> --section <…> --message "<…>" [--ws <шлях>]`. Якщо файл за ту саму хвилину вже існує, CLI атомарно створює `YYMMDD-HHMM-2.md`, потім `-3` тощо.
5
+ 1. **Поклади change-файл** `<ws>/.changes/YYMMDD-HHMM.md` з frontmatter `bump:` (`major|minor|patch`) + `section:` (`Added|Changed|Fixed|Removed`) і текстом опису. Команда: `npx @7n/n ch [--bump <…>] [--section <…>] [--message "<…>"]` автоматично знаходить зачеплені workspaces за git status і пише окремий change-файл у кожен; без `--message` генерує опис через omlx з diff.
6
6
  2. **Ніколи** не редагуй `version` і `CHANGELOG.md` вручну — навіть для hotfix. Єдиний артефакт зміни — change-файл; `version`/CHANGELOG формує `n-cursor release` у CI на `main` (агрегує change-файли, ставить git-тег `<name>@<version>`). Будь-яка зміна `version` поза CI (drift від бази чи опублікованої) завалює `check changelog` — навіть якщо поряд є change-файл.
7
7
  3. **`npx @nitra/cursor fix changelog`** → exit **`0`** (достатньо наявності change-файлу; `version` лишається незмінним).
8
8
 
@@ -406,7 +406,7 @@ function workspaceLabel(manifest) {
406
406
  function missingChangeFileMessage(label, mf) {
407
407
  return (
408
408
  `${label}: є релевантні зміни, але немає change-файлу (version у ${mf} не чіпай вручну). ` +
409
- `Поклади change-файл: npx @nitra/cursor change --bump <major|minor|patch> --section <Added|Changed|Fixed|Removed> --message "<…>"; ` +
409
+ `Поклади change-файл: npx @7n/n ch [--bump <major|minor|patch>] [--section <Added|Changed|Fixed|Removed>] [--message "<…>"]; ` +
410
410
  `bump зробить CI на main (n-changelog.mdc)`
411
411
  )
412
412
  }
@@ -574,7 +574,7 @@ async function checkPublishedWorkspace(manifest, subWorkspaces, getPublishedVers
574
574
  fail(
575
575
  `${label}: version у ${mf} (${Vcurrent}) випереджає опубліковану (${Vpublished}) — ` +
576
576
  `ручний bump поза CI заборонено. Відкоти version і поклади change-файл ` +
577
- `(npx @nitra/cursor change …); bump зробить CI на main (n-changelog.mdc)`
577
+ `(npx @7n/n ch); bump зробить CI на main (n-changelog.mdc)`
578
578
  )
579
579
  return
580
580
  }
@@ -613,7 +613,7 @@ async function checkLocalOnlyChangedWorkspace(comparisonRef, manifest, baseLabel
613
613
  if (Vbase !== null && Vcurrent !== null && versionIsAhead(Vcurrent, Vbase)) {
614
614
  fail(
615
615
  `${label}: version у ${mf} змінено поза CI (${Vbase} → ${Vcurrent}) — ручний bump заборонено (на ${baseLabel} — ${Vbase}). ` +
616
- `Відкоти version і поклади change-файл (npx @nitra/cursor change …); bump зробить CI (n-changelog.mdc)`
616
+ `Відкоти version і поклади change-файл (npx @7n/n ch); bump зробить CI (n-changelog.mdc)`
617
617
  )
618
618
  return
619
619
  }
@@ -3,36 +3,31 @@ type: JS Module
3
3
  title: consistency.mjs
4
4
  resource: npm/rules/changelog/js/consistency.mjs
5
5
  docgen:
6
- crc: eaf98d6d
6
+ crc: 92b7c3f0
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
7
8
  score: 100
8
9
  ---
9
10
 
10
- Перевіряє версіонування проектів у монорепозиторії, порівнюючи версії, зазначені в маніфестах, з даними, отриманими з мережі з https://pypi.org/pypi/. Аналізує відповідність версій встановленим правилам, визначеним у конфігурації res.json. Визначає, чи відповідають версії формату, а також перевіряє наявність змін, порівнюючи їх із даними, описаними у (n-changelog.mdc). При невдачі перевірки повертає false/null, не кидаючи винятків.
11
+ ## Огляд
12
+
13
+ Компонент виконує перевірку стану проєктів у монорепозиторії. Він звертається до мережі для порівняння версій з реєстром, зокрема https://pypi.org/pypi/, та аналізує зміни, посилаючись на (n-changelog.mdc). Код спирається на конфігурацію, визначену у res.json. При виявленні невідповідностей компонент перехоплює помилки (fail-safe) і повертає порожнє значення замість кидання винятків.
11
14
 
12
15
  ## Поведінка
13
16
 
14
- 1. Ініціалізує репортер для збору результатів перевірки.
15
- 2. Визначає робочий каталог та стан autofix-режиму.
16
- 3. Зчитує всі кореневі каталоги проектів у монорепо.
17
- 4. Класифікує кожен проект як публікувальний (registryPublishable) або локальний.
18
- 5. Для кожного публікувального проекту виконує перевірку:
19
- а. Зчитує маніфест проекту.
20
- б. Якщо у маніфесті відсутнє ім'я або поле version, фіксує помилку.
21
- в. Якщо є change-файл(и) у .changes/, фіксує успіх, оскільки bump зробить CI (n-changelog.mdc), і перевіряє наявність "CHANGELOG.md" у файлах проекту.
22
- г. Якщо немає change-файлу, визначає точку порівняння на основі поточної гілки.
23
- д. Порівнює версію в маніфесті з опублікованою версією (за допомогою npm view або запиту до https://pypi.org/pypi/).
24
- е. Якщо версія в маніфесті випереджає опубліковану, фіксує помилку, оскільки ручний bump поза CI заборонений.
25
- ж. Якщо версія в маніфесті позаду опублікованої, фіксує успіх, оскільки це відставання локального репозиторію від реєстру.
26
- з. Якщо версії збігаються, перевіряє змінений код відносно точки порівняння. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
27
- 6. Для кожного локального проекту виконує перевірку:
28
- а. Зчитує маніфест проекту.
29
- б. Визначає точку порівняння на основі поточної гілки.
30
- в. Перевіряє, чи є релевантні зміни у проекті відносно точки порівняння.
31
- г. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
32
- 7. Повертає кінцевий код виходу, що відображає результат перевірки.
17
+ 1. `check` ініціалізує репортер та визначає режим автоматичного виправлення на основі змінної середовища.
18
+ 2. `check` зчитує список усіх кореневих каталогів проєктів у монорепозиторії.
19
+ 3. `check` класифікує знайдені проєкти на ті, що можуть бути опубліковані в реєстрі, та ті, що є локальними.
20
+ 4. Для кожного проєкту, що може бути опублікований, `check` викликає перевірку опублікованого воркспейсу.
21
+ 5. Перевірка опублікованого воркспейсу порівнює версію у маніфесті з опублікованою версією, отриманою через мережевий запит до реєстру (наприклад, https://pypi.org/pypi/).
22
+ 6. Якщо версія у маніфесті випереджає опубліковану, `check` повідомляє про заборонений ручний bump поза CI.
23
+ 7. Якщо версія у маніфесті відповідає опублікованій, `check` перевіряє, чи є релевантні зміни у файловій системі відносно базової точки порівняння (наприклад, `origin/main`).
24
+ 8. Якщо зміни існують, але відсутній change-файл, `check` або автоматично створює його (у режимі autofix), або повідомляє про необхідність ручного створення, посилаючись на (n-changelog.mdc).
25
+ 9. Для кожного локального проєкту `check` порівнює стан з базовою точкою порівняння.
26
+ 10. Якщо зміни існують, але відсутній change-файл, `check` або автоматично створює його (у режимі autofix), або повідомляє про необхідність ручного створення, посилаючись на (n-changelog.mdc).
27
+ 11. `check` повертає кінцевий код виходу на основі накопичених повідомлень про помилки.
33
28
 
34
29
  ## Гарантії поведінки
35
30
 
36
- - Read-only: файл не виконує операцій запису у файлову систему.
31
+ - Read-only: не виконує операцій запису (ФС/БД).
37
32
  - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
38
- - За невдалої перевірки повертає `false`/`null` замість винятку.
33
+ - За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
@@ -6,8 +6,3 @@ alwaysApply: true
6
6
 
7
7
  У кожному **пакетному** workspace (каталог із `package.json` або `pyproject.toml`) має бути власний **`CHANGELOG.md`**. Спільного на репозиторій змісту змін **не існує** — кожен пакет веде свій. Маніфест версії: **JS/Bun/npm** — `package.json` (`version`); **Python** — `pyproject.toml` (`[project].version` або `[tool.poetry].version`).
8
8
 
9
- [changelog-agent-workflow](./js/agent-workflow.mdc)
10
-
11
- [changelog-comparison-models](./js/comparison-models.mdc)
12
-
13
- [changelog-format](./js/changelog-format.mdc)
@@ -8,5 +8,4 @@ resource: npm/rules/ci4/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль валідує дані відповідно до правил, використовуючи конфігурацію, визначену в meta.json. Він застосовує білий список та виконує логіку перевірки. При запуску як окрема програма, він повертає код виходу, що інформує про успіх чи виявлені порушення. Модуль є Read-only, тобто не здійснює записів у файлову систему чи бази даних. Кешування даних відбувається у межах одного прогону.
14
12
 
15
13
  ## Поведінка
@@ -372,8 +372,3 @@ Rego-перевірки, що запускаються через `conftest` у
372
372
  | --------------------------- | -------------------------------------------------------------------- |
373
373
  | `ci4.vscode_extensions` | `.vscode/extensions.json` містить `arr.marksman` у `recommendations` |
374
374
 
375
- [ci4-marksman_config](./js/marksman_config.mdc)
376
-
377
- [ci4-vscode_extensions](./js/vscode_extensions.mdc)
378
-
379
- [ci4-vscode_extensions-policy](./policy/vscode_extensions/vscode_extensions.mdc)
@@ -8,5 +8,4 @@ resource: npm/rules/doc-files/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -3,26 +3,22 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: npm/rules/doc-files/main.mjs
5
5
  docgen:
6
- crc: 64f215a5
6
+ crc: 82caefcd
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
- score: 100
8
+ score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
- Модуль перевіряє відповідність коду та документації, спираючись на конфігурацію `meta.json`. Функція `run` перевіряє консистентність між кодом та документацією. Функція `lint` перевіряє застарілі описи документації.
11
+ Модуль перевіряє відповідність конфігурацій політики джерелам коду, спираючись на `meta.json`. Він також аналізує документацію на відповідність джерелам коду, виявляючи застарілі або нерелевантні описи.
14
12
 
15
13
  ## Поведінка
16
14
 
17
- run виконує перевірку консистентності між кодом та документацією.
18
-
19
- lint перевіряє, чи не застаріли описи документації, і може автоматично їх оновлювати, якщо це дозволено конфігурацією `meta.json`.
15
+ run виконує перевірку відповідності до політики, порівнюючи конфігурації з джерелами коду.
16
+ lint перевіряє, чи відповідає документація джерелам коду, виявляючи застарілі описи та сирітські доки, а також може автоматично їх виправляти за умови наявності конфігурації `meta.json: llmFix:true`.
20
17
 
21
18
  ## Публічний API
22
19
 
23
- run — виконує основну перевірку, яка включає аналіз JS-задач, застосування політик та посилання на MDC.
24
- lint — сканує файли документації на наявність застарілих елементів, з можливістю автоматичного виправлення за умови активації LLM.
25
- llmFix — виконує добровільну генерацію виправлень за допомогою LLM, якщо це дозволено в конфігурації.
20
+ run — основна точка входу, яка виконує перевірку (JS-залежності $\rightarrow$ політики $\rightarrow$ посилання MDC) та запускає перевірку на застарілі файли.
21
+ lint — збирає дані для перевірки документаційних файлів, з можливістю автоматичного виправлення за умови ввімкнення LLM-функціоналу.
26
22
 
27
23
  ## Гарантії поведінки
28
24
 
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль забезпечує роботу з метаданими та оцінкою якості документів. Він дозволяє парсити метадані з Markdown-файлів за допомогою `parseDocFrontmatter`, створювати та заповнювати блоки метаданих за допомогою `buildDocFrontmatter`. Документи можуть бути промарковані за допомогою `stampDoc`. Якість документа оцінюється за допомогою `readDocQuality`, а його актуальність визначається функцією `staleness`, яка використовує `crc32` для перевірки хеш-суми. Модель документа зчитується через `readDocModel`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль витягує структурований факт-лист з вмісту файлів, звертаючись до мережі. Функція `extractFacts` аналізує вміст файлів, визначаючи публічні експорти, локальні символи та поведінкові маркери для Rust та JavaScript/TypeScript файлів. При цьому ігноруються системні та залежності, включаючи каталоги `.github`, `.git`, `node_modules`, `base/`, `ua/` та `.firebase`. Результати аналізу кешуються протягом одного прогону.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль керує життєвим циклом документації. Він вибирає цілі для оновлення за допомогою `selectTargets`, очищає від неіснуючих джерел за допомогою `purgeOrphanedDocs`, запускає генерацію файлів через `runDocFilesGenCli` та `runDocFilesStampCli`, а також виконує пакетну генерацію за допомогою `runGenerationBatch`. Усі операції виконуються з механізмом перехоплення помилок, що запобігає виникненню винятків назовні.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль забезпечує повний цикл роботи з документами: відокремлює захищений блок за допомогою `splitProtected`, вставляє його у визначене місце за допомогою `insertProtected`, генерує повний Markdown-документ через `generateDoc` (з використанням `DEFAULT_LOCAL_MODEL`), а також оцінює якість документа за допомогою `scoreDoc`. Кешування застосовується протягом прогону. (abie.mdc)
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Файл аналізує надані файли коду, створюючи документацію та оцінюючи її якість відповідно до конфігурації, що міститься у report.json. Процес збирає результати для кожного файлу, використовуючи кешування у межах прогону на основі вмісту джерела та вже згенерованої документації. У кінці процес агрегує дані та зберігає повний звіт у report.json, а також виводить його у консоль.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль реалізує механізм оцінки якості документації. Він визначає модель для оцінки за допомогою `JUDGE_MODEL`, перевіряє статус активності гейту через `JUDGE_ENABLED` та встановлює поріг впевненості за допомогою `JUDGE_CONFIDENCE`. Модуль отримує, парсить та визначає фінальний статус документації, викликаючи `judgeDoc` для отримання висновків, а також може використовувати `judgeFailsDoc` для визначення провалу.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль визначає, які файли є кодовим джерелом за допомогою `isSourceFile`. Він обчислює відповідні шляхи до Markdown-документів для коду за допомогою `docPathForSource`. Модуль ідентифікує потенційні кандидати для документування за допомогою `isDocCandidate` та надає опис файлу за допомогою `describeFile`. Для аналізу файлової системи використовуються `scanOrphanedDocs` для пошуку "сирітських" документів та `scanForDocFiles` для сканування файлів. Модуль також може визначати кореневий каталог за допомогою `resolveRoot` та виконувати сканування файлів документації через `runDocFilesScanCli` або перевірку через `runDocFilesCheckCli`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 80
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Цей модуль надає CLI-обгортку для канонічного `lint-doc-files` (doc-files.mdc): детермінованого детектора застарілості файлових док (`<dir>/docs/<stem>.md`). При відсутності прапорців або при вказанні шляхів (`[paths…]`) виконується повний або точковий детекст застарілості. Якщо знайдено застарілі файли, повертається код виходу 1. Можливі режими: `--missing-only` звужує перевірку до відсутніх файлів. Прапорець `--json` виводить JSON-лістинг усіх кандидатів. Режими `--hook`, `--git` та `--degraded` делегують перевірку через `runDocFilesCheckCli` (hook-протокол: exit 2/0). Повний прогін здійснюється через `runStandardLint` (ключ `lint-doc-files`), тоді як хук/git/degraded форми використовують канон scripts.mdc, не генеруючи логів. Поведінка описується у (doc-files.mdc).
14
12
 
15
13
  ## Поведінка
@@ -101,8 +101,7 @@ function collectStale(files, cwd) {
101
101
  */
102
102
  export async function lint(files, cwd = process.cwd(), { readOnly = false, llmFix = false } = {}) {
103
103
  const stale = collectStale(files, cwd)
104
- // Orphan-детект тільки при повному скані; при точковому (files визначено) — не релевантно
105
- const orphans = files === undefined ? scanOrphanedDocs(cwd) : []
104
+ const orphans = scanOrphanedDocs(cwd)
106
105
 
107
106
  if (stale.length === 0 && orphans.length === 0) return 0
108
107
  if (readOnly || !llmFix) {
@@ -132,7 +131,7 @@ export async function lint(files, cwd = process.cwd(), { readOnly = false, llmFi
132
131
  }
133
132
 
134
133
  const stillStale = collectStale(files, cwd)
135
- const stillOrphans = files === undefined ? scanOrphanedDocs(cwd) : []
134
+ const stillOrphans = scanOrphanedDocs(cwd)
136
135
  if (stillStale.length === 0 && stillOrphans.length === 0) return 0
137
136
  if (stillStale.length > 0) reportStale(stillStale)
138
137
  if (stillOrphans.length > 0) {
@@ -8,5 +8,4 @@ resource: npm/rules/docker/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль виконує перевірку на відповідність логіці JS-зацікавленостей, політикам та посиланням MDC. Запуск правила ініціюється через публічну функцію `run`.
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль аналізує файли `Dockerfile` та `Containerfile` у репозиторії, використовуючи `isDockerfileName` та `findDockerfilePaths` для ідентифікації конфігурацій. Він розбиває знайдені файли на етапи за допомогою `parseFromStages` та `splitDockerfileStages`. Модуль перевіряє конфігурацію, використовуючи `check` та `lint`, щоб оцінити відповідність стандартам, враховуючи дані з `package.json`. Він визначає інформацію про багатоетапну збірку, теги образів та права користувача, відповідно до вимог (docker.mdc).
14
12
 
15
13
  ## Поведінка
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 90
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Спільна логіка виклику hadolint для шляхів до Dockerfile. Модуль створює стандартизовані відносні шляхи з прямими слешами. Він ініціює перевірку Dockerfile, використовуючи hadolint як нативний бінарник, який резолвиться через `ensureTool` (PATH → кеш → авто-install brew/scoop/GitHub Release per-platform). Для отримання інформації про встановлення можна звертатися до https://github.com/hadolint/hadolint/releases. Публічна функція `lintDockerfileWithHadolint` виконує перевірку за правилом `n-cursor lint docker` / check-docker.
14
12
 
15
13
  ## Поведінка
@@ -11,24 +11,4 @@ alwaysApply: false
11
11
 
12
12
  ## Активація
13
13
 
14
- Спрацьовує на всі файли `Dockerfile*`; `check docker` (`fix.mjs`) обробляє також `Containerfile` та `Containerfile.*`.
15
-
16
- ## Швидкий gate через conftest
17
-
18
- [docker-lint_docker_yml](./policy/lint_docker_yml/lint_docker_yml.mdc)
19
-
20
- [docker-mirror](./js/mirror.mdc)
21
-
22
- [docker-multistage](./js/multistage.mdc)
23
-
24
- [docker-compile](./js/compile.mdc)
25
-
26
- [docker-native-addon](./js/native-addon.mdc)
27
-
28
- [docker-non-root](./js/non-root.mdc)
29
-
30
- [docker-nginx-tag](./js/nginx-tag.mdc)
31
-
32
- [docker-nginx-user](./js/nginx-user.mdc)
33
-
34
- [docker-hadolint](./js/hadolint.mdc)
14
+ Спрацьовує на всі файли `Dockerfile*`; `check docker` (`fix.mjs`) обробляє також `Containerfile` та `Containerfile.*`.
@@ -8,5 +8,4 @@ resource: npm/rules/efes/
8
8
 
9
9
  | Файл | Тип |
10
10
  | ------------------- | --------- |
11
- | [fix.mjs](fix.md) | JS Module |
12
11
  | [main.mjs](main.md) | JS Module |
@@ -8,8 +8,6 @@ docgen:
8
8
  score: 100
9
9
  ---
10
10
 
11
- ## Огляд
12
-
13
11
  Модуль перевіряє відповідність коду визначеним правилам, використовуючи конфігурацію з meta.json. Він виконує аналіз, який може бути ініційований через публічну функцію run. Модуль є read-only, тобто не здійснює записів у файлову систему чи бази даних. Кешування даних відбувається у межах одного прогону. При завершенні роботи як окремий інструмент, він надає підсумковий звіт.
14
12
 
15
13
  ## Поведінка
@@ -20,4 +20,3 @@ bun add -d @nitra/efes-shared
20
20
 
21
21
  Пакети (директорія в **`npm/rules/efes/policy/`** → namespace → що перевіряє):
22
22
 
23
- [efes-package_json_shared](./policy/package_json_shared/package_json_shared.mdc)