@nitra/cursor 12.6.1 → 12.8.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 (372) hide show
  1. package/.claude-template/settings.template.json +1 -1
  2. package/.pi-template/extensions/n-cursor-adr/docs/index.md +2 -2
  3. package/CHANGELOG.md +25 -5
  4. package/bin/docs/n-cursor.md +4 -20
  5. package/bin/n-cursor.js +8 -54
  6. package/docs/index.md +3 -3
  7. package/docs/stryker.config.md +20 -28
  8. package/lib/docs/index.md +5 -5
  9. package/lib/docs/llm.md +4 -4
  10. package/package.json +2 -2
  11. package/rules/abie/docs/fix.md +8 -8
  12. package/rules/abie/docs/index.md +4 -3
  13. package/rules/abie/docs/main.md +29 -0
  14. package/rules/abie/js/docs/index.md +6 -6
  15. package/rules/abie/lib/docs/index.md +9 -9
  16. package/rules/abie/{fix.mjs → main.mjs} +5 -3
  17. package/rules/adr/docs/index.md +1 -0
  18. package/rules/adr/docs/main.md +29 -0
  19. package/rules/adr/{fix.mjs → main.mjs} +5 -3
  20. package/rules/bun/docs/fix.md +5 -5
  21. package/rules/bun/docs/index.md +4 -3
  22. package/rules/bun/docs/main.md +30 -0
  23. package/rules/bun/js/docs/index.md +2 -2
  24. package/rules/bun/js/docs/layout.md +11 -36
  25. package/rules/bun/{fix.mjs → main.mjs} +5 -3
  26. package/rules/capacitor/docs/fix.md +10 -10
  27. package/rules/capacitor/docs/index.md +4 -3
  28. package/rules/capacitor/docs/main.md +29 -0
  29. package/rules/capacitor/js/docs/index.md +2 -2
  30. package/rules/capacitor/{fix.mjs → main.mjs} +5 -3
  31. package/rules/changelog/docs/fix.md +11 -11
  32. package/rules/changelog/docs/index.md +4 -3
  33. package/rules/changelog/docs/main.md +27 -0
  34. package/rules/changelog/js/docs/consistency.md +12 -12
  35. package/rules/changelog/js/docs/index.md +2 -2
  36. package/rules/changelog/lib/docs/index.md +2 -2
  37. package/rules/changelog/main.mjs +20 -0
  38. package/rules/ci4/docs/fix.md +4 -4
  39. package/rules/ci4/docs/index.md +4 -3
  40. package/rules/ci4/docs/main.md +30 -0
  41. package/rules/ci4/js/docs/index.md +2 -2
  42. package/rules/ci4/main.mjs +20 -0
  43. package/rules/doc-files/docs/index.md +4 -3
  44. package/rules/doc-files/docs/main.md +31 -0
  45. package/rules/doc-files/js/docgen-crc.mjs +2 -8
  46. package/rules/doc-files/js/docgen-extract.mjs +5 -3
  47. package/rules/doc-files/js/docgen-files-batch.mjs +63 -4
  48. package/rules/doc-files/js/docgen-gen.mjs +11 -3
  49. package/rules/doc-files/js/docgen-judge-measure.mjs +67 -18
  50. package/rules/doc-files/js/docgen-judge.mjs +8 -1
  51. package/rules/doc-files/js/docgen-scan.mjs +99 -11
  52. package/rules/doc-files/js/docs/docgen-crc.md +25 -14
  53. package/rules/doc-files/js/docs/docgen-extract.md +15 -13
  54. package/rules/doc-files/js/docs/docgen-files-batch.md +15 -15
  55. package/rules/doc-files/js/docs/docgen-gen.md +15 -26
  56. package/rules/doc-files/js/docs/docgen-judge-measure.md +14 -12
  57. package/rules/doc-files/js/docs/docgen-scan.md +34 -34
  58. package/rules/doc-files/js/docs/index.md +16 -15
  59. package/rules/doc-files/js/docs/run-lint.md +27 -0
  60. package/rules/doc-files/{lint/lint.mjs → js/run-lint.mjs} +23 -9
  61. package/rules/doc-files/{js/lint.mjs → main.mjs} +60 -10
  62. package/rules/docker/docs/fix.md +6 -6
  63. package/rules/docker/docs/index.md +4 -3
  64. package/rules/docker/docs/main.md +28 -0
  65. package/rules/docker/js/docs/index.md +2 -2
  66. package/rules/docker/js/docs/lint.md +26 -54
  67. package/rules/docker/js/lint.mjs +11 -0
  68. package/rules/docker/lib/docker-hadolint.mjs +1 -1
  69. package/rules/docker/lib/docs/docker-hadolint.md +16 -173
  70. package/rules/docker/lib/docs/index.md +5 -5
  71. package/rules/docker/main.mjs +20 -0
  72. package/rules/efes/docs/fix.md +8 -8
  73. package/rules/efes/docs/index.md +4 -3
  74. package/rules/efes/docs/main.md +29 -0
  75. package/rules/efes/main.mjs +20 -0
  76. package/rules/feedback/docs/fix.md +5 -5
  77. package/rules/feedback/docs/index.md +4 -3
  78. package/rules/feedback/docs/main.md +30 -0
  79. package/rules/feedback/main.mjs +20 -0
  80. package/rules/ga/docs/fix.md +5 -5
  81. package/rules/ga/docs/index.md +4 -3
  82. package/rules/ga/docs/main.md +29 -0
  83. package/rules/ga/js/docs/index.md +3 -3
  84. package/rules/ga/{lint/lint.mjs → main.mjs} +36 -10
  85. package/rules/graphql/docs/fix.md +8 -8
  86. package/rules/graphql/docs/index.md +4 -3
  87. package/rules/graphql/docs/main.md +36 -0
  88. package/rules/graphql/js/docs/index.md +2 -2
  89. package/rules/graphql/lib/docs/index.md +2 -2
  90. package/rules/graphql/main.mjs +20 -0
  91. package/rules/hasura/docs/fix.md +11 -11
  92. package/rules/hasura/docs/index.md +4 -3
  93. package/rules/hasura/docs/main.md +30 -0
  94. package/rules/hasura/js/docs/index.md +2 -2
  95. package/rules/hasura/main.mjs +20 -0
  96. package/rules/image-avif/docs/fix.md +3 -3
  97. package/rules/image-avif/docs/index.md +4 -3
  98. package/rules/image-avif/docs/main.md +30 -0
  99. package/rules/image-avif/js/docs/avif_generation.md +20 -233
  100. package/rules/image-avif/js/docs/index.md +2 -2
  101. package/rules/image-avif/main.mjs +20 -0
  102. package/rules/image-compress/docs/fix.md +2 -2
  103. package/rules/image-compress/docs/index.md +4 -3
  104. package/rules/image-compress/docs/main.md +29 -0
  105. package/rules/image-compress/js/docs/index.md +3 -3
  106. package/rules/image-compress/js/docs/package_setup.md +12 -11
  107. package/rules/image-compress/{js/lint.mjs → main.mjs} +21 -5
  108. package/rules/js-bun-db/docs/fix.md +5 -5
  109. package/rules/js-bun-db/docs/index.md +4 -3
  110. package/rules/js-bun-db/docs/main.md +30 -0
  111. package/rules/js-bun-db/js/docs/index.md +2 -2
  112. package/rules/js-bun-db/lib/docs/index.md +2 -2
  113. package/rules/js-bun-db/main.mjs +20 -0
  114. package/rules/js-bun-redis/docs/fix.md +6 -6
  115. package/rules/js-bun-redis/docs/index.md +4 -3
  116. package/rules/js-bun-redis/docs/main.md +29 -0
  117. package/rules/js-bun-redis/js/docs/index.md +2 -2
  118. package/rules/js-bun-redis/lib/docs/index.md +2 -2
  119. package/rules/js-bun-redis/main.mjs +20 -0
  120. package/rules/js-lint/docs/fix.md +9 -9
  121. package/rules/js-lint/docs/index.md +4 -3
  122. package/rules/js-lint/docs/main.md +29 -0
  123. package/rules/js-lint/js/check.mjs +268 -0
  124. package/rules/js-lint/js/docs/check.md +39 -0
  125. package/rules/js-lint/js/docs/index.md +4 -4
  126. package/rules/js-lint/js/docs/tooling.md +12 -32
  127. package/rules/js-lint/js/tooling.mjs +1 -265
  128. package/rules/js-lint/{js/lint.mjs → main.mjs} +19 -2
  129. package/rules/js-lint-ci/docs/fix.md +3 -3
  130. package/rules/js-lint-ci/docs/index.md +4 -3
  131. package/rules/js-lint-ci/docs/main.md +27 -0
  132. package/rules/js-lint-ci/js/docs/index.md +2 -2
  133. package/rules/js-lint-ci/main.mjs +33 -0
  134. package/rules/js-mssql/docs/fix.md +5 -5
  135. package/rules/js-mssql/docs/index.md +4 -3
  136. package/rules/js-mssql/docs/main.md +30 -0
  137. package/rules/js-mssql/js/docs/index.md +2 -2
  138. package/rules/js-mssql/lib/docs/index.md +2 -2
  139. package/rules/js-mssql/main.mjs +20 -0
  140. package/rules/js-run/docs/fix.md +8 -8
  141. package/rules/js-run/docs/index.md +4 -3
  142. package/rules/js-run/docs/main.md +30 -0
  143. package/rules/js-run/js/docs/index.md +2 -2
  144. package/rules/js-run/lib/docs/index.md +7 -7
  145. package/rules/js-run/main.mjs +20 -0
  146. package/rules/k8s/docs/fix.md +4 -4
  147. package/rules/k8s/docs/index.md +4 -3
  148. package/rules/k8s/docs/main.md +40 -0
  149. package/rules/k8s/js/docs/index.md +12 -0
  150. package/rules/k8s/{lint/lint.mjs → main.mjs} +32 -10
  151. package/rules/nginx-default-tpl/docs/fix.md +7 -7
  152. package/rules/nginx-default-tpl/docs/index.md +4 -3
  153. package/rules/nginx-default-tpl/docs/main.md +30 -0
  154. package/rules/nginx-default-tpl/js/docs/index.md +2 -2
  155. package/rules/nginx-default-tpl/js/docs/template.md +2 -2
  156. package/rules/nginx-default-tpl/main.mjs +20 -0
  157. package/rules/npm-module/docs/fix.md +8 -8
  158. package/rules/npm-module/docs/index.md +4 -3
  159. package/rules/npm-module/docs/main.md +29 -0
  160. package/rules/npm-module/js/docs/index.md +5 -5
  161. package/rules/npm-module/js/docs/rule_meta.md +17 -16
  162. package/rules/npm-module/js/header_doc_pointer.mjs +1 -3
  163. package/rules/npm-module/js/rule_meta.mjs +13 -3
  164. package/rules/npm-module/main.mjs +20 -0
  165. package/rules/php/docs/fix.md +6 -6
  166. package/rules/php/docs/index.md +4 -3
  167. package/rules/php/docs/main.md +33 -0
  168. package/rules/php/js/docs/index.md +3 -3
  169. package/rules/php/js/docs/tooling.md +10 -10
  170. package/rules/php/{lint/lint.mjs → main.mjs} +32 -6
  171. package/rules/python/docs/fix.md +11 -11
  172. package/rules/python/docs/index.md +4 -3
  173. package/rules/python/docs/main.md +31 -0
  174. package/rules/python/js/docs/index.md +3 -3
  175. package/rules/python/js/docs/tooling.md +17 -17
  176. package/rules/python/{lint/lint.mjs → main.mjs} +31 -6
  177. package/rules/rego/docs/fix.md +5 -5
  178. package/rules/rego/docs/index.md +4 -3
  179. package/rules/rego/docs/main.md +37 -0
  180. package/rules/rego/js/docs/index.md +3 -3
  181. package/rules/rego/{lint/lint.mjs → main.mjs} +27 -5
  182. package/rules/release/docs/index.md +5 -4
  183. package/rules/release/docs/main.md +29 -0
  184. package/rules/release/docs/release.md +0 -3
  185. package/rules/release/lib/docs/index.md +4 -4
  186. package/rules/release/release.mdc +10 -0
  187. package/rules/rust/docs/fix.md +4 -4
  188. package/rules/rust/docs/index.md +4 -3
  189. package/rules/rust/docs/main.md +27 -0
  190. package/rules/rust/js/docs/index.md +3 -3
  191. package/rules/rust/lib/docs/index.md +2 -2
  192. package/rules/rust/{js/lint.mjs → main.mjs} +27 -4
  193. package/rules/security/docs/fix.md +6 -6
  194. package/rules/security/docs/index.md +4 -3
  195. package/rules/security/docs/main.md +28 -0
  196. package/rules/security/js/docs/index.md +4 -4
  197. package/rules/security/main.mjs +45 -0
  198. package/rules/style-lint/docs/fix.md +3 -3
  199. package/rules/style-lint/docs/index.md +4 -3
  200. package/rules/style-lint/docs/main.md +29 -0
  201. package/rules/style-lint/js/docs/index.md +3 -3
  202. package/rules/style-lint/{js/lint.mjs → main.mjs} +19 -1
  203. package/rules/tauri/docs/fix.md +11 -11
  204. package/rules/tauri/docs/index.md +4 -3
  205. package/rules/tauri/docs/main.md +29 -0
  206. package/rules/tauri/js/docs/index.md +3 -3
  207. package/rules/tauri/main.mjs +20 -0
  208. package/rules/test/docs/fix.md +5 -5
  209. package/rules/test/docs/index.md +4 -3
  210. package/rules/test/docs/main.md +30 -0
  211. package/rules/test/js/data/stryker_config/docs/index.md +4 -4
  212. package/rules/test/js/data/vitest_config/docs/index.md +2 -2
  213. package/rules/test/js/docs/index.md +7 -7
  214. package/rules/test/main.mjs +20 -0
  215. package/rules/text/docs/fix.md +11 -11
  216. package/rules/text/docs/index.md +4 -3
  217. package/rules/text/docs/main.md +29 -0
  218. package/rules/text/{lint → js}/cspell-fix.mjs +7 -2
  219. package/rules/text/js/docs/cspell-fix.md +30 -0
  220. package/rules/text/js/docs/formatting.md +12 -45
  221. package/rules/text/js/docs/index.md +8 -4
  222. package/rules/text/js/docs/run-dotenv-linter.md +31 -0
  223. package/rules/text/js/docs/run-shellcheck.md +28 -0
  224. package/rules/text/js/docs/run-v8r.md +29 -0
  225. package/rules/text/{lint/lint.mjs → main.mjs} +41 -10
  226. package/rules/tool-surface/docs/index.md +4 -3
  227. package/rules/tool-surface/docs/main.md +29 -0
  228. package/rules/tool-surface/main.mjs +20 -0
  229. package/rules/tool-surface/meta.json +6 -1
  230. package/rules/vue/docs/fix.md +6 -6
  231. package/rules/vue/docs/index.md +4 -3
  232. package/rules/vue/docs/main.md +29 -0
  233. package/rules/vue/js/docs/index.md +2 -2
  234. package/rules/vue/lib/docs/index.md +2 -2
  235. package/rules/vue/main.mjs +20 -0
  236. package/rules/worktree/docs/fix.md +11 -11
  237. package/rules/worktree/docs/index.md +4 -3
  238. package/rules/worktree/docs/main.md +28 -0
  239. package/rules/worktree/main.mjs +20 -0
  240. package/scripts/coverage-classify/docs/index.md +6 -6
  241. package/scripts/dispatcher/docs/index.md +2 -2
  242. package/scripts/docs/index.md +16 -15
  243. package/scripts/docs/post-tool-use-check.md +29 -0
  244. package/scripts/docs/sync-claude-config.md +64 -92
  245. package/scripts/lib/adr/docs/normalize-cli.md +0 -3
  246. package/scripts/lib/adr/docs/normalize-pipeline.md +0 -3
  247. package/scripts/lib/docs/gha-workflow.md +25 -317
  248. package/scripts/lib/docs/index.md +36 -35
  249. package/scripts/lib/docs/list-project-rules-mdc.md +5 -4
  250. package/scripts/lib/docs/list-rule-ids.md +15 -148
  251. package/scripts/lib/docs/read-n-cursor-config-lite.md +12 -16
  252. package/scripts/lib/docs/run-lint-step.md +13 -13
  253. package/scripts/lib/docs/run-lint.md +30 -0
  254. package/scripts/lib/docs/run-rule-cli.md +14 -10
  255. package/scripts/lib/docs/run-standard-lint.md +29 -10
  256. package/scripts/lib/docs/run-standard-rule.md +12 -11
  257. package/scripts/lib/docs/timing-summary.md +11 -12
  258. package/scripts/lib/docs/worktree-notice.md +0 -3
  259. package/scripts/lib/fix/analyze-escalation.mjs +4 -1
  260. package/scripts/lib/fix/docs/index.md +11 -10
  261. package/scripts/lib/fix/docs/orchestrator.md +23 -18
  262. package/scripts/lib/fix/docs/run-conformance-check.md +33 -0
  263. package/scripts/lib/fix/docs/run-fix-check.md +3 -3
  264. package/scripts/lib/fix/docs/t0.md +10 -9
  265. package/scripts/lib/fix/orchestrator.mjs +31 -8
  266. package/scripts/lib/fix/{run-fix-check.mjs → run-conformance-check.mjs} +13 -13
  267. package/scripts/lib/fix/t0.mjs +6 -3
  268. package/scripts/lib/list-project-rules-mdc.mjs +1 -1
  269. package/scripts/lib/list-rule-ids.mjs +12 -3
  270. package/scripts/lib/read-n-cursor-config-lite.mjs +2 -2
  271. package/{rules/lint/js/orchestrate.mjs → scripts/lib/run-lint.mjs} +42 -22
  272. package/scripts/lib/run-rule-cli.mjs +4 -4
  273. package/scripts/lib/run-standard-lint.mjs +19 -6
  274. package/scripts/lib/run-standard-rule.mjs +4 -4
  275. package/scripts/lib/timing-summary.mjs +1 -1
  276. package/scripts/{post-tool-use-fix.mjs → post-tool-use-check.mjs} +9 -9
  277. package/scripts/sync-claude-config.mjs +2 -2
  278. package/scripts/utils/docs/index.md +14 -14
  279. package/skills/doc-aggregate/js/docs/index.md +3 -3
  280. package/skills/doc-files/.changes/260612-0002.md +1 -0
  281. package/skills/doc-files/.changes/260612-0006.md +1 -0
  282. package/skills/doc-files/.changes/260612-0008.md +1 -0
  283. package/skills/doc-files/.changes/260612-0012.md +1 -0
  284. package/skills/doc-files/.changes/260612-0031.md +1 -0
  285. package/skills/doc-files/.changes/260612-0036.md +1 -0
  286. package/skills/doc-files/.changes/260612-0114.md +1 -0
  287. package/skills/start-check/js/docs/index.md +2 -2
  288. package/skills/taze/js/docs/index.md +2 -2
  289. package/types/bin/n-cursor.d.ts +1 -1
  290. package/rules/changelog/fix.mjs +0 -18
  291. package/rules/ci4/fix.mjs +0 -18
  292. package/rules/doc-files/fix.mjs +0 -19
  293. package/rules/doc-files/js/docs/lint.md +0 -34
  294. package/rules/doc-files/lint/docs/index.md +0 -11
  295. package/rules/doc-files/lint/docs/lint.md +0 -35
  296. package/rules/docker/fix.mjs +0 -18
  297. package/rules/docker/lint/docs/index.md +0 -11
  298. package/rules/docker/lint/docs/lint.md +0 -200
  299. package/rules/docker/lint/lint.mjs +0 -95
  300. package/rules/efes/fix.mjs +0 -18
  301. package/rules/feedback/fix.mjs +0 -18
  302. package/rules/ga/fix.mjs +0 -18
  303. package/rules/ga/js/docs/lint.md +0 -20
  304. package/rules/ga/js/lint.mjs +0 -12
  305. package/rules/ga/lint/docs/index.md +0 -11
  306. package/rules/ga/lint/docs/lint.md +0 -31
  307. package/rules/graphql/fix.mjs +0 -18
  308. package/rules/hasura/fix.mjs +0 -18
  309. package/rules/image-avif/fix.mjs +0 -18
  310. package/rules/image-compress/fix.mjs +0 -18
  311. package/rules/image-compress/js/docs/lint.md +0 -24
  312. package/rules/js-bun-db/fix.mjs +0 -18
  313. package/rules/js-bun-redis/fix.mjs +0 -18
  314. package/rules/js-lint/fix.mjs +0 -18
  315. package/rules/js-lint/js/docs/lint.md +0 -32
  316. package/rules/js-lint-ci/fix.mjs +0 -18
  317. package/rules/js-lint-ci/js/docs/lint.md +0 -22
  318. package/rules/js-lint-ci/js/lint.mjs +0 -15
  319. package/rules/js-mssql/fix.mjs +0 -18
  320. package/rules/js-run/fix.mjs +0 -18
  321. package/rules/k8s/fix.mjs +0 -18
  322. package/rules/k8s/js/lint.mjs +0 -14
  323. package/rules/k8s/lint/docs/index.md +0 -11
  324. package/rules/k8s/lint/docs/lint.md +0 -413
  325. package/rules/lint/docs/fix.md +0 -25
  326. package/rules/lint/docs/index.md +0 -11
  327. package/rules/lint/fix.mjs +0 -18
  328. package/rules/lint/js/docs/index.md +0 -11
  329. package/rules/lint/js/docs/orchestrate.md +0 -31
  330. package/rules/lint/meta.json +0 -1
  331. package/rules/nginx-default-tpl/fix.mjs +0 -18
  332. package/rules/npm-module/fix.mjs +0 -18
  333. package/rules/php/fix.mjs +0 -18
  334. package/rules/php/js/docs/lint.md +0 -20
  335. package/rules/php/js/lint.mjs +0 -15
  336. package/rules/php/lint/docs/index.md +0 -11
  337. package/rules/php/lint/docs/lint.md +0 -219
  338. package/rules/python/fix.mjs +0 -18
  339. package/rules/python/js/docs/lint.md +0 -21
  340. package/rules/python/js/lint.mjs +0 -14
  341. package/rules/python/lint/docs/index.md +0 -11
  342. package/rules/python/lint/docs/lint.md +0 -29
  343. package/rules/rego/fix.mjs +0 -18
  344. package/rules/rego/js/docs/lint.md +0 -21
  345. package/rules/rego/js/lint.mjs +0 -12
  346. package/rules/rego/lint/docs/index.md +0 -11
  347. package/rules/rego/lint/docs/lint.md +0 -208
  348. package/rules/rust/fix.mjs +0 -18
  349. package/rules/rust/js/docs/lint.md +0 -21
  350. package/rules/security/fix.mjs +0 -18
  351. package/rules/security/js/docs/lint.md +0 -175
  352. package/rules/security/js/lint.mjs +0 -26
  353. package/rules/style-lint/fix.mjs +0 -18
  354. package/rules/style-lint/js/docs/lint.md +0 -31
  355. package/rules/tauri/fix.mjs +0 -18
  356. package/rules/test/fix.mjs +0 -18
  357. package/rules/text/fix.mjs +0 -18
  358. package/rules/text/js/docs/lint.md +0 -23
  359. package/rules/text/js/lint.mjs +0 -15
  360. package/rules/text/lint/docs/cspell-fix.md +0 -32
  361. package/rules/text/lint/docs/index.md +0 -15
  362. package/rules/text/lint/docs/lint.md +0 -36
  363. package/rules/text/lint/docs/run-dotenv-linter.md +0 -161
  364. package/rules/text/lint/docs/run-shellcheck.md +0 -216
  365. package/rules/text/lint/docs/run-v8r.md +0 -201
  366. package/rules/tool-surface/fix.mjs +0 -18
  367. package/rules/vue/fix.mjs +0 -18
  368. package/rules/worktree/fix.mjs +0 -18
  369. /package/rules/release/{fix.mjs → main.mjs} +0 -0
  370. /package/rules/text/{lint → js}/run-dotenv-linter.mjs +0 -0
  371. /package/rules/text/{lint → js}/run-shellcheck.mjs +0 -0
  372. /package/rules/text/{lint → js}/run-v8r.mjs +0 -0
@@ -12,11 +12,11 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Приймає контекст прогону.
16
- * Виконує застосування JS-занепокоєних.
17
- * Застосовує політику.
18
- * Генерує посилання MDC.
19
- * Повертає результат прогону.
15
+ - Приймає контекст прогону.
16
+ - Виконує застосування JS-занепокоєних.
17
+ - Застосовує політику.
18
+ - Генерує посилання MDC.
19
+ - Повертає результат прогону.
20
20
 
21
21
  ## Публічний API
22
22
 
@@ -6,6 +6,7 @@ resource: npm/rules/bun/
6
6
 
7
7
  # npm/rules/bun
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
+ | [main.mjs](main.md) | JS Module |
@@ -0,0 +1,30 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/bun/main.mjs
5
+ docgen:
6
+ crc: 762b6875
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль валідує дані, застосовуючи правила, визначені у конфігурації meta.json, та збирає посилання на MDC. При виклику публічної функції run він здійснює повний запуск правила, включаючи завантаження конфігурацій та застосування білих списків. Результат виконання повертається як код виходу процесу.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Викликається функція `run` для виконання перевірки.
18
+ 2. Виконання перевірки включає застосування правил, обробку логіки, визначену в конфігурації `meta.json`, та збір посилань на MDC.
19
+ 3. Якщо код виконується як окремий інструмент (standalone), ініціюється повний запуск правила.
20
+ 4. Повний запуск правила включає завантаження конфігурацій, застосування білих списків та підбиття підсумків.
21
+ 5. Результат виконання повертається як код виходу процесу.
22
+
23
+ ## Публічний API
24
+
25
+ run — виконує основну логіку правила: застосовує перевірки до коду, аналізує відповідність політиці та перевіряє посилання на метадані.
26
+
27
+ ## Гарантії поведінки
28
+
29
+ - Read-only: не виконує операцій запису (ФС/БД).
30
+ - Кешує результати в межах одного прогону.
@@ -6,6 +6,6 @@ resource: npm/rules/bun/js/
6
6
 
7
7
  # npm/rules/bun/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ----------------------- | --------- |
11
11
  | [layout.mjs](layout.md) | JS Module |
@@ -3,51 +3,26 @@ type: JS Module
3
3
  title: layout.mjs
4
4
  resource: npm/rules/bun/js/layout.mjs
5
5
  docgen:
6
- crc: ba2a6730
6
+ crc: 468d3430
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
7
8
  score: 100
8
9
  ---
9
10
 
10
- Файл надає інструмент для перевірки відповідності даних визначеному контракту. Функція `check` (bun.mdc) виконує перевірку стану даних і повертає логічний результат, що вказує на успішність виконання перевірки. У разі невдачі функція повертає `false` або `null` замість генерації винятку.
11
+ Модуль перевіряє наявність критично важливих файлів та директорій у корені репозиторію для забезпечення коректної роботи системи. Він валідує наявність файлів залежностей, директорії `.yarn`, `bun.lock`, `bunfig.toml`, `package.json` та `package-lock.json` відповідно до вимог, зазначених у (bun.mdc). Результат перевірки повертається як код завершення.
11
12
 
12
13
  ## Поведінка
13
14
 
14
- 1. Завантаження конфігурації
15
- Завантажувач зчитує налаштування правил та вимкнених правил з файлу `.n-cursor.json` у корені репозиторію. Якщо файл відсутній, повертається порожній набір правил.
16
-
17
- 2. Перевірка зв'язку скриптів
18
- Система перевіряє зв'язок між ідентифікаторами правил, визначеними у конфігурації, та наявністю скриптів у кореневому `package.json`.
19
-
20
- 3. Оцінка стану власників
21
- Оцінювач визначає стан кожного правила-власника, порівнюючи активні правила з налаштуваннями. Якщо активне правило присутнє, результат позначається як успішний. Якщо власник відсутній у налаштуваннях, результат позначається як провал, якщо власник не був вимкнений.
22
-
23
- 4. Перевірка ланцюжків виконання
24
- Система перевіряє, чи згадує ланцюжок виконання `bun run <скрипт>` конкретний скрипт. Ця перевірка виконується для уникнення хибних спрацьовувань через префікси.
25
-
26
- 5. Перевірка відповідності
27
- Основна перевірка встановлює, що якщо скрипт присутній у `package.json`, він повинен бути активним у конфігурації. Якщо скрипт присутній, але власники не активні, система вимагає видалення скрипта з кореневого файлу.
28
-
29
- 6. Перевірка ланцюжків та вимкнених правил
30
- Якщо ланцюжок виконання `bun run <скрипт>` присутній, але жоден власник не активний, система вимагає видалення з ланцюжка виконання.
31
-
32
- 7. Перевірка відсутності
33
- Якщо скрипт відсутній і власники не активні, система позначає це як успішне проходження.
34
-
35
- 8. Перевірка заборонених файлів
36
- Система перевіряє наявність заборонених файлів у корені репозиторію, включаючи файли блокування залежностей та директорії `.yarn`.
37
-
38
- 9. Перевірка залежностей
39
- Система перевіряє наявність необхідного файлу `bun.lock`. Відсутність цього файлу є провалом, що вимагає запуску `bun i`.
40
-
41
- 10. Перевірка конфігурації Bun
42
- Система перевіряє наявність файлу `bunfig.toml`, який використовується для перевірки структури, необхідної для використання `linker = "hoisted"` у `bun.mdc`.
15
+ 1. Перевіряє наявність файлів-блоків залежностей (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`, `.yarnrc.yml`) у корені репозиторію. Якщо знайдено, повідомляє про заборонений файл. Якщо не знайдено, підтверджує відсутність.
16
+ 2. Перевіряє наявність директорії `.yarn` у корені репозиторію. Якщо знайдено, повідомляє про заборонену директорію. Якщо не знайдено, підтверджує відсутність.
17
+ 3. Перевіряє наявність файлу `bun.lock` у корені репозиторію. Якщо знайдено, підтверджує його наявність. Якщо відсутній, повідомляє про необхідність запуску `bun i`.
18
+ 4. Перевіряє наявність файлу `bunfig.toml` у корені репозиторію. Якщо знайдено, підтверджує його наявність (структуру перевіряє інструмент `npx @nitra/cursor fix → bun.bunfig` відповідно до (bun.mdc)). Якщо відсутній, повідомляє про необхідність створення з конфігурацією `[install] linker = "hoisted"` (bun.mdc).
19
+ 5. Перевіряє наявність файлу `package.json` у корені репозиторію. Якщо відсутній, повідомляє про це.
20
+ 6. Повертає код завершення, що вказує на успішне виконання перевірки (0) або на наявність проблем (1).
43
21
 
44
22
  ## Публічний API
45
23
 
46
- check — перевіряє, чи відповідає проєкт вимогам bun.mdc
24
+ check — перевіряє відповідність проєкту стандартам bun.mdc
47
25
 
48
26
  ## Гарантії поведінки
49
27
 
50
- - Read-only: файл не виконує операцій запису у файлову систему.
51
- - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
52
- - За невдалої перевірки повертає `false`/`null` замість винятку.
53
- - Не звертається до мережі.
28
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -2,7 +2,9 @@ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
2
2
  import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
3
3
 
4
4
  /**
5
- * Запускає правило: applies JS-concerns policy mdc-refs (через runStandardRule).
5
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` check-поверхня: applies
6
+ * JS-concerns → policy → mdc-refs (через runStandardRule). Lint-поверхні правило не має
7
+ * (`meta.json` без `lint`), тож експорту `lint` тут немає.
6
8
  * Library mode: викликається CLI orchestration через `import + run(ctx)`.
7
9
  * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону (walkCache тощо)
8
10
  * @returns {Promise<number>} 0 — OK, 1 — порушення
@@ -12,7 +14,7 @@ export function run(ctx) {
12
14
  }
13
15
 
14
16
  if (isRunAsCli(import.meta.url)) {
15
- // Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
16
- // (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
17
+ // Standalone: bun rules/<id>/main.mjs — повний еквівалент `npx @nitra/cursor check <id>`
18
+ // (config-loading + whitelist + summary): library-роль (run) + standalone-роль (CLI-блок).
17
19
  process.exitCode = await runRuleCli(import.meta.dirname)
18
20
  }
@@ -12,17 +12,17 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Приймає контекст прогону.
16
- * Виконує застосування JS-занепокоєних.
17
- * Застосовує політику.
18
- * Генерує посилання MDC.
19
- * Повертає результат.
15
+ - Приймає контекст прогону.
16
+ - Виконує застосування JS-занепокоєних.
17
+ - Застосовує політику.
18
+ - Генерує посилання MDC.
19
+ - Повертає результат.
20
20
  2. Запуск у режимі CLI.
21
- * Виконується як повний еквівалент команди `npx @nitra/cursor fix <id>`.
22
- * Виконує завантаження конфігурації.
23
- * Виконує перевірку дозволених записів.
24
- * Генерує зведену інформацію.
25
- * Використовує `process.exitCode` для визначення виходу.
21
+ - Виконується як повний еквівалент команди `npx @nitra/cursor fix <id>`.
22
+ - Виконує завантаження конфігурації.
23
+ - Виконує перевірку дозволених записів.
24
+ - Генерує зведену інформацію.
25
+ - Використовує `process.exitCode` для визначення виходу.
26
26
 
27
27
  ## Публічний API
28
28
 
@@ -6,6 +6,7 @@ resource: npm/rules/capacitor/
6
6
 
7
7
  # npm/rules/capacitor
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
+ | [main.mjs](main.md) | JS Module |
@@ -0,0 +1,29 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/capacitor/main.mjs
5
+ docgen:
6
+ crc: 762b6875
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль застосовує політику та логіку, визначену в конфігурації meta.json, для валідації. При запуску як CLI ініціюється повний запуск правила, що включає завантаження конфігурацій, застосування білих списків та підбиття підсумків. Модуль є лише для читання (не виконує записів у файлову систему чи базу даних) і використовує кешування даних у межах одного прогону.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Викликається функція `run` для виконання перевірки.
18
+ 2. Виконання перевірки включає застосування політики, обробку логіки, пов'язаної з JavaScript, та посилання на MDC.
19
+ 3. Якщо код виконується як окрема утиліта (CLI), ініціюється повний запуск правила.
20
+ 4. Запуск правила включає завантаження конфігурацій, застосування білих списків та підбиття підсумків.
21
+
22
+ ## Публічний API
23
+
24
+ run — виконує основну логіку правила: застосовує перевірки JS-зацікавленостей, політики та посилання на MDC.
25
+
26
+ ## Гарантії поведінки
27
+
28
+ - Read-only: не виконує операцій запису (ФС/БД).
29
+ - Кешує результати в межах одного прогону.
@@ -6,6 +6,6 @@ resource: npm/rules/capacitor/js/
6
6
 
7
7
  # npm/rules/capacitor/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ----------------------------- | --------- |
11
11
  | [platforms.mjs](platforms.md) | JS Module |
@@ -2,7 +2,9 @@ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
2
2
  import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
3
3
 
4
4
  /**
5
- * Запускає правило: applies JS-concerns policy mdc-refs (через runStandardRule).
5
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` check-поверхня: applies
6
+ * JS-concerns → policy → mdc-refs (через runStandardRule). Lint-поверхні правило не має
7
+ * (`meta.json` без `lint`), тож експорту `lint` тут немає.
6
8
  * Library mode: викликається CLI orchestration через `import + run(ctx)`.
7
9
  * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону (walkCache тощо)
8
10
  * @returns {Promise<number>} 0 — OK, 1 — порушення
@@ -12,7 +14,7 @@ export function run(ctx) {
12
14
  }
13
15
 
14
16
  if (isRunAsCli(import.meta.url)) {
15
- // Standalone: bun rules/<id>/fix.mjs — повний еквівалент `npx @nitra/cursor fix <id>`
16
- // (config-loading + whitelist + summary). Дві ролі fix.mjs: library (run) + standalone (main).
17
+ // Standalone: bun rules/<id>/main.mjs — повний еквівалент `npx @nitra/cursor check <id>`
18
+ // (config-loading + whitelist + summary): library-роль (run) + standalone-роль (CLI-блок).
17
19
  process.exitCode = await runRuleCli(import.meta.dirname)
18
20
  }
@@ -12,18 +12,18 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Приймає контекст прогону.
16
- * Виконує застосування JS-занепокоєних.
17
- * Застосовує політику.
18
- * Генерує посилання MDC.
19
- * Повертає результат прогону.
15
+ - Приймає контекст прогону.
16
+ - Виконує застосування JS-занепокоєних.
17
+ - Застосовує політику.
18
+ - Генерує посилання MDC.
19
+ - Повертає результат прогону.
20
20
  2. Виконання у режимі CLI.
21
- * Виконується як окремий скрипт.
22
- * Еквівалент команди `npx @nitra/cursor fix <id>`.
23
- * Виконує завантаження конфігурації.
24
- * Виконує перевірку дозволених елементів.
25
- * Генерує зведену інформацію.
26
- * Виконує повний еквівалент `fix.mjs`.
21
+ - Виконується як окремий скрипт.
22
+ - Еквівалент команди `npx @nitra/cursor fix <id>`.
23
+ - Виконує завантаження конфігурації.
24
+ - Виконує перевірку дозволених елементів.
25
+ - Генерує зведену інформацію.
26
+ - Виконує повний еквівалент `fix.mjs`.
27
27
 
28
28
  ## Публічний API
29
29
 
@@ -6,6 +6,7 @@ resource: npm/rules/changelog/
6
6
 
7
7
  # npm/rules/changelog
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
+ | [main.mjs](main.md) | JS Module |
@@ -0,0 +1,27 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/changelog/main.mjs
5
+ docgen:
6
+ crc: 762b6875
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль відповідає за виконання політики, використовуючи дані з meta.json. Він забезпечує перевірку та застосування логіки, визначеної в конфігурації. Виклик функції run ініціює процес виконання правила, включаючи кешування даних у межах одного прогону.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Викликається для перевірки. Виконує застосування політики, перевірку JS-зацікавленостей та посилання на MDC.
18
+ 2. Якщо код виконується як окрема програма (CLI), запускається повний процес виконання правила, включаючи завантаження конфігурацій та підсумок.
19
+
20
+ ## Публічний API
21
+
22
+ run — виконує основну логіку правила: застосовує перевірки до коду, аналізує відповідність політикам та посиланням на метадані.
23
+
24
+ ## Гарантії поведінки
25
+
26
+ - Read-only: не виконує операцій запису (ФС/БД).
27
+ - Кешує результати в межах одного прогону.
@@ -16,19 +16,19 @@ docgen:
16
16
  3. Зчитує всі кореневі каталоги проектів у монорепо.
17
17
  4. Класифікує кожен проект як публікувальний (registryPublishable) або локальний.
18
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`.
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
27
  6. Для кожного локального проекту виконує перевірку:
28
- а. Зчитує маніфест проекту.
29
- б. Визначає точку порівняння на основі поточної гілки.
30
- в. Перевіряє, чи є релевантні зміни у проекті відносно точки порівняння.
31
- г. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
28
+ а. Зчитує маніфест проекту.
29
+ б. Визначає точку порівняння на основі поточної гілки.
30
+ в. Перевіряє, чи є релевантні зміни у проекті відносно точки порівняння.
31
+ г. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
32
32
  7. Повертає кінцевий код виходу, що відображає результат перевірки.
33
33
 
34
34
  ## Гарантії поведінки
@@ -6,6 +6,6 @@ resource: npm/rules/changelog/js/
6
6
 
7
7
  # npm/rules/changelog/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | --------------------------------- | --------- |
11
11
  | [consistency.mjs](consistency.md) | JS Module |
@@ -6,6 +6,6 @@ resource: npm/rules/changelog/lib/
6
6
 
7
7
  # npm/rules/changelog/lib
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ------------------------------------------- | --------- |
11
11
  | [package-manifest.mjs](package-manifest.md) | JS Module |
@@ -0,0 +1,20 @@
1
+ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
2
+ import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
3
+
4
+ /**
5
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня: applies →
6
+ * JS-concerns → policy → mdc-refs (через runStandardRule). Lint-поверхні правило не має
7
+ * (`meta.json` без `lint`), тож експорту `lint` тут немає.
8
+ * Library mode: викликається CLI orchestration через `import + run(ctx)`.
9
+ * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону (walkCache тощо)
10
+ * @returns {Promise<number>} 0 — OK, 1 — порушення
11
+ */
12
+ export function run(ctx) {
13
+ return runStandardRule(import.meta.dirname, ctx)
14
+ }
15
+
16
+ if (isRunAsCli(import.meta.url)) {
17
+ // Standalone: bun rules/<id>/main.mjs — повний еквівалент `npx @nitra/cursor check <id>`
18
+ // (config-loading + whitelist + summary): library-роль (run) + standalone-роль (CLI-блок).
19
+ process.exitCode = await runRuleCli(import.meta.dirname)
20
+ }
@@ -13,12 +13,12 @@ docgen:
13
13
  ## Поведінка
14
14
 
15
15
  1. Запуск правила.
16
- * Виклик runStandardRule з контекстом.
17
- * Повернення результату.
16
+ - Виклик runStandardRule з контекстом.
17
+ - Повернення результату.
18
18
 
19
19
  2. Запуск правила у режимі CLI.
20
- * Виклик runRuleCli з директорією модуля.
21
- * Вихід з процесом залежно від результату.
20
+ - Виклик runRuleCli з директорією модуля.
21
+ - Вихід з процесом залежно від результату.
22
22
 
23
23
  ## Публічний API
24
24
 
@@ -6,6 +6,7 @@ resource: npm/rules/ci4/
6
6
 
7
7
  # npm/rules/ci4
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
+ | [main.mjs](main.md) | JS Module |
@@ -0,0 +1,30 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/ci4/main.mjs
5
+ docgen:
6
+ crc: 762b6875
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль валідує дані відповідно до правил, використовуючи конфігурацію, визначену в meta.json. Він застосовує білий список та виконує логіку перевірки. При запуску як окрема програма, він повертає код виходу, що інформує про успіх чи виявлені порушення. Модуль є Read-only, тобто не здійснює записів у файлову систему чи бази даних. Кешування даних відбувається у межах одного прогону.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Викликається функція `run` для виконання перевірки.
18
+ 2. Виконання `run` застосовує логіку правила, включаючи обробку JS-запитань, політику та посилання на MDC.
19
+ 3. Якщо код виконується як окрема програма (CLI), ініціюється повний запуск правила.
20
+ 4. Повний запуск правила зчитує конфігурацію з `meta.json`, застосовує білий список та надає зведену інформацію.
21
+ 5. Результат виконання визначає код виходу процесу: 0 для успіху або 1 для виявлення порушень.
22
+
23
+ ## Публічний API
24
+
25
+ run — виконує основну логіку правила: застосовує перевірки, обробляє JS-залежності, застосовує політику та посилання MDC.
26
+
27
+ ## Гарантії поведінки
28
+
29
+ - Read-only: не виконує операцій запису (ФС/БД).
30
+ - Кешує результати в межах одного прогону.
@@ -6,6 +6,6 @@ resource: npm/rules/ci4/js/
6
6
 
7
7
  # npm/rules/ci4/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ----------------------------------------- | --------- |
11
11
  | [marksman_config.mjs](marksman_config.md) | JS Module |
@@ -0,0 +1,20 @@
1
+ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
2
+ import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
3
+
4
+ /**
5
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня: applies →
6
+ * JS-concerns → policy → mdc-refs (через runStandardRule). Lint-поверхні правило не має
7
+ * (`meta.json` без `lint`), тож експорту `lint` тут немає.
8
+ * Library mode: викликається CLI orchestration через `import + run(ctx)`.
9
+ * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону (walkCache тощо)
10
+ * @returns {Promise<number>} 0 — OK, 1 — порушення
11
+ */
12
+ export function run(ctx) {
13
+ return runStandardRule(import.meta.dirname, ctx)
14
+ }
15
+
16
+ if (isRunAsCli(import.meta.url)) {
17
+ // Standalone: bun rules/<id>/main.mjs — повний еквівалент `npx @nitra/cursor check <id>`
18
+ // (config-loading + whitelist + summary): library-роль (run) + standalone-роль (CLI-блок).
19
+ process.exitCode = await runRuleCli(import.meta.dirname)
20
+ }
@@ -6,6 +6,7 @@ resource: npm/rules/doc-files/
6
6
 
7
7
  # npm/rules/doc-files
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------- | --------- |
11
+ | [fix.mjs](fix.md) | JS Module |
12
+ | [main.mjs](main.md) | JS Module |
@@ -0,0 +1,31 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/doc-files/main.mjs
5
+ docgen:
6
+ crc: 64f215a5
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль перевіряє відповідність коду та документації, спираючись на конфігурацію `meta.json`. Функція `run` перевіряє консистентність між кодом та документацією. Функція `lint` перевіряє застарілі описи документації.
14
+
15
+ ## Поведінка
16
+
17
+ run виконує перевірку консистентності між кодом та документацією.
18
+
19
+ lint перевіряє, чи не застаріли описи документації, і може автоматично їх оновлювати, якщо це дозволено конфігурацією `meta.json`.
20
+
21
+ ## Публічний API
22
+
23
+ run — виконує основну перевірку, яка включає аналіз JS-задач, застосування політик та посилання на MDC.
24
+ lint — сканує файли документації на наявність застарілих елементів, з можливістю автоматичного виправлення за умови активації LLM.
25
+ llmFix — виконує добровільну генерацію виправлень за допомогою LLM, якщо це дозволено в конфігурації.
26
+
27
+ ## Гарантії поведінки
28
+
29
+ - Read-only: не виконує операцій запису (ФС/БД).
30
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
31
+ - За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
@@ -74,7 +74,7 @@ const EXT_TYPES = {
74
74
  '.ts': 'TS Module',
75
75
  '.vue': 'Vue Component',
76
76
  '.py': 'Python Module',
77
- '.rs': 'Rust Module',
77
+ '.rs': 'Rust Module'
78
78
  }
79
79
 
80
80
  /**
@@ -86,8 +86,6 @@ function typeForSource(sourcePath) {
86
86
  return EXT_TYPES[extname(sourcePath).toLowerCase()] ?? 'Source File'
87
87
  }
88
88
 
89
-
90
-
91
89
  /**
92
90
  * Нормалізує issues до YAML-безпечних кодів: бере фрагмент до першого пробілу
93
91
  * (зрізає людиночитні хвости помилок), відкидає порожні, обмежує кількість.
@@ -112,11 +110,7 @@ function issueCodes(issues) {
112
110
  * @returns {string} OKF-сумісний YAML frontmatter
113
111
  */
114
112
  export function buildDocFrontmatter(source, crc, quality = null, model = null) {
115
- const okfLines = [
116
- `type: ${typeForSource(source)}`,
117
- `title: ${basename(source)}`,
118
- `resource: ${source}`,
119
- ]
113
+ const okfLines = [`type: ${typeForSource(source)}`, `title: ${basename(source)}`, `resource: ${source}`]
120
114
 
121
115
  // docgen namespace: лише CRC-механіка і quality (source перенесено у resource)
122
116
  const docgenLines = [`crc: ${crc}`]
@@ -48,11 +48,13 @@ const FALSY_RETURN_RE = /catch[\s\S]{0,400}?return\s+(false|null|''|"")/
48
48
  // Мережа: окрім явного fetch/http, ловимо абстраговані клієнти (graphql/db/rpc/
49
49
  // octokit/.request/.query). Хибний false-negative тут = небезпечна гарантія
50
50
  // «без мережі», тож свідомо схиляємось до over-detection (м'якший бік помилки).
51
- const NETWORK_RE = /\bfetch\(|https?:\/\/|\bhttps?\.|axios|\bgot\(|graphql|\.request\(|\.query\(|\.mutate\(|octokit|node-fetch|undici|\bgrpc\b|websocket/i
51
+ const NETWORK_RE =
52
+ /\bfetch\(|https?:\/\/|\bhttps?\.|axios|\bgot\(|graphql|\.request\(|\.query\(|\.mutate\(|octokit|node-fetch|undici|\bgrpc\b|websocket/i
52
53
  // Будь-який `throw` назовні → НЕ можна гарантувати «fail-safe / без винятків».
53
54
  const THROW_RE = /\bthrow\s/
54
55
  // Запис у БД / зовнішню мутацію → НЕ read-only (навіть якщо нема ФС-запису).
55
- const MUTATION_RE = /\b(insert|update|delete|upsert|drop|destroy|save)[A-Za-z]*\s*[(,]|[Mm]utation\b|\bmut[A-Z]\w*|\.(save|create|update|delete|insert|destroy|mutate)\(/
56
+ const MUTATION_RE =
57
+ /\b(insert|update|delete|upsert|drop|destroy|save)[A-Za-z]*\s*[(,]|[Mm]utation\b|\bmut[A-Z]\w*|\.(save|create|update|delete|insert|destroy|mutate)\(/
56
58
  // Кеш — лише за ІМЕНОВАНИМ маркером (`cache`/`Cache`/`memoize`), не за будь-яким
57
59
  // `new Map()`: акумулятор (напр. `byPath = new Map()`) — не кеш, а хибна гарантія
58
60
  // «Кешує результати» гірша за пропуск (фабрикація > мовчання).
@@ -213,7 +215,7 @@ function extractMarkers(src) {
213
215
  return {
214
216
  // «Фабрикація > мовчання»: прапорець true лише за high-confidence; інакше
215
217
  // guaranteesFromMarkers/factsSummary його ОПУСКАЮТЬ (не стверджують протилежне).
216
- readOnly: !WRITE_FS_RE.test(src) && !MUTATION_RE.test(src), // ні ФС-запису, ні DB-мутацій
218
+ readOnly: !WRITE_FS_RE.test(src) && !MUTATION_RE.test(src), // ні ФС-запису, ні DB-мутацій
217
219
  catchesErrors: (CATCH_RE.test(src) || TRY_RE.test(src)) && !THROW_RE.test(src), // fail-safe лише якщо НЕ кидає
218
220
  returnsFalsyOnFail: FALSY_RETURN_RE.test(src) && !THROW_RE.test(src),
219
221
  network: NETWORK_RE.test(src),