@nitra/cursor 12.8.9 → 12.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-template/settings.template.json +1 -23
- package/CHANGELOG.md +14 -1
- package/bin/n-cursor.js +21 -48
- package/docs/stryker.config.md +0 -2
- package/lib/docs/llm.md +16 -21
- package/lib/docs/omlx.md +20 -25
- package/lib/llm.mjs +25 -7
- package/lib/omlx.mjs +10 -3
- package/package.json +5 -5
- package/rules/abie/docs/index.md +0 -1
- package/rules/abie/docs/main.md +0 -2
- package/rules/abie/lib/docs/http-route.md +9 -12
- package/rules/abie/lib/http-route.mjs +3 -0
- package/rules/abie/main.mdc +0 -22
- package/rules/abie/policy/health_check_policy/health_check_policy.mdc +3 -1
- package/rules/abie/policy/health_check_policy/health_check_policy.rego +27 -0
- package/rules/adr/docs/index.md +0 -1
- package/rules/adr/docs/main.md +0 -2
- package/rules/adr/js/madr_format.mdc +13 -1
- package/rules/adr/main.mdc +0 -9
- package/rules/bun/docs/index.md +0 -1
- package/rules/bun/docs/main.md +0 -2
- package/rules/bun/main.mdc +1 -15
- package/rules/bun/policy/package_json/package_json.rego +12 -0
- package/rules/capacitor/docs/index.md +0 -1
- package/rules/capacitor/docs/main.md +0 -2
- package/rules/capacitor/main.mdc +0 -6
- package/rules/changelog/docs/index.md +0 -1
- package/rules/changelog/docs/main.md +0 -2
- package/rules/changelog/js/agent-workflow.mdc +1 -1
- package/rules/changelog/js/consistency.mjs +3 -3
- package/rules/changelog/js/docs/consistency.md +18 -23
- package/rules/changelog/main.mdc +0 -5
- package/rules/ci4/docs/index.md +0 -1
- package/rules/ci4/docs/main.md +0 -2
- package/rules/ci4/main.mdc +0 -5
- package/rules/doc-files/docs/index.md +0 -1
- package/rules/doc-files/docs/main.md +7 -11
- package/rules/doc-files/js/docs/docgen-crc.md +0 -2
- package/rules/doc-files/js/docs/docgen-extract.md +0 -2
- package/rules/doc-files/js/docs/docgen-files-batch.md +0 -2
- package/rules/doc-files/js/docs/docgen-gen.md +0 -2
- package/rules/doc-files/js/docs/docgen-judge-measure.md +0 -2
- package/rules/doc-files/js/docs/docgen-judge.md +0 -2
- package/rules/doc-files/js/docs/docgen-scan.md +0 -2
- package/rules/doc-files/js/docs/run-lint.md +0 -2
- package/rules/doc-files/main.mjs +2 -3
- package/rules/docker/docs/index.md +0 -1
- package/rules/docker/docs/main.md +0 -2
- package/rules/docker/js/docs/lint.md +0 -2
- package/rules/docker/lib/docs/docker-hadolint.md +0 -2
- package/rules/docker/main.mdc +1 -21
- package/rules/efes/docs/index.md +0 -1
- package/rules/efes/docs/main.md +0 -2
- package/rules/efes/main.mdc +0 -1
- package/rules/feedback/docs/index.md +0 -1
- package/rules/feedback/docs/main.md +0 -2
- package/rules/ga/docs/index.md +0 -1
- package/rules/ga/docs/main.md +0 -2
- package/rules/ga/js/docs/index.md +0 -1
- package/rules/ga/main.mdc +1 -31
- package/rules/graphql/docs/index.md +0 -1
- package/rules/graphql/docs/main.md +0 -2
- package/rules/graphql/main.mdc +0 -5
- package/rules/hasura/docs/index.md +0 -1
- package/rules/hasura/docs/main.md +0 -2
- package/rules/hasura/js/docs/index.md +1 -0
- package/rules/hasura/js/docs/migrations.md +28 -0
- package/rules/hasura/js/migrations.mjs +47 -0
- package/rules/hasura/main.mdc +1 -11
- package/rules/image-avif/docs/index.md +0 -1
- package/rules/image-avif/docs/main.md +0 -2
- package/rules/image-avif/main.mdc +1 -9
- package/rules/image-compress/docs/index.md +0 -1
- package/rules/image-compress/docs/main.md +0 -2
- package/rules/image-compress/js/docs/index.md +0 -1
- package/rules/image-compress/main.mdc +1 -9
- package/rules/js/docs/index.md +0 -1
- package/rules/js/docs/main.md +0 -2
- package/rules/js/js/dep-policy.mjs +91 -0
- package/rules/js/js/docs/check.md +0 -2
- package/rules/js/js/docs/dep-policy.md +34 -0
- package/rules/js/js/docs/index.md +5 -4
- package/rules/js/js/docs/tooling.md +0 -2
- package/rules/js/js/docs/utils_imports.md +0 -2
- package/rules/js/main.mdc +0 -31
- package/rules/js/policy/package_json/package_json.rego +16 -0
- package/rules/js-bun-db/docs/index.md +0 -1
- package/rules/js-bun-db/docs/main.md +0 -2
- package/rules/js-bun-db/js/docs/safety.md +18 -23
- package/rules/js-bun-db/js/safety.mjs +31 -3
- package/rules/js-bun-db/lib/bun-sql-scan.mjs +123 -0
- package/rules/js-bun-db/lib/docs/bun-sql-scan.md +37 -331
- package/rules/js-bun-db/main.mdc +1 -23
- package/rules/js-bun-redis/docs/index.md +0 -1
- package/rules/js-bun-redis/docs/main.md +0 -2
- package/rules/js-bun-redis/main.mdc +0 -5
- package/rules/js-mssql/docs/index.md +0 -1
- package/rules/js-mssql/docs/main.md +0 -2
- package/rules/js-mssql/main.mdc +0 -12
- package/rules/js-run/docs/index.md +0 -1
- package/rules/js-run/docs/main.md +0 -2
- package/rules/js-run/js/docs/runtime.md +15 -13
- package/rules/js-run/js/runtime.mjs +48 -4
- package/rules/js-run/main.mdc +0 -25
- package/rules/k8s/docs/index.md +0 -1
- package/rules/k8s/docs/main.md +0 -2
- package/rules/k8s/main.mdc +0 -45
- package/rules/nginx-default-tpl/docs/index.md +0 -1
- package/rules/nginx-default-tpl/docs/main.md +0 -2
- package/rules/nginx-default-tpl/main.mdc +0 -13
- package/rules/npm-module/docs/index.md +0 -1
- package/rules/npm-module/docs/main.md +0 -2
- package/rules/npm-module/js/docs/header_doc_pointer.md +0 -2
- package/rules/npm-module/js/docs/rule_meta.md +0 -2
- package/rules/npm-module/js/docs/skill_meta.md +0 -2
- package/rules/npm-module/main.mdc +1 -15
- package/rules/php/docs/index.md +0 -1
- package/rules/php/docs/main.md +0 -2
- package/rules/php/js/docs/index.md +0 -1
- package/rules/php/main.mdc +1 -9
- package/rules/python/docs/index.md +0 -1
- package/rules/python/docs/main.md +0 -2
- package/rules/python/js/docs/index.md +0 -1
- package/rules/python/main.mdc +1 -13
- package/rules/rego/docs/index.md +0 -1
- package/rules/rego/docs/main.md +0 -2
- package/rules/rego/js/docs/index.md +1 -1
- package/rules/rego/js/docs/tooling.md +26 -0
- package/rules/rego/js/tooling.mdc +14 -0
- package/rules/rego/js/tooling.mjs +24 -0
- package/rules/rego/main.mdc +0 -9
- package/rules/rego/policy/package_json/package_json.mdc +12 -0
- package/rules/rego/policy/package_json/package_json.rego +21 -0
- package/rules/rego/policy/package_json/target.json +4 -0
- package/rules/release/docs/index.md +0 -1
- package/rules/release/docs/main.md +0 -2
- package/rules/release/main.mdc +2 -2
- package/rules/rust/docs/index.md +0 -1
- package/rules/rust/docs/main.md +0 -2
- package/rules/rust/js/docs/index.md +0 -1
- package/rules/rust/main.mdc +1 -11
- package/rules/rust/policy/lint_rust_yml/lint_rust_yml.rego +24 -0
- package/rules/rust/policy/package_json/package_json.mdc +12 -0
- package/rules/rust/policy/package_json/package_json.rego +20 -0
- package/rules/rust/policy/package_json/target.json +4 -0
- package/rules/security/docs/index.md +0 -1
- package/rules/security/docs/main.md +0 -2
- package/rules/security/js/docs/index.md +0 -1
- package/rules/security/main.mdc +0 -13
- package/rules/style/docs/index.md +0 -1
- package/rules/style/docs/main.md +0 -2
- package/rules/style/js/docs/index.md +0 -1
- package/rules/style/js/docs/tooling.md +12 -10
- package/rules/style/js/tooling.mjs +8 -2
- package/rules/style/main.mdc +1 -23
- package/rules/style/policy/lint_style_yml/lint_style_yml.rego +5 -0
- package/rules/tauri/docs/index.md +0 -1
- package/rules/tauri/docs/main.md +0 -2
- package/rules/tauri/main.mdc +1 -11
- package/rules/test/docs/index.md +0 -1
- package/rules/test/docs/main.md +0 -2
- package/rules/test/js/docs/index.md +2 -0
- package/rules/test/js/docs/no-console-store-restore.md +30 -0
- package/rules/test/js/docs/sandbox-aware-test.md +30 -0
- package/rules/test/js/docs/stryker_config.md +0 -2
- package/rules/test/js/docs/vitest-config-pool-forks.md +0 -2
- package/rules/test/js/no-console-store-restore.mjs +88 -0
- package/rules/test/js/sandbox-aware-test.mjs +89 -0
- package/rules/test/main.mdc +1 -21
- package/rules/text/docs/index.md +0 -1
- package/rules/text/docs/main.md +0 -2
- package/rules/text/js/docs/cspell-fix.md +0 -2
- package/rules/text/js/docs/run-dotenv-linter.md +0 -2
- package/rules/text/js/docs/run-shellcheck.md +0 -2
- package/rules/text/js/docs/run-v8r.md +0 -2
- package/rules/text/main.mdc +0 -33
- package/rules/tool-surface/docs/index.md +0 -1
- package/rules/tool-surface/docs/main.md +0 -2
- package/rules/vue/docs/index.md +0 -1
- package/rules/vue/docs/main.md +0 -2
- package/rules/vue/main.mdc +0 -22
- package/rules/worktree/docs/index.md +0 -1
- package/rules/worktree/docs/main.md +0 -2
- package/scripts/docs/auto-rules.md +0 -2
- package/scripts/docs/auto-skills.md +0 -2
- package/scripts/docs/hook.md +30 -0
- package/scripts/docs/index.md +1 -2
- package/scripts/docs/post-tool-use-check.md +0 -2
- package/scripts/docs/sync-claude-config.md +1 -3
- package/scripts/docs/sync-setup-bun-deps-action.md +0 -2
- package/scripts/hook.mjs +71 -0
- package/scripts/lib/docs/check-mdc-template-refs.md +0 -2
- package/scripts/lib/docs/index.md +35 -36
- package/scripts/lib/docs/inline-template-links.md +6 -8
- package/scripts/lib/docs/list-project-rules-mdc.md +0 -2
- package/scripts/lib/docs/list-rule-ids.md +0 -2
- package/scripts/lib/docs/mirror-parity.md +8 -10
- package/scripts/lib/docs/read-n-cursor-config-lite.md +0 -2
- package/scripts/lib/docs/rule-meta.md +0 -2
- package/scripts/lib/docs/run-lint.md +9 -10
- package/scripts/lib/docs/run-rule-cli.md +0 -2
- package/scripts/lib/docs/run-rule.md +7 -9
- package/scripts/lib/docs/run-standard-lint.md +0 -2
- package/scripts/lib/docs/run-standard-rule.md +0 -2
- package/scripts/lib/docs/skill-meta.md +0 -2
- package/scripts/lib/docs/timing-summary.md +0 -2
- package/scripts/lib/docs/worktree-notice.md +0 -2
- package/scripts/lib/fix/docs/analyze-escalation.md +0 -2
- package/scripts/lib/fix/docs/index.md +10 -10
- package/scripts/lib/fix/docs/llm-worker.md +18 -8
- package/scripts/lib/fix/docs/orchestrator.md +44 -20
- package/scripts/lib/fix/docs/run-conformance-check.md +0 -2
- package/scripts/lib/fix/docs/t0.md +0 -2
- package/scripts/lib/fix/docs/verbose-block.md +27 -0
- package/scripts/lib/fix/llm-worker.mjs +75 -22
- package/scripts/lib/fix/orchestrator.mjs +13 -3
- package/scripts/lib/fix/verbose-block.mjs +82 -0
- package/scripts/lib/inline-template-links.mjs +32 -22
- package/scripts/lib/mirror-parity.mjs +2 -2
- package/scripts/lib/run-lint.mjs +15 -2
- package/scripts/lib/run-rule.mjs +1 -2
- package/scripts/sync-claude-config.mjs +7 -4
- package/scripts/utils/docs/resolve-js-root.md +0 -2
- package/skills/adr-normalize/SKILL.md +1 -0
- package/skills/coverage-fix/SKILL.md +1 -0
- package/skills/doc-aggregate/SKILL.md +1 -0
- package/skills/doc-files/SKILL.md +10 -24
- package/skills/lint/SKILL.md +24 -19
- package/skills/llm-patch/SKILL.md +5 -4
- package/skills/publish-telegram/SKILL.md +1 -0
- package/skills/start-check/SKILL.md +1 -0
- package/skills/taze/SKILL.md +3 -2
- package/types/bin/n-cursor.d.ts +1 -1
- package/rules/abie/docs/fix.md +0 -37
- package/rules/adr/docs/fix.md +0 -37
- package/rules/bun/docs/fix.md +0 -30
- package/rules/capacitor/docs/fix.md +0 -36
- package/rules/changelog/docs/fix.md +0 -37
- package/rules/ci4/docs/fix.md +0 -32
- package/rules/doc-files/docs/fix.md +0 -29
- package/rules/docker/docs/fix.md +0 -35
- package/rules/efes/docs/fix.md +0 -37
- package/rules/feedback/docs/fix.md +0 -30
- package/rules/ga/docs/fix.md +0 -30
- package/rules/graphql/docs/fix.md +0 -37
- package/rules/hasura/docs/fix.md +0 -39
- package/rules/image-avif/docs/fix.md +0 -28
- package/rules/image-compress/docs/fix.md +0 -27
- package/rules/js/docs/fix.md +0 -37
- package/rules/js-bun-db/docs/fix.md +0 -30
- package/rules/js-bun-redis/docs/fix.md +0 -32
- package/rules/js-mssql/docs/fix.md +0 -30
- package/rules/js-run/docs/fix.md +0 -36
- package/rules/k8s/docs/fix.md +0 -31
- package/rules/nginx-default-tpl/docs/fix.md +0 -35
- package/rules/npm-module/docs/fix.md +0 -34
- package/rules/php/docs/fix.md +0 -35
- package/rules/python/docs/fix.md +0 -38
- package/rules/rego/docs/fix.md +0 -31
- package/rules/release/docs/fix.md +0 -28
- package/rules/rust/docs/fix.md +0 -32
- package/rules/security/docs/fix.md +0 -33
- package/rules/style/docs/fix.md +0 -28
- package/rules/tauri/docs/fix.md +0 -39
- package/rules/test/docs/fix.md +0 -31
- package/rules/text/docs/fix.md +0 -37
- package/rules/tool-surface/docs/fix.md +0 -32
- package/rules/vue/docs/fix.md +0 -32
- package/rules/worktree/docs/fix.md +0 -40
- package/scripts/docs/post-tool-use-fix.md +0 -32
- package/scripts/docs/worktree-cli.md +0 -27
- package/scripts/lib/docs/worktree.md +0 -42
- package/scripts/lib/fix/docs/run-fix-check.md +0 -33
|
@@ -8,10 +8,12 @@ Rego-пакет: `abie.health_check_policy`
|
|
|
8
8
|
|
|
9
9
|
- `apiVersion` — точно `networking.gke.io/v1`;
|
|
10
10
|
- `metadata.name` — непорожній рядок;
|
|
11
|
+
- `metadata.namespace` — `dev`;
|
|
11
12
|
- `spec.default.config.type` — `HTTP`;
|
|
12
13
|
- `spec.default.config.httpHealthCheck.requestPath` — непорожній, починається з `/`;
|
|
13
|
-
- `spec.default.config.httpHealthCheck.port` — `8080
|
|
14
|
+
- `spec.default.config.httpHealthCheck.port` — `8080` (обов'язковий, відсутність теж помилка);
|
|
14
15
|
- `spec.targetRef.kind` — `Service`;
|
|
16
|
+
- `spec.targetRef.group` — порожній рядок `''` (якщо поле присутнє);
|
|
15
17
|
- `spec.targetRef.name` — `<metadata.name>-hl` (якщо `metadata.name` вже закінчується на `-hl` — використовується як є).
|
|
16
18
|
|
|
17
19
|
FS-парність HCP↔Deployment та modeline `$schema` у `hc.yaml` — поза Rego, у `js/hc_pairing.mjs`. JS-опис структури та приклад — у `js/hc_pairing.mdc`.
|
|
@@ -61,6 +61,15 @@ deny contains "HealthCheckPolicy: metadata.name має бути непорожн
|
|
|
61
61
|
trim_space(name) == ""
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
# ── deny: metadata.namespace ──────────────────────────────────────────────
|
|
65
|
+
|
|
66
|
+
deny contains msg if {
|
|
67
|
+
is_health_check_policy
|
|
68
|
+
ns := object.get(object.get(input, "metadata", {}), "namespace", "")
|
|
69
|
+
ns != "dev"
|
|
70
|
+
msg := sprintf("HealthCheckPolicy: metadata.namespace має бути dev (зараз %q) (abie.mdc)", [ns])
|
|
71
|
+
}
|
|
72
|
+
|
|
64
73
|
# ── deny: spec.default.config.type ────────────────────────────────────────
|
|
65
74
|
|
|
66
75
|
deny contains "HealthCheckPolicy: spec.default.config.type має бути HTTP (abie.mdc)" if {
|
|
@@ -87,6 +96,12 @@ deny contains msg if {
|
|
|
87
96
|
|
|
88
97
|
# ── deny: port == 8080 ────────────────────────────────────────────────────
|
|
89
98
|
|
|
99
|
+
deny contains "HealthCheckPolicy: spec.default.config.httpHealthCheck.port має бути 8080 (abie.mdc)" if {
|
|
100
|
+
is_health_check_policy
|
|
101
|
+
is_object(http_health_check)
|
|
102
|
+
object.get(http_health_check, "port", null) == null
|
|
103
|
+
}
|
|
104
|
+
|
|
90
105
|
deny contains msg if {
|
|
91
106
|
is_health_check_policy
|
|
92
107
|
is_object(http_health_check)
|
|
@@ -108,6 +123,18 @@ deny contains msg if {
|
|
|
108
123
|
msg := sprintf("HealthCheckPolicy: targetRef.kind має бути Service (зараз %q) (abie.mdc)", [kind])
|
|
109
124
|
}
|
|
110
125
|
|
|
126
|
+
# ── deny: targetRef.group == '' ───────────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
deny contains msg if {
|
|
129
|
+
is_health_check_policy
|
|
130
|
+
target_ref := object.get(object.get(input, "spec", {}), "targetRef", {})
|
|
131
|
+
is_object(target_ref)
|
|
132
|
+
group := object.get(target_ref, "group", null)
|
|
133
|
+
group != null
|
|
134
|
+
group != ""
|
|
135
|
+
msg := sprintf("HealthCheckPolicy: targetRef.group має бути порожнім рядком '' (зараз %q) (abie.mdc)", [group])
|
|
136
|
+
}
|
|
137
|
+
|
|
111
138
|
# ── deny: targetRef.name = `<hcp.metadata.name>-hl` (exact, з нормалізацією)
|
|
112
139
|
|
|
113
140
|
deny contains msg if {
|
package/rules/adr/docs/index.md
CHANGED
package/rules/adr/docs/main.md
CHANGED
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль виконує логіку перевірок, обробляючи JS-запити та звертаючись до MDC. При запуску як окремий інструмент, він ініціює повний цикл правил, включаючи завантаження конфігурацій з meta.json. Модуль має лише читачний доступ до файлової системи та баз даних. Під час виконання він використовує кешування у межах прогону для оптимізації.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -93,4 +93,16 @@ docs/adr/
|
|
|
93
93
|
└── hooks.json # Cursor Agent stop-hooks для тих самих скриптів
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
`.gitignore` у корені проєкту повинен містити базові рядки (`node_modules/`, `dist/`, `*.secret`) і патерни для ADR Stop-hook (**`.claude/hooks/*.log`**, `.claude/hooks/.normalize-state`, `.claude/hooks/.normalize.lock`). Канонічний фрагмент (дописується `npx @nitra/cursor`, коли правило `adr` увімкнене):
|
|
96
|
+
`.gitignore` у корені проєкту повинен містити базові рядки (`node_modules/`, `dist/`, `*.secret`) і патерни для ADR Stop-hook (**`.claude/hooks/*.log`**, `.claude/hooks/.normalize-state`, `.claude/hooks/.normalize.lock`). Канонічний фрагмент (дописується `npx @nitra/cursor`, коли правило `adr` увімкнене):
|
|
97
|
+
|
|
98
|
+
```gitignore
|
|
99
|
+
node_modules/
|
|
100
|
+
dist/
|
|
101
|
+
*.secret
|
|
102
|
+
|
|
103
|
+
# @nitra/cursor (adr) — локальні артефакти Stop-hook, не коміти
|
|
104
|
+
.claude/hooks/*.log
|
|
105
|
+
.claude/hooks/.normalize-state
|
|
106
|
+
.claude/hooks/.normalize.lock
|
|
107
|
+
.claude/scheduled_tasks.lock
|
|
108
|
+
```
|
package/rules/adr/main.mdc
CHANGED
|
@@ -6,8 +6,6 @@ version: '2.2'
|
|
|
6
6
|
|
|
7
7
|
Правило `adr` автоматично фіксує архітектурні рішення (ADR) після кожної сесії через Stop-хуки і батч-нормалізує чернетки у канонічний формат MADR v4.
|
|
8
8
|
|
|
9
|
-
[adr-madr-format](./js/madr_format.mdc)
|
|
10
|
-
|
|
11
9
|
## Stop-hook у `.claude/settings.json`
|
|
12
10
|
|
|
13
11
|
Канонічний запис, який вставляє sync (поряд із PostToolUse fix-хуком — той живе в іншій події, тут не показаний):
|
|
@@ -76,10 +74,3 @@ Cursor Agent читає project-level **`.cursor/hooks.json`**. `npx @nitra/curs
|
|
|
76
74
|
| `adr.settings_json` | `.claude/settings.json` | Наявність обох Stop-хуків у `hooks.Stop[]` |
|
|
77
75
|
| `adr.settings_local_json` | `.claude/settings.local.json` | Відсутність дублів Stop-хуків у local-файлі |
|
|
78
76
|
|
|
79
|
-
[adr-settings-policy](./js/settings_policy.mdc)
|
|
80
|
-
|
|
81
|
-
[adr-settings_json-policy](./policy/settings_json/settings_json.mdc)
|
|
82
|
-
|
|
83
|
-
[adr-settings_local_json-policy](./policy/settings_local_json/settings_local_json.mdc)
|
|
84
|
-
|
|
85
|
-
[adr-hooks](./js/hooks.mdc)
|
package/rules/bun/docs/index.md
CHANGED
package/rules/bun/docs/main.md
CHANGED
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль валідує дані, застосовуючи правила, визначені у конфігурації meta.json, та збирає посилання на MDC. При виклику публічної функції run він здійснює повний запуск правила, включаючи завантаження конфігурацій та застосування білих списків. Результат виконання повертається як код виходу процесу.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
package/rules/bun/main.mdc
CHANGED
|
@@ -5,18 +5,4 @@ alwaysApply: false
|
|
|
5
5
|
version: '2.1'
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
Проект використовує тільки Bun для керування залежностями та запуску скриптів.
|
|
9
|
-
|
|
10
|
-
[bun-layout](./js/layout.mdc)
|
|
11
|
-
|
|
12
|
-
[bun-bunfig](./js/bunfig.mdc)
|
|
13
|
-
|
|
14
|
-
[bun-package_json](./js/package_json.mdc)
|
|
15
|
-
|
|
16
|
-
[bun-lint](./js/lint.mdc)
|
|
17
|
-
|
|
18
|
-
## Швидкий gate через conftest
|
|
19
|
-
|
|
20
|
-
[bun-policy-bunfig](./policy/bunfig/bunfig.mdc)
|
|
21
|
-
|
|
22
|
-
[bun-policy-package_json](./policy/package_json/package_json.mdc)
|
|
8
|
+
Проект використовує тільки Bun для керування залежностями та запуску скриптів.
|
|
@@ -24,6 +24,18 @@ deny contains msg if {
|
|
|
24
24
|
msg := sprintf("package.json: поле %s — %s", [field, reason])
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
# ── deny: scripts.lint / scripts.lint-* заборонені (bun.mdc lint) ────────
|
|
28
|
+
|
|
29
|
+
deny contains msg if {
|
|
30
|
+
is_object(input.scripts)
|
|
31
|
+
some script_name, _ in input.scripts
|
|
32
|
+
regex.match(`^lint(-.*)?$`, script_name)
|
|
33
|
+
msg := sprintf(
|
|
34
|
+
"package.json: scripts.%s заборонений — лінт запускається через n-cursor lint, не через package.json-скрипти (bun.mdc)",
|
|
35
|
+
[script_name]
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
27
39
|
# ── deny: devDependencies — лише `@nitra/*` + root-only тестові peer/tools ─
|
|
28
40
|
|
|
29
41
|
deny contains msg if {
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль застосовує політику та логіку, визначену в конфігурації meta.json, для валідації. При запуску як CLI ініціюється повний запуск правила, що включає завантаження конфігурацій, застосування білих списків та підбиття підсумків. Модуль є лише для читання (не виконує записів у файлову систему чи базу даних) і використовує кешування даних у межах одного прогону.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
package/rules/capacitor/main.mdc
CHANGED
|
@@ -7,12 +7,6 @@ version: '1.1'
|
|
|
7
7
|
|
|
8
8
|
Правило перевіряє версію `@capacitor/core` у `package.json` та коректність використання CocoaPods/SPM у iOS-шарі Capacitor-проєкту.
|
|
9
9
|
|
|
10
|
-
[capacitor-version](./js/version.mdc)
|
|
11
|
-
|
|
12
|
-
[capacitor-ios-spm](./js/ios_spm.mdc)
|
|
13
|
-
|
|
14
10
|
## Швидкий gate через conftest
|
|
15
11
|
|
|
16
|
-
[capacitor-package_json](./policy/package_json/package_json.mdc)
|
|
17
|
-
|
|
18
12
|
JS-перевірка (`platforms.mjs`) — authoritative: підтримує `||`-діапазони, hyphen-range, workspace-monorepo та iOS-специфічну логіку (Podfile).
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль відповідає за виконання політики, використовуючи дані з meta.json. Він забезпечує перевірку та застосування логіки, визначеної в конфігурації. Виклик функції run ініціює процес виконання правила, включаючи кешування даних у межах одного прогону.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Якщо в цій сесії ти змінив(ла) файли в пакетному workspace** (код, rego, правила, скіли, скрипти, конфіги, тести — **не** лише `docs/` / `doc/`) — **не завершуй задачу**, поки не виконаєш **усі три** кроки нижче в **тому ж** наборі змін. Це не «опційно після синку» — це частина PR.
|
|
4
4
|
|
|
5
|
-
1. **Поклади change-файл** `<ws>/.changes/YYMMDD-HHMM.md` з frontmatter `bump:` (`major|minor|patch`) + `section:` (`Added|Changed|Fixed|Removed`) і текстом опису. Команда: `npx @
|
|
5
|
+
1. **Поклади change-файл** `<ws>/.changes/YYMMDD-HHMM.md` з frontmatter `bump:` (`major|minor|patch`) + `section:` (`Added|Changed|Fixed|Removed`) і текстом опису. Команда: `npx @7n/n ch [--bump <…>] [--section <…>] [--message "<…>"]` — автоматично знаходить зачеплені workspaces за git status і пише окремий change-файл у кожен; без `--message` генерує опис через omlx з diff.
|
|
6
6
|
2. **Ніколи** не редагуй `version` і `CHANGELOG.md` вручну — навіть для hotfix. Єдиний артефакт зміни — change-файл; `version`/CHANGELOG формує `n-cursor release` у CI на `main` (агрегує change-файли, ставить git-тег `<name>@<version>`). Будь-яка зміна `version` поза CI (drift від бази чи опублікованої) завалює `check changelog` — навіть якщо поряд є change-файл.
|
|
7
7
|
3. **`npx @nitra/cursor fix changelog`** → exit **`0`** (достатньо наявності change-файлу; `version` лишається незмінним).
|
|
8
8
|
|
|
@@ -406,7 +406,7 @@ function workspaceLabel(manifest) {
|
|
|
406
406
|
function missingChangeFileMessage(label, mf) {
|
|
407
407
|
return (
|
|
408
408
|
`${label}: є релевантні зміни, але немає change-файлу (version у ${mf} не чіпай вручну). ` +
|
|
409
|
-
`Поклади change-файл: npx @
|
|
409
|
+
`Поклади change-файл: npx @7n/n ch [--bump <major|minor|patch>] [--section <Added|Changed|Fixed|Removed>] [--message "<…>"]; ` +
|
|
410
410
|
`bump зробить CI на main (n-changelog.mdc)`
|
|
411
411
|
)
|
|
412
412
|
}
|
|
@@ -574,7 +574,7 @@ async function checkPublishedWorkspace(manifest, subWorkspaces, getPublishedVers
|
|
|
574
574
|
fail(
|
|
575
575
|
`${label}: version у ${mf} (${Vcurrent}) випереджає опубліковану (${Vpublished}) — ` +
|
|
576
576
|
`ручний bump поза CI заборонено. Відкоти version і поклади change-файл ` +
|
|
577
|
-
`(npx @
|
|
577
|
+
`(npx @7n/n ch); bump зробить CI на main (n-changelog.mdc)`
|
|
578
578
|
)
|
|
579
579
|
return
|
|
580
580
|
}
|
|
@@ -613,7 +613,7 @@ async function checkLocalOnlyChangedWorkspace(comparisonRef, manifest, baseLabel
|
|
|
613
613
|
if (Vbase !== null && Vcurrent !== null && versionIsAhead(Vcurrent, Vbase)) {
|
|
614
614
|
fail(
|
|
615
615
|
`${label}: version у ${mf} змінено поза CI (${Vbase} → ${Vcurrent}) — ручний bump заборонено (на ${baseLabel} — ${Vbase}). ` +
|
|
616
|
-
`Відкоти version і поклади change-файл (npx @
|
|
616
|
+
`Відкоти version і поклади change-файл (npx @7n/n ch); bump зробить CI (n-changelog.mdc)`
|
|
617
617
|
)
|
|
618
618
|
return
|
|
619
619
|
}
|
|
@@ -3,36 +3,31 @@ type: JS Module
|
|
|
3
3
|
title: consistency.mjs
|
|
4
4
|
resource: npm/rules/changelog/js/consistency.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 92b7c3f0
|
|
7
|
+
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
7
8
|
score: 100
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
## Огляд
|
|
12
|
+
|
|
13
|
+
Компонент виконує перевірку стану проєктів у монорепозиторії. Він звертається до мережі для порівняння версій з реєстром, зокрема https://pypi.org/pypi/, та аналізує зміни, посилаючись на (n-changelog.mdc). Код спирається на конфігурацію, визначену у res.json. При виявленні невідповідностей компонент перехоплює помилки (fail-safe) і повертає порожнє значення замість кидання винятків.
|
|
11
14
|
|
|
12
15
|
## Поведінка
|
|
13
16
|
|
|
14
|
-
1.
|
|
15
|
-
2.
|
|
16
|
-
3.
|
|
17
|
-
4.
|
|
18
|
-
5.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
ж. Якщо версія в маніфесті позаду опублікованої, фіксує успіх, оскільки це відставання локального репозиторію від реєстру.
|
|
26
|
-
з. Якщо версії збігаються, перевіряє змінений код відносно точки порівняння. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
|
|
27
|
-
6. Для кожного локального проекту виконує перевірку:
|
|
28
|
-
а. Зчитує маніфест проекту.
|
|
29
|
-
б. Визначає точку порівняння на основі поточної гілки.
|
|
30
|
-
в. Перевіряє, чи є релевантні зміни у проекті відносно точки порівняння.
|
|
31
|
-
г. Якщо зміни є, але немає change-файлу, викликає механізм фіксації або фіксує помилку, надаючи підказку для використання команди `npx @nitra/cursor change`.
|
|
32
|
-
7. Повертає кінцевий код виходу, що відображає результат перевірки.
|
|
17
|
+
1. `check` ініціалізує репортер та визначає режим автоматичного виправлення на основі змінної середовища.
|
|
18
|
+
2. `check` зчитує список усіх кореневих каталогів проєктів у монорепозиторії.
|
|
19
|
+
3. `check` класифікує знайдені проєкти на ті, що можуть бути опубліковані в реєстрі, та ті, що є локальними.
|
|
20
|
+
4. Для кожного проєкту, що може бути опублікований, `check` викликає перевірку опублікованого воркспейсу.
|
|
21
|
+
5. Перевірка опублікованого воркспейсу порівнює версію у маніфесті з опублікованою версією, отриманою через мережевий запит до реєстру (наприклад, https://pypi.org/pypi/).
|
|
22
|
+
6. Якщо версія у маніфесті випереджає опубліковану, `check` повідомляє про заборонений ручний bump поза CI.
|
|
23
|
+
7. Якщо версія у маніфесті відповідає опублікованій, `check` перевіряє, чи є релевантні зміни у файловій системі відносно базової точки порівняння (наприклад, `origin/main`).
|
|
24
|
+
8. Якщо зміни існують, але відсутній change-файл, `check` або автоматично створює його (у режимі autofix), або повідомляє про необхідність ручного створення, посилаючись на (n-changelog.mdc).
|
|
25
|
+
9. Для кожного локального проєкту `check` порівнює стан з базовою точкою порівняння.
|
|
26
|
+
10. Якщо зміни існують, але відсутній change-файл, `check` або автоматично створює його (у режимі autofix), або повідомляє про необхідність ручного створення, посилаючись на (n-changelog.mdc).
|
|
27
|
+
11. `check` повертає кінцевий код виходу на основі накопичених повідомлень про помилки.
|
|
33
28
|
|
|
34
29
|
## Гарантії поведінки
|
|
35
30
|
|
|
36
|
-
- Read-only:
|
|
31
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
37
32
|
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
38
|
-
- За
|
|
33
|
+
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
|
package/rules/changelog/main.mdc
CHANGED
|
@@ -6,8 +6,3 @@ alwaysApply: true
|
|
|
6
6
|
|
|
7
7
|
У кожному **пакетному** workspace (каталог із `package.json` або `pyproject.toml`) має бути власний **`CHANGELOG.md`**. Спільного на репозиторій змісту змін **не існує** — кожен пакет веде свій. Маніфест версії: **JS/Bun/npm** — `package.json` (`version`); **Python** — `pyproject.toml` (`[project].version` або `[tool.poetry].version`).
|
|
8
8
|
|
|
9
|
-
[changelog-agent-workflow](./js/agent-workflow.mdc)
|
|
10
|
-
|
|
11
|
-
[changelog-comparison-models](./js/comparison-models.mdc)
|
|
12
|
-
|
|
13
|
-
[changelog-format](./js/changelog-format.mdc)
|
package/rules/ci4/docs/index.md
CHANGED
package/rules/ci4/docs/main.md
CHANGED
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль валідує дані відповідно до правил, використовуючи конфігурацію, визначену в meta.json. Він застосовує білий список та виконує логіку перевірки. При запуску як окрема програма, він повертає код виходу, що інформує про успіх чи виявлені порушення. Модуль є Read-only, тобто не здійснює записів у файлову систему чи бази даних. Кешування даних відбувається у межах одного прогону.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
package/rules/ci4/main.mdc
CHANGED
|
@@ -372,8 +372,3 @@ Rego-перевірки, що запускаються через `conftest` у
|
|
|
372
372
|
| --------------------------- | -------------------------------------------------------------------- |
|
|
373
373
|
| `ci4.vscode_extensions` | `.vscode/extensions.json` містить `arr.marksman` у `recommendations` |
|
|
374
374
|
|
|
375
|
-
[ci4-marksman_config](./js/marksman_config.mdc)
|
|
376
|
-
|
|
377
|
-
[ci4-vscode_extensions](./js/vscode_extensions.mdc)
|
|
378
|
-
|
|
379
|
-
[ci4-vscode_extensions-policy](./policy/vscode_extensions/vscode_extensions.mdc)
|
|
@@ -3,26 +3,22 @@ type: JS Module
|
|
|
3
3
|
title: main.mjs
|
|
4
4
|
resource: npm/rules/doc-files/main.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 82caefcd
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
-
score:
|
|
8
|
+
score: 90
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Модуль перевіряє відповідність коду та документації, спираючись на конфігурацію `meta.json`. Функція `run` перевіряє консистентність між кодом та документацією. Функція `lint` перевіряє застарілі описи документації.
|
|
11
|
+
Модуль перевіряє відповідність конфігурацій політики джерелам коду, спираючись на `meta.json`. Він також аналізує документацію на відповідність джерелам коду, виявляючи застарілі або нерелевантні описи.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
16
14
|
|
|
17
|
-
run виконує перевірку
|
|
18
|
-
|
|
19
|
-
lint перевіряє, чи не застаріли описи документації, і може автоматично їх оновлювати, якщо це дозволено конфігурацією `meta.json`.
|
|
15
|
+
run виконує перевірку відповідності до політики, порівнюючи конфігурації з джерелами коду.
|
|
16
|
+
lint перевіряє, чи відповідає документація джерелам коду, виявляючи застарілі описи та сирітські доки, а також може автоматично їх виправляти за умови наявності конфігурації `meta.json: llmFix:true`.
|
|
20
17
|
|
|
21
18
|
## Публічний API
|
|
22
19
|
|
|
23
|
-
run —
|
|
24
|
-
lint —
|
|
25
|
-
llmFix — виконує добровільну генерацію виправлень за допомогою LLM, якщо це дозволено в конфігурації.
|
|
20
|
+
run — основна точка входу, яка виконує перевірку (JS-залежності $\rightarrow$ політики $\rightarrow$ посилання MDC) та запускає перевірку на застарілі файли.
|
|
21
|
+
lint — збирає дані для перевірки документаційних файлів, з можливістю автоматичного виправлення за умови ввімкнення LLM-функціоналу.
|
|
26
22
|
|
|
27
23
|
## Гарантії поведінки
|
|
28
24
|
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль забезпечує роботу з метаданими та оцінкою якості документів. Він дозволяє парсити метадані з Markdown-файлів за допомогою `parseDocFrontmatter`, створювати та заповнювати блоки метаданих за допомогою `buildDocFrontmatter`. Документи можуть бути промарковані за допомогою `stampDoc`. Якість документа оцінюється за допомогою `readDocQuality`, а його актуальність визначається функцією `staleness`, яка використовує `crc32` для перевірки хеш-суми. Модель документа зчитується через `readDocModel`.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль витягує структурований факт-лист з вмісту файлів, звертаючись до мережі. Функція `extractFacts` аналізує вміст файлів, визначаючи публічні експорти, локальні символи та поведінкові маркери для Rust та JavaScript/TypeScript файлів. При цьому ігноруються системні та залежності, включаючи каталоги `.github`, `.git`, `node_modules`, `base/`, `ua/` та `.firebase`. Результати аналізу кешуються протягом одного прогону.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль керує життєвим циклом документації. Він вибирає цілі для оновлення за допомогою `selectTargets`, очищає від неіснуючих джерел за допомогою `purgeOrphanedDocs`, запускає генерацію файлів через `runDocFilesGenCli` та `runDocFilesStampCli`, а також виконує пакетну генерацію за допомогою `runGenerationBatch`. Усі операції виконуються з механізмом перехоплення помилок, що запобігає виникненню винятків назовні.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль забезпечує повний цикл роботи з документами: відокремлює захищений блок за допомогою `splitProtected`, вставляє його у визначене місце за допомогою `insertProtected`, генерує повний Markdown-документ через `generateDoc` (з використанням `DEFAULT_LOCAL_MODEL`), а також оцінює якість документа за допомогою `scoreDoc`. Кешування застосовується протягом прогону. (abie.mdc)
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Файл аналізує надані файли коду, створюючи документацію та оцінюючи її якість відповідно до конфігурації, що міститься у report.json. Процес збирає результати для кожного файлу, використовуючи кешування у межах прогону на основі вмісту джерела та вже згенерованої документації. У кінці процес агрегує дані та зберігає повний звіт у report.json, а також виводить його у консоль.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль реалізує механізм оцінки якості документації. Він визначає модель для оцінки за допомогою `JUDGE_MODEL`, перевіряє статус активності гейту через `JUDGE_ENABLED` та встановлює поріг впевненості за допомогою `JUDGE_CONFIDENCE`. Модуль отримує, парсить та визначає фінальний статус документації, викликаючи `judgeDoc` для отримання висновків, а також може використовувати `judgeFailsDoc` для визначення провалу.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль визначає, які файли є кодовим джерелом за допомогою `isSourceFile`. Він обчислює відповідні шляхи до Markdown-документів для коду за допомогою `docPathForSource`. Модуль ідентифікує потенційні кандидати для документування за допомогою `isDocCandidate` та надає опис файлу за допомогою `describeFile`. Для аналізу файлової системи використовуються `scanOrphanedDocs` для пошуку "сирітських" документів та `scanForDocFiles` для сканування файлів. Модуль також може визначати кореневий каталог за допомогою `resolveRoot` та виконувати сканування файлів документації через `runDocFilesScanCli` або перевірку через `runDocFilesCheckCli`.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 80
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Цей модуль надає CLI-обгортку для канонічного `lint-doc-files` (doc-files.mdc): детермінованого детектора застарілості файлових док (`<dir>/docs/<stem>.md`). При відсутності прапорців або при вказанні шляхів (`[paths…]`) виконується повний або точковий детекст застарілості. Якщо знайдено застарілі файли, повертається код виходу 1. Можливі режими: `--missing-only` звужує перевірку до відсутніх файлів. Прапорець `--json` виводить JSON-лістинг усіх кандидатів. Режими `--hook`, `--git` та `--degraded` делегують перевірку через `runDocFilesCheckCli` (hook-протокол: exit 2/0). Повний прогін здійснюється через `runStandardLint` (ключ `lint-doc-files`), тоді як хук/git/degraded форми використовують канон scripts.mdc, не генеруючи логів. Поведінка описується у (doc-files.mdc).
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
package/rules/doc-files/main.mjs
CHANGED
|
@@ -101,8 +101,7 @@ function collectStale(files, cwd) {
|
|
|
101
101
|
*/
|
|
102
102
|
export async function lint(files, cwd = process.cwd(), { readOnly = false, llmFix = false } = {}) {
|
|
103
103
|
const stale = collectStale(files, cwd)
|
|
104
|
-
|
|
105
|
-
const orphans = files === undefined ? scanOrphanedDocs(cwd) : []
|
|
104
|
+
const orphans = scanOrphanedDocs(cwd)
|
|
106
105
|
|
|
107
106
|
if (stale.length === 0 && orphans.length === 0) return 0
|
|
108
107
|
if (readOnly || !llmFix) {
|
|
@@ -132,7 +131,7 @@ export async function lint(files, cwd = process.cwd(), { readOnly = false, llmFi
|
|
|
132
131
|
}
|
|
133
132
|
|
|
134
133
|
const stillStale = collectStale(files, cwd)
|
|
135
|
-
const stillOrphans =
|
|
134
|
+
const stillOrphans = scanOrphanedDocs(cwd)
|
|
136
135
|
if (stillStale.length === 0 && stillOrphans.length === 0) return 0
|
|
137
136
|
if (stillStale.length > 0) reportStale(stillStale)
|
|
138
137
|
if (stillOrphans.length > 0) {
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль аналізує файли `Dockerfile` та `Containerfile` у репозиторії, використовуючи `isDockerfileName` та `findDockerfilePaths` для ідентифікації конфігурацій. Він розбиває знайдені файли на етапи за допомогою `parseFromStages` та `splitDockerfileStages`. Модуль перевіряє конфігурацію, використовуючи `check` та `lint`, щоб оцінити відповідність стандартам, враховуючи дані з `package.json`. Він визначає інформацію про багатоетапну збірку, теги образів та права користувача, відповідно до вимог (docker.mdc).
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 90
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Спільна логіка виклику hadolint для шляхів до Dockerfile. Модуль створює стандартизовані відносні шляхи з прямими слешами. Він ініціює перевірку Dockerfile, використовуючи hadolint як нативний бінарник, який резолвиться через `ensureTool` (PATH → кеш → авто-install brew/scoop/GitHub Release per-platform). Для отримання інформації про встановлення можна звертатися до https://github.com/hadolint/hadolint/releases. Публічна функція `lintDockerfileWithHadolint` виконує перевірку за правилом `n-cursor lint docker` / check-docker.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
package/rules/docker/main.mdc
CHANGED
|
@@ -11,24 +11,4 @@ alwaysApply: false
|
|
|
11
11
|
|
|
12
12
|
## Активація
|
|
13
13
|
|
|
14
|
-
Спрацьовує на всі файли `Dockerfile*`; `check docker` (`fix.mjs`) обробляє також `Containerfile` та `Containerfile.*`.
|
|
15
|
-
|
|
16
|
-
## Швидкий gate через conftest
|
|
17
|
-
|
|
18
|
-
[docker-lint_docker_yml](./policy/lint_docker_yml/lint_docker_yml.mdc)
|
|
19
|
-
|
|
20
|
-
[docker-mirror](./js/mirror.mdc)
|
|
21
|
-
|
|
22
|
-
[docker-multistage](./js/multistage.mdc)
|
|
23
|
-
|
|
24
|
-
[docker-compile](./js/compile.mdc)
|
|
25
|
-
|
|
26
|
-
[docker-native-addon](./js/native-addon.mdc)
|
|
27
|
-
|
|
28
|
-
[docker-non-root](./js/non-root.mdc)
|
|
29
|
-
|
|
30
|
-
[docker-nginx-tag](./js/nginx-tag.mdc)
|
|
31
|
-
|
|
32
|
-
[docker-nginx-user](./js/nginx-user.mdc)
|
|
33
|
-
|
|
34
|
-
[docker-hadolint](./js/hadolint.mdc)
|
|
14
|
+
Спрацьовує на всі файли `Dockerfile*`; `check docker` (`fix.mjs`) обробляє також `Containerfile` та `Containerfile.*`.
|
package/rules/efes/docs/index.md
CHANGED
package/rules/efes/docs/main.md
CHANGED
|
@@ -8,8 +8,6 @@ docgen:
|
|
|
8
8
|
score: 100
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## Огляд
|
|
12
|
-
|
|
13
11
|
Модуль перевіряє відповідність коду визначеним правилам, використовуючи конфігурацію з meta.json. Він виконує аналіз, який може бути ініційований через публічну функцію run. Модуль є read-only, тобто не здійснює записів у файлову систему чи бази даних. Кешування даних відбувається у межах одного прогону. При завершенні роботи як окремий інструмент, він надає підсумковий звіт.
|
|
14
12
|
|
|
15
13
|
## Поведінка
|
package/rules/efes/main.mdc
CHANGED