@7n/rules 1.3.1 → 1.4.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/.pi-template/extensions/docs/index.md +9 -0
- package/.pi-template/extensions/docs/rtk.md +33 -0
- package/.pi-template/extensions/rtk.ts +102 -0
- package/CHANGELOG.md +12 -0
- package/bin/n-rules.js +1 -0
- package/docs/index.md +0 -2
- package/docs/vitest.config.md +1 -1
- package/package.json +1 -1
- package/rules/abie/clean_merged_ignore_branches/docs/fix-clean_merged_ignore_branches.md +31 -0
- package/rules/abie/clean_merged_ignore_branches/docs/index.md +9 -0
- package/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs +6 -1
- package/rules/docker/lint_docker_yml/docs/fix-lint_docker_yml.md +31 -0
- package/rules/docker/lint_docker_yml/docs/index.md +9 -0
- package/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs +3 -1
- package/rules/ga/clean_ga_workflows/docs/fix-clean_ga_workflows.md +33 -0
- package/rules/ga/clean_ga_workflows/docs/index.md +9 -0
- package/rules/ga/clean_ga_workflows/fix-clean_ga_workflows.mjs +6 -1
- package/rules/ga/clean_merged_branch/docs/fix-clean_merged_branch.md +27 -0
- package/rules/ga/clean_merged_branch/docs/index.md +9 -0
- package/rules/ga/clean_merged_branch/fix-clean_merged_branch.mjs +6 -1
- package/rules/ga/git_ai/docs/fix-git_ai.md +30 -0
- package/rules/ga/git_ai/docs/index.md +9 -0
- package/rules/ga/git_ai/fix-git_ai.mjs +3 -1
- package/rules/ga/lint_ga/docs/fix-lint_ga.md +32 -0
- package/rules/ga/lint_ga/docs/index.md +9 -0
- package/rules/ga/lint_ga/fix-lint_ga.mjs +3 -1
- package/rules/ga/vscode_settings/docs/fix-vscode_settings.md +26 -0
- package/rules/ga/vscode_settings/docs/index.md +9 -0
- package/rules/ga/vscode_settings/fix-vscode_settings.mjs +3 -1
- package/rules/ga/zizmor_yml/docs/fix-zizmor_yml.md +28 -0
- package/rules/ga/zizmor_yml/docs/index.md +9 -0
- package/rules/js/jscpd_config/docs/fix-jscpd_config.md +26 -0
- package/rules/js/jscpd_config/docs/index.md +9 -0
- package/rules/js/lint_js_yml/docs/fix-lint_js_yml.md +28 -0
- package/rules/js/lint_js_yml/docs/index.md +9 -0
- package/rules/js/package_json/docs/fix-package_json.md +26 -0
- package/rules/js/package_json/docs/index.md +9 -0
- package/rules/js/tooling/data/tooling/knip-canonical.json +1 -0
- package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +30 -0
- package/rules/k8s/lint_k8s_yml/docs/index.md +9 -0
- package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +3 -1
- package/rules/local-ai/main.json +1 -0
- package/rules/local-ai/main.mdc +85 -0
- package/rules/npm-module/emit_types_config/docs/fix-emit_types_config.md +25 -0
- package/rules/npm-module/emit_types_config/docs/index.md +9 -0
- package/rules/npm-module/emit_types_config/fix-emit_types_config.mjs +3 -1
- package/rules/npm-module/npm_package_json/docs/fix-npm_package_json.md +27 -0
- package/rules/npm-module/npm_package_json/docs/index.md +9 -0
- package/rules/npm-module/npm_package_json/fix-npm_package_json.mjs +3 -1
- package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +28 -0
- package/rules/npm-module/npm_publish_yml/docs/index.md +9 -0
- package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +4 -1
- package/rules/npm-module/root_package_json/docs/fix-root_package_json.md +26 -0
- package/rules/npm-module/root_package_json/docs/index.md +9 -0
- package/rules/npm-module/root_package_json/fix-root_package_json.mjs +3 -1
- package/rules/php/lint_php_yml/docs/fix-lint_php_yml.md +28 -0
- package/rules/php/lint_php_yml/docs/index.md +9 -0
- package/rules/php/lint_php_yml/fix-lint_php_yml.mjs +3 -1
- package/rules/python/lint_python_yml/docs/fix-lint_python_yml.md +27 -0
- package/rules/python/lint_python_yml/docs/index.md +9 -0
- package/rules/python/lint_python_yml/fix-lint_python_yml.mjs +3 -1
- package/rules/rego/vscode_settings/docs/fix-vscode_settings.md +27 -0
- package/rules/rego/vscode_settings/docs/index.md +9 -0
- package/rules/rego/vscode_settings/fix-vscode_settings.mjs +3 -1
- package/rules/rust/lint_rust_yml/docs/fix-lint_rust_yml.md +28 -0
- package/rules/rust/lint_rust_yml/docs/index.md +9 -0
- package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +31 -0
- package/rules/security/lint_security_yml/docs/index.md +9 -0
- package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +6 -1
- package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +31 -0
- package/rules/style/lint_style_yml/docs/index.md +9 -0
- package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +3 -1
- package/rules/style/package_json/docs/fix-package_json.md +27 -0
- package/rules/style/package_json/docs/index.md +9 -0
- package/rules/style/vscode_settings/docs/fix-vscode_settings.md +27 -0
- package/rules/style/vscode_settings/docs/index.md +9 -0
- package/rules/style/vscode_settings/fix-vscode_settings.mjs +3 -1
- package/rules/text/lint_text/docs/fix-lint_text.md +28 -0
- package/rules/text/lint_text/docs/index.md +9 -0
- package/rules/text/oxfmtrc/docs/fix-oxfmtrc.md +26 -0
- package/rules/text/oxfmtrc/docs/index.md +9 -0
- package/rules/text/vscode_settings/docs/fix-vscode_settings.md +27 -0
- package/rules/text/vscode_settings/docs/index.md +9 -0
- package/rules/text/vscode_settings/fix-vscode_settings.mjs +3 -1
- package/rules/worktree/vscode_settings/docs/fix-vscode_settings.md +28 -0
- package/rules/worktree/vscode_settings/docs/index.md +9 -0
- package/rules/worktree/zed_settings/docs/fix-zed_settings.md +28 -0
- package/rules/worktree/zed_settings/docs/index.md +9 -0
- package/rules/worktree/zed_settings/fix-zed_settings.mjs +3 -1
- package/scripts/docs/skills-cli.md +1 -1
- package/scripts/docs/sync-claude-config.md +9 -4
- package/scripts/lib/fix/docs/index.md +4 -5
- package/scripts/lib/fix/docs/template-deep-merge.md +35 -0
- package/scripts/skills-cli.mjs +15 -4
- package/scripts/sync-claude-config.mjs +145 -36
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-lint_security_yml.mjs
|
|
4
|
+
resource: npm/rules/security/lint_security_yml/fix-lint_security_yml.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: cb66ccb7
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.99
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
`patterns` визначає межі пошуку в кодовій базі та свідомо оминає `.github` і `.git`, щоб перевірка не зачіпала службові каталоги. Правило працює в read-only режимі й не записує зміни у файлову систему або бази даних.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` визначає правило автоматичного приведення workflow перевірки безпеки до еталонного шаблону.
|
|
21
|
+
|
|
22
|
+
2. Правило орієнтується на файл `.github/workflows/lint-security.yml`, щоб забезпечити наявність узгодженого процесу security lint у CI.
|
|
23
|
+
|
|
24
|
+
3. Під час підбору файлів для загальної обробки свідомо пропускаються службові шляхи `.github` і `.git`, щоб не аналізувати інфраструктурні каталоги як звичайний код.
|
|
25
|
+
|
|
26
|
+
4. Зміни не записуються напряму у файлову систему або зовнішні сховища: `patterns` лише описує доступне виправлення для подальшого застосування інструментом.
|
|
27
|
+
|
|
28
|
+
## Гарантії поведінки
|
|
29
|
+
|
|
30
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
31
|
+
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Directory Index
|
|
3
|
+
title: npm/rules/security/lint_security_yml
|
|
4
|
+
resource: npm/rules/security/lint_security_yml/
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
| Файл | Тип |
|
|
8
|
+
| ----------------------------------------------------- | --------- |
|
|
9
|
+
| [fix-lint_security_yml.mjs](fix-lint_security_yml.md) | JS Module |
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { createTemplateFixPattern } from '../../../scripts/lib/fix/template-deep-merge.mjs'
|
|
2
2
|
|
|
3
|
-
export const patterns = [
|
|
3
|
+
export const patterns = [
|
|
4
|
+
createTemplateFixPattern({
|
|
5
|
+
id: 'security-lint_security_yml-template',
|
|
6
|
+
targetPath: '.github/workflows/lint-security.yml'
|
|
7
|
+
})
|
|
8
|
+
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-lint_style_yml.mjs
|
|
4
|
+
resource: npm/rules/style/lint_style_yml/fix-lint_style_yml.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: fc52d912
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.99
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
Публічна функція `patterns` надає шаблони для зовнішньої перевірки очікуваного стану коду. Модуль працює як read-only джерело правил: не змінює ФС чи БД і свідомо пропускає службові шляхи `.github` та `.git`.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` визначає набір правил автоматичного виправлення для стандартного workflow перевірки стилю.
|
|
21
|
+
|
|
22
|
+
2. `patterns` спрямовує виправлення на файл `.github/workflows/lint-style.yml`, щоб підтримувати єдиний шаблон CI-перевірки стилю в проєкті.
|
|
23
|
+
|
|
24
|
+
3. `patterns` не виконує запис у файлову систему чи інші сховища самостійно, а лише описує очікувану зміну для зовнішнього механізму застосування.
|
|
25
|
+
|
|
26
|
+
4. Під час роботи свідомо не обробляються службові шляхи `.github` і `.git`, окрім цільового workflow-файлу, для якого визначено шаблонне виправлення.
|
|
27
|
+
|
|
28
|
+
## Гарантії поведінки
|
|
29
|
+
|
|
30
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
31
|
+
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Directory Index
|
|
3
|
+
title: npm/rules/style/lint_style_yml
|
|
4
|
+
resource: npm/rules/style/lint_style_yml/
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
| Файл | Тип |
|
|
8
|
+
| ----------------------------------------------- | --------- |
|
|
9
|
+
| [fix-lint_style_yml.mjs](fix-lint_style_yml.md) | JS Module |
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { createTemplateFixPattern } from '../../../scripts/lib/fix/template-deep-merge.mjs'
|
|
2
2
|
|
|
3
|
-
export const patterns = [
|
|
3
|
+
export const patterns = [
|
|
4
|
+
createTemplateFixPattern({ id: 'style-lint_style_yml-template', targetPath: '.github/workflows/lint-style.yml' })
|
|
5
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-package_json.mjs
|
|
4
|
+
resource: npm/rules/style/package_json/fix-package_json.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: deb26703
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
9
|
+
score: 100
|
|
10
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Огляд
|
|
14
|
+
|
|
15
|
+
Надає `patterns` для визначення очікуваних перевірок, що спираються на `package.json`. Використовується як read-only опис вимог до конфігурації пакета, без самостійних змін файлової системи.
|
|
16
|
+
|
|
17
|
+
## Поведінка
|
|
18
|
+
|
|
19
|
+
1. `patterns` визначає правило виправлення для `package.json`.
|
|
20
|
+
|
|
21
|
+
2. `patterns` забезпечує приведення `package.json` до проєктного шаблону стилю.
|
|
22
|
+
|
|
23
|
+
3. `patterns` не змінює файлову систему самостійно, а лише описує доступний сценарій автоматичного виправлення для зовнішнього механізму перевірок.
|
|
24
|
+
|
|
25
|
+
## Гарантії поведінки
|
|
26
|
+
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-vscode_settings.mjs
|
|
4
|
+
resource: npm/rules/style/vscode_settings/fix-vscode_settings.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: eee71672
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.98
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
`patterns` описує узгоджені шаблони для `settings.json` і визначає, які значення в ньому мають відповідати очікуваному формату. Це потрібно, щоб конфіг лишався передбачуваним і однаково трактувався в різних місцях, де його використовують.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` описує набір правил для приведення `.vscode/settings.json` до узгодженого стану з шаблонним стилем проєкту.
|
|
21
|
+
2. На основі цього набору система знаходить конфігурацію `settings.json` і підтягує її в механізм виправлення, щоб зберігати єдиний формат налаштувань у робочому середовищі.
|
|
22
|
+
3. Результат роботи `patterns` використовується як джерело стандарту для перевірки та вирівнювання вмісту `settings.json` без ручного втручання.
|
|
23
|
+
4. Модуль не змінює файлову систему чи бази даних; він лише надає опис поведінки для подальшого застосування.
|
|
24
|
+
|
|
25
|
+
## Гарантії поведінки
|
|
26
|
+
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Directory Index
|
|
3
|
+
title: npm/rules/style/vscode_settings
|
|
4
|
+
resource: npm/rules/style/vscode_settings/
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
| Файл | Тип |
|
|
8
|
+
| ------------------------------------------------- | --------- |
|
|
9
|
+
| [fix-vscode_settings.mjs](fix-vscode_settings.md) | JS Module |
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { createTemplateFixPattern } from '../../../scripts/lib/fix/template-deep-merge.mjs'
|
|
2
2
|
|
|
3
|
-
export const patterns = [
|
|
3
|
+
export const patterns = [
|
|
4
|
+
createTemplateFixPattern({ id: 'style-vscode_settings-template', targetPath: '.vscode/settings.json' })
|
|
5
|
+
]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-lint_text.mjs
|
|
4
|
+
resource: npm/rules/text/lint_text/fix-lint_text.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: cefae829
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.99
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
`patterns` визначає, які текстові зміни вважаються придатними для узгодження з еталонною структурою workflow. Вона потрібна, щоб перевірка зосереджувалась на змісті потрібних файлів і не торкалась службових шляхів `.github` і `.git`.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` формує набір правил для узгодження текстової перевірки з еталонною структурою workflow.
|
|
21
|
+
2. Підготовлює виправлення для цільового файлу `.github/workflows/lint-text.yml`.
|
|
22
|
+
3. Свідомо обходить службові шляхи `.github` і `.git`, щоб не зачіпати внутрішню інфраструктуру репозиторію.
|
|
23
|
+
4. Працює лише на читання: не змінює файлову систему і не виконує запис у БД.
|
|
24
|
+
|
|
25
|
+
## Гарантії поведінки
|
|
26
|
+
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
28
|
+
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-oxfmtrc.mjs
|
|
4
|
+
resource: npm/rules/text/oxfmtrc/fix-oxfmtrc.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: 2902bd52
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.98
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
Публічна точка входу `patterns` повертає набір правил вирівнювання для `.oxfmtrc.json` і слугує read-only джерелом очікуваного стану цього конфіга. Код спирається на конфіг `.oxfmtrc.json` як на залежність контексту, щоб узгоджувати його формат із прийнятими правилами.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` формує набір виправлень для узгодження шаблонного конфіга з цільовим файлом `.oxfmtrc.json`.
|
|
21
|
+
2. Кожен елемент у `patterns` описує окреме правило вирівнювання цього конфіга, щоб тримати його в очікуваному стані.
|
|
22
|
+
3. `patterns` не виконує записів у файлову систему чи базу даних і не змінює інші файли поза `.oxfmtrc.json`.
|
|
23
|
+
|
|
24
|
+
## Гарантії поведінки
|
|
25
|
+
|
|
26
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-vscode_settings.mjs
|
|
4
|
+
resource: npm/rules/text/vscode_settings/fix-vscode_settings.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: aa3c10a6
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
tier: cloud-min
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.93
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
Файл визначає, за якими правилами `patterns` перевіряє відповідність `.vscode/settings.json` конфігурації з `settings.json`. Це потрібно, щоб підтримувати узгоджений стан редакторських налаштувань у проєкті.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` формує набір правил для приведення `.vscode/settings.json` до узгодженого стану з шаблоном.
|
|
21
|
+
2. `patterns` орієнтується на конфігурацію `settings.json` як на джерело очікуваного вигляду налаштувань.
|
|
22
|
+
3. `patterns` потрібен, щоб автоматично підтримувати єдину структуру редакторських налаштувань у проєкті.
|
|
23
|
+
4. `patterns` працює лише як опис правил і не виконує запис у файлову систему чи базу даних.
|
|
24
|
+
|
|
25
|
+
## Гарантії поведінки
|
|
26
|
+
|
|
27
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Directory Index
|
|
3
|
+
title: npm/rules/text/vscode_settings
|
|
4
|
+
resource: npm/rules/text/vscode_settings/
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
| Файл | Тип |
|
|
8
|
+
| ------------------------------------------------- | --------- |
|
|
9
|
+
| [fix-vscode_settings.mjs](fix-vscode_settings.md) | JS Module |
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { createTemplateFixPattern } from '../../../scripts/lib/fix/template-deep-merge.mjs'
|
|
2
2
|
|
|
3
|
-
export const patterns = [
|
|
3
|
+
export const patterns = [
|
|
4
|
+
createTemplateFixPattern({ id: 'text-vscode_settings-template', targetPath: '.vscode/settings.json' })
|
|
5
|
+
]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-vscode_settings.mjs
|
|
4
|
+
resource: npm/rules/worktree/vscode_settings/fix-vscode_settings.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: e68a8ed3
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.97
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
Надає `patterns` для визначення конфігураційних файлів, на які має зважати перевірка робочого дерева. Спирається на конфіги: settings.json.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` визначає правило виправлення для робочого дерева, яке підтримує наявність очікуваного VS Code-конфігу `settings.json`.
|
|
21
|
+
|
|
22
|
+
2. `patterns` спрямовує перевірку на `.vscode/settings.json`, щоб проєкт мав узгоджені налаштування редактора для всіх учасників.
|
|
23
|
+
|
|
24
|
+
3. `patterns` не змінює файлову систему самостійно; воно лише описує доступний шаблон виправлення для зовнішнього механізму застосування правил.
|
|
25
|
+
|
|
26
|
+
## Гарантії поведінки
|
|
27
|
+
|
|
28
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Directory Index
|
|
3
|
+
title: npm/rules/worktree/vscode_settings
|
|
4
|
+
resource: npm/rules/worktree/vscode_settings/
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
| Файл | Тип |
|
|
8
|
+
| ------------------------------------------------- | --------- |
|
|
9
|
+
| [fix-vscode_settings.mjs](fix-vscode_settings.md) | JS Module |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: fix-zed_settings.mjs
|
|
4
|
+
resource: npm/rules/worktree/zed_settings/fix-zed_settings.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: 452faa10
|
|
7
|
+
model: openai-codex/gpt-5.5
|
|
8
|
+
tier: cloud-avg
|
|
9
|
+
score: 100
|
|
10
|
+
issues: judge:inaccurate:0.98
|
|
11
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Огляд
|
|
15
|
+
|
|
16
|
+
Надає правило `patterns` для перевірки очікуваних налаштувань проєкту. Код спирається на конфіг `settings.json` і працює read-only, щоб описати вимоги до конфігурації без самостійного внесення змін.
|
|
17
|
+
|
|
18
|
+
## Поведінка
|
|
19
|
+
|
|
20
|
+
1. `patterns` визначає правило автоматичного приведення робочого дерева до очікуваного шаблону налаштувань Zed.
|
|
21
|
+
|
|
22
|
+
2. `patterns` орієнтується на конфіг `settings.json`, щоб забезпечити наявність і узгодженість `.zed/settings.json` у проєкті.
|
|
23
|
+
|
|
24
|
+
3. `patterns` не змінює файлову систему самостійно; воно лише описує поведінку виправлення для зовнішнього механізму застосування правил.
|
|
25
|
+
|
|
26
|
+
## Гарантії поведінки
|
|
27
|
+
|
|
28
|
+
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { createTemplateFixPattern } from '../../../scripts/lib/fix/template-deep-merge.mjs'
|
|
2
2
|
|
|
3
|
-
export const patterns = [
|
|
3
|
+
export const patterns = [
|
|
4
|
+
createTemplateFixPattern({ id: 'worktree-zed_settings-template', targetPath: '.zed/settings.json' })
|
|
5
|
+
]
|
|
@@ -3,12 +3,12 @@ type: JS Module
|
|
|
3
3
|
title: sync-claude-config.mjs
|
|
4
4
|
resource: npm/scripts/sync-claude-config.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: e4513e7a
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 85
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
Синхронізує конфігурацію 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-rules.json`. Також зливає фрагмент `.gitignore` з канонічного шаблону, додаючи необхідні записи для ADR.
|
|
11
|
+
Синхронізує конфігурацію 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-rules.json`. Також зливає фрагмент `.gitignore` з канонічного шаблону, додаючи необхідні записи для ADR. За правилом `local-ai` керує rtk-інтеграцією (fail-open, працює лише за наявності бінарника rtk): PreToolUse hook `rtk hook claude` у `.claude/settings.json`, preToolUse entry `rtk hook cursor` у `.cursor/hooks.json` і vendored pi-extension `.pi/extensions/rtk.ts`; вимкнення правила прибирає записи та видаляє extension.
|
|
12
12
|
|
|
13
13
|
## Поведінка
|
|
14
14
|
|
|
@@ -22,6 +22,8 @@ ADR_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-
|
|
|
22
22
|
ADR_NORMALIZE_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR normalize Stop-hook.
|
|
23
23
|
CURSOR_ADR_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR capture Stop-hook у `.cursor/hooks.json`.
|
|
24
24
|
CURSOR_ADR_NORMALIZE_HOOK_COMMAND_MARKER — Визначає маркер шляху до bash-скрипта ADR normalize Stop-hook у `.cursor/hooks.json`.
|
|
25
|
+
RTK_CLAUDE_HOOK_COMMAND_MARKER — Визначає маркер rtk PreToolUse hook'а (`rtk hook claude`) у `.claude/settings.json` (правило `local-ai`).
|
|
26
|
+
RTK_CURSOR_HOOK_COMMAND_MARKER — Визначає маркер rtk preToolUse hook'а (`rtk hook cursor`) у `.cursor/hooks.json` (правило `local-ai`).
|
|
25
27
|
MANAGED_HOOK_COMMAND_MARKERS — Містить список усіх маркерів, що ідентифікують керовані хуки пакета.
|
|
26
28
|
PI_DIR — Визначає кореневу директорію для артефактів pi.dev у проєкті-споживачі.
|
|
27
29
|
PI_EXTENSIONS_DIR — Визначає директорію для TS-extensions pi.dev у проєкті-споживачі.
|
|
@@ -31,8 +33,8 @@ ADR_GITIGNORE_SNIPPET_REL — Визначає відносний шлях до
|
|
|
31
33
|
mergeAllowList — Об'єднує списки дозволених дозволів, зберігаючи користувацькі записи першими.
|
|
32
34
|
mergeHooks — Зливає секцію `hooks` з `.claude/settings.json`, видаляючи керовані групи з існуючої конфігурації.
|
|
33
35
|
mergeSettings — Зливає конфігурацію `.claude/settings.json` з темплейту, зберігаючи користувацькі поля та оновлюючи керовані хуки.
|
|
34
|
-
mergeCursorHooksConfig — Зливає конфігурацію `.cursor/hooks.json`, зберігаючи користувацькі записи та додаючи/видаляючи керовані ADR stop entries.
|
|
35
|
-
syncCursorHooksConfig — Синхронізує `.cursor/hooks.json` для Cursor Agent
|
|
36
|
+
mergeCursorHooksConfig — Зливає конфігурацію `.cursor/hooks.json`, зберігаючи користувацькі записи та додаючи/видаляючи керовані ADR stop entries і rtk preToolUse entry.
|
|
37
|
+
syncCursorHooksConfig — Синхронізує `.cursor/hooks.json` для Cursor Agent hooks, додаючи ADR stop і rtk preToolUse entries за умовою.
|
|
36
38
|
syncClaudeSettings — Синхронізує `.claude/settings.json` за темплейтом, зберігаючи користувацькі налаштування.
|
|
37
39
|
syncAdrHookScript — Копіює канонічний bash-скрипт ADR capture Stop-hook з темплейту пакета у `.claude/hooks/`.
|
|
38
40
|
syncAdrNormalizeHookScript — Копіює канонічний bash-скрипт ADR normalize Stop-hook з темплейту пакета у `.claude/hooks/`.
|
|
@@ -40,6 +42,9 @@ syncAdrHookLibScripts — Копіює всі bash-скрипти з `lib/` те
|
|
|
40
42
|
removeOrphanAdrHookLib — Видаляє директорію `.claude/hooks/lib/` з проєкту, якщо ADR-хуки вимкнені.
|
|
41
43
|
syncPiExtensions — Копіює bundled pi.dev TS-extension `n-rules-adr` у `.pi/extensions/n-rules-adr/` проєкту.
|
|
42
44
|
removeOrphanPiExtension — Видаляє директорію `.pi/extensions/n-rules-adr/` з проєкту, якщо ADR-хуки вимкнені.
|
|
45
|
+
RTK_PI_EXTENSION_FILE — Визначає ім'я файлу rtk pi-extension (`rtk.ts`) — шлях спільний із `rtk init --agent pi`.
|
|
46
|
+
syncRtkPiExtension — Копіює vendored rtk pi-extension у `.pi/extensions/rtk.ts` проєкту (правило `local-ai`).
|
|
47
|
+
removeOrphanRtkPiExtension — Видаляє `.pi/extensions/rtk.ts` з проєкту, якщо правило `local-ai` вимкнене.
|
|
43
48
|
syncGitignoreAdrFragment — Дописує відсутні рядки з канонічного ADR-фрагмента до кореневого `.gitignore` проєкту.
|
|
44
49
|
syncClaudeCommands — Копіює всі slash-команди з `.claude-template/commands/` у `.claude/commands/` проєкту.
|
|
45
50
|
syncClaudeConfig — Виконує повну синхронізацію Claude Code-конфігу, включаючи ADR-хуки, `.gitignore` та pi-extension, залежно від правил.
|
|
@@ -4,8 +4,7 @@ title: npm/scripts/lib/fix
|
|
|
4
4
|
resource: npm/scripts/lib/fix/
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
| [vscode-ext-add.mjs](vscode-ext-add.md) | JS Module |
|
|
7
|
+
| Файл | Тип |
|
|
8
|
+
| ------------------------------------------------- | --------- |
|
|
9
|
+
| [template-deep-merge.mjs](template-deep-merge.md) | JS Module |
|
|
10
|
+
| [vscode-ext-add.mjs](vscode-ext-add.md) | JS Module |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: JS Module
|
|
3
|
+
title: template-deep-merge.mjs
|
|
4
|
+
resource: npm/scripts/lib/fix/template-deep-merge.mjs
|
|
5
|
+
docgen:
|
|
6
|
+
crc: 90221a92
|
|
7
|
+
model: openai-codex/gpt-5.4-mini
|
|
8
|
+
score: 100
|
|
9
|
+
issues: judge:inaccurate:0.98
|
|
10
|
+
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Огляд
|
|
14
|
+
|
|
15
|
+
Файл створює T0-патерн для одного target-файлу за канонічним `template/*.snippet.{json,jsonc,yml,yaml}` свого concern-а, який резолвиться через `ctx.concernDir`, щоб уніфіковано приводити `engine:"template"` і `engine:"rego"` до потрібного стану без ручного редагування. Для merge об’єкти поєднуються по ключах, масиви зводяться до union за структурним підмножинним збігом, а leaf-значення замінюються канонічним значенням із snippet; якщо target-файл відсутній, snippet копіюється без merge. Для JSON/JSONC застосовується plain-object merge з `JSON.stringify`, а для YAML — `Document API` (`setIn`/`addIn`/`hasIn`), щоб зберігати наявні коментарі й форматування та створювати лише те, чого бракує. `createTemplateFixPattern` працює fail-safe: не кидає винятків назовні й за відсутності потрібного snippet або некоректного входу повертає порожнє значення.
|
|
16
|
+
|
|
17
|
+
## Поведінка
|
|
18
|
+
|
|
19
|
+
1. `createTemplateFixPattern` формує T0-патерн для одного цільового файлу, який приводить його до стану, описаного канонічним snippet-файлом у `template/` свого concern-а.
|
|
20
|
+
2. Під час запуску патерн спершу визначає, чи стосується порушення саме цього цільового файлу; якщо ні — нічого не змінює.
|
|
21
|
+
3. Далі він шукає відповідний snippet-файл для цільового файлу; якщо snippet не знайдено або немає контексту concern-а, зміни не виконуються.
|
|
22
|
+
4. Якщо цільового файлу ще немає, він створює його з вмісту snippet без merge — як початковий канонічний стан.
|
|
23
|
+
5. Якщо цільовий файл уже існує, патерн зливає snippet у наявний вміст: об’єкти доповнюються по ключах, масиви поповнюються лише відсутніми структурно елементами, а прості значення замінюються канонічними.
|
|
24
|
+
6. Для JSON і JSONC результат записується як нормалізований JSON-текст; якщо вхід невалідний або файл уже відповідає snippet-у, він лишається без змін.
|
|
25
|
+
7. Для YAML збереження робиться так, щоб не втрачати коментарі й форматування; якщо YAML невалідний, або вже відповідає snippet-у, файл не чіпається.
|
|
26
|
+
8. У разі успішного оновлення патерн фіксує запис і повідомляє, що цільовий файл приведено у відповідність snippet.
|
|
27
|
+
|
|
28
|
+
## Публічний API
|
|
29
|
+
|
|
30
|
+
- createTemplateFixPattern — Формує T0-патерн, який вирівнює `targetPath` під `template/*.snippet.*` для свого concern-а; працює як deep-merge, не ламає повторні запуски і лишає одного writer-а для single-target snippet-концернів з `engine:"template"` або `engine:"rego"` на тому самому snippet-шаблоні.
|
|
31
|
+
|
|
32
|
+
## Гарантії поведінки
|
|
33
|
+
|
|
34
|
+
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
|
|
35
|
+
- За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
|
package/scripts/skills-cli.mjs
CHANGED
|
@@ -22,7 +22,7 @@ import { dirname, join } from 'node:path'
|
|
|
22
22
|
import { cwd } from 'node:process'
|
|
23
23
|
import { fileURLToPath } from 'node:url'
|
|
24
24
|
|
|
25
|
-
import { readSkillMetaRaw, skillTier } from './lib/skill-meta.mjs'
|
|
25
|
+
import { readSkillMetaRaw, skillRequiresRoot, skillTier } from './lib/skill-meta.mjs'
|
|
26
26
|
|
|
27
27
|
/** Виконавці скіла. `pi` — вбудований (рекомендований); `cursor`/`codex`/`claude` — зовнішні CLI (`claude` — deprecated). */
|
|
28
28
|
const RUNNERS = new Set(['pi', 'cursor', 'codex', 'claude'])
|
|
@@ -177,13 +177,20 @@ async function runPiRunner(prompt, rawSkillName, skillsRoot, projectDir, logErro
|
|
|
177
177
|
* або deprecated `claude -p`) — промпт передається через stdin. `claude` лишається як
|
|
178
178
|
* deprecated fallback для тих, у кого pi-модель ще не налаштована; буде прибрано
|
|
179
179
|
* (мігруй на `skill pi`). `cursor`/`codex` — повноцінні альтернативні раннери.
|
|
180
|
+
*
|
|
181
|
+
* `cursor-agent` у non-interactive режимі блокується власним `approvalMode: "allowlist"`
|
|
182
|
+
* користувача (git/bun/npx/rm тощо потребують інтерактивного підтвердження, якого в headless
|
|
183
|
+
* виклику немає). Для `worktree:true`/`requireRoot:true` скілів (блок-радіус вже ізольований)
|
|
184
|
+
* додаємо `--force`, замість того щоб просити користувача розширювати глобальний allowlist
|
|
185
|
+
* у `~/.cursor/cli-config.json`.
|
|
180
186
|
* @param {'claude' | 'cursor' | 'codex'} kind який LLM CLI запускати
|
|
181
187
|
* @param {string} prompt промпт для передачі у stdin
|
|
182
188
|
* @param {string} projectDir робочий каталог дочірнього процесу
|
|
183
189
|
* @param {(line: string) => void} logError вивід попередження/помилок
|
|
190
|
+
* @param {boolean} isolated чи скіл ізольований (worktree/requireRoot) — дозволяє force-approve для `cursor`
|
|
184
191
|
* @returns {number} exit code дочірнього процесу
|
|
185
192
|
*/
|
|
186
|
-
function runLlmCli(kind, prompt, projectDir, logError) {
|
|
193
|
+
function runLlmCli(kind, prompt, projectDir, logError, isolated) {
|
|
187
194
|
const runner = EXTERNAL_RUNNERS[kind]
|
|
188
195
|
|
|
189
196
|
if (runner.deprecated) {
|
|
@@ -194,7 +201,9 @@ function runLlmCli(kind, prompt, projectDir, logError) {
|
|
|
194
201
|
throw new Error(`\`${runner.bin}\` not found in PATH. Install ${kind} CLI or use \`skill pi\`.`)
|
|
195
202
|
}
|
|
196
203
|
|
|
197
|
-
const
|
|
204
|
+
const args = kind === 'cursor' && isolated ? [...runner.args, '--force'] : runner.args
|
|
205
|
+
|
|
206
|
+
const result = spawnSync(runner.bin, args, {
|
|
198
207
|
input: prompt,
|
|
199
208
|
cwd: projectDir,
|
|
200
209
|
stdio: ['pipe', 'inherit', 'inherit'],
|
|
@@ -252,7 +261,9 @@ export async function runSkillsCli(argv, options = {}) {
|
|
|
252
261
|
if (first === 'pi') {
|
|
253
262
|
return await runPiRunner(prompt, second, skillsRoot, projectDir, logError, deps)
|
|
254
263
|
}
|
|
255
|
-
|
|
264
|
+
const skillMeta = readSkillMetaRaw(join(skillsRoot, normalizeSkillId(second)))
|
|
265
|
+
const isolated = skillRequiresRoot(skillMeta)
|
|
266
|
+
return runLlmCli(/** @type {'claude' | 'cursor' | 'codex'} */ (first), prompt, projectDir, logError, isolated)
|
|
256
267
|
}
|
|
257
268
|
|
|
258
269
|
if (skillIds.includes(normalizeSkillId(first))) {
|