@7n/rules 1.5.1 → 1.6.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 (110) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/bin/n-rules.js +83 -21
  3. package/package.json +1 -1
  4. package/rules/abie/main.mdc +0 -6
  5. package/rules/js/check/docs/main.md +1 -1
  6. package/rules/js/check/main.mjs +6 -10
  7. package/rules/js/main.mdc +0 -1
  8. package/rules/js/vscode_extensions/template/extensions.json.snippet.json +4 -1
  9. package/rules/npm-module/main.mdc +0 -2
  10. package/rules/php/tooling/docs/main.md +1 -1
  11. package/rules/php/tooling/main.mjs +2 -7
  12. package/rules/python/tooling/docs/main.md +1 -1
  13. package/rules/python/tooling/main.mjs +2 -7
  14. package/rules/rego/lib/docs/run-external-tool.md +1 -2
  15. package/rules/rego/lib/run-external-tool.mjs +4 -1
  16. package/rules/security/main.mdc +0 -1
  17. package/rules/style/main.mdc +0 -1
  18. package/rules/style/tooling/docs/main.md +1 -1
  19. package/rules/style/tooling/main.mjs +2 -7
  20. package/rules/tauri/release/release.mdc +1 -1
  21. package/rules/text/formatting/docs/main.md +1 -1
  22. package/rules/text/formatting/main.mjs +11 -11
  23. package/rules/text/main.mdc +0 -1
  24. package/scripts/docs/skills-cli.md +3 -3
  25. package/scripts/lib/acp-runner.mjs +8 -10
  26. package/scripts/lib/docs/acp-runner.md +5 -5
  27. package/scripts/lib/docs/mirror-parity.md +1 -1
  28. package/scripts/lib/mirror-parity.mjs +49 -16
  29. package/scripts/skills-cli.mjs +1 -1
  30. package/rules/abie/clean_merged_ignore_branches/clean_merged_ignore_branches.mdc +0 -19
  31. package/rules/abie/clean_merged_ignore_branches/clean_merged_ignore_branches.rego +0 -81
  32. package/rules/abie/clean_merged_ignore_branches/concern.json +0 -11
  33. package/rules/abie/clean_merged_ignore_branches/docs/fix-clean_merged_ignore_branches.md +0 -31
  34. package/rules/abie/clean_merged_ignore_branches/docs/index.md +0 -9
  35. package/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs +0 -8
  36. package/rules/abie/clean_merged_ignore_branches/template/clean-merged-branch.yml.snippet.yml +0 -9
  37. package/rules/docker/lint_docker_yml/concern.json +0 -12
  38. package/rules/docker/lint_docker_yml/docs/fix-lint_docker_yml.md +0 -31
  39. package/rules/docker/lint_docker_yml/docs/index.md +0 -9
  40. package/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs +0 -5
  41. package/rules/docker/lint_docker_yml/lint_docker_yml.mdc +0 -14
  42. package/rules/docker/lint_docker_yml/lint_docker_yml.rego +0 -79
  43. package/rules/docker/lint_docker_yml/template/lint-docker.yml.snippet.yml +0 -41
  44. package/rules/js/lint_js_yml/concern.json +0 -12
  45. package/rules/js/lint_js_yml/docs/fix-lint_js_yml.md +0 -28
  46. package/rules/js/lint_js_yml/docs/index.md +0 -9
  47. package/rules/js/lint_js_yml/fix-lint_js_yml.mjs +0 -5
  48. package/rules/js/lint_js_yml/lint_js_yml.mdc +0 -14
  49. package/rules/js/lint_js_yml/lint_js_yml.rego +0 -117
  50. package/rules/js/lint_js_yml/template/lint-js.yml.snippet.yml +0 -40
  51. package/rules/k8s/lint_k8s_yml/concern.json +0 -12
  52. package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +0 -30
  53. package/rules/k8s/lint_k8s_yml/docs/index.md +0 -9
  54. package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +0 -5
  55. package/rules/k8s/lint_k8s_yml/lint_k8s_yml.rego +0 -57
  56. package/rules/k8s/lint_k8s_yml/template/lint-k8s.yml.snippet.yml +0 -43
  57. package/rules/npm-module/npm_publish_yml/concern.json +0 -13
  58. package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +0 -28
  59. package/rules/npm-module/npm_publish_yml/docs/index.md +0 -9
  60. package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +0 -8
  61. package/rules/npm-module/npm_publish_yml/template/npm-publish.yml.snippet.yml +0 -49
  62. package/rules/php/lint_php_yml/concern.json +0 -12
  63. package/rules/php/lint_php_yml/docs/fix-lint_php_yml.md +0 -28
  64. package/rules/php/lint_php_yml/docs/index.md +0 -9
  65. package/rules/php/lint_php_yml/fix-lint_php_yml.mjs +0 -5
  66. package/rules/php/lint_php_yml/lint_php_yml.mdc +0 -23
  67. package/rules/php/lint_php_yml/lint_php_yml.rego +0 -34
  68. package/rules/php/lint_php_yml/template/lint-php.yml.snippet.yml +0 -47
  69. package/rules/python/lint_python_yml/concern.json +0 -12
  70. package/rules/python/lint_python_yml/docs/fix-lint_python_yml.md +0 -27
  71. package/rules/python/lint_python_yml/docs/index.md +0 -9
  72. package/rules/python/lint_python_yml/fix-lint_python_yml.mjs +0 -5
  73. package/rules/python/lint_python_yml/lint_python_yml.mdc +0 -12
  74. package/rules/python/lint_python_yml/lint_python_yml.rego +0 -68
  75. package/rules/python/lint_python_yml/template/lint-python.yml.snippet.yml +0 -41
  76. package/rules/rust/lint_rust_yml/concern.json +0 -14
  77. package/rules/rust/lint_rust_yml/docs/fix-lint_rust_yml.md +0 -28
  78. package/rules/rust/lint_rust_yml/docs/index.md +0 -9
  79. package/rules/rust/lint_rust_yml/fix-lint_rust_yml.mjs +0 -5
  80. package/rules/rust/lint_rust_yml/lint_rust_yml.mdc +0 -17
  81. package/rules/rust/lint_rust_yml/lint_rust_yml.rego +0 -79
  82. package/rules/rust/lint_rust_yml/template/lint-rust.yml.snippet.yml +0 -44
  83. package/rules/rust/toolchain_cache/concern.json +0 -14
  84. package/rules/rust/toolchain_cache/docs/fix-toolchain_cache.md +0 -35
  85. package/rules/rust/toolchain_cache/docs/index.md +0 -12
  86. package/rules/rust/toolchain_cache/docs/main.md +0 -57
  87. package/rules/rust/toolchain_cache/fix-toolchain_cache.mjs +0 -117
  88. package/rules/rust/toolchain_cache/main.mjs +0 -177
  89. package/rules/rust/toolchain_cache/toolchain_cache.mdc +0 -23
  90. package/rules/security/lint_security_yml/concern.json +0 -14
  91. package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +0 -31
  92. package/rules/security/lint_security_yml/docs/index.md +0 -9
  93. package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +0 -8
  94. package/rules/security/lint_security_yml/lint_security_yml.mdc +0 -7
  95. package/rules/security/lint_security_yml/lint_security_yml.rego +0 -33
  96. package/rules/security/lint_security_yml/template/lint-security.yml.snippet.yml +0 -31
  97. package/rules/style/lint_style_yml/concern.json +0 -12
  98. package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +0 -31
  99. package/rules/style/lint_style_yml/docs/index.md +0 -9
  100. package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +0 -5
  101. package/rules/style/lint_style_yml/lint_style_yml.mdc +0 -13
  102. package/rules/style/lint_style_yml/lint_style_yml.rego +0 -38
  103. package/rules/style/lint_style_yml/template/lint-style.yml.snippet.yml +0 -39
  104. package/rules/text/lint_text/concern.json +0 -11
  105. package/rules/text/lint_text/docs/fix-lint_text.md +0 -28
  106. package/rules/text/lint_text/docs/index.md +0 -9
  107. package/rules/text/lint_text/fix-lint_text.mjs +0 -5
  108. package/rules/text/lint_text/lint_text.mdc +0 -19
  109. package/rules/text/lint_text/lint_text.rego +0 -104
  110. package/rules/text/lint_text/template/lint-text.yml.snippet.yml +0 -61
@@ -1,104 +0,0 @@
1
- # Перевірка `.github/workflows/lint-text.yml` (text.mdc).
2
- #
3
- # Канон надходить через --data: { "template": { "snippet": ... } }
4
- # Структура --data сформована з template/lint-text.yml.snippet.yml.
5
- # Універсальні workflow-перевірки (checkout, permissions) — у `ga.workflow_common`.
6
- package text.lint_text
7
-
8
- import rego.v1
9
-
10
- expected_name := data.template.snippet.name
11
-
12
- expected_push_branches := {b | some b in data.template.snippet.on.push.branches}
13
-
14
- expected_pr_branches := {b | some b in data.template.snippet.on.pull_request.branches}
15
-
16
- expected_push_paths := {p | some p in data.template.snippet.on.push.paths}
17
-
18
- expected_runs_on := data.template.snippet.jobs.text["runs-on"]
19
-
20
- expected_perms := data.template.snippet.jobs.text.permissions
21
-
22
- # conftest парсить YAML 1.1, де канонічний `on:` без лапок стає булевим ключем
23
- # `true` (як у `ga.lint_ga`). Тому читаємо on-блок через `input["true"]`.
24
- gha_on := input["true"]
25
-
26
- job := input.jobs.text
27
-
28
- job_uses_set contains job.steps[_].uses
29
-
30
- job_run_blob := concat("\n", [run |
31
- run := job.steps[_].run
32
- ])
33
-
34
- expected_uses_set contains u if {
35
- some step in data.template.snippet.jobs.text.steps
36
- u := object.get(step, "uses", "")
37
- u != ""
38
- }
39
-
40
- expected_run_substrings contains r if {
41
- some step in data.template.snippet.jobs.text.steps
42
- r := object.get(step, "run", "")
43
- r != ""
44
- }
45
-
46
- deny contains msg if {
47
- input.name != expected_name
48
- msg := sprintf("lint-text.yml: name має бути %q (text.mdc)", [expected_name])
49
- }
50
-
51
- deny contains msg if {
52
- not branches_superset_of(gha_on.push.branches, expected_push_branches)
53
- msg := "lint-text.yml: on.push.branches має містити dev і main (text.mdc)"
54
- }
55
-
56
- deny contains msg if {
57
- not branches_superset_of(gha_on.pull_request.branches, expected_pr_branches)
58
- msg := "lint-text.yml: on.pull_request.branches має містити dev і main (text.mdc)"
59
- }
60
-
61
- deny contains msg if {
62
- not paths_superset_of(gha_on.push.paths, expected_push_paths)
63
- msg := "lint-text.yml: on.push.paths має містити очікувані glob-и (text.mdc)"
64
- }
65
-
66
- deny contains msg if {
67
- not job
68
- msg := "lint-text.yml: jobs.text відсутній (text.mdc)"
69
- }
70
-
71
- deny contains msg if {
72
- job["runs-on"] != expected_runs_on
73
- msg := sprintf("lint-text.yml: runs-on має бути %s (text.mdc)", [expected_runs_on])
74
- }
75
-
76
- deny contains msg if {
77
- job.permissions.contents != expected_perms.contents
78
- msg := sprintf("lint-text.yml: permissions.contents має бути %s (text.mdc)", [expected_perms.contents])
79
- }
80
-
81
- deny contains msg if {
82
- count(job.steps) == 0
83
- msg := "lint-text.yml: jobs.text.steps відсутні (text.mdc)"
84
- }
85
-
86
- deny contains msg if {
87
- some required_use in expected_uses_set
88
- not required_use in job_uses_set
89
- msg := sprintf("lint-text.yml: має бути uses: %s (text.mdc)", [required_use])
90
- }
91
-
92
- deny contains msg if {
93
- some required_run in expected_run_substrings
94
- not contains(job_run_blob, required_run)
95
- msg := sprintf("lint-text.yml: жоден крок run не містить %q (text.mdc)", [required_run])
96
- }
97
-
98
- branches_superset_of(actual, expected) if {
99
- expected & {b | some b in actual} == expected
100
- }
101
-
102
- paths_superset_of(actual, expected) if {
103
- expected & {p | some p in actual} == expected
104
- }
@@ -1,61 +0,0 @@
1
- name: Lint Text
2
-
3
- on:
4
- push:
5
- branches:
6
- - dev
7
- - main
8
- paths:
9
- - '**/*.js'
10
- - '**/*.ts'
11
- - '**/*.vue'
12
- - '**/*.html'
13
- - '**/*.css'
14
- - '**/*.scss'
15
- - '**/*.less'
16
- - '**/*.json'
17
- - '**/*.jsonc'
18
- - '**/*.yaml'
19
- - '**/*.yml'
20
- - '**/*.toml'
21
- - '**/*.xml'
22
- - '**/*.md'
23
- - '**/*.mdc'
24
- - '**/*.mdс'
25
- - '**/*.txt'
26
- - '**/*.go'
27
- - '**/*.py'
28
- - '**/*.php'
29
- - '**/*.sh'
30
-
31
- pull_request:
32
- branches:
33
- - dev
34
- - main
35
-
36
- concurrency:
37
- group: ${{ github.ref }}-${{ github.workflow }}
38
- cancel-in-progress: true
39
-
40
- jobs:
41
- text:
42
- runs-on: ubuntu-latest
43
- permissions:
44
- contents: read
45
- steps:
46
- - uses: actions/checkout@v6
47
- with:
48
- persist-credentials: false
49
-
50
- - uses: ./.github/actions/setup-bun-deps
51
-
52
- - name: Install shellcheck
53
- run: sudo apt-get update && sudo apt-get install -y shellcheck
54
-
55
- - name: Install dotenv-linter
56
- run: >-
57
- curl -sSfL https://git.io/JLbXn
58
- | sh -s -- -b /usr/local/bin
59
-
60
- - name: Lint text
61
- run: bunx n-rules lint text --no-fix