@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,12 +12,12 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- - Вхід: контекст прогону.
16
- - Вихід: обіцянка, що повертає число. 0 означає успіх, 1 означає порушення.
15
+ - Вхід: контекст прогону.
16
+ - Вихід: обіцянка, що повертає число. 0 означає успіх, 1 означає порушення.
17
17
  2. Виконання правила у режимі CLI.
18
- - Умова: виконання через командний рядок.
19
- - Дія: повернення коду виходу з функції.
20
- - Вихід: встановлення коду виходу процесу.
18
+ - Умова: виконання через командний рядок.
19
+ - Дія: повернення коду виходу з функції.
20
+ - Вихід: встановлення коду виходу процесу.
21
21
 
22
22
  ## Публічний API
23
23
 
@@ -6,6 +6,7 @@ resource: npm/rules/rego/
6
6
 
7
7
  # npm/rules/rego
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,37 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/rego/main.mjs
5
+ docgen:
6
+ crc: e58082a1
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 90
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Файл реалізує конвеєр для лінтування Rego-полісів, що знаходяться у каталозі `npm/rules/` (де живуть Rego-полісі пакета `@nitra/cursor`). Конвеєр послідовно виконує три етапи перевірки: строгу компіляцію за допомогою `opa check --strict`, яка виявляє помилки компіляції, незадекларовані змінні та інші проблеми, які ігнорує `regal`; статичне лінтування за допомогою `regal lint` (згідно з https://docs.styra.com/regal), що перевіряє відповідність стилю та ідіоматичності Rego v1; та опціональний запуск юніт-тестів за допомогою `conftest verify` (як описано на https://www.conftest.dev/install/). Резолюція інструментів (`opa`, `regal`) здійснюється через механізм `ensureTool`, що забезпечує їх доступність у середовищі. Усі операції керуються конфігурацією, визначеною у `target.json`.
14
+
15
+ ## Поведінка
16
+
17
+ run виконує стандартну перевірку політики, застосовуючи логіку, пов'язану з JS-контекстами та посиланнями на MDC.
18
+
19
+ runLintRegoSteps запускає послідовні кроки лінтування Rego-полісі: `opa check --strict`, `regal lint` та опціонально `conftest verify` для файлів-тестів, якщо `conftest` доступний у PATH.
20
+
21
+ runLintRego серіалізує виконання кроків лінтування Rego, забезпечуючи дедуплікацію на основі стану git-дерева.
22
+
23
+ lint делегує виконання повного аналізу Rego-полісі функції runLintRego.
24
+
25
+ ## Публічний API
26
+
27
+ run — Основна точка входу правила, яка застосовує логіку до JS-зацікавлень, політики та посилання на MDC.
28
+
29
+ runLintRegoSteps — Виконує перевірку за допомогою `opa check --strict` та лінтинг за допомогою `regal lint` для визначених цілей. Зупиняє виконання з кодом 1, якщо попередні перевірки не пройшли.
30
+
31
+ runLintRego — Публічний інтерфейс для запуску лінтінгу Rego, що забезпечує дедуплікацію на основі стану репозиторію.
32
+
33
+ lint — Адаптер, що керує запуском лінтінгу Rego, делегуючи це `runLintRego`.
34
+
35
+ ## Гарантії поведінки
36
+
37
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -6,7 +6,7 @@ resource: npm/rules/rego/js/
6
6
 
7
7
  # npm/rules/rego/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ------------------------- | --------- |
11
11
  | [applies.mjs](applies.md) | JS Module |
12
- | [lint.mjs](lint.md) | JS Module |
12
+ | [lint.mjs](lint.md) | JS Module |
@@ -30,10 +30,22 @@ import { spawnSync } from 'node:child_process'
30
30
  import { existsSync } from 'node:fs'
31
31
  import { resolve } from 'node:path'
32
32
 
33
- import { isRunAsCli } from '../../../scripts/cli-entry.mjs'
34
- import { ensureTool } from '../../../scripts/lib/ensure-tool.mjs'
35
- import { resolveCmd } from '../../../scripts/utils/resolve-cmd.mjs'
36
- import { runStandardLint } from '../../../scripts/lib/run-standard-lint.mjs'
33
+ import { isRunAsCli } from '../../scripts/cli-entry.mjs'
34
+ import { ensureTool } from '../../scripts/lib/ensure-tool.mjs'
35
+ import { resolveCmd } from '../../scripts/utils/resolve-cmd.mjs'
36
+ import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
37
+ import { runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
38
+ import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
39
+
40
+ /**
41
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня: applies → JS-concerns
42
+ * → policy → mdc-refs. `lint()` нижче — lint-поверхня (opa/regal/conftest), імпл інлайн тут.
43
+ * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону
44
+ * @returns {Promise<number>} 0 — OK, 1 — порушення
45
+ */
46
+ export function run(ctx) {
47
+ return runStandardRule(import.meta.dirname, ctx)
48
+ }
37
49
 
38
50
  /** Шляхи з Rego-полісі (відносно cwd). Існують не всі на ранніх стадіях — фільтруємо нижче. */
39
51
  const LINT_TARGETS = ['npm/rules']
@@ -98,6 +110,16 @@ export function runLintRegoSteps(cwd = process.cwd()) {
98
110
  */
99
111
  export const runLintRego = () => runStandardLint(import.meta.dirname, () => runLintRegoSteps())
100
112
 
113
+ /**
114
+ * Оркестраторний адаптер `n-cursor lint rego`: делегує у `runLintRego`.
115
+ * @param {string[] | undefined} _files ігнорується (whole-repo аналіз)
116
+ * @returns {Promise<number>} exit code
117
+ */
118
+ export function lint(_files) {
119
+ return runLintRego()
120
+ }
121
+
101
122
  if (isRunAsCli(import.meta.url)) {
102
- process.exitCode = await runLintRego()
123
+ // Standalone: bun rules/rego/main.mjs повний еквівалент `npx @nitra/cursor check rego`.
124
+ process.exitCode = await runRuleCli(import.meta.dirname)
103
125
  }
@@ -6,8 +6,9 @@ resource: npm/rules/release/
6
6
 
7
7
  # npm/rules/release
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [change.mjs](change.md) | JS Module |
12
- | [fix.mjs](fix.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------------- | --------- |
11
+ | [change.mjs](change.md) | JS Module |
12
+ | [fix.mjs](fix.md) | JS Module |
13
+ | [main.mjs](main.md) | JS Module |
13
14
  | [release.mjs](release.md) | JS Module |
@@ -0,0 +1,29 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/release/main.mjs
5
+ docgen:
6
+ crc: 22936815
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль забезпечує оркестрацію та виконання набору правил. При запуску як CLI ініціює повну оркестрацію правил. Як частина процесу, викликає публічну функцію `run` для виконання стандартного правила у контексті поточної директорії. Результат виконання цього правила визначає код виходу процесу. Модуль не модифікує файлову систему чи бази даних. Результати виконання правил кешуються протягом одного прогону.
14
+
15
+ ## Поведінка
16
+
17
+ 1. Якщо код виконується як CLI, він запускає оркестрацію правил.
18
+ 2. Якщо код виконується як частина процесу, він викликає функцію `run`.
19
+ 3. Функція `run` запускає стандартне правило для директорії, де знаходиться цей файл, використовуючи наданий контекст прогону.
20
+ 4. Результат виконання стандартного правила визначає код виходу процесу.
21
+
22
+ ## Публічний API
23
+
24
+ run — виконує послідовність дій: застосовує правила, обробляє JS-занепокоєння, перевіряє політику та посилання MDC.
25
+
26
+ ## Гарантії поведінки
27
+
28
+ - Read-only: не виконує операцій запису (ФС/БД).
29
+ - Кешує результати в межах одного прогону.
@@ -6,11 +6,8 @@ docgen:
6
6
  crc: 06d3556b
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
- judgeModel: openai-codex/gpt-5.4-mini
10
9
  ---
11
10
 
12
- ## Огляд
13
-
14
11
  Файл автоматизує процес випуску версій. Він агрегує зміна-файли для всіх робочих просторів у `version-bump` та `CHANGELOG`, комітить зміни, ставить тег `<name>@<version>` та видаляє використані зміна-файли. Цей процес виконується у CI на гілці `main` (n-cursor-release-design, варіант A). Публічні функції, що надає модуль, — `release` та `runReleaseCli`.
15
12
 
16
13
  ## Поведінка
@@ -6,8 +6,8 @@ resource: npm/rules/release/lib/
6
6
 
7
7
  # npm/rules/release/lib
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [aggregate.mjs](aggregate.md) | JS Module |
9
+ | Файл | Тип |
10
+ | --------------------------------- | --------- |
11
+ | [aggregate.mjs](aggregate.md) | JS Module |
12
12
  | [change-file.mjs](change-file.md) | JS Module |
13
- | [fallback.mjs](fallback.md) | JS Module |
13
+ | [fallback.mjs](fallback.md) | JS Module |
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: n-cursor release та n-cursor change — автоматичний version-bump і CHANGELOG із change-файлів
3
+ version: '1.0'
4
+ globs: "**/package.json,**/pyproject.toml,**/CHANGELOG.md,**/.changes/*.md"
5
+ alwaysApply: false
6
+ ---
7
+
8
+ Версія та CHANGELOG **не редагуються вручну**. Єдиний артефакт зміни — **change-файл** (`npx @nitra/cursor change --bump <major|minor|patch> --section <Added|Changed|Fixed|Removed> --message "<…>"`). Bump `version` і генерацію секції CHANGELOG виконує `n-cursor release` у CI на `main`.
9
+
10
+ Детальна модель (база порівняння, формат CHANGELOG, post-release-інваріант) — у `n-changelog.mdc`.
@@ -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/rust/
6
6
 
7
7
  # npm/rules/rust
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/rust/main.mjs
5
+ docgen:
6
+ crc: a3060168
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 90
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль надає функції для роботи з кодом Rust. Функція `run` виконує повний аналіз коду, включаючи перевірку відповідності політиці MDC. Функція `lint` здійснює статичний аналіз коду. Обидві функції можуть ініціювати форматування та аналіз за допомогою `cargo`.
14
+
15
+ ## Поведінка
16
+
17
+ run виконує перевірку коду Rust, застосовуючи політику та посилання MDC.
18
+ lint запускає оркестрацію перевірки Rust, виконуючи `rustfmt` та `clippy` через `cargo`.
19
+
20
+ ## Публічний API
21
+
22
+ run — точка входу для виконання правила, що перевіряє логіку, пов'язану з JS-зацікавленостями, політикою та посиланнями MDC.
23
+ lint — точка входу для запуску лінтера Rust-коду.
24
+
25
+ ## Гарантії поведінки
26
+
27
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -6,7 +6,7 @@ resource: npm/rules/rust/js/
6
6
 
7
7
  # npm/rules/rust/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | ------------------------- | --------- |
11
11
  | [applies.mjs](applies.md) | JS Module |
12
- | [lint.mjs](lint.md) | JS Module |
12
+ | [lint.mjs](lint.md) | JS Module |
@@ -6,6 +6,6 @@ resource: npm/rules/rust/lib/
6
6
 
7
7
  # npm/rules/rust/lib
8
8
 
9
- | Файл | Тип |
10
- |---|---|
9
+ | Файл | Тип |
10
+ | --------------------------------------- | --------- |
11
11
  | [has-cargo-toml.mjs](has-cargo-toml.md) | JS Module |
@@ -3,9 +3,21 @@ import { spawnSync } from 'node:child_process'
3
3
  import { existsSync } from 'node:fs'
4
4
  import { join } from 'node:path'
5
5
 
6
- import { createCheckReporter } from '../../../scripts/lib/check-reporter.mjs'
7
- import { runStandardLint } from '../../../scripts/lib/run-standard-lint.mjs'
8
- import { resolveCmd } from '../../../scripts/utils/resolve-cmd.mjs'
6
+ import { createCheckReporter } from '../../scripts/lib/check-reporter.mjs'
7
+ import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
8
+ import { resolveCmd } from '../../scripts/utils/resolve-cmd.mjs'
9
+ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
10
+ import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
11
+
12
+ /**
13
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня (applies → JS-concerns
14
+ * → policy → mdc-refs); `lint()` нижче — lint-поверхня (cargo fmt/clippy), імпл інлайн тут.
15
+ * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону
16
+ * @returns {Promise<number>} 0 — OK, 1 — порушення
17
+ */
18
+ export function run(ctx) {
19
+ return runStandardRule(import.meta.dirname, ctx)
20
+ }
9
21
 
10
22
  /**
11
23
  * Запускає cargo-крок і репортить результат.
@@ -63,7 +75,13 @@ function runRustLint(cwd = process.cwd(), opts = {}) {
63
75
  if (!runCargo('cargo clippy --fix', cargo, fixArgs, pass, fail)) return reporter.getExitCode()
64
76
  }
65
77
 
66
- runCargo('cargo clippy -D warnings', cargo, ['clippy', '--all-targets', '--all-features', '--', '-D', 'warnings'], pass, fail)
78
+ runCargo(
79
+ 'cargo clippy -D warnings',
80
+ cargo,
81
+ ['clippy', '--all-targets', '--all-features', '--', '-D', 'warnings'],
82
+ pass,
83
+ fail
84
+ )
67
85
  return reporter.getExitCode()
68
86
  }
69
87
 
@@ -77,3 +95,8 @@ function runRustLint(cwd = process.cwd(), opts = {}) {
77
95
  export function lint(_files, cwd = process.cwd(), opts = {}) {
78
96
  return runStandardLint(import.meta.dirname, () => runRustLint(cwd, opts))
79
97
  }
98
+
99
+ if (isRunAsCli(import.meta.url)) {
100
+ // Standalone: bun rules/rust/main.mjs — повний еквівалент `npx @nitra/cursor check rust`.
101
+ process.exitCode = await runRuleCli(import.meta.dirname)
102
+ }
@@ -12,14 +12,14 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Передача контексту прогону.
16
- * Виклик `runStandardRule` з використанням шляху модуля.
15
+ - Передача контексту прогону.
16
+ - Виклик `runStandardRule` з використанням шляху модуля.
17
17
  2. Виконання правила.
18
- * Виклик `runStandardRule` з контекстом.
19
- * Виконання операції `applies → JS-concerns → policy → mdc-refs`.
18
+ - Виклик `runStandardRule` з контекстом.
19
+ - Виконання операції `applies → JS-concerns → policy → mdc-refs`.
20
20
  3. Вихід з CLI.
21
- * Перевірка режиму запуску через `isRunAsCli`.
22
- * Якщо запущено через CLI, повернення коду виходу з `runRuleCli` для встановлення `process.exitCode`.
21
+ - Перевірка режиму запуску через `isRunAsCli`.
22
+ - Якщо запущено через CLI, повернення коду виходу з `runRuleCli` для встановлення `process.exitCode`.
23
23
 
24
24
  ## Публічний API
25
25
 
@@ -6,6 +6,7 @@ resource: npm/rules/security/
6
6
 
7
7
  # npm/rules/security
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,28 @@
1
+ ---
2
+ type: JS Module
3
+ title: main.mjs
4
+ resource: npm/rules/security/main.mjs
5
+ docgen:
6
+ crc: a0730dcb
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль виконує перевірку якості коду та безпеки репозиторію, спираючись на конфігурації, визначені у meta.json. Функція `run` застосовує політики та посилання на MDC для виконання перевірки. Функція `lint` сканує файлову систему репозиторію на наявність секретів. Обидві функції мають публічний статус, а кешування відбувається у межах одного прогону.
14
+
15
+ ## Поведінка
16
+
17
+ run виконує перевірку, застосовуючи політики та посилання на MDC.
18
+ lint сканує файлову систему репозиторію на наявність секретів за допомогою trufflehog.
19
+
20
+ ## Публічний API
21
+
22
+ run — Основна точка входу правила, що виконує перевірку: застосовує логіку, перевіряє аспекти JavaScript, застосовує політику та перевіряє посилання на MDC.
23
+ lint — Сканує весь репозиторій на наявність секретів за допомогою trufflehog.
24
+
25
+ ## Гарантії поведінки
26
+
27
+ - Read-only: не виконує операцій запису (ФС/БД).
28
+ - Кешує результати в межах одного прогону.
@@ -6,8 +6,8 @@ resource: npm/rules/security/js/
6
6
 
7
7
  # npm/rules/security/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [lint.mjs](lint.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------------------------- | --------- |
11
+ | [lint.mjs](lint.md) | JS Module |
12
12
  | [sample_secret.mjs](sample_secret.md) | JS Module |
13
- | [trufflehog.mjs](trufflehog.md) | JS Module |
13
+ | [trufflehog.mjs](trufflehog.md) | JS Module |
@@ -0,0 +1,45 @@
1
+ import { spawnSync } from 'node:child_process'
2
+
3
+ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
4
+ import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
5
+
6
+ /**
7
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня: applies →
8
+ * JS-concerns → policy → mdc-refs (через runStandardRule).
9
+ * Library mode: викликається CLI orchestration через `import + run(ctx)`.
10
+ * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону (walkCache тощо)
11
+ * @returns {Promise<number>} 0 — OK, 1 — порушення
12
+ */
13
+ export function run(ctx) {
14
+ return runStandardRule(import.meta.dirname, ctx)
15
+ }
16
+
17
+ /**
18
+ * `lint()` — lint-поверхня security: trufflehog filesystem скан усього репо (per-file немає).
19
+ * Викликається lint-оркестратором за `meta.json#lint`.
20
+ * @param {string[] | undefined} _files ігнорується (whole-repo скан)
21
+ * @param {string} [cwd] корінь
22
+ * @returns {Promise<number>} exit code (0 — секретів не знайдено)
23
+ */
24
+ export function lint(_files, cwd = process.cwd()) {
25
+ const r = spawnSync(
26
+ 'trufflehog',
27
+ [
28
+ 'filesystem',
29
+ '.',
30
+ '--no-update',
31
+ '--exclude-paths',
32
+ '.trufflehog-exclude',
33
+ '--results=verified,unknown',
34
+ '--fail'
35
+ ],
36
+ { cwd, stdio: 'inherit' }
37
+ )
38
+ return Promise.resolve(typeof r.status === 'number' ? r.status : 1)
39
+ }
40
+
41
+ if (isRunAsCli(import.meta.url)) {
42
+ // Standalone: bun rules/<id>/main.mjs — повний еквівалент `npx @nitra/cursor check <id>`
43
+ // (config-loading + whitelist + summary): library-роль (run) + standalone-роль (CLI-блок).
44
+ process.exitCode = await runRuleCli(import.meta.dirname)
45
+ }
@@ -12,9 +12,9 @@ docgen:
12
12
  ## Поведінка
13
13
 
14
14
  1. Запуск правила.
15
- * Приймає контекст прогону.
16
- * Виконує правило.
17
- * Повертає результат.
15
+ - Приймає контекст прогону.
16
+ - Виконує правило.
17
+ - Повертає результат.
18
18
 
19
19
  ## Публічний API
20
20
 
@@ -6,6 +6,7 @@ resource: npm/rules/style-lint/
6
6
 
7
7
  # npm/rules/style-lint
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/style-lint/main.mjs
5
+ docgen:
6
+ crc: d4951ce5
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ score: 100
9
+ ---
10
+
11
+ ## Огляд
12
+
13
+ Модуль реалізує логіку для виконання правил, фільтрації файлів за розширеннями та запуску стильового лінтера. Функція `run` виконує визначені правила. `filterStyleFiles` обробляє файли, вибираючи їх на основі розширень. `lint` запускає перевірку стилю.
14
+
15
+ ## Поведінка
16
+
17
+ run виконує стандартну перевірку для правила.
18
+ filterStyleFiles відбирає з наданого списку лише файли з розширеннями css, scss або vue.
19
+ lint запускає stylelint для перевірки стильових файлів або всього проєкту.
20
+
21
+ ## Публічний API
22
+
23
+ run — головна точка входу для виконання правил, що включає перевірку логіки застосування (JS-занепокложення → політика → посилання MDC) та перевірку стилів (stylelint для CSS/SCSS/Vue).
24
+ filterStyleFiles — відбирає файли, що містять стилі для подальшої обробки.
25
+ lint — виконує стилістичну перевірку (stylelint) для окремих файлів або всього проєкту.
26
+
27
+ ## Гарантії поведінки
28
+
29
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -6,7 +6,7 @@ resource: npm/rules/style-lint/js/
6
6
 
7
7
  # npm/rules/style-lint/js
8
8
 
9
- | Файл | Тип |
10
- |---|---|
11
- | [lint.mjs](lint.md) | JS Module |
9
+ | Файл | Тип |
10
+ | ------------------------- | --------- |
11
+ | [lint.mjs](lint.md) | JS Module |
12
12
  | [tooling.mjs](tooling.md) | JS Module |
@@ -1,8 +1,20 @@
1
- /** @see ./docs/lint.md */
2
1
  import { spawnSync } from 'node:child_process'
3
2
 
3
+ import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
4
+ import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
5
+
4
6
  const STYLE_EXT_RE = /\.(?:css|scss|vue)$/u
5
7
 
8
+ /**
9
+ * Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня (applies → JS-concerns
10
+ * → policy → mdc-refs); `lint()` — lint-поверхня (stylelint по css/scss/vue), імпл інлайн тут.
11
+ * @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону
12
+ * @returns {Promise<number>} 0 — OK, 1 — порушення
13
+ */
14
+ export function run(ctx) {
15
+ return runStandardRule(import.meta.dirname, ctx)
16
+ }
17
+
6
18
  /**
7
19
  * @param {string[]} files список шляхів
8
20
  * @returns {string[]} лише css/scss/vue
@@ -12,6 +24,7 @@ export function filterStyleFiles(files) {
12
24
  }
13
25
 
14
26
  /**
27
+ * lint-поверхня: stylelint (per-file для css/scss/vue або весь проєкт у `--full`).
15
28
  * @param {string[] | undefined} files per-file: ці файли; undefined: весь проєкт (--full)
16
29
  * @param {string} [cwd] корінь
17
30
  * @param {{ readOnly?: boolean }} [opts] readOnly → без `--fix` (детект, нуль мутацій)
@@ -29,3 +42,8 @@ export function lint(files, cwd = process.cwd(), opts = {}) {
29
42
  const r = spawnSync('npx', args, { cwd, stdio: 'inherit' })
30
43
  return Promise.resolve(typeof r.status === 'number' ? r.status : 1)
31
44
  }
45
+
46
+ if (isRunAsCli(import.meta.url)) {
47
+ // Standalone: bun rules/<id>/main.mjs — повний еквівалент `npx @nitra/cursor check <id>`.
48
+ process.exitCode = await runRuleCli(import.meta.dirname)
49
+ }
@@ -14,18 +14,18 @@ docgen:
14
14
  ## Поведінка
15
15
 
16
16
  1. Запуск правила.
17
- * Приймає контекст прогону.
18
- * Виконує застосування JS-занепокоєних.
19
- * Застосовує політику.
20
- * Генерує посилання MDC.
21
- * Повертає результат прогону.
17
+ - Приймає контекст прогону.
18
+ - Виконує застосування JS-занепокоєних.
19
+ - Застосовує політику.
20
+ - Генерує посилання MDC.
21
+ - Повертає результат прогону.
22
22
  2. Запуск правила у режимі CLI.
23
- * Виконується як повний еквівалент команди `npx @nitra/cursor fix <id>`.
24
- * Виконує завантаження конфігурації.
25
- * Виконує перевірку дозволених записів.
26
- * Генерує зведену інформацію.
27
- * Виконує перевірку.
28
- * Визначає код виходу процесу.
23
+ - Виконується як повний еквівалент команди `npx @nitra/cursor fix <id>`.
24
+ - Виконує завантаження конфігурації.
25
+ - Виконує перевірку дозволених записів.
26
+ - Генерує зведену інформацію.
27
+ - Виконує перевірку.
28
+ - Визначає код виходу процесу.
29
29
 
30
30
  ## Публічний API
31
31
 
@@ -6,6 +6,7 @@ resource: npm/rules/tauri/
6
6
 
7
7
  # npm/rules/tauri
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 |