@nitra/cursor 11.4.1 → 12.0.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 (356) hide show
  1. package/.claude-template/hooks/normalize-decisions.sh +34 -3
  2. package/.pi-template/extensions/n-cursor-adr/docs/index.md +3 -5
  3. package/CHANGELOG.md +6 -0
  4. package/bin/n-cursor.js +2 -8
  5. package/docs/index.md +12 -0
  6. package/docs/stryker.config.md +3 -5
  7. package/docs/vitest.config.md +3 -5
  8. package/lib/docs/index.md +14 -0
  9. package/lib/docs/llm.md +4 -6
  10. package/lib/docs/models.md +3 -5
  11. package/lib/docs/omlx-trace.md +3 -5
  12. package/lib/docs/omlx.md +4 -6
  13. package/package.json +2 -1
  14. package/rules/abie/docs/fix.md +3 -5
  15. package/rules/abie/docs/index.md +11 -0
  16. package/rules/abie/js/docs/applies.md +3 -5
  17. package/rules/abie/js/docs/env_dns.md +3 -5
  18. package/rules/abie/js/docs/firebase_hosting.md +3 -5
  19. package/rules/abie/js/docs/hc_pairing.md +3 -5
  20. package/rules/abie/js/docs/index.md +16 -0
  21. package/rules/abie/js/docs/ua_http_route.md +3 -5
  22. package/rules/abie/js/docs/ua_node_selector.md +3 -5
  23. package/rules/abie/lib/docs/enabled.md +3 -5
  24. package/rules/abie/lib/docs/env-dns.md +3 -5
  25. package/rules/abie/lib/docs/hc-yaml.md +3 -5
  26. package/rules/abie/lib/docs/http-route.md +3 -5
  27. package/rules/abie/lib/docs/index.md +18 -0
  28. package/rules/abie/lib/docs/k8s-tree.md +3 -5
  29. package/rules/abie/lib/docs/kustomization-patches.md +3 -5
  30. package/rules/abie/lib/docs/overlay-paths.md +3 -5
  31. package/rules/abie/lib/docs/yaml.md +3 -5
  32. package/rules/adr/adr.mdc +2 -2
  33. package/rules/adr/docs/fix.md +3 -5
  34. package/rules/adr/docs/index.md +11 -0
  35. package/rules/adr/js/docs/hooks.md +3 -5
  36. package/rules/adr/js/docs/index.md +11 -0
  37. package/rules/bun/docs/fix.md +3 -5
  38. package/rules/bun/docs/index.md +11 -0
  39. package/rules/bun/js/docs/index.md +11 -0
  40. package/rules/bun/js/docs/layout.md +3 -5
  41. package/rules/capacitor/docs/fix.md +3 -5
  42. package/rules/capacitor/docs/index.md +11 -0
  43. package/rules/capacitor/js/docs/index.md +11 -0
  44. package/rules/capacitor/js/docs/platforms.md +3 -5
  45. package/rules/changelog/docs/fix.md +3 -5
  46. package/rules/changelog/docs/index.md +11 -0
  47. package/rules/changelog/js/docs/consistency.md +3 -5
  48. package/rules/changelog/js/docs/index.md +11 -0
  49. package/rules/changelog/lib/docs/index.md +11 -0
  50. package/rules/changelog/lib/docs/package-manifest.md +3 -5
  51. package/rules/ci4/docs/fix.md +3 -5
  52. package/rules/ci4/docs/index.md +11 -0
  53. package/rules/ci4/js/docs/index.md +11 -0
  54. package/rules/ci4/js/docs/marksman_config.md +3 -5
  55. package/rules/doc-files/docs/fix.md +3 -5
  56. package/rules/doc-files/docs/index.md +11 -0
  57. package/rules/doc-files/js/docgen-crc.mjs +50 -14
  58. package/rules/doc-files/js/docgen-files-batch.mjs +73 -2
  59. package/rules/doc-files/js/docs/docgen-crc.md +4 -6
  60. package/rules/doc-files/js/docs/docgen-extract-anchors.md +3 -5
  61. package/rules/doc-files/js/docs/docgen-extract.md +3 -5
  62. package/rules/doc-files/js/docs/docgen-files-batch.md +4 -6
  63. package/rules/doc-files/js/docs/docgen-gen.md +4 -6
  64. package/rules/doc-files/js/docs/docgen-ignore.md +3 -5
  65. package/rules/doc-files/js/docs/docgen-judge-measure.md +3 -5
  66. package/rules/doc-files/js/docs/docgen-judge.md +3 -5
  67. package/rules/doc-files/js/docs/docgen-prompts.md +3 -5
  68. package/rules/doc-files/js/docs/docgen-scan.md +4 -6
  69. package/rules/doc-files/js/docs/index.md +24 -0
  70. package/rules/doc-files/js/docs/lint.md +4 -6
  71. package/rules/doc-files/js/docs/units-js.md +3 -5
  72. package/rules/doc-files/js/docs/units-rs.md +3 -5
  73. package/rules/doc-files/js/docs/units.md +3 -5
  74. package/rules/doc-files/lint/docs/index.md +11 -0
  75. package/rules/doc-files/lint/docs/lint.md +3 -5
  76. package/rules/docker/docs/fix.md +3 -5
  77. package/rules/docker/docs/index.md +11 -0
  78. package/rules/docker/js/docs/index.md +11 -0
  79. package/rules/docker/js/docs/lint.md +3 -5
  80. package/rules/docker/lib/docs/docker-hadolint.md +3 -5
  81. package/rules/docker/lib/docs/docker-mirror.md +3 -5
  82. package/rules/docker/lib/docs/docker-native-addon.md +3 -5
  83. package/rules/docker/lib/docs/docker-nginx-user.md +3 -5
  84. package/rules/docker/lib/docs/index.md +14 -0
  85. package/rules/docker/lint/docs/index.md +11 -0
  86. package/rules/docker/lint/docs/lint.md +3 -5
  87. package/rules/efes/docs/fix.md +3 -5
  88. package/rules/efes/docs/index.md +11 -0
  89. package/rules/feedback/docs/fix.md +3 -5
  90. package/rules/feedback/docs/index.md +11 -0
  91. package/rules/ga/docs/fix.md +3 -5
  92. package/rules/ga/docs/index.md +11 -0
  93. package/rules/ga/js/docs/index.md +12 -0
  94. package/rules/ga/js/docs/lint.md +3 -5
  95. package/rules/ga/js/docs/workflows.md +3 -5
  96. package/rules/ga/lint/docs/index.md +11 -0
  97. package/rules/ga/lint/docs/lint.md +3 -5
  98. package/rules/graphql/docs/fix.md +3 -5
  99. package/rules/graphql/docs/index.md +11 -0
  100. package/rules/graphql/js/docs/index.md +11 -0
  101. package/rules/graphql/js/docs/tooling.md +3 -5
  102. package/rules/graphql/lib/docs/graphql-gql-scan.md +3 -5
  103. package/rules/graphql/lib/docs/index.md +11 -0
  104. package/rules/hasura/docs/fix.md +3 -5
  105. package/rules/hasura/docs/index.md +11 -0
  106. package/rules/hasura/js/docs/index.md +11 -0
  107. package/rules/hasura/js/docs/internal_urls.md +3 -5
  108. package/rules/image-avif/docs/fix.md +3 -5
  109. package/rules/image-avif/docs/index.md +11 -0
  110. package/rules/image-avif/js/docs/avif_generation.md +3 -5
  111. package/rules/image-avif/js/docs/index.md +11 -0
  112. package/rules/image-compress/docs/fix.md +3 -5
  113. package/rules/image-compress/docs/index.md +11 -0
  114. package/rules/image-compress/js/docs/index.md +11 -0
  115. package/rules/image-compress/js/docs/package_setup.md +3 -5
  116. package/rules/js-bun-db/docs/fix.md +3 -5
  117. package/rules/js-bun-db/docs/index.md +11 -0
  118. package/rules/js-bun-db/js/docs/index.md +11 -0
  119. package/rules/js-bun-db/js/docs/safety.md +3 -5
  120. package/rules/js-bun-db/lib/docs/bun-sql-scan.md +3 -5
  121. package/rules/js-bun-db/lib/docs/index.md +11 -0
  122. package/rules/js-bun-redis/docs/fix.md +3 -5
  123. package/rules/js-bun-redis/docs/index.md +11 -0
  124. package/rules/js-bun-redis/js/docs/imports.md +3 -5
  125. package/rules/js-bun-redis/js/docs/index.md +11 -0
  126. package/rules/js-bun-redis/lib/docs/index.md +11 -0
  127. package/rules/js-bun-redis/lib/docs/redis-imports.md +3 -5
  128. package/rules/js-lint/docs/fix.md +3 -5
  129. package/rules/js-lint/docs/index.md +11 -0
  130. package/rules/js-lint/js/docs/index.md +14 -0
  131. package/rules/js-lint/js/docs/lint-findings.md +3 -5
  132. package/rules/js-lint/js/docs/lint.md +3 -5
  133. package/rules/js-lint/js/docs/tooling.md +3 -5
  134. package/rules/js-lint/js/docs/utils_imports.md +3 -5
  135. package/rules/js-lint-ci/docs/fix.md +3 -5
  136. package/rules/js-lint-ci/docs/index.md +11 -0
  137. package/rules/js-lint-ci/js/docs/index.md +11 -0
  138. package/rules/js-lint-ci/js/docs/lint.md +3 -5
  139. package/rules/js-mssql/docs/fix.md +3 -5
  140. package/rules/js-mssql/docs/index.md +11 -0
  141. package/rules/js-mssql/js/docs/deps.md +3 -5
  142. package/rules/js-mssql/js/docs/index.md +11 -0
  143. package/rules/js-mssql/lib/docs/index.md +11 -0
  144. package/rules/js-mssql/lib/docs/mssql-pool-scan.md +3 -5
  145. package/rules/js-run/docs/fix.md +3 -5
  146. package/rules/js-run/docs/index.md +11 -0
  147. package/rules/js-run/js/docs/index.md +11 -0
  148. package/rules/js-run/js/docs/runtime.md +3 -5
  149. package/rules/js-run/lib/docs/bunyan-imports.md +3 -5
  150. package/rules/js-run/lib/docs/check-env-scan.md +3 -5
  151. package/rules/js-run/lib/docs/conn-file-rules.md +3 -5
  152. package/rules/js-run/lib/docs/conn-imports-scan.md +3 -5
  153. package/rules/js-run/lib/docs/index.md +16 -0
  154. package/rules/js-run/lib/docs/promise-settimeout-scan.md +3 -5
  155. package/rules/js-run/lib/docs/temporal-scan.md +3 -5
  156. package/rules/k8s/docs/fix.md +3 -5
  157. package/rules/k8s/docs/index.md +11 -0
  158. package/rules/k8s/k8s.mdc +10 -0
  159. package/rules/k8s/lint/docs/index.md +11 -0
  160. package/rules/k8s/lint/docs/lint.md +3 -5
  161. package/rules/k8s/policy/manifest/manifest.rego +46 -0
  162. package/rules/lint/docs/fix.md +3 -5
  163. package/rules/lint/docs/index.md +11 -0
  164. package/rules/lint/js/docs/index.md +11 -0
  165. package/rules/lint/js/docs/orchestrate.md +4 -6
  166. package/rules/nginx-default-tpl/docs/fix.md +3 -5
  167. package/rules/nginx-default-tpl/docs/index.md +11 -0
  168. package/rules/nginx-default-tpl/js/docs/index.md +11 -0
  169. package/rules/nginx-default-tpl/js/docs/template.md +3 -5
  170. package/rules/npm-module/docs/fix.md +3 -5
  171. package/rules/npm-module/docs/index.md +11 -0
  172. package/rules/npm-module/js/docs/header_doc_pointer.md +3 -5
  173. package/rules/npm-module/js/docs/index.md +14 -0
  174. package/rules/npm-module/js/docs/package_structure.md +3 -5
  175. package/rules/npm-module/js/docs/rule_meta.md +3 -5
  176. package/rules/npm-module/js/docs/skill_meta.md +3 -5
  177. package/rules/php/docs/fix.md +3 -5
  178. package/rules/php/docs/index.md +11 -0
  179. package/rules/php/js/docs/index.md +11 -0
  180. package/rules/php/js/docs/tooling.md +3 -5
  181. package/rules/php/lint/docs/index.md +11 -0
  182. package/rules/php/lint/docs/lint.md +3 -5
  183. package/rules/python/docs/fix.md +3 -5
  184. package/rules/python/docs/index.md +11 -0
  185. package/rules/python/js/docs/applies.md +3 -5
  186. package/rules/python/js/docs/index.md +12 -0
  187. package/rules/python/js/docs/tooling.md +3 -5
  188. package/rules/python/lint/docs/index.md +11 -0
  189. package/rules/python/lint/docs/lint.md +3 -5
  190. package/rules/rego/docs/fix.md +3 -5
  191. package/rules/rego/docs/index.md +11 -0
  192. package/rules/rego/js/docs/applies.md +3 -5
  193. package/rules/rego/js/docs/index.md +12 -0
  194. package/rules/rego/js/docs/lint.md +3 -5
  195. package/rules/rego/lint/docs/index.md +11 -0
  196. package/rules/rego/lint/docs/lint.md +3 -5
  197. package/rules/release/docs/change.md +3 -5
  198. package/rules/release/docs/fix.md +3 -5
  199. package/rules/release/docs/index.md +13 -0
  200. package/rules/release/docs/release.md +4 -6
  201. package/rules/release/lib/docs/aggregate.md +3 -5
  202. package/rules/release/lib/docs/change-file.md +3 -3
  203. package/rules/release/lib/docs/fallback.md +3 -5
  204. package/rules/release/lib/docs/index.md +13 -0
  205. package/rules/rust/docs/fix.md +3 -5
  206. package/rules/rust/docs/index.md +11 -0
  207. package/rules/rust/js/docs/applies.md +3 -5
  208. package/rules/rust/js/docs/index.md +11 -0
  209. package/rules/rust/lib/docs/has-cargo-toml.md +3 -5
  210. package/rules/rust/lib/docs/index.md +11 -0
  211. package/rules/security/docs/fix.md +3 -5
  212. package/rules/security/docs/index.md +11 -0
  213. package/rules/security/js/docs/index.md +13 -0
  214. package/rules/security/js/docs/lint.md +3 -5
  215. package/rules/security/js/docs/sample_secret.md +3 -5
  216. package/rules/security/js/docs/trufflehog.md +3 -5
  217. package/rules/style-lint/docs/fix.md +3 -5
  218. package/rules/style-lint/docs/index.md +11 -0
  219. package/rules/style-lint/js/docs/index.md +12 -0
  220. package/rules/style-lint/js/docs/lint.md +3 -5
  221. package/rules/style-lint/js/docs/tooling.md +3 -5
  222. package/rules/tauri/docs/fix.md +3 -5
  223. package/rules/tauri/docs/index.md +11 -0
  224. package/rules/tauri/js/docs/cargo_mutants_config.md +3 -5
  225. package/rules/tauri/js/docs/index.md +12 -0
  226. package/rules/tauri/js/docs/tooling.md +3 -5
  227. package/rules/test/docs/fix.md +3 -5
  228. package/rules/test/docs/index.md +11 -0
  229. package/rules/test/js/data/stryker_config/docs/index.md +13 -0
  230. package/rules/test/js/data/stryker_config/docs/stryker-vue-macros-ignorer.md +3 -5
  231. package/rules/test/js/data/stryker_config/docs/stryker.config.baseline.md +3 -5
  232. package/rules/test/js/data/stryker_config/docs/stryker.config.vue.baseline.md +3 -5
  233. package/rules/test/js/data/vitest_config/docs/index.md +11 -0
  234. package/rules/test/js/data/vitest_config/docs/vitest.config.baseline.md +3 -5
  235. package/rules/test/js/docs/cargo_mutants_config.md +3 -5
  236. package/rules/test/js/docs/index.md +16 -0
  237. package/rules/test/js/docs/location.md +3 -5
  238. package/rules/test/js/docs/no-process-chdir.md +3 -5
  239. package/rules/test/js/docs/no-relative-fs-path.md +3 -5
  240. package/rules/test/js/docs/stryker_config.md +3 -5
  241. package/rules/test/js/docs/vitest-config-pool-forks.md +3 -5
  242. package/rules/text/docs/fix.md +3 -5
  243. package/rules/text/docs/index.md +11 -0
  244. package/rules/text/js/docs/forbidden-prettier.md +3 -5
  245. package/rules/text/js/docs/formatting.md +4 -6
  246. package/rules/text/js/docs/index.md +13 -0
  247. package/rules/text/js/docs/lint.md +4 -6
  248. package/rules/text/lint/docs/cspell-fix.md +4 -6
  249. package/rules/text/lint/docs/index.md +15 -0
  250. package/rules/text/lint/docs/lint.md +4 -6
  251. package/rules/text/lint/docs/run-dotenv-linter.md +3 -5
  252. package/rules/text/lint/docs/run-shellcheck.md +3 -5
  253. package/rules/text/lint/docs/run-v8r.md +3 -5
  254. package/rules/vue/docs/fix.md +3 -5
  255. package/rules/vue/docs/index.md +11 -0
  256. package/rules/vue/js/docs/index.md +11 -0
  257. package/rules/vue/js/docs/packages.md +3 -5
  258. package/rules/vue/lib/docs/index.md +11 -0
  259. package/rules/vue/lib/docs/vue-forbidden-imports.md +3 -5
  260. package/rules/worktree/docs/fix.md +3 -5
  261. package/rules/worktree/docs/index.md +11 -0
  262. package/rules/worktree/worktree.mdc +8 -8
  263. package/scripts/coverage-classify/docs/apply.md +3 -5
  264. package/scripts/coverage-classify/docs/cache.md +3 -5
  265. package/scripts/coverage-classify/docs/index.md +9 -27
  266. package/scripts/coverage-classify/docs/prompt.md +3 -5
  267. package/scripts/coverage-classify/docs/verdict-schema.md +3 -5
  268. package/scripts/dispatcher/docs/index.md +11 -0
  269. package/scripts/dispatcher/docs/trace.md +3 -5
  270. package/scripts/docs/auto-rules.md +3 -5
  271. package/scripts/docs/auto-skills.md +3 -5
  272. package/scripts/docs/build-agents-commands.md +3 -5
  273. package/scripts/docs/cli-entry.md +3 -5
  274. package/scripts/docs/coverage-fix-extract.md +3 -5
  275. package/scripts/docs/coverage-fix.md +3 -5
  276. package/scripts/docs/ensure-nitra-cursor-dev-dependencies.md +3 -5
  277. package/scripts/docs/index.md +24 -0
  278. package/scripts/docs/post-tool-use-fix.md +4 -6
  279. package/scripts/docs/rename-yaml-extensions.md +3 -5
  280. package/scripts/docs/skills-cli.md +3 -5
  281. package/scripts/docs/sync-claude-config.md +3 -5
  282. package/scripts/docs/sync-setup-bun-deps-action.md +3 -5
  283. package/scripts/docs/upgrade-nitra-cursor-and-install.md +3 -5
  284. package/scripts/docs/worktree-cli.md +3 -5
  285. package/scripts/lib/adr/docs/index.md +12 -0
  286. package/scripts/lib/adr/docs/normalize-cli.md +3 -5
  287. package/scripts/lib/adr/docs/normalize-pipeline.md +4 -6
  288. package/scripts/lib/adr/normalize-pipeline.mjs +140 -46
  289. package/scripts/lib/docs/assert-project-root.md +3 -5
  290. package/scripts/lib/docs/changed-files.md +3 -5
  291. package/scripts/lib/docs/check-mdc-template-refs.md +3 -5
  292. package/scripts/lib/docs/check-reporter.md +3 -5
  293. package/scripts/lib/docs/diff-added-lines.md +3 -5
  294. package/scripts/lib/docs/discover-check-rules-from-cursor.md +3 -5
  295. package/scripts/lib/docs/discover-checkable-rules.md +3 -5
  296. package/scripts/lib/docs/ensure-tool.md +3 -5
  297. package/scripts/lib/docs/generated-markdown.md +3 -5
  298. package/scripts/lib/docs/gha-workflow.md +3 -5
  299. package/scripts/lib/docs/index.md +44 -0
  300. package/scripts/lib/docs/inline-template-links.md +3 -5
  301. package/scripts/lib/docs/list-project-rules-mdc.md +3 -5
  302. package/scripts/lib/docs/list-rule-ids.md +3 -5
  303. package/scripts/lib/docs/load-cursor-config.md +3 -5
  304. package/scripts/lib/docs/mirror-parity.md +3 -3
  305. package/scripts/lib/docs/read-n-cursor-config-lite.md +3 -5
  306. package/scripts/lib/docs/resolve-target-files.md +3 -5
  307. package/scripts/lib/docs/root-notice.md +3 -5
  308. package/scripts/lib/docs/rule-meta-helpers.md +3 -5
  309. package/scripts/lib/docs/rule-meta.md +3 -5
  310. package/scripts/lib/docs/rule-predicates.md +3 -5
  311. package/scripts/lib/docs/run-conftest-batch.md +3 -5
  312. package/scripts/lib/docs/run-lint-step.md +3 -5
  313. package/scripts/lib/docs/run-rule-cli.md +3 -5
  314. package/scripts/lib/docs/run-rule.md +3 -5
  315. package/scripts/lib/docs/run-standard-lint.md +3 -5
  316. package/scripts/lib/docs/run-standard-rule.md +3 -5
  317. package/scripts/lib/docs/skill-meta.md +3 -5
  318. package/scripts/lib/docs/sync-gitignore-worktree.md +3 -5
  319. package/scripts/lib/docs/template.md +3 -5
  320. package/scripts/lib/docs/timing-summary.md +3 -5
  321. package/scripts/lib/docs/workspaces.md +3 -5
  322. package/scripts/lib/docs/worktree-notice.md +3 -5
  323. package/scripts/lib/docs/worktree.md +3 -5
  324. package/scripts/lib/fix/docs/index.md +16 -0
  325. package/scripts/lib/fix/docs/llm-fix-apply.md +3 -5
  326. package/scripts/lib/fix/docs/llm-lint-fix.md +3 -5
  327. package/scripts/lib/fix/docs/llm-worker.md +3 -5
  328. package/scripts/lib/fix/docs/orchestrator.md +3 -5
  329. package/scripts/lib/fix/docs/run-fix-check.md +3 -5
  330. package/scripts/lib/fix/docs/t0.md +3 -5
  331. package/scripts/lib/worktree-notice.mjs +3 -38
  332. package/scripts/utils/docs/ast-scan-utils.md +3 -5
  333. package/scripts/utils/docs/ensure-gitignore-entries.md +3 -5
  334. package/scripts/utils/docs/find-package-json-paths.md +3 -5
  335. package/scripts/utils/docs/index.md +23 -0
  336. package/scripts/utils/docs/lock-cache-dir.md +3 -5
  337. package/scripts/utils/docs/pass.md +3 -5
  338. package/scripts/utils/docs/resolve-cargo-manifest.md +3 -5
  339. package/scripts/utils/docs/resolve-cmd.md +3 -5
  340. package/scripts/utils/docs/resolve-js-root.md +3 -5
  341. package/scripts/utils/docs/test-helpers.md +3 -5
  342. package/scripts/utils/docs/walk-cache.md +3 -5
  343. package/scripts/utils/docs/walkDir.md +3 -5
  344. package/scripts/utils/docs/with-lock.md +3 -5
  345. package/scripts/utils/docs/worktree-fingerprint.md +3 -5
  346. package/skills/doc-aggregate/js/docs/docgen-ignore.md +3 -5
  347. package/skills/doc-aggregate/js/docs/docgen-scan.md +3 -5
  348. package/skills/doc-aggregate/js/docs/index.md +12 -0
  349. package/skills/start-check/js/docs/check.md +3 -5
  350. package/skills/start-check/js/docs/index.md +11 -0
  351. package/skills/taze/js/docs/diff.md +3 -5
  352. package/skills/taze/js/docs/index.md +11 -0
  353. package/scripts/lib/worktree.mjs +0 -126
  354. package/scripts/worktree-cli.mjs +0 -230
  355. package/skills/worktree/SKILL.md +0 -38
  356. package/skills/worktree/meta.json +0 -1
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: fix.mjs
4
+ resource: npm/rules/adr/fix.mjs
2
5
  docgen:
3
- source: npm/rules/adr/fix.mjs
4
6
  crc: 38cf876b
5
7
  score: 100
6
8
  ---
7
9
 
8
- # fix.mjs
9
-
10
- ## Огляд
11
-
12
10
  Виконує обробку JS-занепокоєних та політики на наданому контексті прогону. Генерація посилання MDC та повернення результату прогону.
13
11
 
14
12
  ## Поведінка
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/adr
4
+ resource: npm/rules/adr/
5
+ ---
6
+
7
+ # npm/rules/adr
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix.mjs](fix.md) | JS Module |
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: hooks.mjs
4
+ resource: npm/rules/adr/js/hooks.mjs
2
5
  docgen:
3
- source: npm/rules/adr/js/hooks.mjs
4
6
  crc: 3f239faf
5
7
  score: 100
6
8
  ---
7
9
 
8
- # hooks.mjs
9
-
10
- ## Огляд
11
-
12
10
  Файл надає публічну функцію `check` для валідації даних. Код використовує конфігурацію з файлу `.local.json` для визначення логіки. Функція працює у режимі, де невдачі повертають `false` або `null` замість генерації винятків. Повідомлення про події передаються за допомогою маркера (adr.mdc).
13
11
 
14
12
  ## Поведінка
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/adr/js
4
+ resource: npm/rules/adr/js/
5
+ ---
6
+
7
+ # npm/rules/adr/js
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [hooks.mjs](hooks.md) | JS Module |
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: fix.mjs
4
+ resource: npm/rules/bun/fix.mjs
2
5
  docgen:
3
- source: npm/rules/bun/fix.mjs
4
6
  crc: 38cf876b
5
7
  score: 100
6
8
  ---
7
9
 
8
- # fix.mjs
9
-
10
- ## Огляд
11
-
12
10
  Виконує обробку JS-занепокоєних даних у наданому контексті прогону. Застосовує визначену політику та генерує посилання MDC. Повертає результат прогону.
13
11
 
14
12
  ## Поведінка
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/bun
4
+ resource: npm/rules/bun/
5
+ ---
6
+
7
+ # npm/rules/bun
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix.mjs](fix.md) | JS Module |
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/bun/js
4
+ resource: npm/rules/bun/js/
5
+ ---
6
+
7
+ # npm/rules/bun/js
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [layout.mjs](layout.md) | JS Module |
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: layout.mjs
4
+ resource: npm/rules/bun/js/layout.mjs
2
5
  docgen:
3
- source: npm/rules/bun/js/layout.mjs
4
6
  crc: ba2a6730
5
7
  score: 100
6
8
  ---
7
9
 
8
- # layout.mjs
9
-
10
- ## Огляд
11
-
12
10
  Файл надає інструмент для перевірки відповідності даних визначеному контракту. Функція `check` (bun.mdc) виконує перевірку стану даних і повертає логічний результат, що вказує на успішність виконання перевірки. У разі невдачі функція повертає `false` або `null` замість генерації винятку.
13
11
 
14
12
  ## Поведінка
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: fix.mjs
4
+ resource: npm/rules/capacitor/fix.mjs
2
5
  docgen:
3
- source: npm/rules/capacitor/fix.mjs
4
6
  crc: 38cf876b
5
7
  score: 100
6
8
  ---
7
9
 
8
- # fix.mjs
9
-
10
- ## Огляд
11
-
12
10
  Виконує застосування JS-занепокоєних на вхідний контекст прогону, застосовує визначену політику, генерує посилання MDC та повертає результат
13
11
 
14
12
  ## Поведінка
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/capacitor
4
+ resource: npm/rules/capacitor/
5
+ ---
6
+
7
+ # npm/rules/capacitor
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix.mjs](fix.md) | JS Module |
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/capacitor/js
4
+ resource: npm/rules/capacitor/js/
5
+ ---
6
+
7
+ # npm/rules/capacitor/js
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [platforms.mjs](platforms.md) | JS Module |
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: platforms.mjs
4
+ resource: npm/rules/capacitor/js/platforms.mjs
2
5
  docgen:
3
- source: npm/rules/capacitor/js/platforms.mjs
4
6
  crc: d102129c
5
7
  score: 85
6
8
  ---
7
9
 
8
- # platforms.mjs
9
-
10
- ## Огляд
11
-
12
10
  Огляд
13
11
 
14
12
  Цей файл містить інструменти для витягування та перевірки версій Capacitor з залежностей та конфігурацій. Використовується для визначення сумісності версій Capacitor з конфігураціями, а також для збору даних про версії з різних файлів.
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: fix.mjs
4
+ resource: npm/rules/changelog/fix.mjs
2
5
  docgen:
3
- source: npm/rules/changelog/fix.mjs
4
6
  crc: 38cf876b
5
7
  score: 100
6
8
  ---
7
9
 
8
- # fix.mjs
9
-
10
- ## Огляд
11
-
12
10
  Виконує застосування JS-занепокоєних на наданому контексті прогону. Застосовує визначену політику та генерує посилання MDC. Повертає результат прогону.
13
11
 
14
12
  ## Поведінка
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/changelog
4
+ resource: npm/rules/changelog/
5
+ ---
6
+
7
+ # npm/rules/changelog
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix.mjs](fix.md) | JS Module |
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: consistency.mjs
4
+ resource: npm/rules/changelog/js/consistency.mjs
2
5
  docgen:
3
- source: npm/rules/changelog/js/consistency.mjs
4
6
  crc: eaf98d6d
5
7
  score: 100
6
8
  ---
7
9
 
8
- # consistency.mjs
9
-
10
- ## Огляд
11
-
12
10
  Перевіряє версіонування проектів у монорепозиторії, порівнюючи версії, зазначені в маніфестах, з даними, отриманими з мережі з https://pypi.org/pypi/. Аналізує відповідність версій встановленим правилам, визначеним у конфігурації res.json. Визначає, чи відповідають версії формату, а також перевіряє наявність змін, порівнюючи їх із даними, описаними у (n-changelog.mdc). При невдачі перевірки повертає false/null, не кидаючи винятків.
13
11
 
14
12
  ## Поведінка
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/changelog/js
4
+ resource: npm/rules/changelog/js/
5
+ ---
6
+
7
+ # npm/rules/changelog/js
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [consistency.mjs](consistency.md) | JS Module |
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/changelog/lib
4
+ resource: npm/rules/changelog/lib/
5
+ ---
6
+
7
+ # npm/rules/changelog/lib
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [package-manifest.mjs](package-manifest.md) | JS Module |
@@ -1,13 +1,11 @@
1
1
  ---
2
+ type: JS Module
3
+ title: package-manifest.mjs
4
+ resource: npm/rules/changelog/lib/package-manifest.mjs
2
5
  docgen:
3
- source: npm/rules/changelog/lib/package-manifest.mjs
4
6
  crc: ced8ad49
5
7
  ---
6
8
 
7
- # package-manifest.mjs
8
-
9
- ## Огляд
10
-
11
9
  Модуль `package-manifest.mjs` реалізує **уніфіковану абстракцію маніфесту пакета** для перевірок changelog у багатомовному монорепо. Він приховує відмінності між двома типами маніфестів:
12
10
 
13
11
  - **npm / JS** — файл `package.json` (з полями `name`, `version`, `private`, `files`).
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: fix.mjs
4
+ resource: npm/rules/ci4/fix.mjs
2
5
  docgen:
3
- source: npm/rules/ci4/fix.mjs
4
6
  crc: 38cf876b
5
7
  score: 100
6
8
  ---
7
9
 
8
- # fix.mjs
9
-
10
- ## Огляд
11
-
12
10
  Огляд
13
11
  Файл надає функціонал для виконання визначених правил. Публічні методи забезпечують запуск цих правил, повертаючи отримані результати. Дозволяє запускати правила у режимі командного рядка, керуючи виходом процесу на основі отриманих даних.
14
12
 
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/ci4
4
+ resource: npm/rules/ci4/
5
+ ---
6
+
7
+ # npm/rules/ci4
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix.mjs](fix.md) | JS Module |
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/ci4/js
4
+ resource: npm/rules/ci4/js/
5
+ ---
6
+
7
+ # npm/rules/ci4/js
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [marksman_config.mjs](marksman_config.md) | JS Module |
@@ -1,13 +1,11 @@
1
1
  ---
2
+ type: JS Module
3
+ title: marksman_config.mjs
4
+ resource: npm/rules/ci4/js/marksman_config.mjs
2
5
  docgen:
3
- source: npm/rules/ci4/js/marksman_config.mjs
4
6
  crc: 07883aa5
5
7
  ---
6
8
 
7
- # marksman_config.mjs
8
-
9
- ## Огляд
10
-
11
9
  Модуль `marksman_config.mjs` — це концерн правила `ci4` (`ci4.mdc`), що відповідає за матеріалізацію canonical-конфіга для Marksman LSP у корені проєкту. Модуль експортує єдину функцію `check`, яка перевіряє наявність файлу `.marksman.toml` у заданому робочому каталозі (`cwd`) і, якщо файлу немає, копіює туди baseline-варіант, що поставляється з пакета `@nitra/cursor`.
12
10
 
13
11
  Призначення модуля — забезпечити стабільне, передбачуване середовище для Marksman LSP, який використовується для роботи з Markdown-документами в репо (ADR, документація, README). Без явного `.marksman.toml` Marksman використовує свої вбудовані дефолти, які НЕ збігаються з вимогами правила `ci4.mdc`:
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: fix.mjs
4
+ resource: npm/rules/doc-files/fix.mjs
2
5
  docgen:
3
- source: npm/rules/doc-files/fix.mjs
4
6
  crc: 9df3e88d
5
7
  score: 100
6
8
  ---
7
9
 
8
- # fix.mjs
9
-
10
- ## Огляд
11
-
12
10
  Точка входу правила doc-files для каналу `n-cursor fix doc-files`. Перевіряє структурні вимоги
13
11
  правила (наявність потрібного GA-workflow і скрипта в `package.json` через policy-канал), не
14
12
  чіпаючи вміст самих док.
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: Directory Index
3
+ title: npm/rules/doc-files
4
+ resource: npm/rules/doc-files/
5
+ ---
6
+
7
+ # npm/rules/doc-files
8
+
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [fix.mjs](fix.md) | JS Module |
@@ -30,6 +30,7 @@
30
30
  * джерела. На staleness НЕ впливає — звіряється лише `crc`.
31
31
  */
32
32
  import { existsSync, readFileSync } from 'node:fs'
33
+ import { basename, extname } from 'node:path'
33
34
  import { crc32 as zlibCrc32 } from 'node:zlib'
34
35
  import { env } from 'node:process'
35
36
 
@@ -49,7 +50,7 @@ export function crc32(input) {
49
50
 
50
51
  /** Провідний YAML-frontmatter-блок `---\n…\n---`. */
51
52
  const FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n?/u
52
- const SOURCE_RE = /^[ \t]{0,8}source:[ \t]{0,8}(.+)$/mu
53
+ const RESOURCE_RE = /^resource:[ \t]+(.+)$/mu
53
54
  const CRC_RE = /^[ \t]{0,8}crc:[ \t]{0,8}(.+)$/mu
54
55
  const MODEL_RE = /^[ \t]{0,8}model:[ \t]{0,8}(.+)$/mu
55
56
  const SCORE_RE = /^[ \t]{0,8}score:[ \t]{0,8}(\d+)$/mu
@@ -72,9 +73,10 @@ export function parseDocFrontmatter(md) {
72
73
  const block = match[1]
73
74
  const scoreRaw = block.match(SCORE_RE)?.[1]
74
75
  const issuesRaw = block.match(ISSUES_RE)?.[1]
76
+ const source = block.match(RESOURCE_RE)?.[1].trim() ?? null
75
77
  return {
76
78
  data: {
77
- source: block.match(SOURCE_RE)?.[1].trim() ?? null,
79
+ source,
78
80
  crc: block.match(CRC_RE)?.[1].trim() ?? null,
79
81
  model: block.match(MODEL_RE)?.[1].trim() ?? null,
80
82
  score: scoreRaw === undefined ? null : Number(scoreRaw),
@@ -94,6 +96,28 @@ export function parseDocFrontmatter(md) {
94
96
  /** Максимум кодів issues у frontmatter — це маркер, а не повний лог. */
95
97
  const MAX_ISSUE_CODES = 8
96
98
 
99
+ /** OKF type для розширення файлу. */
100
+ const EXT_TYPES = {
101
+ '.js': 'JS Module',
102
+ '.mjs': 'JS Module',
103
+ '.cjs': 'JS Module',
104
+ '.ts': 'TS Module',
105
+ '.vue': 'Vue Component',
106
+ '.py': 'Python Module',
107
+ '.rs': 'Rust Module',
108
+ }
109
+
110
+ /**
111
+ * OKF `type` для файлу-джерела за розширенням.
112
+ * @param {string} sourcePath відносний шлях джерела
113
+ * @returns {string} тип концепту
114
+ */
115
+ function typeForSource(sourcePath) {
116
+ return EXT_TYPES[extname(sourcePath).toLowerCase()] ?? 'Source File'
117
+ }
118
+
119
+
120
+
97
121
  /**
98
122
  * Нормалізує issues до YAML-безпечних кодів: бере фрагмент до першого пробілу
99
123
  * (зрізає людиночитні хвости помилок), відкидає порожні, обмежує кількість.
@@ -108,25 +132,34 @@ function issueCodes(issues) {
108
132
  }
109
133
 
110
134
  /**
111
- * Будує frontmatter-блок із шляхом джерела, CRC, (опційно) моделлю-генератором і якістю.
135
+ * Будує OKF-сумісний frontmatter-блок: OKF-поля верхнього рівня + вкладений `docgen:`
136
+ * з CRC/model/quality. OKF-поля виводяться першими, щоб будь-який OKF-парсер міг їх
137
+ * читати незалежно від `docgen:`-простору назв.
112
138
  * @param {string} source відносний шлях джерела
113
139
  * @param {string} crc CRC32 джерела у hex
114
- * @param {{ score: number, issues?: string[], retried?: boolean, judge?: {model?: string} }|null} [quality] det-оцінка доки (+ опц. `retried`-маркер і `judge.model` хмарного судді); null — без полів якості
140
+ * @param {{ score: number, issues?: string[], retried?: boolean, judge?: {model?: string} }|null} [quality] det-оцінка доки; null — без полів якості
115
141
  * @param {string|null} [model] повний id моделі-генератора; null — без поля `model`
116
- * @returns {string} рядок `---\ndocgen:\n source: …\n crc: …[\n model: …][\n score: …][\n issues: …]\n---\n`
142
+ * @returns {string} OKF-сумісний YAML frontmatter
117
143
  */
118
144
  export function buildDocFrontmatter(source, crc, quality = null, model = null) {
119
- const lines = [`source: ${source}`, `crc: ${crc}`]
120
- if (model) lines.push(`model: ${model}`)
145
+ const okfLines = [
146
+ `type: ${typeForSource(source)}`,
147
+ `title: ${basename(source)}`,
148
+ `resource: ${source}`,
149
+ ]
150
+
151
+ // docgen namespace: лише CRC-механіка і quality (source перенесено у resource)
152
+ const docgenLines = [`crc: ${crc}`]
153
+ if (model) docgenLines.push(`model: ${model}`)
121
154
  if (quality && typeof quality.score === 'number') {
122
- lines.push(`score: ${quality.score}`)
155
+ docgenLines.push(`score: ${quality.score}`)
123
156
  const codes = issueCodes(quality.issues ?? [])
124
- if (codes.length > 0) lines.push(`issues: ${codes.join(',')}`)
125
- if (quality.retried) lines.push('retried: true')
126
- if (quality.judge && quality.judge.model) lines.push(`judgeModel: ${quality.judge.model}`)
157
+ if (codes.length > 0) docgenLines.push(`issues: ${codes.join(',')}`)
158
+ if (quality.retried) docgenLines.push('retried: true')
159
+ if (quality.judge && quality.judge.model) docgenLines.push(`judgeModel: ${quality.judge.model}`)
127
160
  }
128
- const indented = lines.map(l => ' ' + l).join('\n')
129
- return `---\ndocgen:\n${indented}\n---\n`
161
+ const indented = docgenLines.map(l => ' ' + l).join('\n')
162
+ return `---\n${okfLines.join('\n')}\ndocgen:\n${indented}\n---\n`
130
163
  }
131
164
 
132
165
  /**
@@ -138,9 +171,12 @@ export function buildDocFrontmatter(source, crc, quality = null, model = null) {
138
171
  * @param {string|null} [model] повний id моделі-генератора; null — без поля `model`
139
172
  * @returns {string} md зі свіжим frontmatter
140
173
  */
174
+ const LEADING_H1_RE = /^#[^\n]*\n+/u
175
+
141
176
  export function stampDoc(md, source, crc, quality = null, model = null) {
142
177
  const { body } = parseDocFrontmatter(md)
143
- return `${buildDocFrontmatter(source, crc, quality, model)}\n${body.replace(LEADING_NEWLINES_RE, '')}`
178
+ const cleanBody = body.replace(LEADING_NEWLINES_RE, '').replace(LEADING_H1_RE, '')
179
+ return `${buildDocFrontmatter(source, crc, quality, model)}\n${cleanBody}`
144
180
  }
145
181
 
146
182
  /**
@@ -10,8 +10,8 @@
10
10
  * Перед масовим прогоном — health-check omlx: memory-guard зайнятої 8GB машини
11
11
  * означає «відклади прогін», а не сотні хибних «✗» у звіті.
12
12
  */
13
- import { readFileSync, mkdirSync, writeFileSync, existsSync, statSync } from 'node:fs'
14
- import { dirname, join } from 'node:path'
13
+ import { readFileSync, readdirSync, mkdirSync, writeFileSync, existsSync, statSync } from 'node:fs'
14
+ import { basename, dirname, join, relative } from 'node:path'
15
15
 
16
16
  import { isRunAsCli } from '../../../scripts/cli-entry.mjs'
17
17
  import { classifyOmlxError, preflightLocalModel } from '../../../lib/llm.mjs'
@@ -149,6 +149,61 @@ async function generateOne(file, root, progress, stats) {
149
149
  }
150
150
  }
151
151
 
152
+ /** Regex для витягу OKF-полів із frontmatter існуючої доки (швидкий, без YAML-парсера). */
153
+ const OKF_TITLE_RE = /^title: (.+)$/mu
154
+ const OKF_TYPE_RE = /^type: (.+)$/mu
155
+ const OKF_FRONTMATTER_RE = /^---\n([\s\S]*?)\n---\n?/u
156
+ const OKF_RESOURCE_RE = /^resource:[ \t]+(.+)$/mu
157
+
158
+ /**
159
+ * Генерує/оновлює `index.md` у директорії `docs/` — OKF Directory Index із таблицею
160
+ * всіх наявних doc-файлів у цій директорії. Не зачіпає `index.md` при відсутності
161
+ * інших doc-файлів.
162
+ * @param {string} docsAbsDir абсолютний шлях директорії `docs/`
163
+ * @param {string} root абсолютний корінь проєкту
164
+ * @returns {void}
165
+ */
166
+ function generateDirIndex(docsAbsDir, root) {
167
+ const allMd = readdirSync(docsAbsDir).filter(f => f.endsWith('.md')).sort()
168
+
169
+ // Якщо index.md вже є дока для source-файлу (має docgen.source → index.*) — не чіпаємо
170
+ if (allMd.includes('index.md')) {
171
+ const existingFm = readFileSync(join(docsAbsDir, 'index.md'), 'utf8').match(OKF_FRONTMATTER_RE)?.[1] ?? ''
172
+ const existingSource = existingFm.match(OKF_RESOURCE_RE)?.[1]?.trim() ?? ''
173
+ const existingType = existingFm.match(OKF_TYPE_RE)?.[1]?.trim() ?? ''
174
+ // Пропускаємо якщо це дока source-файлу, а не Directory Index
175
+ if (existingSource && existingType !== 'Directory Index') return
176
+ }
177
+
178
+ const files = allMd.filter(f => f !== 'index.md')
179
+ if (files.length === 0) return
180
+
181
+ const sourceDirRel = relative(root, dirname(docsAbsDir)) || '.'
182
+
183
+ const rows = files.map(f => {
184
+ const md = readFileSync(join(docsAbsDir, f), 'utf8')
185
+ const fm = md.match(OKF_FRONTMATTER_RE)?.[1] ?? ''
186
+ const resource = fm.match(OKF_RESOURCE_RE)?.[1]?.trim()
187
+ const title = fm.match(OKF_TITLE_RE)?.[1]?.trim() ?? (resource ? basename(resource) : f.replace(/\.md$/, ''))
188
+ const type = fm.match(OKF_TYPE_RE)?.[1]?.trim() ?? 'Source File'
189
+ return `| [${title}](${f}) | ${type} |`
190
+ })
191
+
192
+ const content = `---
193
+ type: Directory Index
194
+ title: ${sourceDirRel}
195
+ resource: ${sourceDirRel}/
196
+ ---
197
+
198
+ # ${sourceDirRel}
199
+
200
+ | Файл | Тип |
201
+ |---|---|
202
+ ${rows.join('\n')}
203
+ `
204
+ writeFileSync(join(docsAbsDir, 'index.md'), content)
205
+ }
206
+
152
207
  /**
153
208
  * Підсумковий звіт прогону у stdout.
154
209
  * @param {{ ok: number, degraded: number, err: number, errors: string[], skipped: string[] }} stats статистика
@@ -235,6 +290,13 @@ export async function runGenerationBatch(targets, root, { headline } = {}) {
235
290
  }
236
291
 
237
292
  reportStats(stats)
293
+
294
+ // Оновлюємо index.md у кожній docs/-директорії, якої торкнувся цей батч
295
+ const docsDirs = new Set(targets.map(f => dirname(join(root, f.docPath))))
296
+ for (const docsAbsDir of docsDirs) {
297
+ if (existsSync(docsAbsDir)) generateDirIndex(docsAbsDir, root)
298
+ }
299
+
238
300
  if (aborted) return 2
239
301
  return stats.err > 0 ? 1 : 0
240
302
  }
@@ -261,6 +323,15 @@ export function runDocFilesStampCli(argv) {
261
323
  stamped++
262
324
  }
263
325
  console.log(`✓ fix-doc-files --stamp: оновлено frontmatter у ${stamped} доці(ах).`)
326
+
327
+ // Після stamp — оновити index.md у всіх docs/-директоріях
328
+ const docsDirs = new Set(
329
+ scanForDocFiles(root)
330
+ .map(f => dirname(join(root, f.docPath)))
331
+ .filter(d => existsSync(d))
332
+ )
333
+ for (const docsAbsDir of docsDirs) generateDirIndex(docsAbsDir, root)
334
+
264
335
  return 0
265
336
  }
266
337
 
@@ -1,13 +1,11 @@
1
1
  ---
2
+ type: JS Module
3
+ title: docgen-crc.mjs
4
+ resource: npm/rules/doc-files/js/docgen-crc.mjs
2
5
  docgen:
3
- source: npm/rules/doc-files/js/docgen-crc.mjs
4
- crc: 54e8e12b
6
+ crc: 6baf999b
5
7
  ---
6
8
 
7
- # docgen-crc
8
-
9
- ## Огляд
10
-
11
9
  Детермінований маркер актуальності файлових док: контрольна сума джерела у frontmatter плюс опційний degraded-маркер якості. Єдине джерело правди про «дока свіжа/застаріла/неякісна» для генерації, перевірок і хуків.
12
10
 
13
11
  ## Поведінка
@@ -1,14 +1,12 @@
1
1
  ---
2
+ type: JS Module
3
+ title: docgen-extract-anchors.mjs
4
+ resource: npm/rules/doc-files/js/docgen-extract-anchors.mjs
2
5
  docgen:
3
- source: npm/rules/doc-files/js/docgen-extract-anchors.mjs
4
6
  crc: 49749e9c
5
7
  score: 80
6
8
  ---
7
9
 
8
- # docgen-extract-anchors.mjs
9
-
10
- ## Огляд
11
-
12
10
  Витягує анкори з вихідного коду файлу.
13
11
 
14
12
  Витягує анкори з вихідного коду файлу.
@@ -1,15 +1,13 @@
1
1
  ---
2
+ type: JS Module
3
+ title: docgen-extract.mjs
4
+ resource: npm/rules/doc-files/js/docgen-extract.mjs
2
5
  docgen:
3
- source: npm/rules/doc-files/js/docgen-extract.mjs
4
6
  crc: a0680e77
5
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
6
8
  score: 100
7
9
  ---
8
10
 
9
- # docgen-extract.mjs
10
-
11
- ## Огляд
12
-
13
11
  Витягує структурований факт-лист з вмісту файлів, аналізуючи їх залежно від мови. Для Rust витягує модульний опис, публічні експорти, локальні символи та класифікує імпорти й поведінкові маркери. Для JavaScript/TypeScript/MJS витягує опис, експортовані елементи з JSDoc, класифікує імпорти та визначає поведінкові маркери. При аналізі ігноруються директорії: .github, .git, node_modules, base/, ua/, .firebase. Звертається до мережі та кешує дані протягом одного прогону.
14
12
 
15
13
  ## Поведінка