@nitra/cursor 12.6.1 → 12.7.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.
- package/.claude-template/settings.template.json +1 -1
- package/CHANGELOG.md +10 -0
- package/bin/docs/n-cursor.md +4 -20
- package/bin/n-cursor.js +7 -53
- package/docs/stryker.config.md +20 -28
- package/package.json +1 -1
- package/rules/abie/docs/index.md +1 -0
- package/rules/abie/docs/main.md +29 -0
- package/rules/abie/{fix.mjs → main.mjs} +5 -3
- package/rules/adr/docs/index.md +1 -0
- package/rules/adr/docs/main.md +29 -0
- package/rules/adr/{fix.mjs → main.mjs} +5 -3
- package/rules/bun/docs/index.md +1 -0
- package/rules/bun/docs/main.md +30 -0
- package/rules/bun/js/docs/layout.md +11 -36
- package/rules/bun/{fix.mjs → main.mjs} +5 -3
- package/rules/capacitor/docs/index.md +1 -0
- package/rules/capacitor/docs/main.md +29 -0
- package/rules/capacitor/{fix.mjs → main.mjs} +5 -3
- package/rules/changelog/docs/index.md +1 -0
- package/rules/changelog/docs/main.md +27 -0
- package/rules/changelog/main.mjs +20 -0
- package/rules/ci4/docs/index.md +1 -0
- package/rules/ci4/docs/main.md +30 -0
- package/rules/ci4/main.mjs +20 -0
- package/rules/doc-files/docs/index.md +1 -0
- package/rules/doc-files/docs/main.md +31 -0
- package/rules/doc-files/js/docgen-files-batch.mjs +47 -3
- package/rules/doc-files/js/docgen-scan.mjs +89 -9
- package/rules/doc-files/js/docs/docgen-files-batch.md +15 -15
- package/rules/doc-files/js/docs/docgen-scan.md +34 -34
- package/rules/doc-files/js/docs/index.md +1 -0
- package/rules/doc-files/js/docs/run-lint.md +27 -0
- package/rules/doc-files/{lint/lint.mjs → js/run-lint.mjs} +23 -9
- package/rules/doc-files/{js/lint.mjs → main.mjs} +60 -10
- package/rules/docker/docs/index.md +1 -0
- package/rules/docker/docs/main.md +28 -0
- package/rules/docker/js/docs/lint.md +26 -54
- package/rules/docker/js/lint.mjs +11 -0
- package/rules/docker/lib/docker-hadolint.mjs +1 -1
- package/rules/docker/lib/docs/docker-hadolint.md +16 -173
- package/rules/docker/main.mjs +20 -0
- package/rules/efes/docs/index.md +1 -0
- package/rules/efes/docs/main.md +29 -0
- package/rules/efes/main.mjs +20 -0
- package/rules/feedback/docs/index.md +1 -0
- package/rules/feedback/docs/main.md +30 -0
- package/rules/feedback/main.mjs +20 -0
- package/rules/ga/docs/index.md +1 -0
- package/rules/ga/docs/main.md +29 -0
- package/rules/ga/{lint/lint.mjs → main.mjs} +36 -10
- package/rules/graphql/docs/index.md +1 -0
- package/rules/graphql/docs/main.md +36 -0
- package/rules/graphql/main.mjs +20 -0
- package/rules/hasura/docs/index.md +1 -0
- package/rules/hasura/docs/main.md +30 -0
- package/rules/hasura/main.mjs +20 -0
- package/rules/image-avif/docs/index.md +1 -0
- package/rules/image-avif/docs/main.md +30 -0
- package/rules/image-avif/js/docs/avif_generation.md +20 -233
- package/rules/image-avif/main.mjs +20 -0
- package/rules/image-compress/docs/index.md +1 -0
- package/rules/image-compress/docs/main.md +29 -0
- package/rules/image-compress/js/docs/package_setup.md +12 -11
- package/rules/image-compress/{js/lint.mjs → main.mjs} +21 -5
- package/rules/js-bun-db/docs/index.md +1 -0
- package/rules/js-bun-db/docs/main.md +30 -0
- package/rules/js-bun-db/main.mjs +20 -0
- package/rules/js-bun-redis/docs/index.md +1 -0
- package/rules/js-bun-redis/docs/main.md +29 -0
- package/rules/js-bun-redis/main.mjs +20 -0
- package/rules/js-lint/docs/index.md +1 -0
- package/rules/js-lint/docs/main.md +29 -0
- package/rules/js-lint/js/check.mjs +268 -0
- package/rules/js-lint/js/docs/check.md +39 -0
- package/rules/js-lint/js/docs/index.md +1 -1
- package/rules/js-lint/js/docs/tooling.md +12 -32
- package/rules/js-lint/js/tooling.mjs +1 -265
- package/rules/js-lint/{js/lint.mjs → main.mjs} +19 -2
- package/rules/js-lint-ci/docs/index.md +1 -0
- package/rules/js-lint-ci/docs/main.md +27 -0
- package/rules/js-lint-ci/main.mjs +33 -0
- package/rules/js-mssql/docs/index.md +1 -0
- package/rules/js-mssql/docs/main.md +30 -0
- package/rules/js-mssql/main.mjs +20 -0
- package/rules/js-run/docs/index.md +1 -0
- package/rules/js-run/docs/main.md +30 -0
- package/rules/js-run/main.mjs +20 -0
- package/rules/k8s/docs/index.md +1 -0
- package/rules/k8s/docs/main.md +40 -0
- package/rules/k8s/js/docs/index.md +12 -0
- package/rules/k8s/{lint/lint.mjs → main.mjs} +32 -10
- package/rules/nginx-default-tpl/docs/index.md +1 -0
- package/rules/nginx-default-tpl/docs/main.md +30 -0
- package/rules/nginx-default-tpl/main.mjs +20 -0
- package/rules/npm-module/docs/index.md +1 -0
- package/rules/npm-module/docs/main.md +29 -0
- package/rules/npm-module/js/docs/rule_meta.md +17 -16
- package/rules/npm-module/js/rule_meta.mjs +13 -3
- package/rules/npm-module/main.mjs +20 -0
- package/rules/php/docs/index.md +1 -0
- package/rules/php/docs/main.md +33 -0
- package/rules/php/js/docs/tooling.md +10 -10
- package/rules/php/{lint/lint.mjs → main.mjs} +32 -6
- package/rules/python/docs/index.md +1 -0
- package/rules/python/docs/main.md +31 -0
- package/rules/python/js/docs/tooling.md +17 -17
- package/rules/python/{lint/lint.mjs → main.mjs} +29 -5
- package/rules/rego/docs/index.md +1 -0
- package/rules/rego/docs/main.md +37 -0
- package/rules/rego/{lint/lint.mjs → main.mjs} +27 -5
- package/rules/release/docs/index.md +1 -0
- package/rules/release/docs/main.md +29 -0
- package/rules/release/docs/release.md +0 -3
- package/rules/release/release.mdc +10 -0
- package/rules/rust/docs/index.md +1 -0
- package/rules/rust/docs/main.md +27 -0
- package/rules/rust/{js/lint.mjs → main.mjs} +20 -3
- package/rules/security/docs/index.md +1 -0
- package/rules/security/docs/main.md +28 -0
- package/rules/security/main.mjs +45 -0
- package/rules/style-lint/docs/index.md +1 -0
- package/rules/style-lint/docs/main.md +29 -0
- package/rules/style-lint/{js/lint.mjs → main.mjs} +19 -1
- package/rules/tauri/docs/index.md +1 -0
- package/rules/tauri/docs/main.md +29 -0
- package/rules/tauri/main.mjs +20 -0
- package/rules/test/docs/index.md +1 -0
- package/rules/test/docs/main.md +30 -0
- package/rules/test/main.mjs +20 -0
- package/rules/text/docs/index.md +1 -0
- package/rules/text/docs/main.md +29 -0
- package/rules/text/js/docs/cspell-fix.md +30 -0
- package/rules/text/js/docs/formatting.md +12 -45
- package/rules/text/js/docs/index.md +4 -0
- package/rules/text/js/docs/run-dotenv-linter.md +31 -0
- package/rules/text/js/docs/run-shellcheck.md +28 -0
- package/rules/text/js/docs/run-v8r.md +29 -0
- package/rules/text/{lint/lint.mjs → main.mjs} +38 -9
- package/rules/tool-surface/docs/index.md +1 -0
- package/rules/tool-surface/docs/main.md +29 -0
- package/rules/tool-surface/main.mjs +20 -0
- package/rules/vue/docs/index.md +1 -0
- package/rules/vue/docs/main.md +29 -0
- package/rules/vue/main.mjs +20 -0
- package/rules/worktree/docs/index.md +1 -0
- package/rules/worktree/docs/main.md +28 -0
- package/rules/worktree/main.mjs +20 -0
- package/scripts/docs/index.md +1 -0
- package/scripts/docs/post-tool-use-check.md +29 -0
- package/scripts/docs/sync-claude-config.md +64 -92
- package/scripts/lib/adr/docs/normalize-cli.md +0 -3
- package/scripts/lib/adr/docs/normalize-pipeline.md +0 -3
- package/scripts/lib/docs/gha-workflow.md +25 -317
- package/scripts/lib/docs/index.md +1 -0
- package/scripts/lib/docs/list-project-rules-mdc.md +5 -4
- package/scripts/lib/docs/list-rule-ids.md +15 -148
- package/scripts/lib/docs/read-n-cursor-config-lite.md +12 -16
- package/scripts/lib/docs/run-lint-step.md +13 -13
- package/scripts/lib/docs/run-lint.md +30 -0
- package/scripts/lib/docs/run-rule-cli.md +14 -10
- package/scripts/lib/docs/run-standard-lint.md +27 -10
- package/scripts/lib/docs/run-standard-rule.md +12 -11
- package/scripts/lib/docs/timing-summary.md +11 -12
- package/scripts/lib/docs/worktree-notice.md +0 -3
- package/scripts/lib/fix/docs/index.md +1 -0
- package/scripts/lib/fix/docs/orchestrator.md +23 -18
- package/scripts/lib/fix/docs/run-conformance-check.md +32 -0
- package/scripts/lib/fix/docs/t0.md +10 -9
- package/scripts/lib/fix/orchestrator.mjs +5 -5
- package/scripts/lib/fix/{run-fix-check.mjs → run-conformance-check.mjs} +13 -13
- package/scripts/lib/fix/t0.mjs +3 -3
- package/scripts/lib/list-project-rules-mdc.mjs +1 -1
- package/scripts/lib/list-rule-ids.mjs +12 -3
- package/scripts/lib/read-n-cursor-config-lite.mjs +2 -2
- package/{rules/lint/js/orchestrate.mjs → scripts/lib/run-lint.mjs} +42 -20
- package/scripts/lib/run-rule-cli.mjs +4 -4
- package/scripts/lib/run-standard-lint.mjs +19 -6
- package/scripts/lib/run-standard-rule.mjs +4 -4
- package/scripts/lib/timing-summary.mjs +1 -1
- package/scripts/{post-tool-use-fix.mjs → post-tool-use-check.mjs} +9 -9
- package/scripts/sync-claude-config.mjs +2 -2
- package/rules/changelog/fix.mjs +0 -18
- package/rules/ci4/fix.mjs +0 -18
- package/rules/doc-files/fix.mjs +0 -19
- package/rules/doc-files/js/docs/lint.md +0 -34
- package/rules/doc-files/lint/docs/index.md +0 -11
- package/rules/doc-files/lint/docs/lint.md +0 -35
- package/rules/docker/fix.mjs +0 -18
- package/rules/docker/lint/docs/index.md +0 -11
- package/rules/docker/lint/docs/lint.md +0 -200
- package/rules/docker/lint/lint.mjs +0 -95
- package/rules/efes/fix.mjs +0 -18
- package/rules/feedback/fix.mjs +0 -18
- package/rules/ga/fix.mjs +0 -18
- package/rules/ga/js/docs/lint.md +0 -20
- package/rules/ga/js/lint.mjs +0 -12
- package/rules/ga/lint/docs/index.md +0 -11
- package/rules/ga/lint/docs/lint.md +0 -31
- package/rules/graphql/fix.mjs +0 -18
- package/rules/hasura/fix.mjs +0 -18
- package/rules/image-avif/fix.mjs +0 -18
- package/rules/image-compress/fix.mjs +0 -18
- package/rules/image-compress/js/docs/lint.md +0 -24
- package/rules/js-bun-db/fix.mjs +0 -18
- package/rules/js-bun-redis/fix.mjs +0 -18
- package/rules/js-lint/fix.mjs +0 -18
- package/rules/js-lint/js/docs/lint.md +0 -32
- package/rules/js-lint-ci/fix.mjs +0 -18
- package/rules/js-lint-ci/js/docs/lint.md +0 -22
- package/rules/js-lint-ci/js/lint.mjs +0 -15
- package/rules/js-mssql/fix.mjs +0 -18
- package/rules/js-run/fix.mjs +0 -18
- package/rules/k8s/fix.mjs +0 -18
- package/rules/k8s/js/lint.mjs +0 -14
- package/rules/k8s/lint/docs/index.md +0 -11
- package/rules/k8s/lint/docs/lint.md +0 -413
- package/rules/lint/docs/fix.md +0 -25
- package/rules/lint/docs/index.md +0 -11
- package/rules/lint/fix.mjs +0 -18
- package/rules/lint/js/docs/index.md +0 -11
- package/rules/lint/js/docs/orchestrate.md +0 -31
- package/rules/lint/meta.json +0 -1
- package/rules/nginx-default-tpl/fix.mjs +0 -18
- package/rules/npm-module/fix.mjs +0 -18
- package/rules/php/fix.mjs +0 -18
- package/rules/php/js/docs/lint.md +0 -20
- package/rules/php/js/lint.mjs +0 -15
- package/rules/php/lint/docs/index.md +0 -11
- package/rules/php/lint/docs/lint.md +0 -219
- package/rules/python/fix.mjs +0 -18
- package/rules/python/js/docs/lint.md +0 -21
- package/rules/python/js/lint.mjs +0 -14
- package/rules/python/lint/docs/index.md +0 -11
- package/rules/python/lint/docs/lint.md +0 -29
- package/rules/rego/fix.mjs +0 -18
- package/rules/rego/js/docs/lint.md +0 -21
- package/rules/rego/js/lint.mjs +0 -12
- package/rules/rego/lint/docs/index.md +0 -11
- package/rules/rego/lint/docs/lint.md +0 -208
- package/rules/rust/fix.mjs +0 -18
- package/rules/rust/js/docs/lint.md +0 -21
- package/rules/security/fix.mjs +0 -18
- package/rules/security/js/docs/lint.md +0 -175
- package/rules/security/js/lint.mjs +0 -26
- package/rules/style-lint/fix.mjs +0 -18
- package/rules/style-lint/js/docs/lint.md +0 -31
- package/rules/tauri/fix.mjs +0 -18
- package/rules/test/fix.mjs +0 -18
- package/rules/text/fix.mjs +0 -18
- package/rules/text/js/docs/lint.md +0 -23
- package/rules/text/js/lint.mjs +0 -15
- package/rules/text/lint/docs/cspell-fix.md +0 -32
- package/rules/text/lint/docs/index.md +0 -15
- package/rules/text/lint/docs/lint.md +0 -36
- package/rules/text/lint/docs/run-dotenv-linter.md +0 -161
- package/rules/text/lint/docs/run-shellcheck.md +0 -216
- package/rules/text/lint/docs/run-v8r.md +0 -201
- package/rules/tool-surface/fix.mjs +0 -18
- package/rules/vue/fix.mjs +0 -18
- package/rules/worktree/fix.mjs +0 -18
- /package/rules/release/{fix.mjs → main.mjs} +0 -0
- /package/rules/text/{lint → js}/cspell-fix.mjs +0 -0
- /package/rules/text/{lint → js}/run-dotenv-linter.mjs +0 -0
- /package/rules/text/{lint → js}/run-shellcheck.mjs +0 -0
- /package/rules/text/{lint → js}/run-v8r.mjs +0 -0
|
@@ -13,21 +13,33 @@
|
|
|
13
13
|
* з неінформативним повідомленням. ensureTool збирає всі відсутні бінарники до першого кроку.
|
|
14
14
|
*
|
|
15
15
|
* Перший ненульовий код з ланцюжка повертається як код виходу; наступні кроки не запускаються.
|
|
16
|
-
* Експортовано як `runLintTextCli` —
|
|
16
|
+
* Експортовано як `runLintTextCli` — викликається через `n-cursor lint text` (оркестраторний адаптер `lint()` делегує сюди); окремої bin-підкоманди `lint-text` немає.
|
|
17
17
|
*
|
|
18
18
|
* Канон патерну `lint-*` (серіалізація через `runStandardLint`, без прямого `withLock`) —
|
|
19
19
|
* `.cursor/rules/scripts.mdc`, секція «Серіалізація важких CLI-команд».
|
|
20
20
|
*/
|
|
21
21
|
import { platform } from 'node:process'
|
|
22
22
|
|
|
23
|
-
import { runLintStep } from '
|
|
24
|
-
import { resolveCmd } from '
|
|
25
|
-
import { runStandardLint } from '
|
|
26
|
-
import { ensureTool } from '
|
|
27
|
-
import { runCspellText } from './cspell-fix.mjs'
|
|
28
|
-
import { runDotenvLinter } from './run-dotenv-linter.mjs'
|
|
29
|
-
import { runShellcheckText } from './run-shellcheck.mjs'
|
|
30
|
-
import { runV8rWithGlobs } from './run-v8r.mjs'
|
|
23
|
+
import { runLintStep } from '../../scripts/lib/run-lint-step.mjs'
|
|
24
|
+
import { resolveCmd } from '../../scripts/utils/resolve-cmd.mjs'
|
|
25
|
+
import { runStandardLint } from '../../scripts/lib/run-standard-lint.mjs'
|
|
26
|
+
import { ensureTool } from '../../scripts/lib/ensure-tool.mjs'
|
|
27
|
+
import { runCspellText } from './js/cspell-fix.mjs'
|
|
28
|
+
import { runDotenvLinter } from './js/run-dotenv-linter.mjs'
|
|
29
|
+
import { runShellcheckText } from './js/run-shellcheck.mjs'
|
|
30
|
+
import { runV8rWithGlobs } from './js/run-v8r.mjs'
|
|
31
|
+
import { isRunAsCli, runRuleCli } from '../../scripts/lib/run-rule-cli.mjs'
|
|
32
|
+
import { runStandardRule } from '../../scripts/lib/run-standard-rule.mjs'
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Єдиний entrypoint правила (ADR 2026-06-21). `run()` — check-поверхня (applies → JS-concerns
|
|
36
|
+
* → policy → mdc-refs); `lint()` нижче — lint-поверхня (markdownlint/cspell/shellcheck/…), імпл інлайн тут.
|
|
37
|
+
* @param {import('../../scripts/lib/run-standard-rule.mjs').RuleContext} [ctx] контекст прогону
|
|
38
|
+
* @returns {Promise<number>} 0 — OK, 1 — порушення
|
|
39
|
+
*/
|
|
40
|
+
export function run(ctx) {
|
|
41
|
+
return runStandardRule(import.meta.dirname, ctx)
|
|
42
|
+
}
|
|
31
43
|
|
|
32
44
|
/**
|
|
33
45
|
* Опис залежності preflight-ом.
|
|
@@ -136,3 +148,20 @@ function runLintTextSteps(readOnly = false, llmFix = false) {
|
|
|
136
148
|
*/
|
|
137
149
|
export const runLintTextCli = (opts = {}) =>
|
|
138
150
|
runStandardLint(import.meta.dirname, () => runLintTextSteps(opts.readOnly === true, opts.llmFix === true))
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Оркестраторний адаптер `n-cursor lint text`: делегує у `runLintTextCli`.
|
|
154
|
+
* @param {string[] | undefined} _files ігнорується (whole-repo аналіз)
|
|
155
|
+
* @param {string} [_cwd] корінь (ігнорується — CLI працює від process.cwd())
|
|
156
|
+
* @param {{ readOnly?: boolean, llmFix?: boolean }} [opts] readOnly → детект без авто-фіксу;
|
|
157
|
+
* llmFix → opt-in omlx-класифікація cspell
|
|
158
|
+
* @returns {Promise<number>} exit code
|
|
159
|
+
*/
|
|
160
|
+
export function lint(_files, _cwd, opts = {}) {
|
|
161
|
+
return runLintTextCli({ readOnly: opts.readOnly === true, llmFix: opts.llmFix === true })
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (isRunAsCli(import.meta.url)) {
|
|
165
|
+
// Standalone: bun rules/text/main.mjs — повний еквівалент `npx @nitra/cursor check text`.
|
|
166
|
+
process.exitCode = await runRuleCli(import.meta.dirname)
|
|
167
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: main.mjs
|
|
4
|
+
resource: npm/rules/tool-surface/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. Він обробляє запити, пов'язані з JavaScript, та взаємодіє з MDC. При запуску як CLI, він ініціалізує та виконує повний цикл перевірки, надаючи фінальний звіт.
|
|
14
|
+
|
|
15
|
+
## Поведінка
|
|
16
|
+
|
|
17
|
+
1. Викликається функція `run` для виконання перевірки поверхні.
|
|
18
|
+
2. Виконання перевірки поверхні включає застосування політик, обробку JS-запитань та посилання на MDC.
|
|
19
|
+
3. Якщо код виконується як окремий інструмент (CLI), виконується оркестрація правила.
|
|
20
|
+
4. Оркестрація правила зчитує конфігурацію з `meta.json` та виконує повний цикл перевірки, включаючи підсумок.
|
|
21
|
+
|
|
22
|
+
## Публічний API
|
|
23
|
+
|
|
24
|
+
run — виконує основну логіку правила: застосовує перевірки, аналізує JS-залежності та політику, а також перевіряє посилання на MDC.
|
|
25
|
+
|
|
26
|
+
## Гарантії поведінки
|
|
27
|
+
|
|
28
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
29
|
+
- Кешує результати в межах одного прогону.
|
|
@@ -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
|
+
}
|
package/rules/vue/docs/index.md
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: main.mjs
|
|
4
|
+
resource: npm/rules/vue/main.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: 762b6875
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
+
score: 100
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Модуль виконує перевірку, застосовуючи політику та обробляючи логіку JavaScript. Він забезпечує повний запуск правила, завантажуючи конфігурації, такі як meta.json, застосовуючи білі списки та підбиваючи підсумки. При запуску як окрема утиліта командного рядка, виконується повний цикл перевірки через публічну функцію run. Модуль є Read-only і кешує дані у межах прогону.
|
|
14
|
+
|
|
15
|
+
## Поведінка
|
|
16
|
+
|
|
17
|
+
1. Викликається функція `run` для виконання перевірки.
|
|
18
|
+
2. Виконання перевірки включає застосування політики, обробку логіки, пов'язаної з JavaScript, та посилання на MDC-референси.
|
|
19
|
+
3. Якщо скрипт виконується як окрема утиліта командного рядка, виконується повний запуск правила.
|
|
20
|
+
4. Повний запуск правила включає завантаження конфігурацій (наприклад, `meta.json`), застосування білих списків та підбиття підсумків.
|
|
21
|
+
|
|
22
|
+
## Публічний API
|
|
23
|
+
|
|
24
|
+
run — виконує основну логіку правила: застосовує перевірки, обробляє JS-залежності та політику, а також посилається на метадані.
|
|
25
|
+
|
|
26
|
+
## Гарантії поведінки
|
|
27
|
+
|
|
28
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
29
|
+
- Кешує результати в межах одного прогону.
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: main.mjs
|
|
4
|
+
resource: npm/rules/worktree/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. Він обробляє JS-запити та звертається до MDC-ресурсів. Модуль є Read-only, тобто не здійснює записів у файлову систему чи бази даних. При запуску як окрема утиліта командного рядка, він виконує правила, використовуючи публічну функцію run. Дані кешуються у межах одного прогону.
|
|
14
|
+
|
|
15
|
+
## Поведінка
|
|
16
|
+
|
|
17
|
+
1. Викликається функція `run` для виконання перевірки.
|
|
18
|
+
2. Виконання перевірки включає застосування політик, обробку JS-запитань та посилання на MDC-ресурси.
|
|
19
|
+
3. Якщо скрипт виконується як окрема утиліта командного рядка, запускається повний процес виконання правила.
|
|
20
|
+
|
|
21
|
+
## Публічний API
|
|
22
|
+
|
|
23
|
+
run — виконує основну логіку правила: застосовує JS-залежності, перевіряє політику та посилання MDC.
|
|
24
|
+
|
|
25
|
+
## Гарантії поведінки
|
|
26
|
+
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
28
|
+
- Кешує результати в межах одного прогону.
|
|
@@ -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
|
+
}
|
package/scripts/docs/index.md
CHANGED
|
@@ -15,6 +15,7 @@ resource: npm/scripts/
|
|
|
15
15
|
| [coverage-fix-extract.mjs](coverage-fix-extract.md) | JS Module |
|
|
16
16
|
| [coverage-fix.mjs](coverage-fix.md) | JS Module |
|
|
17
17
|
| [ensure-nitra-cursor-dev-dependencies.mjs](ensure-nitra-cursor-dev-dependencies.md) | JS Module |
|
|
18
|
+
| [post-tool-use-check.mjs](post-tool-use-check.md) | JS Module |
|
|
18
19
|
| [post-tool-use-fix.mjs](post-tool-use-fix.md) | JS Module |
|
|
19
20
|
| [rename-yaml-extensions.mjs](rename-yaml-extensions.md) | JS Module |
|
|
20
21
|
| [skills-cli.mjs](skills-cli.md) | JS Module |
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: post-tool-use-check.mjs
|
|
4
|
+
resource: npm/scripts/post-tool-use-check.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: 7d2faa18
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
+
score: 100
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Цей модуль є PostToolUse hook, який виконує read-only детект конформності всіх активованих правил після кожного редагування файлу (`Edit` / `Write` / `MultiEdit`). Він отримує шлях до файлу з вхідного JSON. Якщо файл відсутній, модуль завершує роботу з кодом 0. Інакше, він запускає детект конформності по всіх правилах, не виконуючи жодних мутацій чи викликів LLM. Код виходу 1 інформує про наявність порушень конформності, хоча PostToolUse не блокує поточний обмін.
|
|
14
|
+
|
|
15
|
+
## Поведінка
|
|
16
|
+
|
|
17
|
+
extractFilePath зчитує JSON із вхідного потоку та витягує відносний шлях до файлу, повертаючи його або `null` у разі невалідного JSON чи відсутності поля.
|
|
18
|
+
runPostToolUseCheckCli зчитує вхідні дані, визначає шлях до файлу та виконує перевірку конформності всіх активованих правил, повертаючи код виходу 0, якщо порушень немає, або 1, якщо є порушення конформності.
|
|
19
|
+
|
|
20
|
+
## Публічний API
|
|
21
|
+
|
|
22
|
+
extractFilePath — витягує шлях до файлу з вхідних даних JSON, повертаючи `null`, якщо JSON недійсний або поле відсутнє.
|
|
23
|
+
runPostToolUseCheckCli — ініціює перевірку після використання інструменту при запуску з `bin/n-cursor.js` з аргументом `post-tool-use-check`.
|
|
24
|
+
|
|
25
|
+
## Гарантії поведінки
|
|
26
|
+
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
28
|
+
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
29
|
+
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
|
|
@@ -3,108 +3,80 @@ type: JS Module
|
|
|
3
3
|
title: sync-claude-config.mjs
|
|
4
4
|
resource: npm/scripts/sync-claude-config.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
7
|
-
|
|
6
|
+
crc: 88f4080d
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
+
score: 85
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
## Огляд
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
MANAGED_HOOK_COMMAND_MARKER Маркер PostToolUse fix-hook
|
|
15
|
-
|
|
16
|
-
DOC_FILES_HOOK_COMMAND_MARKER Маркер doc-files staleness-hook
|
|
17
|
-
|
|
18
|
-
LEGACY_STOP_HOOK_COMMAND_MARKER Маркер старого Stop-hook
|
|
19
|
-
|
|
20
|
-
ADR_HOOK_COMMAND_MARKER Маркер ADR Stop-hook
|
|
21
|
-
|
|
22
|
-
ADR_NORMALIZE_HOOK_COMMAND_MARKER Маркер ADR Stop-hook
|
|
23
|
-
|
|
24
|
-
CURSOR_ADR_HOOK_COMMAND_MARKER Маркер Cursor ADR Stop-hook
|
|
25
|
-
|
|
26
|
-
CURSOR_ADR_NORMALIZE_HOOK_COMMAND_MARKER Маркер Cursor ADR Normalize Stop-hook
|
|
27
|
-
|
|
28
|
-
MANAGED_HOOK_COMMAND_MARKERS Маркерів для відрізнення managed-hook'ів
|
|
29
|
-
|
|
30
|
-
PI_DIR Корінь pi.dev артефактів
|
|
31
|
-
|
|
32
|
-
PI_EXTENSIONS_DIR Директорія pi.dev TS-extensions
|
|
33
|
-
|
|
34
|
-
PI_TEMPLATE_DIR_NAME Назва bundled-директорії pi-template
|
|
35
|
-
|
|
36
|
-
PI_EXTENSION_NAME Імʼя bundled pi-extension'а
|
|
37
|
-
|
|
38
|
-
ADR_GITIGNORE_SNIPPET_REL Відносний шлях до канонічного фрагмента `.gitignore` для ADR Stop-hook'ів
|
|
13
|
+
Синхронізує конфігурацію Claude Code (`.claude/settings.json`, slash-команди з `commands/` темплейту, ADR Stop-hook) та Cursor hooks (`.cursor/hooks.json`) у поточний проєкт із темплейтів пакету `npm/.claude-template/`. Здійснює злиття конфігурацій: користувацькі поля зберігаються у `.claude/settings.json`, а дозволи (`permissions.allow`) зливаються через union. Керовані хуки, ідентифіковані командою-маркером `MANAGED_HOOK_COMMAND_MARKERS`, перезаписуються. Копіює ADR Stop-hook (`.claude/hooks/capture-decisions.sh`) та ADR normalize Stop-hook (`.claude/hooks/normalize-decisions.sh`) залежно від налаштувань у `.n-cursor.json`. Також зливає фрагмент `.gitignore` з канонічного шаблону, додаючи необхідні записи для ADR.
|
|
39
14
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
mergeHooks Зливає hooks-секцію, видаляючи managed-групи з існуючої конфігурації
|
|
43
|
-
|
|
44
|
-
mergeSettings Зливає конфігурацію Claude, перевіряючи та зливаючи permissions та hooks
|
|
45
|
-
|
|
46
|
-
mergeCursorHooksConfig Зливає конфігурацію Cursor, керуючи додаванням/видаленням ADR stop entries
|
|
47
|
-
|
|
48
|
-
syncCursorHooksConfig Синхронізує `.cursor/hooks.json` для Cursor Agent stop-hooks
|
|
49
|
-
|
|
50
|
-
syncClaudeSettings Синхронізує `.claude/settings.json` за темплейтом
|
|
51
|
-
|
|
52
|
-
syncAdrHookScript Копіює канонічний bash-скрипт ADR capture Stop-hook з темплейту
|
|
53
|
-
|
|
54
|
-
syncAdrNormalizeHookScript Копіює канонічний bash-скрипт ADR normalize Stop-hook з темплейту
|
|
55
|
-
|
|
56
|
-
syncAdrHookLibScripts Копіює `.sh`-файли з `.claude-template/hooks/lib/` у `.claude/hooks/`
|
|
57
|
-
|
|
58
|
-
removeOrphanAdrHookLib Видаляє директорію `.claude/hooks/lib/` з проєкту-споживача
|
|
59
|
-
|
|
60
|
-
syncPiExtensions Копіює bundled pi.dev TS-extension з пакета у проєкт
|
|
61
|
-
|
|
62
|
-
removeOrphanPiExtension Видаляє директорію `.pi/extensions/n-cursor-adr/` з проєкту-споживача
|
|
63
|
-
|
|
64
|
-
syncGitignoreAdrFragment Дописує відсутні рядки з канонічного ADR-фрагмента до кореневого `.gitignore` проєкту
|
|
65
|
-
|
|
66
|
-
syncClaudeCommands Копіює slash-команди з `commands/` темплейту у `.claude/commands/`
|
|
15
|
+
## Поведінка
|
|
67
16
|
|
|
68
|
-
|
|
17
|
+
MANAGED_HOOK_COMMAND_MARKER — Визначає маркер для хука `post-tool-use-check`.
|
|
18
|
+
DOC_FILES_HOOK_COMMAND_MARKER — Визначає маркер для хука `lint-doc-files`.
|
|
19
|
+
LEGACY_DOC_FILES_HOOK_COMMAND_MARKER — Визначає маркер для застарілого хука `doc-files check`.
|
|
20
|
+
LEGACY_STOP_HOOK_COMMAND_MARKER — Визначає маркер для застарілого Stop-hook'а.
|
|
21
|
+
ADR_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR capture Stop-hook.
|
|
22
|
+
ADR_NORMALIZE_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR normalize Stop-hook.
|
|
23
|
+
CURSOR_ADR_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR capture Stop-hook у `.cursor/hooks.json`.
|
|
24
|
+
CURSOR_ADR_NORMALIZE_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR normalize Stop-hook у `.cursor/hooks.json`.
|
|
25
|
+
MANAGED_HOOK_COMMAND_MARKERS — Містить список усіх маркерів, що ідентифікують керовані хуки пакета.
|
|
26
|
+
PI_DIR — Визначає кореневу директорію для артефактів pi.dev у проєкті-споживачі.
|
|
27
|
+
PI_EXTENSIONS_DIR — Визначає директорію для TS-extensions pi.dev у проєкті-споживачі.
|
|
28
|
+
PI_TEMPLATE_DIR_NAME — Визначає назву директорії з темплейтом pi-template у пакеті.
|
|
29
|
+
PI_EXTENSION_NAME — Визначає ім'я bundled pi-extension для ADR capture/normalize.
|
|
30
|
+
ADR_GITIGNORE_SNIPPET_REL — Визначає відносний шлях до канонічного фрагмента `.gitignore` для ADR Stop-hook'ів у tarball пакета.
|
|
31
|
+
mergeAllowList — Об'єднує списки дозволених дозволів, зберігаючи користувацькі записи першими.
|
|
32
|
+
mergeHooks — Зливає секцію `hooks` з `.claude/settings.json`, видаляючи керовані групи з існуючої конфігурації.
|
|
33
|
+
mergeSettings — Зливає конфігурацію `.claude/settings.json` з темплейту, зберігаючи користувацькі поля та оновлюючи керовані хуки.
|
|
34
|
+
mergeCursorHooksConfig — Зливає конфігурацію `.cursor/hooks.json`, зберігаючи користувацькі записи та додаючи/видаляючи керовані ADR stop entries.
|
|
35
|
+
syncCursorHooksConfig — Синхронізує `.cursor/hooks.json` для Cursor Agent stop-hooks, додаючи ADR entries за умовою.
|
|
36
|
+
syncClaudeSettings — Синхронізує `.claude/settings.json` за темплейтом, зберігаючи користувацькі налаштування.
|
|
37
|
+
syncAdrHookScript — Копіює канонічний bash-скрипт ADR capture Stop-hook з темплейту пакета у `.claude/hooks/`.
|
|
38
|
+
syncAdrNormalizeHookScript — Копіює канонічний bash-скрипт ADR normalize Stop-hook з темплейту пакета у `.claude/hooks/`.
|
|
39
|
+
syncAdrHookLibScripts — Копіює всі bash-скрипти з `lib/` темплейту у `.claude/hooks/lib/` проєкту.
|
|
40
|
+
removeOrphanAdrHookLib — Видаляє директорію `.claude/hooks/lib/` з проєкту, якщо ADR-хуки вимкнені.
|
|
41
|
+
syncPiExtensions — Копіює bundled pi.dev TS-extension `n-cursor-adr` у `.pi/extensions/n-cursor-adr/` проєкту.
|
|
42
|
+
removeOrphanPiExtension — Видаляє директорію `.pi/extensions/n-cursor-adr/` з проєкту, якщо ADR-хуки вимкнені.
|
|
43
|
+
syncGitignoreAdrFragment — Дописує відсутні рядки з канонічного ADR-фрагмента до кореневого `.gitignore` проєкту.
|
|
44
|
+
syncClaudeCommands — Копіює всі slash-команди з `.claude-template/commands/` у `.claude/commands/` проєкту.
|
|
45
|
+
syncClaudeConfig — Виконує повну синхронізацію Claude Code-конфігу, включаючи ADR-хуки, `.gitignore` та pi-extension, залежно від правил.
|
|
69
46
|
|
|
70
47
|
## Публічний API
|
|
71
48
|
|
|
72
|
-
MANAGED_HOOK_COMMAND_MARKER —
|
|
73
|
-
DOC_FILES_HOOK_COMMAND_MARKER —
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
PI_DIR —
|
|
82
|
-
PI_EXTENSIONS_DIR — Директорія TS-розширень pi.dev у
|
|
83
|
-
PI_TEMPLATE_DIR_NAME — Назва
|
|
84
|
-
PI_EXTENSION_NAME —
|
|
85
|
-
ADR_GITIGNORE_SNIPPET_REL — Відносний шлях до
|
|
86
|
-
mergeAllowList —
|
|
87
|
-
mergeHooks —
|
|
88
|
-
mergeSettings —
|
|
89
|
-
mergeCursorHooksConfig —
|
|
90
|
-
syncCursorHooksConfig — Синхронізує
|
|
91
|
-
syncClaudeSettings —
|
|
92
|
-
syncAdrHookScript — Копіює канонічний
|
|
93
|
-
syncAdrNormalizeHookScript — Копіює канонічний
|
|
94
|
-
syncAdrHookLibScripts — Копіює всі
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
syncGitignoreAdrFragment — Дописує в кореневий `.gitignore` проєкту відсутні рядки з канонічного ADR-фрагмента.
|
|
102
|
-
syncClaudeCommands — Копіює всі slash-команди з `templateDir/commands/` у `.claude/commands/`. Команди ідентифікуються тим, що вони лежать у темплейті — не перетинаються з командами скілів (n-fix, n-lint, ...).
|
|
103
|
-
syncClaudeConfig — Виконує повну синхронізацію Claude Code-конфігу з темплейту пакету в проєкт. Використовується з `bin/n-cursor.js` після інших синків.
|
|
49
|
+
MANAGED_HOOK_COMMAND_MARKER — Позначає хук для перевірки після використання інструменту.
|
|
50
|
+
DOC_FILES_HOOK_COMMAND_MARKER — Позначає хук для перевірки актуальності файлів документації.
|
|
51
|
+
LEGACY_DOC_FILES_HOOK_COMMAND_MARKER — Позначає старий маркер для очищення хуків документації.
|
|
52
|
+
LEGACY_STOP_HOOK_COMMAND_MARKER — Позначає старий маркер для очищення хука зупинки.
|
|
53
|
+
ADR_HOOK_COMMAND_MARKER — Позначає шлях до скрипта для фіксації рішень ADR.
|
|
54
|
+
ADR_NORMALIZE_HOOK_COMMAND_MARKER — Позначає шлях до скрипта для нормалізації рішень ADR.
|
|
55
|
+
CURSOR_ADR_HOOK_COMMAND_MARKER — Позначає шлях до скрипта фіксації ADR у конфігурації Cursor.
|
|
56
|
+
CURSOR_ADR_NORMALIZE_HOOK_COMMAND_MARKER — Позначає шлях до скрипта нормалізації ADR у конфігурації Cursor.
|
|
57
|
+
MANAGED_HOOK_COMMAND_MARKERS — Групує всі маркери хуків, щоб відрізнити автоматичні записи від користувацьких.
|
|
58
|
+
PI_DIR — Місце зберігання артефактів pi.dev у проєкті.
|
|
59
|
+
PI_EXTENSIONS_DIR — Директорія для TS-розширень pi.dev у проєкті.
|
|
60
|
+
PI_TEMPLATE_DIR_NAME — Назва папки з шаблоном pi у пакеті.
|
|
61
|
+
PI_EXTENSION_NAME — Ім'я пакета pi-розширення для фіксації/нормалізації ADR.
|
|
62
|
+
ADR_GITIGNORE_SNIPPET_REL — Відносний шлях до шаблону `.gitignore` для ADR.
|
|
63
|
+
mergeAllowList — Об'єднує дозволені права доступу, зберігаючи порядок існуючих записів.
|
|
64
|
+
mergeHooks — Об'єднує секцію хуків: видаляє автоматичні записи з існуючої конфігурації та додає записи з шаблону.
|
|
65
|
+
mergeSettings — Створює об'єднаний файл налаштувань.
|
|
66
|
+
mergeCursorHooksConfig — Об'єднує конфігурацію хуків Cursor, зберігаючи користувацькі записи та оновлюючи ADR-записи.
|
|
67
|
+
syncCursorHooksConfig — Синхронізує конфігурацію зупинки для агента Cursor.
|
|
68
|
+
syncClaudeSettings — Копіює налаштування Claude Code з шаблону, зберігаючи користувацькі дані.
|
|
69
|
+
syncAdrHookScript — Копіює канонічний скрипт фіксації рішень ADR.
|
|
70
|
+
syncAdrNormalizeHookScript — Копіює канонічний скрипт нормалізації рішень ADR.
|
|
71
|
+
syncAdrHookLibScripts — Копіює всі допоміжні скрипти з шаблону в проєкт.
|
|
72
|
+
removeOrphanAdrHookLib — Видаляє директорію з допоміжними скриптами ADR, якщо правило ADR вимкнено.
|
|
73
|
+
syncPiExtensions — Копіює TS-розширення pi.dev у проєкт.
|
|
74
|
+
removeOrphanPiExtension — Видаляє директорію з розширення pi, якщо правило ADR вимкнено.
|
|
75
|
+
syncGitignoreAdrFragment — Додає необхідні рядки з канонічного фрагмента `.gitignore` до кореня проєкту.
|
|
76
|
+
syncClaudeCommands — Копіює всі slash-команди з шаблону в директорію команд Claude.
|
|
77
|
+
syncClaudeConfig — Виконує повну синхронізацію конфігурації Claude Code з шаблону.
|
|
104
78
|
|
|
105
79
|
## Гарантії поведінки
|
|
106
80
|
|
|
107
81
|
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
108
|
-
- За невдачі повертає значення помилки (`false`/`null`/`Err`) замість генерування винятку чи паніки.
|
|
109
82
|
- Свідомо пропускає шляхи: `.git`.
|
|
110
|
-
- Не звертається до мережі.
|
|
@@ -6,11 +6,8 @@ docgen:
|
|
|
6
6
|
crc: 63a18347
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 90
|
|
9
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
10
9
|
---
|
|
11
10
|
|
|
12
|
-
## Огляд
|
|
13
|
-
|
|
14
11
|
Цей файл є CLI-обгорткою для локального нормалізатора ADR. Він зчитує шляхи до чернеток (`--batch <file>`) та список чистих ADR (`--clean <file>`), використовуючи директорію ADR (`--adr-dir <dir>`) для резолву шляхів. Обгортка запускає `normalizePipeline`, яка генерує JSON-контракт у форматі `{ "operations": [...] }` та виводить його у stdout для подальшого парсингу bash-скриптом. Прогрес та помилки записуються у stderr. Поведінка нормалізатора може бути змінена через змінні середовища: `ADR_NORMALIZE_ALLOW_CLOUD` контролює можливість хмарної ескалації, а `ADR_NORMALIZE_VOTES` визначає кількість голосів self-consistency для чистих ADR.
|
|
15
12
|
|
|
16
13
|
## Поведінка
|
|
@@ -7,11 +7,8 @@ docgen:
|
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
issues: judge:inaccurate:0.99
|
|
10
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
10
|
---
|
|
12
11
|
|
|
13
|
-
## Огляд
|
|
14
|
-
|
|
15
12
|
Файл реалізує локально-орієнтований конвеєр для нормалізації чернеток архітектурних рішень (ADR). Він працює за принципом інверсії керування: JavaScript оркеструє процес, а LLM відповідає лише на вузькі, верифіковані запитання, будучи заточеним під малу локальну модель (omlx/gemma-4b). LLM використовується лише для бінарного судження схожості між записами (наприклад, через `edge-judge`) та витягування змісту секцій у JSON (через `gen-MADR`). Конвеєр збирає, валідує та складає повний MADR-каркас, використовуючи кластеризацію (`cluster` та `union-find`) та проходить через `validation gate`, повертаючи результат у вигляді операцій для застосування.
|
|
16
13
|
|
|
17
14
|
## Поведінка
|