From cd3a242b128332fa2e934b9d288470b42b414ff4 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 15:30:06 +0300 Subject: [PATCH 01/18] refactor(skills): portable script paths via ${CLAUDE_SKILL_DIR} MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace literal `.claude/skills//...` paths in SKILL.md with the `${CLAUDE_SKILL_DIR}` variable that Claude Code substitutes at invocation time. Same-skill references become `${CLAUDE_SKILL_DIR}/`, cross-skill references (erf-* → epf-*) become `${CLAUDE_SKILL_DIR}/..//`. All paths now wrapped in double quotes to handle install locations with spaces. This unblocks plugin-mode installation: literal `.claude/skills/...` paths fail when the skill is loaded from `~/.claude/plugins/cache/...` or from a personal `~/.claude/skills/` install. Drop-in mode continues to work because Claude Code resolves the variable in all install scopes. Verified via pilot: - Project drop-in (cc-1c-skills repo) - Personal `~/.claude/skills/cf-info/` - Plugin via `/plugin marketplace add ` Scope: 61 SKILL.md, 125 path replacements (8 cross-skill). Scripts unchanged — they already use \$PSScriptRoot and ../ patterns that resolve correctly under the bundled cache layout. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/cf-edit/SKILL.md | 2 +- .claude/skills/cf-info/SKILL.md | 2 +- .claude/skills/cf-init/SKILL.md | 2 +- .claude/skills/cf-validate/SKILL.md | 4 +- .claude/skills/cfe-borrow/SKILL.md | 2 +- .claude/skills/cfe-diff/SKILL.md | 2 +- .claude/skills/cfe-init/SKILL.md | 2 +- .claude/skills/cfe-patch-method/SKILL.md | 2 +- .claude/skills/cfe-validate/SKILL.md | 4 +- .claude/skills/db-create/SKILL.md | 10 +- .claude/skills/db-dump-cf/SKILL.md | 8 +- .claude/skills/db-dump-xml/SKILL.md | 12 +- .claude/skills/db-load-cf/SKILL.md | 8 +- .claude/skills/db-load-git/SKILL.md | 156 ++++++++++----------- .claude/skills/db-load-xml/SKILL.md | 10 +- .claude/skills/db-run/SKILL.md | 10 +- .claude/skills/db-update/SKILL.md | 8 +- .claude/skills/epf-build/SKILL.md | 6 +- .claude/skills/epf-dump/SKILL.md | 6 +- .claude/skills/epf-init/SKILL.md | 2 +- .claude/skills/epf-validate/SKILL.md | 4 +- .claude/skills/erf-build/SKILL.md | 6 +- .claude/skills/erf-dump/SKILL.md | 6 +- .claude/skills/erf-init/SKILL.md | 2 +- .claude/skills/erf-validate/SKILL.md | 4 +- .claude/skills/form-add/SKILL.md | 2 +- .claude/skills/form-compile/SKILL.md | 4 +- .claude/skills/form-edit/SKILL.md | 2 +- .claude/skills/form-info/SKILL.md | 2 +- .claude/skills/form-remove/SKILL.md | 2 +- .claude/skills/form-validate/SKILL.md | 4 +- .claude/skills/help-add/SKILL.md | 2 +- .claude/skills/img-grid/SKILL.md | 2 +- .claude/skills/interface-edit/SKILL.md | 4 +- .claude/skills/interface-validate/SKILL.md | 4 +- .claude/skills/meta-compile/SKILL.md | 2 +- .claude/skills/meta-edit/SKILL.md | 4 +- .claude/skills/meta-info/SKILL.md | 2 +- .claude/skills/meta-remove/SKILL.md | 2 +- .claude/skills/meta-validate/SKILL.md | 4 +- .claude/skills/mxl-compile/SKILL.md | 2 +- .claude/skills/mxl-decompile/SKILL.md | 2 +- .claude/skills/mxl-info/SKILL.md | 4 +- .claude/skills/mxl-validate/SKILL.md | 4 +- .claude/skills/role-compile/SKILL.md | 2 +- .claude/skills/role-info/SKILL.md | 2 +- .claude/skills/role-validate/SKILL.md | 2 +- .claude/skills/skd-compile/SKILL.md | 4 +- .claude/skills/skd-edit/SKILL.md | 2 +- .claude/skills/skd-info/SKILL.md | 2 +- .claude/skills/skd-validate/SKILL.md | 4 +- .claude/skills/subsystem-compile/SKILL.md | 2 +- .claude/skills/subsystem-edit/SKILL.md | 2 +- .claude/skills/subsystem-info/SKILL.md | 2 +- .claude/skills/subsystem-validate/SKILL.md | 4 +- .claude/skills/template-add/SKILL.md | 4 +- .claude/skills/template-remove/SKILL.md | 2 +- .claude/skills/web-info/SKILL.md | 6 +- .claude/skills/web-publish/SKILL.md | 10 +- .claude/skills/web-stop/SKILL.md | 6 +- .claude/skills/web-test/SKILL.md | 4 +- .claude/skills/web-unpublish/SKILL.md | 8 +- 62 files changed, 201 insertions(+), 201 deletions(-) diff --git a/.claude/skills/cf-edit/SKILL.md b/.claude/skills/cf-edit/SKILL.md index 8c4901cb..c8c1d4b1 100644 --- a/.claude/skills/cf-edit/SKILL.md +++ b/.claude/skills/cf-edit/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: | `NoValidate` | Пропустить авто-валидацию | ```powershell -powershell.exe -NoProfile -File .claude/skills/cf-edit/scripts/cf-edit.ps1 -ConfigPath '' -Operation modify-property -Value 'Version=1.0.0.1' +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cf-edit.ps1" -ConfigPath '' -Operation modify-property -Value 'Version=1.0.0.1' ``` ## Операции diff --git a/.claude/skills/cf-info/SKILL.md b/.claude/skills/cf-info/SKILL.md index 1963142d..dedc0382 100644 --- a/.claude/skills/cf-info/SKILL.md +++ b/.claude/skills/cf-info/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: | `OutFile` | Записать результат в файл (UTF-8 BOM) | ```powershell -powershell.exe -NoProfile -File .claude/skills/cf-info/scripts/cf-info.ps1 -ConfigPath "<путь>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cf-info.ps1" -ConfigPath "<путь>" ``` ## Три режима diff --git a/.claude/skills/cf-init/SKILL.md b/.claude/skills/cf-init/SKILL.md index 4cd712f3..3ac0cc39 100644 --- a/.claude/skills/cf-init/SKILL.md +++ b/.claude/skills/cf-init/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: | `CompatibilityMode` | Режим совместимости (default: `Version8_3_24`) | ```powershell -powershell.exe -NoProfile -File .claude/skills/cf-init/scripts/cf-init.ps1 -Name "МояКонфигурация" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cf-init.ps1" -Name "МояКонфигурация" ``` ## Примеры diff --git a/.claude/skills/cf-validate/SKILL.md b/.claude/skills/cf-validate/SKILL.md index 4f709253..c4ec95ac 100644 --- a/.claude/skills/cf-validate/SKILL.md +++ b/.claude/skills/cf-validate/SKILL.md @@ -24,6 +24,6 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/cf-validate/scripts/cf-validate.ps1 -ConfigPath "upload/cfempty" -powershell.exe -NoProfile -File .claude/skills/cf-validate/scripts/cf-validate.ps1 -ConfigPath "upload/cfempty/Configuration.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cf-validate.ps1" -ConfigPath "upload/cfempty" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cf-validate.ps1" -ConfigPath "upload/cfempty/Configuration.xml" ``` diff --git a/.claude/skills/cfe-borrow/SKILL.md b/.claude/skills/cfe-borrow/SKILL.md index a8eab161..024701a7 100644 --- a/.claude/skills/cfe-borrow/SKILL.md +++ b/.claude/skills/cfe-borrow/SKILL.md @@ -71,7 +71,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-borrow.ps1" -ExtensionPath src -ConfigPath C:\cfsrc\erp -Object "Catalog.Контрагенты" ``` ## Примеры diff --git a/.claude/skills/cfe-diff/SKILL.md b/.claude/skills/cfe-diff/SKILL.md index 176da0b9..79a2c4e8 100644 --- a/.claude/skills/cfe-diff/SKILL.md +++ b/.claude/skills/cfe-diff/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/cfe-diff/scripts/cfe-diff.ps1 -ExtensionPath src -ConfigPath C:\cfsrc\erp -Mode A +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-diff.ps1" -ExtensionPath src -ConfigPath C:\cfsrc\erp -Mode A ``` ## Mode A — обзор расширения diff --git a/.claude/skills/cfe-init/SKILL.md b/.claude/skills/cfe-init/SKILL.md index 1acfac6f..4d46c7c3 100644 --- a/.claude/skills/cfe-init/SKILL.md +++ b/.claude/skills/cfe-init/SKILL.md @@ -44,7 +44,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/cfe-init/scripts/cfe-init.ps1 -Name "МоёРасширение" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-init.ps1" -Name "МоёРасширение" ``` ## Примеры diff --git a/.claude/skills/cfe-patch-method/SKILL.md b/.claude/skills/cfe-patch-method/SKILL.md index 4246dca0..c441dd4c 100644 --- a/.claude/skills/cfe-patch-method/SKILL.md +++ b/.claude/skills/cfe-patch-method/SKILL.md @@ -51,7 +51,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/cfe-patch-method/scripts/cfe-patch-method.ps1 -ExtensionPath src -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-patch-method.ps1" -ExtensionPath src -ModulePath "Catalog.Контрагенты.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before ``` ## Примеры diff --git a/.claude/skills/cfe-validate/SKILL.md b/.claude/skills/cfe-validate/SKILL.md index ffc3ff0c..5b46fd3d 100644 --- a/.claude/skills/cfe-validate/SKILL.md +++ b/.claude/skills/cfe-validate/SKILL.md @@ -24,6 +24,6 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/cfe-validate/scripts/cfe-validate.ps1 -ExtensionPath "src" -powershell.exe -NoProfile -File .claude/skills/cfe-validate/scripts/cfe-validate.ps1 -ExtensionPath "src/Configuration.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-validate.ps1" -ExtensionPath "src/Configuration.xml" ``` diff --git a/.claude/skills/db-create/SKILL.md b/.claude/skills/db-create/SKILL.md index 519b4a6e..491833a9 100644 --- a/.claude/skills/db-create/SKILL.md +++ b/.claude/skills/db-create/SKILL.md @@ -31,7 +31,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-create/scripts/db-create.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-create.ps1" <параметры> ``` ### Параметры скрипта @@ -65,14 +65,14 @@ powershell.exe -NoProfile -File .claude/skills/db-create/scripts/db-create.ps1 < ```powershell # Создать файловую базу -powershell.exe -NoProfile -File .claude/skills/db-create/scripts/db-create.ps1 -InfoBasePath "C:\Bases\NewDB" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-create.ps1" -InfoBasePath "C:\Bases\NewDB" # Создать серверную базу -powershell.exe -NoProfile -File .claude/skills/db-create/scripts/db-create.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Test" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-create.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Test" # Создать из шаблона CF -powershell.exe -NoProfile -File .claude/skills/db-create/scripts/db-create.ps1 -InfoBasePath "C:\Bases\NewDB" -UseTemplate "C:\Templates\config.cf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-create.ps1" -InfoBasePath "C:\Bases\NewDB" -UseTemplate "C:\Templates\config.cf" # Создать и добавить в список баз -powershell.exe -NoProfile -File .claude/skills/db-create/scripts/db-create.ps1 -InfoBasePath "C:\Bases\NewDB" -AddToList -ListName "Новая база" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-create.ps1" -InfoBasePath "C:\Bases\NewDB" -AddToList -ListName "Новая база" ``` diff --git a/.claude/skills/db-dump-cf/SKILL.md b/.claude/skills/db-dump-cf/SKILL.md index 2ccbf765..a37e56ed 100644 --- a/.claude/skills/db-dump-cf/SKILL.md +++ b/.claude/skills/db-dump-cf/SKILL.md @@ -35,7 +35,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-cf.ps1" <параметры> ``` ### Параметры скрипта @@ -69,11 +69,11 @@ powershell.exe -NoProfile -File .claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 ```powershell # Выгрузка конфигурации (файловая база) -powershell.exe -NoProfile -File .claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -OutputFile "C:\backup\config.cf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-cf.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -OutputFile "C:\backup\config.cf" # Серверная база -powershell.exe -NoProfile -File .claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Dev" -UserName "Admin" -Password "secret" -OutputFile "config.cf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-cf.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Dev" -UserName "Admin" -Password "secret" -OutputFile "config.cf" # Выгрузка расширения -powershell.exe -NoProfile -File .claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -OutputFile "ext.cfe" -Extension "МоёРасширение" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-cf.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -OutputFile "ext.cfe" -Extension "МоёРасширение" ``` diff --git a/.claude/skills/db-dump-xml/SKILL.md b/.claude/skills/db-dump-xml/SKILL.md index 07024f99..e2a012c6 100644 --- a/.claude/skills/db-dump-xml/SKILL.md +++ b/.claude/skills/db-dump-xml/SKILL.md @@ -37,7 +37,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-xml.ps1" <параметры> ``` ### Параметры скрипта @@ -81,17 +81,17 @@ powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.p ```powershell # Полная выгрузка (файловая база) -powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 -V8Path "C:\Program Files\1cv8\8.3.25.1257\bin" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Full +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-xml.ps1" -V8Path "C:\Program Files\1cv8\8.3.25.1257\bin" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Full # Инкрементальная выгрузка -powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Changes +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-xml.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Changes # Частичная выгрузка -powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Partial -Objects "Справочник.Номенклатура,Документ.Заказ" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-xml.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Partial -Objects "Справочник.Номенклатура,Документ.Заказ" # Серверная база -powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Dev" -UserName "Admin" -Password "secret" -ConfigDir "C:\WS\cfsrc" -Mode Full +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-xml.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Dev" -UserName "Admin" -Password "secret" -ConfigDir "C:\WS\cfsrc" -Mode Full # Выгрузка расширения -powershell.exe -NoProfile -File .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\ext_src" -Mode Full -Extension "МоёРасширение" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-dump-xml.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\ext_src" -Mode Full -Extension "МоёРасширение" ``` diff --git a/.claude/skills/db-load-cf/SKILL.md b/.claude/skills/db-load-cf/SKILL.md index 5e7de1c3..8ca199a8 100644 --- a/.claude/skills/db-load-cf/SKILL.md +++ b/.claude/skills/db-load-cf/SKILL.md @@ -36,7 +36,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-load-cf/scripts/db-load-cf.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-cf.ps1" <параметры> ``` ### Параметры скрипта @@ -71,11 +71,11 @@ powershell.exe -NoProfile -File .claude/skills/db-load-cf/scripts/db-load-cf.ps1 ```powershell # Файловая база -powershell.exe -NoProfile -File .claude/skills/db-load-cf/scripts/db-load-cf.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -InputFile "C:\backup\config.cf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-cf.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -InputFile "C:\backup\config.cf" # Серверная база -powershell.exe -NoProfile -File .claude/skills/db-load-cf/scripts/db-load-cf.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Test" -UserName "Admin" -Password "secret" -InputFile "config.cf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-cf.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Test" -UserName "Admin" -Password "secret" -InputFile "config.cf" # Загрузка расширения -powershell.exe -NoProfile -File .claude/skills/db-load-cf/scripts/db-load-cf.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -InputFile "ext.cfe" -Extension "МоёРасширение" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-cf.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -InputFile "ext.cfe" -Extension "МоёРасширение" ``` diff --git a/.claude/skills/db-load-git/SKILL.md b/.claude/skills/db-load-git/SKILL.md index 9d80795b..bbcf6bdf 100644 --- a/.claude/skills/db-load-git/SKILL.md +++ b/.claude/skills/db-load-git/SKILL.md @@ -1,78 +1,78 @@ ---- -name: db-load-git -description: Загрузка изменений из Git в базу 1С. Используй когда нужно загрузить изменения из гита, обновить базу из репозитория, partial load из коммита -argument-hint: "[database] [source]" -allowed-tools: - - Bash - - Read - - Glob - - AskUserQuestion ---- - -# /db-load-git — Загрузка изменений из Git - -Определяет изменённые файлы конфигурации по данным Git и выполняет частичную загрузку в информационную базу. - -## Usage - -``` -/db-load-git [database] -/db-load-git dev — все незафиксированные изменения -/db-load-git dev -Source Staged — только staged -/db-load-git dev -Source Commit -CommitRange "HEAD~3..HEAD" -/db-load-git dev -DryRun — только показать что будет загружено -``` - -## Параметры подключения - -Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу: -1. Если пользователь указал параметры подключения (путь, сервер) — используй напрямую -2. Если указал базу по имени — ищи по id / alias / name в `.v8-project.json` -3. Если не указал — сопоставь текущую ветку Git с `databases[].branches` -4. Если ветка не совпала — используй `default` -Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1` -Если файла нет — предложи `/db-list add`. -Если использованная база не зарегистрирована — после выполнения предложи добавить через `/db-list add`. -Если в записи базы указан `configSrc` — используй как каталог конфигурации. - -## Команда - -```powershell -powershell.exe -NoProfile -File .claude/skills/db-load-git/scripts/db-load-git.ps1 <параметры> -``` - -### Параметры скрипта - -| Параметр | Обязательный | Описание | -|----------|:------------:|----------| -| `-V8Path <путь>` | нет | Каталог bin платформы (или полный путь к 1cv8.exe) | -| `-InfoBasePath <путь>` | * | Файловая база | -| `-InfoBaseServer <сервер>` | * | Сервер 1С (для серверной базы) | -| `-InfoBaseRef <имя>` | * | Имя базы на сервере | -| `-UserName <имя>` | нет | Имя пользователя | -| `-Password <пароль>` | нет | Пароль | -| `-ConfigDir <путь>` | да | Каталог XML-выгрузки (git-репозиторий) | -| `-Source <источник>` | нет | `All` (по умолч.) / `Staged` / `Unstaged` / `Commit` | -| `-CommitRange ` | для Commit | Диапазон коммитов (напр. `HEAD~3..HEAD`) | -| `-Extension <имя>` | нет | Загрузить в расширение | -| `-AllExtensions` | нет | Загрузить все расширения | -| `-Format <формат>` | нет | `Hierarchical` (по умолч.) / `Plain` | -| `-DryRun` | нет | Только показать что будет загружено (без загрузки) | -| `-UpdateDB` | нет | После загрузки сразу обновить конфигурацию БД (`/UpdateDBCfg`) | - -> `*` — нужен либо `-InfoBasePath`, либо пара `-InfoBaseServer` + `-InfoBaseRef` - -## После выполнения - -1. Показать список загруженных файлов и результат из лога -2. Если `-UpdateDB` не был указан — **предложить `/db-update`** для применения изменений к БД - -## Примеры - -```powershell -# Все незафиксированные изменения -powershell.exe -NoProfile -File .claude/skills/db-load-git/scripts/db-load-git.ps1 -V8Path "C:\Program Files\1cv8\8.3.25.1257\bin" -InfoBasePath "C:\Bases\MyDB" -ConfigDir "C:\WS\cfsrc" -Source All -UpdateDB - -# Из диапазона коммитов -powershell.exe -NoProfile -File .claude/skills/db-load-git/scripts/db-load-git.ps1 -InfoBasePath "C:\Bases\MyDB" -ConfigDir "C:\WS\cfsrc" -Source Commit -CommitRange "HEAD~3..HEAD" -``` +--- +name: db-load-git +description: Загрузка изменений из Git в базу 1С. Используй когда нужно загрузить изменения из гита, обновить базу из репозитория, partial load из коммита +argument-hint: "[database] [source]" +allowed-tools: + - Bash + - Read + - Glob + - AskUserQuestion +--- + +# /db-load-git — Загрузка изменений из Git + +Определяет изменённые файлы конфигурации по данным Git и выполняет частичную загрузку в информационную базу. + +## Usage + +``` +/db-load-git [database] +/db-load-git dev — все незафиксированные изменения +/db-load-git dev -Source Staged — только staged +/db-load-git dev -Source Commit -CommitRange "HEAD~3..HEAD" +/db-load-git dev -DryRun — только показать что будет загружено +``` + +## Параметры подключения + +Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу: +1. Если пользователь указал параметры подключения (путь, сервер) — используй напрямую +2. Если указал базу по имени — ищи по id / alias / name в `.v8-project.json` +3. Если не указал — сопоставь текущую ветку Git с `databases[].branches` +4. Если ветка не совпала — используй `default` +Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1` +Если файла нет — предложи `/db-list add`. +Если использованная база не зарегистрирована — после выполнения предложи добавить через `/db-list add`. +Если в записи базы указан `configSrc` — используй как каталог конфигурации. + +## Команда + +```powershell +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-git.ps1" <параметры> +``` + +### Параметры скрипта + +| Параметр | Обязательный | Описание | +|----------|:------------:|----------| +| `-V8Path <путь>` | нет | Каталог bin платформы (или полный путь к 1cv8.exe) | +| `-InfoBasePath <путь>` | * | Файловая база | +| `-InfoBaseServer <сервер>` | * | Сервер 1С (для серверной базы) | +| `-InfoBaseRef <имя>` | * | Имя базы на сервере | +| `-UserName <имя>` | нет | Имя пользователя | +| `-Password <пароль>` | нет | Пароль | +| `-ConfigDir <путь>` | да | Каталог XML-выгрузки (git-репозиторий) | +| `-Source <источник>` | нет | `All` (по умолч.) / `Staged` / `Unstaged` / `Commit` | +| `-CommitRange ` | для Commit | Диапазон коммитов (напр. `HEAD~3..HEAD`) | +| `-Extension <имя>` | нет | Загрузить в расширение | +| `-AllExtensions` | нет | Загрузить все расширения | +| `-Format <формат>` | нет | `Hierarchical` (по умолч.) / `Plain` | +| `-DryRun` | нет | Только показать что будет загружено (без загрузки) | +| `-UpdateDB` | нет | После загрузки сразу обновить конфигурацию БД (`/UpdateDBCfg`) | + +> `*` — нужен либо `-InfoBasePath`, либо пара `-InfoBaseServer` + `-InfoBaseRef` + +## После выполнения + +1. Показать список загруженных файлов и результат из лога +2. Если `-UpdateDB` не был указан — **предложить `/db-update`** для применения изменений к БД + +## Примеры + +```powershell +# Все незафиксированные изменения +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-git.ps1" -V8Path "C:\Program Files\1cv8\8.3.25.1257\bin" -InfoBasePath "C:\Bases\MyDB" -ConfigDir "C:\WS\cfsrc" -Source All -UpdateDB + +# Из диапазона коммитов +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-git.ps1" -InfoBasePath "C:\Bases\MyDB" -ConfigDir "C:\WS\cfsrc" -Source Commit -CommitRange "HEAD~3..HEAD" +``` diff --git a/.claude/skills/db-load-xml/SKILL.md b/.claude/skills/db-load-xml/SKILL.md index 8fe089c1..bdbbaed9 100644 --- a/.claude/skills/db-load-xml/SKILL.md +++ b/.claude/skills/db-load-xml/SKILL.md @@ -38,7 +38,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-load-xml/scripts/db-load-xml.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-xml.ps1" <параметры> ``` ### Параметры скрипта @@ -96,14 +96,14 @@ Documents/Заказ/Forms/ФормаДокумента.xml ```powershell # Полная загрузка -powershell.exe -NoProfile -File .claude/skills/db-load-xml/scripts/db-load-xml.ps1 -V8Path "C:\Program Files\1cv8\8.3.25.1257\bin" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Full +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-xml.ps1" -V8Path "C:\Program Files\1cv8\8.3.25.1257\bin" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Full # Частичная загрузка конкретных файлов -powershell.exe -NoProfile -File .claude/skills/db-load-xml/scripts/db-load-xml.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Partial -Files "Catalogs/Номенклатура.xml,Catalogs/Номенклатура/Ext/ObjectModule.bsl" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-xml.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Partial -Files "Catalogs/Номенклатура.xml,Catalogs/Номенклатура/Ext/ObjectModule.bsl" # Загрузка расширения -powershell.exe -NoProfile -File .claude/skills/db-load-xml/scripts/db-load-xml.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\ext_src" -Mode Full -Extension "МоёРасширение" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-xml.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\ext_src" -Mode Full -Extension "МоёРасширение" # Загрузка + обновление БД в одном запуске -powershell.exe -NoProfile -File .claude/skills/db-load-xml/scripts/db-load-xml.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Full -UpdateDB +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-xml.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -ConfigDir "C:\WS\cfsrc" -Mode Full -UpdateDB ``` diff --git a/.claude/skills/db-run/SKILL.md b/.claude/skills/db-run/SKILL.md index 262676ed..c62ce4be 100644 --- a/.claude/skills/db-run/SKILL.md +++ b/.claude/skills/db-run/SKILL.md @@ -36,7 +36,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-run/scripts/db-run.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-run.ps1" <параметры> ``` ### Параметры скрипта @@ -63,14 +63,14 @@ powershell.exe -NoProfile -File .claude/skills/db-run/scripts/db-run.ps1 <пар ```powershell # Простой запуск -powershell.exe -NoProfile -File .claude/skills/db-run/scripts/db-run.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-run.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" # Запуск с обработкой -powershell.exe -NoProfile -File .claude/skills/db-run/scripts/db-run.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Execute "C:\epf\МояОбработка.epf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-run.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Execute "C:\epf\МояОбработка.epf" # Открыть по навигационной ссылке -powershell.exe -NoProfile -File .claude/skills/db-run/scripts/db-run.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -URL "e1cib/data/Справочник.Номенклатура" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-run.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -URL "e1cib/data/Справочник.Номенклатура" # Серверная база с параметром запуска -powershell.exe -NoProfile -File .claude/skills/db-run/scripts/db-run.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -CParam "ЗапуститьОбновление" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-run.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -CParam "ЗапуститьОбновление" ``` diff --git a/.claude/skills/db-update/SKILL.md b/.claude/skills/db-update/SKILL.md index 7d2ff2ee..13fa5c56 100644 --- a/.claude/skills/db-update/SKILL.md +++ b/.claude/skills/db-update/SKILL.md @@ -35,7 +35,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/db-update/scripts/db-update.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" <параметры> ``` ### Параметры скрипта @@ -83,11 +83,11 @@ powershell.exe -NoProfile -File .claude/skills/db-update/scripts/db-update.ps1 < ```powershell # Обычное обновление (файловая база) -powershell.exe -NoProfile -File .claude/skills/db-update/scripts/db-update.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" # Динамическое обновление (серверная база) -powershell.exe -NoProfile -File .claude/skills/db-update/scripts/db-update.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -Dynamic "+" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -Dynamic "+" # Обновление расширения -powershell.exe -NoProfile -File .claude/skills/db-update/scripts/db-update.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Extension "МоёРасширение" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Extension "МоёРасширение" ``` diff --git a/.claude/skills/epf-build/SKILL.md b/.claude/skills/epf-build/SKILL.md index d346fd40..a7f13331 100644 --- a/.claude/skills/epf-build/SKILL.md +++ b/.claude/skills/epf-build/SKILL.md @@ -40,7 +40,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-build.ps1" <параметры> ``` ### Параметры скрипта @@ -62,8 +62,8 @@ powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 < ```powershell # Сборка обработки (файловая база) -powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 -InfoBasePath "C:\Bases\MyDB" -SourceFile "src/МояОбработка.xml" -OutputFile "build/МояОбработка.epf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-build.ps1" -InfoBasePath "C:\Bases\MyDB" -SourceFile "src/МояОбработка.xml" -OutputFile "build/МояОбработка.epf" # Серверная база -powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -SourceFile "src/МояОбработка.xml" -OutputFile "build/МояОбработка.epf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-build.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -SourceFile "src/МояОбработка.xml" -OutputFile "build/МояОбработка.epf" ``` diff --git a/.claude/skills/epf-dump/SKILL.md b/.claude/skills/epf-dump/SKILL.md index 54a784ae..a76106e7 100644 --- a/.claude/skills/epf-dump/SKILL.md +++ b/.claude/skills/epf-dump/SKILL.md @@ -39,7 +39,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-dump.ps1" <параметры> ``` ### Параметры скрипта @@ -62,8 +62,8 @@ powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 <п ```powershell # Разборка обработки (файловая база) -powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 -InfoBasePath "C:\Bases\MyDB" -InputFile "build/МояОбработка.epf" -OutputDir "src" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-dump.ps1" -InfoBasePath "C:\Bases\MyDB" -InputFile "build/МояОбработка.epf" -OutputDir "src" # Серверная база -powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -InputFile "build/МояОбработка.epf" -OutputDir "src" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-dump.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -InputFile "build/МояОбработка.epf" -OutputDir "src" ``` diff --git a/.claude/skills/epf-init/SKILL.md b/.claude/skills/epf-init/SKILL.md index af94f31a..b1f54521 100644 --- a/.claude/skills/epf-init/SKILL.md +++ b/.claude/skills/epf-init/SKILL.md @@ -30,7 +30,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-init/scripts/init.ps1 -Name "" [-Synonym ""] [-SrcDir ""] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/init.ps1" -Name "" [-Synonym ""] [-SrcDir ""] ``` ## Дальнейшие шаги diff --git a/.claude/skills/epf-validate/SKILL.md b/.claude/skills/epf-validate/SKILL.md index 48c5d518..f51623ba 100644 --- a/.claude/skills/epf-validate/SKILL.md +++ b/.claude/skills/epf-validate/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate.ps1 -ObjectPath "src/МояОбработка" -powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate.ps1 -ObjectPath "src/МояОбработка/МояОбработка.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-validate.ps1" -ObjectPath "src/МояОбработка" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/epf-validate.ps1" -ObjectPath "src/МояОбработка/МояОбработка.xml" ``` diff --git a/.claude/skills/erf-build/SKILL.md b/.claude/skills/erf-build/SKILL.md index 81393b7f..c87e85ba 100644 --- a/.claude/skills/erf-build/SKILL.md +++ b/.claude/skills/erf-build/SKILL.md @@ -42,7 +42,7 @@ allowed-tools: Используй общий скрипт из epf-build: ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-build/scripts/epf-build.ps1" <параметры> ``` ### Параметры скрипта @@ -64,8 +64,8 @@ powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 < ```powershell # Сборка отчёта (файловая база) -powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 -InfoBasePath "C:\Bases\MyDB" -SourceFile "src/МойОтчёт.xml" -OutputFile "build/МойОтчёт.erf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-build/scripts/epf-build.ps1" -InfoBasePath "C:\Bases\MyDB" -SourceFile "src/МойОтчёт.xml" -OutputFile "build/МойОтчёт.erf" # Серверная база -powershell.exe -NoProfile -File .claude/skills/epf-build/scripts/epf-build.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -SourceFile "src/МойОтчёт.xml" -OutputFile "build/МойОтчёт.erf" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-build/scripts/epf-build.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -SourceFile "src/МойОтчёт.xml" -OutputFile "build/МойОтчёт.erf" ``` diff --git a/.claude/skills/erf-dump/SKILL.md b/.claude/skills/erf-dump/SKILL.md index e993c49f..3a05af7c 100644 --- a/.claude/skills/erf-dump/SKILL.md +++ b/.claude/skills/erf-dump/SKILL.md @@ -41,7 +41,7 @@ allowed-tools: Используй общий скрипт из epf-dump: ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-dump/scripts/epf-dump.ps1" <параметры> ``` ### Параметры скрипта @@ -64,8 +64,8 @@ powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 <п ```powershell # Разборка отчёта (файловая база) -powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 -InfoBasePath "C:\Bases\MyDB" -InputFile "build/МойОтчёт.erf" -OutputDir "src" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-dump/scripts/epf-dump.ps1" -InfoBasePath "C:\Bases\MyDB" -InputFile "build/МойОтчёт.erf" -OutputDir "src" # Серверная база -powershell.exe -NoProfile -File .claude/skills/epf-dump/scripts/epf-dump.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -InputFile "build/МойОтчёт.erf" -OutputDir "src" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-dump/scripts/epf-dump.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -InputFile "build/МойОтчёт.erf" -OutputDir "src" ``` diff --git a/.claude/skills/erf-init/SKILL.md b/.claude/skills/erf-init/SKILL.md index 016f6407..c57afbb3 100644 --- a/.claude/skills/erf-init/SKILL.md +++ b/.claude/skills/erf-init/SKILL.md @@ -31,7 +31,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/erf-init/scripts/init.ps1 -Name "" [-Synonym ""] [-SrcDir ""] [-WithSKD] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/init.ps1" -Name "" [-Synonym ""] [-SrcDir ""] [-WithSKD] ``` ## Дальнейшие шаги diff --git a/.claude/skills/erf-validate/SKILL.md b/.claude/skills/erf-validate/SKILL.md index ba621002..ea98d71f 100644 --- a/.claude/skills/erf-validate/SKILL.md +++ b/.claude/skills/erf-validate/SKILL.md @@ -26,7 +26,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate.ps1 -ObjectPath "src/МойОтчёт" -powershell.exe -NoProfile -File .claude/skills/epf-validate/scripts/epf-validate.ps1 -ObjectPath "src/МойОтчёт/МойОтчёт.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-validate/scripts/epf-validate.ps1" -ObjectPath "src/МойОтчёт" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/../epf-validate/scripts/epf-validate.ps1" -ObjectPath "src/МойОтчёт/МойОтчёт.xml" ``` diff --git a/.claude/skills/form-add/SKILL.md b/.claude/skills/form-add/SKILL.md index 7b387e43..78521f92 100644 --- a/.claude/skills/form-add/SKILL.md +++ b/.claude/skills/form-add/SKILL.md @@ -32,7 +32,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/form-add/scripts/form-add.ps1 -ObjectPath "" -FormName "" [-Purpose ""] [-Synonym ""] [-SetDefault] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-add.ps1" -ObjectPath "" -FormName "" [-Purpose ""] [-Synonym ""] [-SetDefault] ``` ## Purpose — назначение формы diff --git a/.claude/skills/form-compile/SKILL.md b/.claude/skills/form-compile/SKILL.md index 564a56fb..991fc706 100644 --- a/.claude/skills/form-compile/SKILL.md +++ b/.claude/skills/form-compile/SKILL.md @@ -29,10 +29,10 @@ allowed-tools: ```powershell # Режим JSON DSL -powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile.ps1 -JsonPath "" -OutputPath "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-compile.ps1" -JsonPath "" -OutputPath "" # Режим from-object (объект и purpose выводятся из OutputPath; Document и Catalog) -powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile.ps1 -FromObject -OutputPath "<.../TypePlural/ObjectName/Forms/FormName/Ext/Form.xml>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-compile.ps1" -FromObject -OutputPath "<.../TypePlural/ObjectName/Forms/FormName/Ext/Form.xml>" ``` ## JSON DSL — справка diff --git a/.claude/skills/form-edit/SKILL.md b/.claude/skills/form-edit/SKILL.md index 4b3e0a2a..bccf3a7d 100644 --- a/.claude/skills/form-edit/SKILL.md +++ b/.claude/skills/form-edit/SKILL.md @@ -29,7 +29,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/form-edit/scripts/form-edit.ps1 -FormPath "<путь>" -JsonPath "<путь>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-edit.ps1" -FormPath "<путь>" -JsonPath "<путь>" ``` ## JSON формат diff --git a/.claude/skills/form-info/SKILL.md b/.claude/skills/form-info/SKILL.md index 19d3e66f..1c106c34 100644 --- a/.claude/skills/form-info/SKILL.md +++ b/.claude/skills/form-info/SKILL.md @@ -15,7 +15,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/form-info/scripts/form-info.ps1 -FormPath "<путь к Form.xml>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-info.ps1" -FormPath "<путь к Form.xml>" ``` ## Параметры diff --git a/.claude/skills/form-remove/SKILL.md b/.claude/skills/form-remove/SKILL.md index af7fad70..926089f9 100644 --- a/.claude/skills/form-remove/SKILL.md +++ b/.claude/skills/form-remove/SKILL.md @@ -31,7 +31,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/form-remove/scripts/remove-form.ps1 -ObjectName "" -FormName "" [-SrcDir ""] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/remove-form.ps1" -ObjectName "" -FormName "" [-SrcDir ""] ``` ## Что удаляется diff --git a/.claude/skills/form-validate/SKILL.md b/.claude/skills/form-validate/SKILL.md index fc305b12..32a9b716 100644 --- a/.claude/skills/form-validate/SKILL.md +++ b/.claude/skills/form-validate/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/form-validate/scripts/form-validate.ps1 -FormPath "Catalogs/Номенклатура/Forms/ФормаЭлемента" -powershell.exe -NoProfile -File .claude/skills/form-validate/scripts/form-validate.ps1 -FormPath "src/МояОбработка/Forms/Форма/Ext/Form.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-validate.ps1" -FormPath "Catalogs/Номенклатура/Forms/ФормаЭлемента" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-validate.ps1" -FormPath "src/МояОбработка/Forms/Форма/Ext/Form.xml" ``` diff --git a/.claude/skills/help-add/SKILL.md b/.claude/skills/help-add/SKILL.md index 136c3ddc..46b59630 100644 --- a/.claude/skills/help-add/SKILL.md +++ b/.claude/skills/help-add/SKILL.md @@ -30,7 +30,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/help-add/scripts/add-help.ps1 -ObjectName "" [-Lang ""] [-SrcDir ""] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/add-help.ps1" -ObjectName "" [-Lang ""] [-SrcDir ""] ``` ## Что делает скрипт diff --git a/.claude/skills/img-grid/SKILL.md b/.claude/skills/img-grid/SKILL.md index 707decd1..4f3cc2db 100644 --- a/.claude/skills/img-grid/SKILL.md +++ b/.claude/skills/img-grid/SKILL.md @@ -29,7 +29,7 @@ allowed-tools: ## Команда ```bash -python .claude/skills/img-grid/scripts/overlay-grid.py "" [-c 50] [-o ""] +python "${CLAUDE_SKILL_DIR}/scripts/overlay-grid.py" "" [-c 50] [-o ""] ``` Требуется Python 3 с библиотекой Pillow (`pip install Pillow`). diff --git a/.claude/skills/interface-edit/SKILL.md b/.claude/skills/interface-edit/SKILL.md index a5dcd93b..f395fea3 100644 --- a/.claude/skills/interface-edit/SKILL.md +++ b/.claude/skills/interface-edit/SKILL.md @@ -29,13 +29,13 @@ allowed-tools: ### Inline mode ```powershell -powershell.exe -NoProfile -File '.claude/skills/interface-edit/scripts/interface-edit.ps1' -CIPath '' -Operation hide -Value '' +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/interface-edit.ps1" -CIPath '' -Operation hide -Value '' ``` ### JSON mode ```powershell -powershell.exe -NoProfile -File '.claude/skills/interface-edit/scripts/interface-edit.ps1' -CIPath '' -DefinitionFile '' +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/interface-edit.ps1" -CIPath '' -DefinitionFile '' ``` ## Операции diff --git a/.claude/skills/interface-validate/SKILL.md b/.claude/skills/interface-validate/SKILL.md index 422b972c..e8db63f0 100644 --- a/.claude/skills/interface-validate/SKILL.md +++ b/.claude/skills/interface-validate/SKILL.md @@ -24,6 +24,6 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File ".claude/skills/interface-validate/scripts/interface-validate.ps1" -CIPath "Subsystems/Продажи" -powershell.exe -NoProfile -File ".claude/skills/interface-validate/scripts/interface-validate.ps1" -CIPath "Subsystems/Продажи/Ext/CommandInterface.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/interface-validate.ps1" -CIPath "Subsystems/Продажи" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/interface-validate.ps1" -CIPath "Subsystems/Продажи/Ext/CommandInterface.xml" ``` diff --git a/.claude/skills/meta-compile/SKILL.md b/.claude/skills/meta-compile/SKILL.md index 342946a3..573c549f 100644 --- a/.claude/skills/meta-compile/SKILL.md +++ b/.claude/skills/meta-compile/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/meta-compile/scripts/meta-compile.ps1 -JsonPath "" -OutputDir "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-compile.ps1" -JsonPath "" -OutputDir "" ``` | Параметр | Описание | diff --git a/.claude/skills/meta-edit/SKILL.md b/.claude/skills/meta-edit/SKILL.md index db42a069..64e76df7 100644 --- a/.claude/skills/meta-edit/SKILL.md +++ b/.claude/skills/meta-edit/SKILL.md @@ -18,13 +18,13 @@ allowed-tools: ### Inline mode (простые операции) ```powershell -powershell.exe -NoProfile -File .claude/skills/meta-edit/scripts/meta-edit.ps1 -ObjectPath "" -Operation -Value "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-edit.ps1" -ObjectPath "" -Operation -Value "" ``` ### JSON mode (сложные/комбинированные) ```powershell -powershell.exe -NoProfile -File .claude/skills/meta-edit/scripts/meta-edit.ps1 -DefinitionFile "" -ObjectPath "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-edit.ps1" -DefinitionFile "" -ObjectPath "" ``` | Параметр | Описание | diff --git a/.claude/skills/meta-info/SKILL.md b/.claude/skills/meta-info/SKILL.md index 6ac2aa1b..a59fdb99 100644 --- a/.claude/skills/meta-info/SKILL.md +++ b/.claude/skills/meta-info/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: | `OutFile` | Записать результат в файл (UTF-8 BOM) | ```powershell -powershell.exe -NoProfile -File .claude/skills/meta-info/scripts/meta-info.ps1 -ObjectPath "<путь>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-info.ps1" -ObjectPath "<путь>" ``` ## Три режима diff --git a/.claude/skills/meta-remove/SKILL.md b/.claude/skills/meta-remove/SKILL.md index 4551fda4..8587c4bc 100644 --- a/.claude/skills/meta-remove/SKILL.md +++ b/.claude/skills/meta-remove/SKILL.md @@ -32,7 +32,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/meta-remove/scripts/meta-remove.ps1 -ConfigDir "<путь>" -Object "Catalog.Товары" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-remove.ps1" -ConfigDir "<путь>" -Object "Catalog.Товары" ``` ## Поддерживаемые типы diff --git a/.claude/skills/meta-validate/SKILL.md b/.claude/skills/meta-validate/SKILL.md index 3e17bef0..dc682c1d 100644 --- a/.claude/skills/meta-validate/SKILL.md +++ b/.claude/skills/meta-validate/SKILL.md @@ -24,6 +24,6 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/meta-validate/scripts/meta-validate.ps1 -ObjectPath "Catalogs/Номенклатура/Номенклатура.xml" -powershell.exe -NoProfile -File .claude/skills/meta-validate/scripts/meta-validate.ps1 -ObjectPath "Catalogs/Банки|Documents/Заказ" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-validate.ps1" -ObjectPath "Catalogs/Номенклатура/Номенклатура.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-validate.ps1" -ObjectPath "Catalogs/Банки|Documents/Заказ" ``` diff --git a/.claude/skills/mxl-compile/SKILL.md b/.claude/skills/mxl-compile/SKILL.md index b292f168..66c6101a 100644 --- a/.claude/skills/mxl-compile/SKILL.md +++ b/.claude/skills/mxl-compile/SKILL.md @@ -29,7 +29,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/mxl-compile/scripts/mxl-compile.ps1 -JsonPath "<путь>.json" -OutputPath "<путь>/Template.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -JsonPath "<путь>.json" -OutputPath "<путь>/Template.xml" ``` ## Рабочий процесс diff --git a/.claude/skills/mxl-decompile/SKILL.md b/.claude/skills/mxl-decompile/SKILL.md index 41e82deb..75c088f0 100644 --- a/.claude/skills/mxl-decompile/SKILL.md +++ b/.claude/skills/mxl-decompile/SKILL.md @@ -29,7 +29,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/mxl-decompile/scripts/mxl-decompile.ps1 -TemplatePath "<путь>/Template.xml" [-OutputPath "<путь>.json"] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-decompile.ps1" -TemplatePath "<путь>/Template.xml" [-OutputPath "<путь>.json"] ``` ## Рабочий процесс diff --git a/.claude/skills/mxl-info/SKILL.md b/.claude/skills/mxl-info/SKILL.md index 90a0193c..4a1969b5 100644 --- a/.claude/skills/mxl-info/SKILL.md +++ b/.claude/skills/mxl-info/SKILL.md @@ -38,12 +38,12 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -TemplatePath "<путь>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-info.ps1" -TemplatePath "<путь>" ``` Или по имени обработки/макета: ```powershell -powershell.exe -NoProfile -File .claude/skills/mxl-info/scripts/mxl-info.ps1 -ProcessorName "<Имя>" -TemplateName "<Макет>" [-SrcDir "<каталог>"] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-info.ps1" -ProcessorName "<Имя>" -TemplateName "<Макет>" [-SrcDir "<каталог>"] ``` Дополнительные флаги: diff --git a/.claude/skills/mxl-validate/SKILL.md b/.claude/skills/mxl-validate/SKILL.md index 994b654a..94cf949d 100644 --- a/.claude/skills/mxl-validate/SKILL.md +++ b/.claude/skills/mxl-validate/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/mxl-validate/scripts/mxl-validate.ps1 -TemplatePath "Catalogs/Номенклатура/Templates/Макет" -powershell.exe -NoProfile -File .claude/skills/mxl-validate/scripts/mxl-validate.ps1 -TemplatePath "src/МояОбработка/Templates/ПечатнаяФорма" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-validate.ps1" -TemplatePath "Catalogs/Номенклатура/Templates/Макет" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-validate.ps1" -TemplatePath "src/МояОбработка/Templates/ПечатнаяФорма" ``` diff --git a/.claude/skills/role-compile/SKILL.md b/.claude/skills/role-compile/SKILL.md index f621024d..038efcdc 100644 --- a/.claude/skills/role-compile/SKILL.md +++ b/.claude/skills/role-compile/SKILL.md @@ -21,7 +21,7 @@ allowed-tools: | `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Roles/` и т.д.) | ```powershell -powershell.exe -NoProfile -File .claude/skills/role-compile/scripts/role-compile.ps1 -JsonPath "" -OutputDir "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-compile.ps1" -JsonPath "" -OutputDir "" ``` Создаёт `{OutputDir}/Roles/Имя.xml` и `{OutputDir}/Roles/Имя/Ext/Rights.xml`. Регистрирует `` в `Configuration.xml`. diff --git a/.claude/skills/role-info/SKILL.md b/.claude/skills/role-info/SKILL.md index 669905ed..69de2ddb 100644 --- a/.claude/skills/role-info/SKILL.md +++ b/.claude/skills/role-info/SKILL.md @@ -22,7 +22,7 @@ allowed-tools: ## Запуск скрипта ```powershell -powershell.exe -NoProfile -File .claude/skills/role-info/scripts/role-info.ps1 -RightsPath -OutFile +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-info.ps1" -RightsPath -OutFile ``` ### Параметры diff --git a/.claude/skills/role-validate/SKILL.md b/.claude/skills/role-validate/SKILL.md index 40e12768..d67ed7f1 100644 --- a/.claude/skills/role-validate/SKILL.md +++ b/.claude/skills/role-validate/SKILL.md @@ -23,5 +23,5 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/role-validate/scripts/role-validate.ps1 -RightsPath "Roles/МояРоль" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-validate.ps1" -RightsPath "Roles/МояРоль" ``` diff --git a/.claude/skills/skd-compile/SKILL.md b/.claude/skills/skd-compile/SKILL.md index 8d932d59..1886d419 100644 --- a/.claude/skills/skd-compile/SKILL.md +++ b/.claude/skills/skd-compile/SKILL.md @@ -23,10 +23,10 @@ allowed-tools: ```powershell # Из файла -powershell.exe -NoProfile -File .claude/skills/skd-compile/scripts/skd-compile.ps1 -DefinitionFile "" -OutputPath "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-compile.ps1" -DefinitionFile "" -OutputPath "" # Из строки (без промежуточного файла) -powershell.exe -NoProfile -File .claude/skills/skd-compile/scripts/skd-compile.ps1 -Value '' -OutputPath "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-compile.ps1" -Value '' -OutputPath "" ``` ## JSON DSL — краткий справочник diff --git a/.claude/skills/skd-edit/SKILL.md b/.claude/skills/skd-edit/SKILL.md index 1c212ea1..88dad8e0 100644 --- a/.claude/skills/skd-edit/SKILL.md +++ b/.claude/skills/skd-edit/SKILL.md @@ -25,7 +25,7 @@ allowed-tools: | `NoSelection` | (опц.) Не добавлять поле в selection варианта | ```powershell -powershell.exe -NoProfile -File .claude/skills/skd-edit/scripts/skd-edit.ps1 -TemplatePath "" -Operation -Value "" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-edit.ps1" -TemplatePath "" -Operation -Value "" ``` ## Пакетный режим (batch) diff --git a/.claude/skills/skd-info/SKILL.md b/.claude/skills/skd-info/SKILL.md index 78a17848..a594bbc1 100644 --- a/.claude/skills/skd-info/SKILL.md +++ b/.claude/skills/skd-info/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: | `OutFile` | Записать результат в файл (UTF-8 BOM) | ```powershell -powershell.exe -NoProfile -File .claude/skills/skd-info/scripts/skd-info.ps1 -TemplatePath "<путь>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-info.ps1" -TemplatePath "<путь>" ``` С указанием режима: diff --git a/.claude/skills/skd-validate/SKILL.md b/.claude/skills/skd-validate/SKILL.md index 035e70cf..7bfea969 100644 --- a/.claude/skills/skd-validate/SKILL.md +++ b/.claude/skills/skd-validate/SKILL.md @@ -24,6 +24,6 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/skd-validate/scripts/skd-validate.ps1 -TemplatePath "src/МойОтчёт/Templates/ОсновнаяСхема" -powershell.exe -NoProfile -File .claude/skills/skd-validate/scripts/skd-validate.ps1 -TemplatePath "Catalogs/Номенклатура/Templates/СКД/Ext/Template.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-validate.ps1" -TemplatePath "src/МойОтчёт/Templates/ОсновнаяСхема" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-validate.ps1" -TemplatePath "Catalogs/Номенклатура/Templates/СКД/Ext/Template.xml" ``` diff --git a/.claude/skills/subsystem-compile/SKILL.md b/.claude/skills/subsystem-compile/SKILL.md index 0e0942e7..ab840aa9 100644 --- a/.claude/skills/subsystem-compile/SKILL.md +++ b/.claude/skills/subsystem-compile/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: | `NoValidate` | Пропустить авто-валидацию | ```powershell -powershell.exe -NoProfile -File '.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1' -Value '' -OutputDir '' +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/subsystem-compile.ps1" -Value '' -OutputDir '' ``` ## JSON-определение diff --git a/.claude/skills/subsystem-edit/SKILL.md b/.claude/skills/subsystem-edit/SKILL.md index 6e8e5a83..72d45ae1 100644 --- a/.claude/skills/subsystem-edit/SKILL.md +++ b/.claude/skills/subsystem-edit/SKILL.md @@ -24,7 +24,7 @@ allowed-tools: | `NoValidate` | Пропустить авто-валидацию | ```powershell -powershell.exe -NoProfile -File '.claude/skills/subsystem-edit/scripts/subsystem-edit.ps1' -SubsystemPath '' -Operation add-content -Value 'Catalog.Товары' +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/subsystem-edit.ps1" -SubsystemPath '' -Operation add-content -Value 'Catalog.Товары' ``` ## Операции diff --git a/.claude/skills/subsystem-info/SKILL.md b/.claude/skills/subsystem-info/SKILL.md index 4f231376..8b4198e1 100644 --- a/.claude/skills/subsystem-info/SKILL.md +++ b/.claude/skills/subsystem-info/SKILL.md @@ -23,7 +23,7 @@ allowed-tools: | `OutFile` | Записать результат в файл (UTF-8 BOM) | ```powershell -powershell.exe -NoProfile -File .claude/skills/subsystem-info/scripts/subsystem-info.ps1 -SubsystemPath "<путь>" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/subsystem-info.ps1" -SubsystemPath "<путь>" ``` ## Пять режимов diff --git a/.claude/skills/subsystem-validate/SKILL.md b/.claude/skills/subsystem-validate/SKILL.md index b75c4d7f..d47902d5 100644 --- a/.claude/skills/subsystem-validate/SKILL.md +++ b/.claude/skills/subsystem-validate/SKILL.md @@ -24,6 +24,6 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File ".claude/skills/subsystem-validate/scripts/subsystem-validate.ps1" -SubsystemPath "Subsystems/Продажи" -powershell.exe -NoProfile -File ".claude/skills/subsystem-validate/scripts/subsystem-validate.ps1" -SubsystemPath "Subsystems/Продажи.xml" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/subsystem-validate.ps1" -SubsystemPath "Subsystems/Продажи" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/subsystem-validate.ps1" -SubsystemPath "Subsystems/Продажи.xml" ``` diff --git a/.claude/skills/template-add/SKILL.md b/.claude/skills/template-add/SKILL.md index 27cc622e..724506cd 100644 --- a/.claude/skills/template-add/SKILL.md +++ b/.claude/skills/template-add/SKILL.md @@ -33,7 +33,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/template-add/scripts/add-template.ps1 -ObjectName "" -TemplateName "" -TemplateType "" [-Synonym ""] [-SrcDir ""] [-SetMainSKD] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/add-template.ps1" -ObjectName "" -TemplateName "" -TemplateType "" [-Synonym ""] [-SrcDir ""] [-SetMainSKD] ``` ## Пример @@ -41,7 +41,7 @@ powershell.exe -NoProfile -File .claude/skills/template-add/scripts/add-template Добавить основную СКД к отчёту в расширении: ```powershell -powershell.exe -NoProfile -File .claude/skills/template-add/scripts/add-template.ps1 -ObjectName "ОтчётПродажи" -TemplateName "ОсновнаяСхемаКомпоновкиДанных" -TemplateType "DataCompositionSchema" -SrcDir "src/cfe/МоёРасширение/Reports" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/add-template.ps1" -ObjectName "ОтчётПродажи" -TemplateName "ОсновнаяСхемаКомпоновкиДанных" -TemplateType "DataCompositionSchema" -SrcDir "src/cfe/МоёРасширение/Reports" ``` ## Маппинг типов diff --git a/.claude/skills/template-remove/SKILL.md b/.claude/skills/template-remove/SKILL.md index d1713cb8..2ce5474f 100644 --- a/.claude/skills/template-remove/SKILL.md +++ b/.claude/skills/template-remove/SKILL.md @@ -31,7 +31,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/template-remove/scripts/remove-template.ps1 -ObjectName "" -TemplateName "" [-SrcDir ""] +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/remove-template.ps1" -ObjectName "" -TemplateName "" [-SrcDir ""] ``` ## Что удаляется diff --git a/.claude/skills/web-info/SKILL.md b/.claude/skills/web-info/SKILL.md index e8b13d98..c904f7c4 100644 --- a/.claude/skills/web-info/SKILL.md +++ b/.claude/skills/web-info/SKILL.md @@ -26,7 +26,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/web-info/scripts/web-info.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-info.ps1" <параметры> ``` ### Параметры скрипта @@ -55,8 +55,8 @@ Module: C:/Program Files/1cv8/8.3.24.1691/bin/wsap24.dll ```powershell # Статус по умолчанию -powershell.exe -NoProfile -File .claude/skills/web-info/scripts/web-info.ps1 +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-info.ps1" # Указать путь к Apache -powershell.exe -NoProfile -File .claude/skills/web-info/scripts/web-info.ps1 -ApachePath "C:\tools\apache24" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-info.ps1" -ApachePath "C:\tools\apache24" ``` diff --git a/.claude/skills/web-publish/SKILL.md b/.claude/skills/web-publish/SKILL.md index 7e9c2110..de458bce 100644 --- a/.claude/skills/web-publish/SKILL.md +++ b/.claude/skills/web-publish/SKILL.md @@ -41,7 +41,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/web-publish/scripts/web-publish.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-publish.ps1" <параметры> ``` ### Параметры скрипта @@ -88,14 +88,14 @@ powershell.exe -NoProfile -File .claude/skills/web-publish/scripts/web-publish.p ```powershell # Файловая база -powershell.exe -NoProfile -File .claude/skills/web-publish/scripts/web-publish.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-publish.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" # С явным именем публикации и портом -powershell.exe -NoProfile -File .claude/skills/web-publish/scripts/web-publish.ps1 -InfoBasePath "C:\Bases\MyDB" -AppName "mydb" -Port 9090 +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-publish.ps1" -InfoBasePath "C:\Bases\MyDB" -AppName "mydb" -Port 9090 # Серверная база -powershell.exe -NoProfile -File .claude/skills/web-publish/scripts/web-publish.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-publish.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" # Ручной режим (только инструкция) -powershell.exe -NoProfile -File .claude/skills/web-publish/scripts/web-publish.ps1 -InfoBasePath "C:\Bases\MyDB" -Manual +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-publish.ps1" -InfoBasePath "C:\Bases\MyDB" -Manual ``` diff --git a/.claude/skills/web-stop/SKILL.md b/.claude/skills/web-stop/SKILL.md index 73d3ca6c..4142e02a 100644 --- a/.claude/skills/web-stop/SKILL.md +++ b/.claude/skills/web-stop/SKILL.md @@ -26,7 +26,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/web-stop/scripts/web-stop.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-stop.ps1" <параметры> ``` ### Параметры скрипта @@ -45,8 +45,8 @@ powershell.exe -NoProfile -File .claude/skills/web-stop/scripts/web-stop.ps1 <п ```powershell # Остановить Apache -powershell.exe -NoProfile -File .claude/skills/web-stop/scripts/web-stop.ps1 +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-stop.ps1" # С указанием пути -powershell.exe -NoProfile -File .claude/skills/web-stop/scripts/web-stop.ps1 -ApachePath "C:\tools\apache24" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-stop.ps1" -ApachePath "C:\tools\apache24" ``` diff --git a/.claude/skills/web-test/SKILL.md b/.claude/skills/web-test/SKILL.md index 2bd0cf36..4924db26 100644 --- a/.claude/skills/web-test/SKILL.md +++ b/.claude/skills/web-test/SKILL.md @@ -17,7 +17,7 @@ Automates user interactions with 1C:Enterprise web client via Playwright — nav ## Quick start ```bash -RUN=".claude/skills/web-test/scripts/run.mjs" +RUN="${CLAUDE_SKILL_DIR}/scripts/run.mjs" # One-shot: opens browser → runs script → closes browser → exits node $RUN run http://localhost:8081/bpdemo test-scenario.js @@ -35,7 +35,7 @@ SCRIPT ## Setup (first time) ```bash -cd .claude/skills/web-test/scripts && npm install +cd "${CLAUDE_SKILL_DIR}/scripts" && npm install ``` Requires Node.js 18+. `npm install` downloads Playwright and Chromium. diff --git a/.claude/skills/web-unpublish/SKILL.md b/.claude/skills/web-unpublish/SKILL.md index 89aebdbe..7beec106 100644 --- a/.claude/skills/web-unpublish/SKILL.md +++ b/.claude/skills/web-unpublish/SKILL.md @@ -35,7 +35,7 @@ allowed-tools: ## Команда ```powershell -powershell.exe -NoProfile -File .claude/skills/web-unpublish/scripts/web-unpublish.ps1 <параметры> +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-unpublish.ps1" <параметры> ``` ### Параметры скрипта @@ -52,11 +52,11 @@ powershell.exe -NoProfile -File .claude/skills/web-unpublish/scripts/web-unpubli ```powershell # Удалить одну публикацию -powershell.exe -NoProfile -File .claude/skills/web-unpublish/scripts/web-unpublish.ps1 -AppName "bpdemo" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-unpublish.ps1" -AppName "bpdemo" # Удалить все публикации -powershell.exe -NoProfile -File .claude/skills/web-unpublish/scripts/web-unpublish.ps1 -All +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-unpublish.ps1" -All # С указанием пути -powershell.exe -NoProfile -File .claude/skills/web-unpublish/scripts/web-unpublish.ps1 -AppName "mydb" -ApachePath "C:\tools\apache24" +powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-unpublish.ps1" -AppName "mydb" -ApachePath "C:\tools\apache24" ``` From 501bb58ddb65feb0ef5048d2ad70b24656ba1557 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 15:30:32 +0300 Subject: [PATCH 02/18] feat(plugin): plugin and marketplace manifests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json` so the repo can be installed via: /plugin marketplace add https://github.com/Nikolay-Shirokov/cc-1c-skills /plugin install 1c-skills@cc-1c-skills Plugin name `1c-skills`, marketplace name `cc-1c-skills` (matches repo name). Version is omitted in `plugin.json` so Claude Code uses the git commit SHA — convenient for active development without manual bumps. Closes part of #18. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude-plugin/marketplace.json | 15 +++++++++++++++ .claude-plugin/plugin.json | 31 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .claude-plugin/marketplace.json create mode 100644 .claude-plugin/plugin.json diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 00000000..297c102b --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-marketplace-manifest.json", + "name": "cc-1c-skills", + "description": "Маркетплейс навыков для разработки на платформе 1С:Предприятие", + "owner": { + "name": "Nikolay Shirokov" + }, + "plugins": [ + { + "name": "1c-skills", + "source": "./", + "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций." + } + ] +} diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 00000000..af30c675 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", + "name": "1c-skills", + "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "author": { + "name": "Nikolay Shirokov" + }, + "homepage": "https://github.com/Nikolay-Shirokov/cc-1c-skills", + "repository": "https://github.com/Nikolay-Shirokov/cc-1c-skills", + "license": "MIT", + "keywords": [ + "1c", + "1c-dev", + "cf", + "cfe", + "epf", + "erf", + "metadata", + "configuration", + "extension", + "form", + "report", + "skd", + "data-processor", + "mxl", + "web-client", + "testing", + "test-automation" + ], + "skills": "./.claude/skills/" +} From 7736ad68a01672d80ee5e3d4d90923369691335c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 15:30:37 +0300 Subject: [PATCH 03/18] feat(switch): handle ${CLAUDE_SKILL_DIR} for non-Claude targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After SKILL.md refactor, paths use ${CLAUDE_SKILL_DIR} which Claude Code substitutes natively. Other agents (Cursor, Codex, Copilot, etc.) don't know about this variable, so switch.py now expands it to a literal path when the target is not claude-code: ${CLAUDE_SKILL_DIR}/ -> // ${CLAUDE_SKILL_DIR}/..// -> // For claude-code target the variable is left intact — drop-in install via copy still works because Claude Code resolves it identically in project, personal, and plugin scopes. Verified by running: python scripts/switch.py codex --project-dir python scripts/switch.py claude-code --project-dir Both produce correct output with 0 leftover variable literals in non-Claude targets and full preservation in Claude target. Co-Authored-By: Claude Opus 4.7 (1M context) --- scripts/switch.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/scripts/switch.py b/scripts/switch.py index 4c74b497..f559fa17 100644 --- a/scripts/switch.py +++ b/scripts/switch.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# switch.py v1.3 — Переключение навыков 1С между AI-платформами и рантаймами +# switch.py v1.4 — Переключение навыков 1С между AI-платформами и рантаймами # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """ Копирует (или создаёт ссылки на) навыки из .claude/skills/ на другие AI-платформы @@ -43,6 +43,11 @@ PLATFORMS = { SOURCE_PREFIX = '.claude/skills' +# ${CLAUDE_SKILL_DIR}/..// — cross-skill reference (more specific, match first) +RX_SKILL_DIR_CROSS = re.compile(r'\$\{CLAUDE_SKILL_DIR\}/\.\./([a-z][a-z0-9-]+)/') +# ${CLAUDE_SKILL_DIR}/ — same-skill reference +SKILL_DIR_VAR = '${CLAUDE_SKILL_DIR}/' + # Рекомендуемые записи для .gitignore целевого проекта GITIGNORE_RECOMMENDATIONS = [ '.v8-project.json', @@ -179,9 +184,22 @@ def is_different_dir(dir1, dir2): # --------------------------------------------------------------------------- # Transformations # --------------------------------------------------------------------------- -def rewrite_paths(content, source_prefix, target_prefix): - """Replace .claude/skills/ path prefix with target platform prefix.""" - return content.replace(source_prefix + '/', target_prefix + '/') +def rewrite_paths(content, platform, target_prefix, skill_name): + """Resolve ${CLAUDE_SKILL_DIR} placeholders to target platform prefix. + + For claude-code target, leave ${CLAUDE_SKILL_DIR} untouched — Claude Code + substitutes it natively at invocation time. For all other targets, + expand to a literal path: + ${CLAUDE_SKILL_DIR}/// + ${CLAUDE_SKILL_DIR}/..//// + """ + if platform == 'claude-code': + return content + # Cross-skill first (more specific pattern) + content = RX_SKILL_DIR_CROSS.sub(f'{target_prefix}/\\1/', content) + # Then same-skill + content = content.replace(SKILL_DIR_VAR, f'{target_prefix}/{skill_name}/') + return content def switch_runtime_content(content, target_runtime): @@ -305,7 +323,7 @@ def cmd_install(platform, runtime, project_dir): with open(md_path, 'r', encoding='utf-8') as f: content = f.read() - new_content = rewrite_paths(content, SOURCE_PREFIX, target_prefix) + new_content = rewrite_paths(content, platform, target_prefix, skill_name) # Apply runtime switch (skip for single-runtime skills # where target runtime is not available) From b1a7e414d02719733176d58b739cda9f3f82c513 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 15:56:26 +0300 Subject: [PATCH 04/18] fix(switch): runtime conversion for ${CLAUDE_SKILL_DIR} paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After the SKILL.md refactor, paths are wrapped in double quotes and contain ${CLAUDE_SKILL_DIR}. The legacy RX_PS/RX_PY regexes captured the leading quote into the path group and didn't accept '$', '{', '}' characters, breaking three places: - classify_skill_runtime: misdetected runtime since RX_PY didn't match python invocations of variable paths - check_missing_files: built file paths like '"${CLAUDE_SKILL_DIR}/...py' that never existed → false-positive missing → runtime switch skipped - switch_runtime_content: failed to convert PS->Py / Py->PS for skills using the new path format Fix: - Regexes now capture optional surrounding quote separately and accept any non-whitespace non-quote chars in the path - New helper expand_skill_path() resolves ${CLAUDE_SKILL_DIR} to the actual on-disk path for file existence checks (handles cross-skill references via ..// too) - check_missing_files derives skill_name from skill_dir to drive the expansion Verified via: python scripts/switch.py claude-code --project-dir --runtime python python scripts/switch.py claude-code --project-dir --runtime powershell python scripts/switch.py codex --project-dir All produce correct output with quotes preserved and cross-skill references resolved. Co-Authored-By: Claude Opus 4.7 (1M context) --- scripts/switch.py | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/scripts/switch.py b/scripts/switch.py index f559fa17..5653af80 100644 --- a/scripts/switch.py +++ b/scripts/switch.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# switch.py v1.4 — Переключение навыков 1С между AI-платформами и рантаймами +# switch.py v1.5 — Переключение навыков 1С между AI-платформами и рантаймами # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """ Копирует (или создаёт ссылки на) навыки из .claude/skills/ на другие AI-платформы @@ -61,8 +61,10 @@ GITIGNORE_RECOMMENDATIONS = [ # --------------------------------------------------------------------------- # Runtime regex patterns (from switch-to-python.py / switch-to-powershell.py) # --------------------------------------------------------------------------- -RX_PS = re.compile(r'powershell\.exe\s+(?:-NoProfile\s+)?-File\s+(.+?)\.ps1') -RX_PY = re.compile(r"python\s+('?[\w./_-]+?)\.py") +# Capture optional surrounding quote (group 'q') and bare path (group 'path'). +# Path matches non-whitespace non-quote chars to support ${CLAUDE_SKILL_DIR}/... +RX_PS = re.compile(r'powershell\.exe\s+(?:-NoProfile\s+)?-File\s+(?P["\']?)(?P[^"\s]+?)\.ps1(?P=q)?') +RX_PY = re.compile(r"python\s+(?P[\"']?)(?P[^\"\s]+?)\.py(?P=q)?") # --------------------------------------------------------------------------- @@ -153,23 +155,40 @@ def classify_skill_runtime(skill_dir): return 'ps' if has_ps else ('py' if has_py else 'none') +def expand_skill_path(path, skill_name, source_prefix=SOURCE_PREFIX): + """Expand ${CLAUDE_SKILL_DIR} placeholder to a path relative to source_prefix. + + ${CLAUDE_SKILL_DIR}/ -> // + ${CLAUDE_SKILL_DIR}/..// -> // + Anything else returned as-is (legacy literal path). + """ + var = '${CLAUDE_SKILL_DIR}/' + if not path.startswith(var): + return path + rest = path[len(var):] + if rest.startswith('../'): + return f'{source_prefix}/{rest[3:]}' + return f'{source_prefix}/{skill_name}/{rest}' + + def check_missing_files(skill_dir, target_runtime, root): """Check if target runtime script files exist for a skill. Returns list of missing file paths (relative to root). """ missing = [] + skill_name = os.path.basename(os.path.normpath(skill_dir)) for md_path in collect_md_files(skill_dir): with open(md_path, 'r', encoding='utf-8') as f: content = f.read() if target_runtime == 'python': - for m in RX_PS.findall(content): - py_path = m.lstrip("'") + '.py' + for m in RX_PS.finditer(content): + py_path = expand_skill_path(m.group('path'), skill_name) + '.py' if not os.path.isfile(os.path.join(root, py_path)): missing.append(py_path) elif target_runtime == 'powershell': - for m in RX_PY.findall(content): - ps1_path = m.lstrip("'") + '.ps1' + for m in RX_PY.finditer(content): + ps1_path = expand_skill_path(m.group('path'), skill_name) + '.ps1' if not os.path.isfile(os.path.join(root, ps1_path)): missing.append(ps1_path) return missing @@ -205,9 +224,15 @@ def rewrite_paths(content, platform, target_prefix, skill_name): def switch_runtime_content(content, target_runtime): """Switch runtime invocations in .md content. Returns (new_content, switched).""" if target_runtime == 'python': - new = RX_PS.sub(r'python \1.py', content) + def to_py(m): + q = m.group('q') + return f"python {q}{m.group('path')}.py{q}" + new = RX_PS.sub(to_py, content) elif target_runtime == 'powershell': - new = RX_PY.sub(r'powershell.exe -NoProfile -File \1.ps1', content) + def to_ps(m): + q = m.group('q') + return f"powershell.exe -NoProfile -File {q}{m.group('path')}.ps1{q}" + new = RX_PY.sub(to_ps, content) else: return content, False return new, new != content From c9d83b1c9201f71ab7237d3d285673a5641bbe12 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 16:31:07 +0300 Subject: [PATCH 05/18] docs(readme): add plugin install instructions Document the recommended installation path via Claude Code plugin marketplace: /plugin marketplace add https://github.com/Nikolay-Shirokov/cc-1c-skills /plugin install 1c-skills@cc-1c-skills Plugin install becomes the recommended option; drop-in copy and switch.py-based installs remain documented as alternatives for users who prefer them or who target other AI platforms. Closes #18. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 0326f26e..bf56af68 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,13 @@ └── ... ``` +Или установите как плагин Claude Code: + +``` +/plugin marketplace add https://github.com/Nikolay-Shirokov/cc-1c-skills +/plugin install 1c-skills@cc-1c-skills +``` + Или используйте скрипт установки: ```bash From c8ac191a0133df4d890f5a9a7c4c0f3540c91dfa Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 18:29:52 +0300 Subject: [PATCH 06/18] feat(ci): port-branches workflow + README install matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .github/workflows/build-ports.yml — auto-build orphan port-* branches on push to main (matrix: claude-code-py, cursor PS+Py, codex PS+Py) - .github/templates/README.port.md.tmpl — minimal per-port README rendered in CI - README — new "Версии навыков для разных платформ" section under intro (3 flagships × PS+Py), extended platform table with PowerShell/Python branch links, switch.py moved to "альтернативный способ" subsection - README — "Work in progress" reworded to "Проект живой, активно развивается" Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/templates/README.port.md.tmpl | 27 ++++++++ .github/workflows/build-ports.yml | 96 +++++++++++++++++++++++++++ README.md | 60 +++++++++++------ 3 files changed, 161 insertions(+), 22 deletions(-) create mode 100644 .github/templates/README.port.md.tmpl create mode 100644 .github/workflows/build-ports.yml diff --git a/.github/templates/README.port.md.tmpl b/.github/templates/README.port.md.tmpl new file mode 100644 index 00000000..074ee974 --- /dev/null +++ b/.github/templates/README.port.md.tmpl @@ -0,0 +1,27 @@ +# 1C Skills for {{PLATFORM_LABEL}} ({{RUNTIME_LABEL}}) + +Автоматическая сборка из [main]({{MAIN_REPO_URL}}) — навыки 1С:Предприятие 8.3 для AI-агента **{{PLATFORM_LABEL}}** с рантаймом **{{RUNTIME_LABEL}}**. + +> Эта ветка генерируется CI на каждый push в main. **Не редактируйте напрямую** — все правки идут в [main]({{MAIN_REPO_URL}}). + +## Установка + +1. Скачайте ZIP этой ветки: **Code → Download ZIP** (или `git archive`). +2. Распакуйте в корень своего проекта — должна появиться папка `{{PLATFORM_DIR}}/`. +3. Запустите {{PLATFORM_LABEL}} из этого проекта — навыки станут доступны. + +## Требования + +- **Windows** с PowerShell 5.1+ (входит в Windows) — для PowerShell-сборки. +- **Python 3.10+** — для Python-сборки. Зависимости: `lxml>=4.9.0`, `psutil>=5.9.0` (для DOM- и web-навыков). +- **1С:Предприятие 8.3** — для сборки/разборки EPF/ERF и работы с базами. +- **Node.js 18+** — для `/web-test`. + +## Документация + +Полные гайды, спецификации и описание навыков — в [main]({{MAIN_REPO_URL}}). + +--- + +Source: {{MAIN_REPO_URL}} +Build commit: `{{COMMIT_SHA}}` diff --git a/.github/workflows/build-ports.yml b/.github/workflows/build-ports.yml new file mode 100644 index 00000000..171175f6 --- /dev/null +++ b/.github/workflows/build-ports.yml @@ -0,0 +1,96 @@ +name: Build port branches + +on: + push: + branches: [main] + paths: + - '.claude/skills/**' + - 'scripts/switch.py' + - '.github/templates/README.port.md.tmpl' + - '.github/workflows/build-ports.yml' + - 'LICENSE' + workflow_dispatch: + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - platform: claude-code + runtime: python + branch: port-claude-code-py + label: Claude Code + target_dir: .claude/skills + - platform: cursor + runtime: powershell + branch: port-cursor + label: Cursor + target_dir: .cursor/skills + - platform: cursor + runtime: python + branch: port-cursor-py + label: Cursor + target_dir: .cursor/skills + - platform: codex + runtime: powershell + branch: port-codex + label: Codex + target_dir: .codex/skills + - platform: codex + runtime: python + branch: port-codex-py + label: Codex + target_dir: .codex/skills + + steps: + - name: Checkout main + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Build skills tree for ${{ matrix.platform }} (${{ matrix.runtime }}) + run: | + python scripts/switch.py "${{ matrix.platform }}" \ + --project-dir build \ + --runtime "${{ matrix.runtime }}" + + - name: Render port README + env: + PLATFORM_LABEL: ${{ matrix.label }} + PLATFORM_DIR: ${{ matrix.target_dir }} + RUNTIME_LABEL: ${{ matrix.runtime == 'powershell' && 'PowerShell' || 'Python' }} + COMMIT_SHA: ${{ github.sha }} + MAIN_REPO_URL: https://github.com/${{ github.repository }} + run: | + sed \ + -e "s|{{PLATFORM_LABEL}}|${PLATFORM_LABEL}|g" \ + -e "s|{{PLATFORM_DIR}}|${PLATFORM_DIR}|g" \ + -e "s|{{RUNTIME_LABEL}}|${RUNTIME_LABEL}|g" \ + -e "s|{{COMMIT_SHA}}|${COMMIT_SHA}|g" \ + -e "s|{{MAIN_REPO_URL}}|${MAIN_REPO_URL}|g" \ + .github/templates/README.port.md.tmpl > build/README.md + + - name: Copy LICENSE + run: cp LICENSE build/LICENSE + + - name: Force-push orphan snapshot to ${{ matrix.branch }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + cd build + git init -q -b master + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add -A + git commit -q -m "Auto-build: ${{ matrix.platform }} (${{ matrix.runtime }}) from ${GITHUB_SHA::7}" + git push --force \ + "https://x-access-token:${GH_TOKEN}@github.com/${{ github.repository }}.git" \ + "master:${{ matrix.branch }}" diff --git a/README.md b/README.md index bf56af68..81610044 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,19 @@ # 1C Skills for Claude Code -> **Work in progress** — навыки находятся в стадии тестирования, отладки и оптимизации. +> **Проект живой, активно развивается** — добавляются новые возможности, отлавливаются и исправляются баги, производится оптимизация. Следите за обновлениями. Набор навыков для AI-агентов (в первую очередь для [Claude Code](https://docs.anthropic.com/en/docs/claude-code/skills)), помогающий охватить полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере (портативная версия Apache), тестирования через веб-клиент и записи видеоинструкций. Навыки дают модели готовые абстракции над XML-форматами и CLI конфигуратора — чтобы работать с сутью задачи, а не с деталями реализации. А веб-тестирование даёт ей глаза и руки для взаимодействия с интерфейсом 1С. +## Версии навыков для разных платформ + +> **PS** — версия со скриптами на PowerShell (стандартная, для Windows). **Py** — версия со скриптами на Python (если PowerShell не подходит). Можно начать с **PS** — это основной вариант. + +**Claude Code** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/main) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-claude-code-py) — **Cursor** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor-py) — **Codex** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex-py) + +[Все варианты и инструкции →](#поддерживаемые-платформы) + ## Быстрый старт Скопируйте каталог `.claude/skills/` из этого репозитория в корень вашего проекта. Навыки станут доступны при запуске Claude Code из этого каталога. @@ -68,9 +76,37 @@ python tools/cc-1c-skills/scripts/switch.py - **1С:Предприятие 8.3** — для сборки/разборки EPF/ERF (навыки генерации XML работают без платформы) - **Node.js 18+** — для `/web-test` (тестирование через браузер) + ### Другие AI-платформы -Навыки построены на открытом стандарте [Agent Skills](https://agentskills.io/specification) и совместимы с любой платформой, поддерживающей этот формат. Скрипт `switch.py` копирует навыки в нужный каталог с перезаписью путей: +Навыки построены на открытом стандарте [Agent Skills](https://agentskills.io/specification) и совместимы с любой платформой, поддерживающей этот формат. Самый быстрый путь — скачать готовую сборку под нужную платформу из ветки ниже (**Code → Download ZIP**) и распаковать в корень своего проекта. + +#### Поддерживаемые платформы + +| Платформа | Целевой каталог | PowerShell | Python | +|-----------|----------------|------------|--------| +| Claude Code | `.claude/skills/` | [main](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/main) | [port-claude-code-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-claude-code-py) | +| Cursor | `.cursor/skills/` | [port-cursor](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor) | [port-cursor-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor-py) | +| OpenAI Codex | `.codex/skills/` | [port-codex](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex) | [port-codex-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex-py) | +| Augment | `.augment/skills/` | _соберите локально_ | _соберите локально_ | +| Cline | `.cline/skills/` | _соберите локально_ | _соберите локально_ | +| GitHub Copilot | `.github/skills/` | _соберите локально_ | _соберите локально_ | +| Kilo Code | `.kilocode/skills/` | _соберите локально_ | _соберите локально_ | +| Kiro | `.kiro/skills/` | _соберите локально_ | _соберите локально_ | +| Gemini CLI | `.gemini/skills/` | _соберите локально_ | _соберите локально_ | +| OpenCode | `.opencode/skills/` | _соберите локально_ | _соберите локально_ | +| Roo Code | `.roo/skills/` | _соберите локально_ | _соберите локально_ | +| Windsurf | `.windsurf/skills/` | _соберите локально_ | _соберите локально_ | +| Agent Skills | `.agents/skills/` | _соберите локально_ | _соберите локально_ | + +Готовые ветки `port-*` пересобираются автоматически на каждое изменение в навыках. Платформы со статусом «соберите локально» — на стадии расширения матрицы; пока ставятся [через `switch.py`](#альтернативный-способ--собрать-локально-через-switchpy). + +Некоторые платформы (Augment, Cline, VS Code/Copilot) также сканируют `.claude/skills/` как fallback — для них достаточно `main`. + + +#### Альтернативный способ — собрать локально через `switch.py` + +Если нужна свежая сборка под свою платформу (или платформа ещё не в матрице port-веток): ```bash python scripts/switch.py # интерактивный режим @@ -87,26 +123,6 @@ python scripts/switch.py --undo cursor # удалить > ⚠ **Известные ограничения `--link`:** Node.js резолвит `__dirname` через junction к реальному пути источника, а не к каталогу проекта. Это может приводить к тому, что навыки с Node.js-скриптами (например, `/web-test`) будут записывать файлы в каталог репозитория навыков вместо каталога проекта. При возникновении проблем переключитесь на копирование (без `--link`). -Поддерживаемые платформы: - -| Платформа | Целевой каталог | `switch.py ` | -|-----------|----------------|------------------------| -| Claude Code | `.claude/skills/` | `claude-code` | -| Augment | `.augment/skills/` | `augment` | -| Cline | `.cline/skills/` | `cline` | -| Cursor | `.cursor/skills/` | `cursor` | -| GitHub Copilot | `.github/skills/` | `copilot` | -| Kilo Code | `.kilocode/skills/` | `kilo` | -| Kiro | `.kiro/skills/` | `kiro` | -| OpenAI Codex | `.codex/skills/` | `codex` | -| Gemini CLI | `.gemini/skills/` | `gemini` | -| OpenCode | `.opencode/skills/` | `opencode` | -| Roo Code | `.roo/skills/` | `roo` | -| Windsurf | `.windsurf/skills/` | `windsurf` | -| Agent Skills | `.agents/skills/` | `agents` | - -Некоторые платформы (Augment, Cline, VS Code/Copilot) также сканируют `.claude/skills/` как fallback — для них копирование необязательно, но `switch.py` даёт явный контроль над путями. - Автоактивация — основной режим: просто опишите задачу своими словами, ассистент сам подберёт нужный навык по `description` в SKILL.md. Слеш-команды (например `/epf-init`) — для точного контроля, когда нужно вызвать конкретный навык. ### Переключение рантайма (PowerShell ↔ Python) From 06ad2f8f9975588a129525c505e1093b11d2fb00 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 18:37:35 +0300 Subject: [PATCH 07/18] feat(ci): expand port matrix to all 13 platforms + bump deprecated actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add 20 matrix entries: copilot, augment, cline, kilo, kiro, gemini, opencode, roo, windsurf, agents (PS+Py each) - Total: 25 port-* branches (Claude Code PS = main, plus 13 × Py + 12 × PS) - Bump actions/checkout@v4 → @v5, actions/setup-python@v5 → @v6 (removes Node.js 20 deprecation warnings) - README: replace "соберите локально" placeholders with real branch links for all platforms Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build-ports.yml | 104 +++++++++++++++++++++++++++++- README.md | 22 +++---- 2 files changed, 113 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-ports.yml b/.github/workflows/build-ports.yml index 171175f6..213e1bb1 100644 --- a/.github/workflows/build-ports.yml +++ b/.github/workflows/build-ports.yml @@ -46,13 +46,113 @@ jobs: branch: port-codex-py label: Codex target_dir: .codex/skills + - platform: copilot + runtime: powershell + branch: port-copilot + label: GitHub Copilot + target_dir: .github/skills + - platform: copilot + runtime: python + branch: port-copilot-py + label: GitHub Copilot + target_dir: .github/skills + - platform: augment + runtime: powershell + branch: port-augment + label: Augment + target_dir: .augment/skills + - platform: augment + runtime: python + branch: port-augment-py + label: Augment + target_dir: .augment/skills + - platform: cline + runtime: powershell + branch: port-cline + label: Cline + target_dir: .cline/skills + - platform: cline + runtime: python + branch: port-cline-py + label: Cline + target_dir: .cline/skills + - platform: kilo + runtime: powershell + branch: port-kilo + label: Kilo Code + target_dir: .kilocode/skills + - platform: kilo + runtime: python + branch: port-kilo-py + label: Kilo Code + target_dir: .kilocode/skills + - platform: kiro + runtime: powershell + branch: port-kiro + label: Kiro + target_dir: .kiro/skills + - platform: kiro + runtime: python + branch: port-kiro-py + label: Kiro + target_dir: .kiro/skills + - platform: gemini + runtime: powershell + branch: port-gemini + label: Gemini CLI + target_dir: .gemini/skills + - platform: gemini + runtime: python + branch: port-gemini-py + label: Gemini CLI + target_dir: .gemini/skills + - platform: opencode + runtime: powershell + branch: port-opencode + label: OpenCode + target_dir: .opencode/skills + - platform: opencode + runtime: python + branch: port-opencode-py + label: OpenCode + target_dir: .opencode/skills + - platform: roo + runtime: powershell + branch: port-roo + label: Roo Code + target_dir: .roo/skills + - platform: roo + runtime: python + branch: port-roo-py + label: Roo Code + target_dir: .roo/skills + - platform: windsurf + runtime: powershell + branch: port-windsurf + label: Windsurf + target_dir: .windsurf/skills + - platform: windsurf + runtime: python + branch: port-windsurf-py + label: Windsurf + target_dir: .windsurf/skills + - platform: agents + runtime: powershell + branch: port-agents + label: Agent Skills + target_dir: .agents/skills + - platform: agents + runtime: python + branch: port-agents-py + label: Agent Skills + target_dir: .agents/skills steps: - name: Checkout main - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.11' diff --git a/README.md b/README.md index 81610044..9412fef8 100644 --- a/README.md +++ b/README.md @@ -88,18 +88,18 @@ python tools/cc-1c-skills/scripts/switch.py | Claude Code | `.claude/skills/` | [main](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/main) | [port-claude-code-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-claude-code-py) | | Cursor | `.cursor/skills/` | [port-cursor](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor) | [port-cursor-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor-py) | | OpenAI Codex | `.codex/skills/` | [port-codex](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex) | [port-codex-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex-py) | -| Augment | `.augment/skills/` | _соберите локально_ | _соберите локально_ | -| Cline | `.cline/skills/` | _соберите локально_ | _соберите локально_ | -| GitHub Copilot | `.github/skills/` | _соберите локально_ | _соберите локально_ | -| Kilo Code | `.kilocode/skills/` | _соберите локально_ | _соберите локально_ | -| Kiro | `.kiro/skills/` | _соберите локально_ | _соберите локально_ | -| Gemini CLI | `.gemini/skills/` | _соберите локально_ | _соберите локально_ | -| OpenCode | `.opencode/skills/` | _соберите локально_ | _соберите локально_ | -| Roo Code | `.roo/skills/` | _соберите локально_ | _соберите локально_ | -| Windsurf | `.windsurf/skills/` | _соберите локально_ | _соберите локально_ | -| Agent Skills | `.agents/skills/` | _соберите локально_ | _соберите локально_ | +| GitHub Copilot | `.github/skills/` | [port-copilot](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-copilot) | [port-copilot-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-copilot-py) | +| Augment | `.augment/skills/` | [port-augment](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-augment) | [port-augment-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-augment-py) | +| Cline | `.cline/skills/` | [port-cline](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cline) | [port-cline-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cline-py) | +| Kilo Code | `.kilocode/skills/` | [port-kilo](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-kilo) | [port-kilo-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-kilo-py) | +| Kiro | `.kiro/skills/` | [port-kiro](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-kiro) | [port-kiro-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-kiro-py) | +| Gemini CLI | `.gemini/skills/` | [port-gemini](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-gemini) | [port-gemini-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-gemini-py) | +| OpenCode | `.opencode/skills/` | [port-opencode](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-opencode) | [port-opencode-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-opencode-py) | +| Roo Code | `.roo/skills/` | [port-roo](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-roo) | [port-roo-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-roo-py) | +| Windsurf | `.windsurf/skills/` | [port-windsurf](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-windsurf) | [port-windsurf-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-windsurf-py) | +| Agent Skills | `.agents/skills/` | [port-agents](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-agents) | [port-agents-py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-agents-py) | -Готовые ветки `port-*` пересобираются автоматически на каждое изменение в навыках. Платформы со статусом «соберите локально» — на стадии расширения матрицы; пока ставятся [через `switch.py`](#альтернативный-способ--собрать-локально-через-switchpy). +Готовые ветки `port-*` пересобираются автоматически на каждое изменение в навыках. Если нужна свежая сборка прямо сейчас — соберите [локально через `switch.py`](#альтернативный-способ--собрать-локально-через-switchpy). Некоторые платформы (Augment, Cline, VS Code/Copilot) также сканируют `.claude/skills/` как fallback — для них достаточно `main`. From 4813ec5cf26640726ac8d757c52148ffbbe02df5 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 18:41:20 +0300 Subject: [PATCH 08/18] =?UTF-8?q?docs(readme):=20inline=20"=D0=94=D1=80?= =?UTF-8?q?=D1=83=D0=B3=D0=B8=D0=B5=20=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D1=8B=20=E2=86=92"=20link,=20drop=20verbose=20intr?= =?UTF-8?q?o=20line?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 9412fef8..289e0ae6 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,7 @@ > **PS** — версия со скриптами на PowerShell (стандартная, для Windows). **Py** — версия со скриптами на Python (если PowerShell не подходит). Можно начать с **PS** — это основной вариант. -**Claude Code** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/main) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-claude-code-py) — **Cursor** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor-py) — **Codex** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex-py) - -[Все варианты и инструкции →](#поддерживаемые-платформы) +**Claude Code** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/main) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-claude-code-py) — **Cursor** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-cursor-py) — **Codex** [PS](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex) · [Py](https://github.com/Nikolay-Shirokov/cc-1c-skills/tree/port-codex-py) — [Другие платформы →](#поддерживаемые-платформы) ## Быстрый старт From 1866c1335ac5c2430d84f3c43b8ad5d8977b00fa Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 20:08:07 +0300 Subject: [PATCH 09/18] feat(plugins): Codex plugin support + Python plugin variant for Claude MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add 1c-skills-py to .claude-plugin/marketplace.json (→ port-claude-code-py) - New .agents/plugins/marketplace.json — Codex marketplace with PS + Py plugins - Templates .github/templates/{codex,claude}-plugin.json.tmpl rendered by CI - build-ports.yml: generate plugin manifests on port-codex/port-codex-py/port-claude-code-py; Codex version YYYY.M.D+sha7 auto-bumped per push - README: install instructions for Codex + Py variant for Claude - .gitignore: narrow .agents/ → .agents/skills/ so the marketplace is tracked Co-Authored-By: Claude Opus 4.7 (1M context) --- .agents/plugins/marketplace.json | 40 +++++++++++++++++++++++ .claude-plugin/marketplace.json | 11 ++++++- .github/templates/claude-plugin.json.tmpl | 31 ++++++++++++++++++ .github/templates/codex-plugin.json.tmpl | 36 ++++++++++++++++++++ .github/workflows/build-ports.yml | 28 ++++++++++++++++ .gitignore | 2 +- README.md | 10 +++++- 7 files changed, 155 insertions(+), 3 deletions(-) create mode 100644 .agents/plugins/marketplace.json create mode 100644 .github/templates/claude-plugin.json.tmpl create mode 100644 .github/templates/codex-plugin.json.tmpl diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json new file mode 100644 index 00000000..9cb92373 --- /dev/null +++ b/.agents/plugins/marketplace.json @@ -0,0 +1,40 @@ +{ + "name": "cc-1c-skills", + "interface": { + "displayName": "1C Skills" + }, + "plugins": [ + { + "name": "1c-skills", + "source": { + "source": "url", + "url": "https://github.com/Nikolay-Shirokov/cc-1c-skills.git", + "ref": "port-codex" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "OFF" + }, + "category": "Development", + "interface": { + "shortDescription": "PowerShell runtime (Windows-first)" + } + }, + { + "name": "1c-skills-py", + "source": { + "source": "url", + "url": "https://github.com/Nikolay-Shirokov/cc-1c-skills.git", + "ref": "port-codex-py" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "OFF" + }, + "category": "Development", + "interface": { + "shortDescription": "Python runtime (Linux/Mac/Windows)" + } + } + ] +} diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 297c102b..1e5fd457 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,16 @@ { "name": "1c-skills", "source": "./", - "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций." + "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций. PowerShell runtime (Windows-first)." + }, + { + "name": "1c-skills-py", + "source": { + "source": "github", + "repo": "Nikolay-Shirokov/cc-1c-skills", + "ref": "port-claude-code-py" + }, + "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — Python runtime (Linux/Mac или когда PowerShell недоступен)." } ] } diff --git a/.github/templates/claude-plugin.json.tmpl b/.github/templates/claude-plugin.json.tmpl new file mode 100644 index 00000000..fad9ca30 --- /dev/null +++ b/.github/templates/claude-plugin.json.tmpl @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", + "name": "{{PLUGIN_NAME}}", + "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 (Python runtime) — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "author": { + "name": "Nikolay Shirokov" + }, + "homepage": "https://github.com/Nikolay-Shirokov/cc-1c-skills", + "repository": "https://github.com/Nikolay-Shirokov/cc-1c-skills", + "license": "MIT", + "keywords": [ + "1c", + "1c-dev", + "cf", + "cfe", + "epf", + "erf", + "metadata", + "configuration", + "extension", + "form", + "report", + "skd", + "data-processor", + "mxl", + "web-client", + "testing", + "test-automation" + ], + "skills": "./.claude/skills/" +} diff --git a/.github/templates/codex-plugin.json.tmpl b/.github/templates/codex-plugin.json.tmpl new file mode 100644 index 00000000..c5631de6 --- /dev/null +++ b/.github/templates/codex-plugin.json.tmpl @@ -0,0 +1,36 @@ +{ + "name": "{{PLUGIN_NAME}}", + "version": "{{VERSION}}", + "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "author": { + "name": "Nikolay Shirokov" + }, + "homepage": "https://github.com/Nikolay-Shirokov/cc-1c-skills", + "repository": "https://github.com/Nikolay-Shirokov/cc-1c-skills", + "license": "MIT", + "keywords": [ + "1c", + "1c-dev", + "cf", + "cfe", + "epf", + "erf", + "metadata", + "configuration", + "extension", + "form", + "report", + "skd", + "data-processor", + "mxl", + "web-client", + "testing", + "test-automation" + ], + "skills": "./.codex/skills/", + "interface": { + "displayName": "1C Skills ({{RUNTIME_LABEL}})", + "shortDescription": "{{SHORT_DESCRIPTION}}", + "category": "Development" + } +} diff --git a/.github/workflows/build-ports.yml b/.github/workflows/build-ports.yml index 213e1bb1..db55eb73 100644 --- a/.github/workflows/build-ports.yml +++ b/.github/workflows/build-ports.yml @@ -7,6 +7,8 @@ on: - '.claude/skills/**' - 'scripts/switch.py' - '.github/templates/README.port.md.tmpl' + - '.github/templates/codex-plugin.json.tmpl' + - '.github/templates/claude-plugin.json.tmpl' - '.github/workflows/build-ports.yml' - 'LICENSE' workflow_dispatch: @@ -178,6 +180,32 @@ jobs: -e "s|{{MAIN_REPO_URL}}|${MAIN_REPO_URL}|g" \ .github/templates/README.port.md.tmpl > build/README.md + - name: Render Codex plugin manifest + if: matrix.platform == 'codex' + env: + PLUGIN_NAME: ${{ matrix.runtime == 'python' && '1c-skills-py' || '1c-skills' }} + RUNTIME_LABEL: ${{ matrix.runtime == 'powershell' && 'PowerShell' || 'Python' }} + SHORT_DESCRIPTION: ${{ matrix.runtime == 'python' && 'Python runtime (Linux/Mac/Windows)' || 'PowerShell runtime (Windows-first)' }} + COMMIT_SHA: ${{ github.sha }} + run: | + VERSION="$(date -u +%Y.%-m.%-d)+${COMMIT_SHA::7}" + mkdir -p build/.codex-plugin + sed \ + -e "s|{{PLUGIN_NAME}}|${PLUGIN_NAME}|g" \ + -e "s|{{VERSION}}|${VERSION}|g" \ + -e "s|{{RUNTIME_LABEL}}|${RUNTIME_LABEL}|g" \ + -e "s|{{SHORT_DESCRIPTION}}|${SHORT_DESCRIPTION}|g" \ + .github/templates/codex-plugin.json.tmpl > build/.codex-plugin/plugin.json + + - name: Render Claude plugin manifest (Py variant) + if: matrix.platform == 'claude-code' && matrix.runtime == 'python' + env: + PLUGIN_NAME: 1c-skills-py + run: | + mkdir -p build/.claude-plugin + sed -e "s|{{PLUGIN_NAME}}|${PLUGIN_NAME}|g" \ + .github/templates/claude-plugin.json.tmpl > build/.claude-plugin/plugin.json + - name: Copy LICENSE run: cp LICENSE build/LICENSE diff --git a/.gitignore b/.gitignore index 3077e883..c965f39f 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ __pycache__/ *.mp4 # Навыки, скопированные для других AI-платформ (генерируются scripts/switch.py) -.agents/ +.agents/skills/ .augment/ .cline/ .codex/ diff --git a/README.md b/README.md index 289e0ae6..155f6bc5 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,15 @@ ``` /plugin marketplace add https://github.com/Nikolay-Shirokov/cc-1c-skills -/plugin install 1c-skills@cc-1c-skills +/plugin install 1c-skills@cc-1c-skills # PowerShell (Windows) +/plugin install 1c-skills-py@cc-1c-skills # Python (Linux/Mac или если PS недоступен) +``` + +Или установите как плагин OpenAI Codex: + +``` +codex plugin marketplace add Nikolay-Shirokov/cc-1c-skills +codex /plugins # выберите 1c-skills (PowerShell) или 1c-skills-py (Python) и нажмите Install ``` Или используйте скрипт установки: From dfb258dd3f94ff6e539cf1acd8671d1e5d79ff04 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 20:13:33 +0300 Subject: [PATCH 10/18] fix(plugins): prefix descriptions with [PowerShell]/[Python] for distinct cards Codex plugin browser truncates the description, so the runtime tag needs to appear at the start. Apply the same prefix to Claude marketplace.json and plugin.json for consistency. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude-plugin/marketplace.json | 4 ++-- .claude-plugin/plugin.json | 2 +- .github/templates/claude-plugin.json.tmpl | 2 +- .github/templates/codex-plugin.json.tmpl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 1e5fd457..39731589 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ { "name": "1c-skills", "source": "./", - "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций. PowerShell runtime (Windows-first)." + "description": "[PowerShell] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций." }, { "name": "1c-skills-py", @@ -18,7 +18,7 @@ "repo": "Nikolay-Shirokov/cc-1c-skills", "ref": "port-claude-code-py" }, - "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — Python runtime (Linux/Mac или когда PowerShell недоступен)." + "description": "[Python] Полный цикл разработки на платформе 1С:Предприятие 8.3 — Linux/Mac или когда PowerShell недоступен." } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index af30c675..e0f1c61a 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "1c-skills", - "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "description": "[PowerShell] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", "author": { "name": "Nikolay Shirokov" }, diff --git a/.github/templates/claude-plugin.json.tmpl b/.github/templates/claude-plugin.json.tmpl index fad9ca30..65158d14 100644 --- a/.github/templates/claude-plugin.json.tmpl +++ b/.github/templates/claude-plugin.json.tmpl @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "{{PLUGIN_NAME}}", - "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 (Python runtime) — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "description": "[Python] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", "author": { "name": "Nikolay Shirokov" }, diff --git a/.github/templates/codex-plugin.json.tmpl b/.github/templates/codex-plugin.json.tmpl index c5631de6..e3202a67 100644 --- a/.github/templates/codex-plugin.json.tmpl +++ b/.github/templates/codex-plugin.json.tmpl @@ -1,7 +1,7 @@ { "name": "{{PLUGIN_NAME}}", "version": "{{VERSION}}", - "description": "Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "description": "[{{RUNTIME_LABEL}}] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", "author": { "name": "Nikolay Shirokov" }, From e635a5be522dd39aad44137fd3355abbf05bb330 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 20:26:09 +0300 Subject: [PATCH 11/18] fix(plugins): drop invalid `authentication: OFF` from Codex marketplace Codex schema only accepts `ON_INSTALL` or `ON_USE`; the field is optional, so omit it for an unauthenticated plugin. Co-Authored-By: Claude Opus 4.7 (1M context) --- .agents/plugins/marketplace.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 9cb92373..42c7ac50 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -12,8 +12,7 @@ "ref": "port-codex" }, "policy": { - "installation": "AVAILABLE", - "authentication": "OFF" + "installation": "AVAILABLE" }, "category": "Development", "interface": { @@ -28,8 +27,7 @@ "ref": "port-codex-py" }, "policy": { - "installation": "AVAILABLE", - "authentication": "OFF" + "installation": "AVAILABLE" }, "category": "Development", "interface": { From 35bec4a2a1bfefdb00dc7c6cffe9fe2524939e0c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 21:19:10 +0300 Subject: [PATCH 12/18] fix(plugins): prepend UTF-8 BOM to SKILL.md on codex branches Codex on Windows opens SKILL.md without a declared encoding and defaults to CP1252, mangling Cyrillic. Adding the BOM lets the loader auto-detect UTF-8. Applied only on codex/codex-py builds to leave other ports untouched. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build-ports.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build-ports.yml b/.github/workflows/build-ports.yml index db55eb73..c0015228 100644 --- a/.github/workflows/build-ports.yml +++ b/.github/workflows/build-ports.yml @@ -206,6 +206,15 @@ jobs: sed -e "s|{{PLUGIN_NAME}}|${PLUGIN_NAME}|g" \ .github/templates/claude-plugin.json.tmpl > build/.claude-plugin/plugin.json + - name: Add UTF-8 BOM to SKILL.md (Codex reads Cyrillic as CP1252 without BOM) + if: matrix.platform == 'codex' + run: | + find build -name 'SKILL.md' -print0 | while IFS= read -r -d '' f; do + if ! head -c 3 "$f" | od -An -tx1 | tr -d ' \n' | grep -q '^efbbbf'; then + { printf '\xef\xbb\xbf'; cat "$f"; } > "$f.tmp" && mv "$f.tmp" "$f" + fi + done + - name: Copy LICENSE run: cp LICENSE build/LICENSE From 27ecfb707d2c30e4c80e7d05e4e051c0a18c681c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 21:27:08 +0300 Subject: [PATCH 13/18] =?UTF-8?q?revert(plugins):=20drop=20UTF-8=20BOM=20o?= =?UTF-8?q?n=20SKILL.md=20=E2=80=94=20Codex=20YAML=20parser=20breaks=20on?= =?UTF-8?q?=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BOM before `---` makes Codex's strict frontmatter parser reject every SKILL.md ("Skipped loading 66 skill(s)"). Without BOM the skills load and execute correctly; the only remaining issue is mojibake display of Cyrillic in SKILL.md previews — that's a Codex rendering bug, not ours. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build-ports.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/build-ports.yml b/.github/workflows/build-ports.yml index c0015228..db55eb73 100644 --- a/.github/workflows/build-ports.yml +++ b/.github/workflows/build-ports.yml @@ -206,15 +206,6 @@ jobs: sed -e "s|{{PLUGIN_NAME}}|${PLUGIN_NAME}|g" \ .github/templates/claude-plugin.json.tmpl > build/.claude-plugin/plugin.json - - name: Add UTF-8 BOM to SKILL.md (Codex reads Cyrillic as CP1252 without BOM) - if: matrix.platform == 'codex' - run: | - find build -name 'SKILL.md' -print0 | while IFS= read -r -d '' f; do - if ! head -c 3 "$f" | od -An -tx1 | tr -d ' \n' | grep -q '^efbbbf'; then - { printf '\xef\xbb\xbf'; cat "$f"; } > "$f.tmp" && mv "$f.tmp" "$f" - fi - done - - name: Copy LICENSE run: cp LICENSE build/LICENSE From df9541470c2ddc26b229745862844d08f6e9e3df Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 8 May 2026 11:42:12 +0300 Subject: [PATCH 14/18] chore(plugins): tighten descriptions and align marketplace entries with Codex schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace overreaching "полный цикл разработки... до записи видеоинструкций" pitch with grounded one-liner matching the GitHub repo description (XML/CLI abstractions + eyes & hands for web-client testing). - Drop non-standard per-plugin `interface.shortDescription` from .agents/plugins/marketplace.json — MarketplaceInterface only describes `displayName`, openai/plugins keeps per-plugin entries minimal (name/source/policy/category). Co-Authored-By: Claude Opus 4.7 (1M context) --- .agents/plugins/marketplace.json | 10 ++-------- .claude-plugin/marketplace.json | 4 ++-- .claude-plugin/plugin.json | 2 +- .github/templates/claude-plugin.json.tmpl | 2 +- .github/templates/codex-plugin.json.tmpl | 2 +- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 42c7ac50..5f976c03 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -14,10 +14,7 @@ "policy": { "installation": "AVAILABLE" }, - "category": "Development", - "interface": { - "shortDescription": "PowerShell runtime (Windows-first)" - } + "category": "Development" }, { "name": "1c-skills-py", @@ -29,10 +26,7 @@ "policy": { "installation": "AVAILABLE" }, - "category": "Development", - "interface": { - "shortDescription": "Python runtime (Linux/Mac/Windows)" - } + "category": "Development" } ] } diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 39731589..25182370 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ { "name": "1c-skills", "source": "./", - "description": "[PowerShell] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций." + "description": "[PowerShell] Навыки для разработки на 1С:Предприятие 8.3 — абстракции над XML-форматами и CLI конфигуратора, плюс глаза и руки для тестирования через веб-клиент." }, { "name": "1c-skills-py", @@ -18,7 +18,7 @@ "repo": "Nikolay-Shirokov/cc-1c-skills", "ref": "port-claude-code-py" }, - "description": "[Python] Полный цикл разработки на платформе 1С:Предприятие 8.3 — Linux/Mac или когда PowerShell недоступен." + "description": "[Python] То же — для Linux/Mac или когда PowerShell недоступен." } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index e0f1c61a..bfd1da56 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "1c-skills", - "description": "[PowerShell] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "description": "[PowerShell] Навыки для разработки на 1С:Предприятие 8.3 — абстракции над XML-форматами и CLI конфигуратора, плюс глаза и руки для тестирования через веб-клиент.", "author": { "name": "Nikolay Shirokov" }, diff --git a/.github/templates/claude-plugin.json.tmpl b/.github/templates/claude-plugin.json.tmpl index 65158d14..f91b0a1a 100644 --- a/.github/templates/claude-plugin.json.tmpl +++ b/.github/templates/claude-plugin.json.tmpl @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "{{PLUGIN_NAME}}", - "description": "[Python] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "description": "[Python] Навыки для разработки на 1С:Предприятие 8.3 — абстракции над XML-форматами и CLI конфигуратора, плюс глаза и руки для тестирования через веб-клиент. Linux/Mac или когда PowerShell недоступен.", "author": { "name": "Nikolay Shirokov" }, diff --git a/.github/templates/codex-plugin.json.tmpl b/.github/templates/codex-plugin.json.tmpl index e3202a67..e6d247a0 100644 --- a/.github/templates/codex-plugin.json.tmpl +++ b/.github/templates/codex-plugin.json.tmpl @@ -1,7 +1,7 @@ { "name": "{{PLUGIN_NAME}}", "version": "{{VERSION}}", - "description": "[{{RUNTIME_LABEL}}] Полный цикл разработки на платформе 1С:Предприятие 8.3 — от создания конфигураций, расширений, внешних обработок и отчётов до загрузки изменений в информационную базу, обновления, запуска, публикации на веб-сервере, тестирования через веб-клиент и записи видеоинструкций.", + "description": "[{{RUNTIME_LABEL}}] Навыки для разработки на 1С:Предприятие 8.3 — абстракции над XML-форматами и CLI конфигуратора, плюс глаза и руки для тестирования через веб-клиент.", "author": { "name": "Nikolay Shirokov" }, From c496047c6c1b22842777cdc39492d0b00befbf54 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 8 May 2026 12:16:44 +0300 Subject: [PATCH 15/18] fix(skills): force UTF-8 console encoding in 7 ps1 scripts Codex runner on Windows launches PowerShell as login-shell and decodes stdout/stderr without UTF-8, garbling Cyrillic output. The other 51 ps1 scripts already set `[Console]::OutputEncoding = UTF8`; bring these 7 in line and add `InputEncoding = UTF8` for symmetry. Touched: epf-init, erf-init, form-add, form-remove, help-add, template-add, template-remove. Versions bumped in both ps1 and py headers to keep the pair in sync. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/epf-init/scripts/init.ps1 | 4 +++- .claude/skills/epf-init/scripts/init.py | 2 +- .claude/skills/erf-init/scripts/init.ps1 | 4 +++- .claude/skills/erf-init/scripts/init.py | 2 +- .claude/skills/form-add/scripts/form-add.ps1 | 4 +++- .claude/skills/form-add/scripts/form-add.py | 2 +- .claude/skills/form-remove/scripts/remove-form.ps1 | 4 +++- .claude/skills/form-remove/scripts/remove-form.py | 2 +- .claude/skills/help-add/scripts/add-help.ps1 | 4 +++- .claude/skills/help-add/scripts/add-help.py | 2 +- .claude/skills/template-add/scripts/add-template.ps1 | 4 +++- .claude/skills/template-add/scripts/add-template.py | 2 +- .claude/skills/template-remove/scripts/remove-template.ps1 | 4 +++- .claude/skills/template-remove/scripts/remove-template.py | 2 +- 14 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.claude/skills/epf-init/scripts/init.ps1 b/.claude/skills/epf-init/scripts/init.ps1 index 76283c42..966caa3a 100644 --- a/.claude/skills/epf-init/scripts/init.ps1 +++ b/.claude/skills/epf-init/scripts/init.ps1 @@ -1,4 +1,4 @@ -# epf-init v1.0 — Init 1C external data processor scaffold +# epf-init v1.1 — Init 1C external data processor scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -10,6 +10,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 $uuid1 = [guid]::NewGuid().ToString() $uuid2 = [guid]::NewGuid().ToString() diff --git a/.claude/skills/epf-init/scripts/init.py b/.claude/skills/epf-init/scripts/init.py index 49f7dfb5..3f532727 100644 --- a/.claude/skills/epf-init/scripts/init.py +++ b/.claude/skills/epf-init/scripts/init.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# epf-init v1.0 — Init 1C external data processor scaffold +# epf-init v1.1 — Init 1C external data processor scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Generates minimal XML source files for a 1C external data processor.""" import sys, os, argparse, uuid diff --git a/.claude/skills/erf-init/scripts/init.ps1 b/.claude/skills/erf-init/scripts/init.ps1 index d4955af0..9cd22885 100644 --- a/.claude/skills/erf-init/scripts/init.ps1 +++ b/.claude/skills/erf-init/scripts/init.ps1 @@ -1,4 +1,4 @@ -# erf-init v1.0 — Init 1C external report scaffold +# erf-init v1.1 — Init 1C external report scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -12,6 +12,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 $uuid1 = [guid]::NewGuid().ToString() $uuid2 = [guid]::NewGuid().ToString() diff --git a/.claude/skills/erf-init/scripts/init.py b/.claude/skills/erf-init/scripts/init.py index fb1afaae..9941c74e 100644 --- a/.claude/skills/erf-init/scripts/init.py +++ b/.claude/skills/erf-init/scripts/init.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# erf-init v1.0 — Init 1C external report scaffold +# erf-init v1.1 — Init 1C external report scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Generates minimal XML source files for a 1C external report.""" import sys, os, argparse, uuid diff --git a/.claude/skills/form-add/scripts/form-add.ps1 b/.claude/skills/form-add/scripts/form-add.ps1 index 0ab9c120..8a1a47ff 100644 --- a/.claude/skills/form-add/scripts/form-add.ps1 +++ b/.claude/skills/form-add/scripts/form-add.ps1 @@ -1,4 +1,4 @@ -# form-add v1.4 — Add managed form to 1C config object +# form-add v1.5 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -15,6 +15,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 # --- Detect XML format version --- diff --git a/.claude/skills/form-add/scripts/form-add.py b/.claude/skills/form-add/scripts/form-add.py index be66ee89..9d8a1ced 100644 --- a/.claude/skills/form-add/scripts/form-add.py +++ b/.claude/skills/form-add/scripts/form-add.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-add v1.4 — Add managed form to 1C config object +# form-add v1.5 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/form-remove/scripts/remove-form.ps1 b/.claude/skills/form-remove/scripts/remove-form.ps1 index 176b830c..8dd2c2a4 100644 --- a/.claude/skills/form-remove/scripts/remove-form.ps1 +++ b/.claude/skills/form-remove/scripts/remove-form.ps1 @@ -1,4 +1,4 @@ -# form-remove v1.1 — Remove form from 1C object +# form-remove v1.2 — Remove form from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -12,6 +12,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 # --- Проверки --- diff --git a/.claude/skills/form-remove/scripts/remove-form.py b/.claude/skills/form-remove/scripts/remove-form.py index 0bbcdbba..15d97f49 100644 --- a/.claude/skills/form-remove/scripts/remove-form.py +++ b/.claude/skills/form-remove/scripts/remove-form.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# remove-form v1.0 — Remove form from 1C object +# remove-form v1.1 — Remove form from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/help-add/scripts/add-help.ps1 b/.claude/skills/help-add/scripts/add-help.ps1 index ae067ec5..e848968a 100644 --- a/.claude/skills/help-add/scripts/add-help.ps1 +++ b/.claude/skills/help-add/scripts/add-help.ps1 @@ -1,4 +1,4 @@ -# help-add v1.3 — Add built-in help to 1C object +# help-add v1.4 — Add built-in help to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -10,6 +10,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 # --- Detect format version --- diff --git a/.claude/skills/help-add/scripts/add-help.py b/.claude/skills/help-add/scripts/add-help.py index ce6526d5..d99cc4f8 100644 --- a/.claude/skills/help-add/scripts/add-help.py +++ b/.claude/skills/help-add/scripts/add-help.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# add-help v1.3 — Add built-in help to 1C object +# add-help v1.4 — Add built-in help to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/template-add/scripts/add-template.ps1 b/.claude/skills/template-add/scripts/add-template.ps1 index d4fea048..5e1534e9 100644 --- a/.claude/skills/template-add/scripts/add-template.ps1 +++ b/.claude/skills/template-add/scripts/add-template.ps1 @@ -1,4 +1,4 @@ -# template-add v1.4 — Add template to 1C object +# template-add v1.5 — Add template to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -20,6 +20,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 # --- Маппинг типов --- diff --git a/.claude/skills/template-add/scripts/add-template.py b/.claude/skills/template-add/scripts/add-template.py index fc7f93fb..1c636047 100644 --- a/.claude/skills/template-add/scripts/add-template.py +++ b/.claude/skills/template-add/scripts/add-template.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# add-template v1.4 — Add template to 1C object +# add-template v1.5 — Add template to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/template-remove/scripts/remove-template.ps1 b/.claude/skills/template-remove/scripts/remove-template.ps1 index c86eec0a..b8e287e2 100644 --- a/.claude/skills/template-remove/scripts/remove-template.ps1 +++ b/.claude/skills/template-remove/scripts/remove-template.ps1 @@ -1,4 +1,4 @@ -# template-remove v1.1 — Remove template from 1C object +# template-remove v1.2 — Remove template from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -12,6 +12,8 @@ param( ) $ErrorActionPreference = "Stop" +[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 +[Console]::InputEncoding = [System.Text.Encoding]::UTF8 # --- Проверки --- diff --git a/.claude/skills/template-remove/scripts/remove-template.py b/.claude/skills/template-remove/scripts/remove-template.py index 5a94a046..01cfc695 100644 --- a/.claude/skills/template-remove/scripts/remove-template.py +++ b/.claude/skills/template-remove/scripts/remove-template.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# remove-template v1.0 — Remove template from 1C object +# remove-template v1.1 — Remove template from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse From e8cb5440d8d2d2cb37e6dc2cf2c653f79e161008 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 8 May 2026 12:40:25 +0300 Subject: [PATCH 16/18] feat(switch): emit -ExecutionPolicy Bypass for codex target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codex on Windows launches powershell.exe as a login-shell that loads the user profile despite -NoProfile in our SKILL.md. With Restricted ExecutionPolicy this spams "выполнение сценариев отключено". Add -ExecutionPolicy Bypass for codex; keep canonical -NoProfile -File for all other platforms. Round-trip safe: cmd_install always copies fresh from .claude/skills/, so switching codex→cursor strips the EP flag. cmd_switch_runtime re-emits PS commands via normalize_ps_invocation each pass, so in-place py↔ps in .codex/skills/ keeps the flag. Also fix a pre-existing bug in cmd_switch_runtime: file-existence check used repo_root() instead of project_dir, so in-place runtime switch in a foreign project always tripped skip_runtime=True and became a no-op. The bug was masked when project_dir == repo_root (source-repo workflow). Co-Authored-By: Claude Opus 4.7 (1M context) --- scripts/switch.py | 57 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/scripts/switch.py b/scripts/switch.py index 5653af80..e3f04f8d 100644 --- a/scripts/switch.py +++ b/scripts/switch.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# switch.py v1.5 — Переключение навыков 1С между AI-платформами и рантаймами +# switch.py v1.6 — Переключение навыков 1С между AI-платформами и рантаймами # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """ Копирует (или создаёт ссылки на) навыки из .claude/skills/ на другие AI-платформы @@ -63,9 +63,35 @@ GITIGNORE_RECOMMENDATIONS = [ # --------------------------------------------------------------------------- # Capture optional surrounding quote (group 'q') and bare path (group 'path'). # Path matches non-whitespace non-quote chars to support ${CLAUDE_SKILL_DIR}/... -RX_PS = re.compile(r'powershell\.exe\s+(?:-NoProfile\s+)?-File\s+(?P["\']?)(?P[^"\s]+?)\.ps1(?P=q)?') +# Optional -ExecutionPolicy between -NoProfile and -File (used for codex target). +RX_PS = re.compile( + r'powershell\.exe\s+' + r'(?:-NoProfile\s+)?' + r'(?:-ExecutionPolicy\s+\S+\s+)?' + r'-File\s+(?P["\']?)(?P[^"\s]+?)\.ps1(?P=q)?' +) RX_PY = re.compile(r"python\s+(?P[\"']?)(?P[^\"\s]+?)\.py(?P=q)?") +# Платформы, требующие -ExecutionPolicy Bypass (Codex запускает powershell как +# login-shell, профиль грузится и упирается в Restricted policy). +PS_BYPASS_PLATFORMS = {'codex'} + + +def emit_ps_invocation(path, quote, platform): + """Build canonical powershell.exe invocation for a target platform.""" + ep = ' -ExecutionPolicy Bypass' if platform in PS_BYPASS_PLATFORMS else '' + return f"powershell.exe -NoProfile{ep} -File {quote}{path}.ps1{quote}" + + +def normalize_ps_invocation(content, platform): + """Re-emit existing powershell.exe ...ps1 invocations with platform flags. + + Idempotent: matches both with and without -ExecutionPolicy in source. + """ + def repl(m): + return emit_ps_invocation(m.group('path'), m.group('q'), platform) + return RX_PS.sub(repl, content) + # --------------------------------------------------------------------------- # Junction / symlink helpers @@ -221,8 +247,12 @@ def rewrite_paths(content, platform, target_prefix, skill_name): return content -def switch_runtime_content(content, target_runtime): - """Switch runtime invocations in .md content. Returns (new_content, switched).""" +def switch_runtime_content(content, target_runtime, platform='claude-code'): + """Switch runtime invocations in .md content. Returns (new_content, switched). + + Platform controls flags on emitted powershell invocations + (codex requires -ExecutionPolicy Bypass). + """ if target_runtime == 'python': def to_py(m): q = m.group('q') @@ -230,8 +260,7 @@ def switch_runtime_content(content, target_runtime): new = RX_PS.sub(to_py, content) elif target_runtime == 'powershell': def to_ps(m): - q = m.group('q') - return f"powershell.exe -NoProfile -File {q}{m.group('path')}.ps1{q}" + return emit_ps_invocation(m.group('path'), m.group('q'), platform) new = RX_PY.sub(to_ps, content) else: return content, False @@ -354,9 +383,13 @@ def cmd_install(platform, runtime, project_dir): # where target runtime is not available) if not skip_runtime: if runtime == 'python': - new_content, _ = switch_runtime_content(new_content, 'python') + new_content, _ = switch_runtime_content(new_content, 'python', platform) elif runtime == 'powershell': - new_content, _ = switch_runtime_content(new_content, 'powershell') + new_content, _ = switch_runtime_content(new_content, 'powershell', platform) + + # Normalize any remaining powershell invocations with platform flags + # (covers skip_runtime=True case where source PS commands stayed) + new_content = normalize_ps_invocation(new_content, platform) if new_content != content: with open(md_path, 'w', encoding='utf-8') as f: @@ -491,14 +524,14 @@ def cmd_switch_runtime(runtime, project_dir): # Skip runtime conversion for single-runtime skills where # target files don't exist (e.g. img-grid has only .py) cur_rt = classify_skill_runtime(skill_path) - missing = check_missing_files(skill_path, runtime, repo_root()) + missing = check_missing_files(skill_path, runtime, project_dir) skip_runtime = bool(missing) and ( (runtime == 'python' and cur_rt in ('ps', 'none')) or (runtime == 'powershell' and cur_rt in ('py', 'none')) ) info, warnings = collect_runtime_messages( - skill_name, skill_path, runtime, repo_root()) + skill_name, skill_path, runtime, project_dir) all_info.extend(info) all_warnings.extend(warnings) @@ -509,7 +542,9 @@ def cmd_switch_runtime(runtime, project_dir): with open(md_path, 'r', encoding='utf-8') as f: content = f.read() - new_content, changed = switch_runtime_content(content, runtime) + new_content, _ = switch_runtime_content(content, runtime, platform_name) + new_content = normalize_ps_invocation(new_content, platform_name) + changed = new_content != content if changed: with open(md_path, 'w', encoding='utf-8') as f: From e1f81a0cde8536aecfcb394d048de10629e7471c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 8 May 2026 13:45:47 +0300 Subject: [PATCH 17/18] chore(tests): refresh snapshots after meta-compile QuickChoice + form-compile AutoTitle defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - QuickChoice для Catalog (07b2ec3 «дефолты QuickChoice по реальным конфигам» — часть снапшотов уже обновили в dc0382c, эти были пропущены) - автоген /<AutoTitle>/<TitleLocation>/<SavedData> в формах (76800fc «автоген Title из имени» и серия фич form-compile) - column-group/ — новый снапшот для кейса из 4f9d9ae (был не закоммичен) Все 349 unit-тестов и 6 integration-тестов зелёные. verify-snapshots (платформенная загрузка) — 201/202; отдельный pre-existing fail cf-edit/set-home-page (Check 9 не валидирует HP form refs) разбираем отдельно, в дифф этой регенерации не входит. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --- .../snapshots/add-objects/Catalogs/Товары.xml | 2 +- .../remove-object/Catalogs/Остающийся.xml | 2 +- .../remove-object/Catalogs/Удаляемый.xml | 2 +- .../config-with-objects/Catalogs/Товары.xml | 2 +- .../snapshots/catalog/Catalogs/Товары.xml | 2 +- .../multiple-objects/Catalogs/Товары.xml | 2 +- .../with-borrowed-catalog/Catalogs/Товары.xml | 2 +- .../after-handler/Catalogs/Товары.xml | 2 +- .../before-handler/Catalogs/Товары.xml | 2 +- .../with-borrowed-object/Catalogs/Товары.xml | 2 +- .../snapshots/basic/Catalogs/Товары.xml | 2 +- .../list-form/Catalogs/Контрагенты.xml | 2 +- .../snapshots/column-group/Configuration.xml | 252 ++++++++++++++++++ .../column-group/DataProcessors/Задачи.xml | 34 +++ .../Задачи/Ext/ManagerModule.bsl | 0 .../Задачи/Ext/ObjectModule.bsl | 0 .../DataProcessors/Задачи/Forms/Форма.xml | 22 ++ .../Задачи/Forms/Форма/Ext/Form.xml | 117 ++++++++ .../Задачи/Forms/Форма/Ext/Form/Module.bsl | 19 ++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../column-group/Languages/Русский.xml | 16 ++ .../Реквизиты/Forms/Форма/Ext/Form.xml | 1 + .../КомандыТест/Forms/Форма/Ext/Form.xml | 1 + .../Тест/Forms/Форма/Ext/Form.xml | 7 + .../Группа/Forms/Форма/Ext/Form.xml | 7 + .../snapshots/overview/Catalogs/Товары.xml | 2 +- .../Catalogs/Товары/Forms/Форма/Ext/Form.xml | 2 + .../Инфо/Forms/Форма/Ext/Form.xml | 25 ++ .../Простая/Forms/Форма/Ext/Form.xml | 1 + .../Валидация/Forms/Форма/Ext/Form.xml | 26 ++ .../ВалТабл/Forms/Форма/Ext/Form.xml | 7 + .../snapshots/valid-form/Catalogs/Товары.xml | 2 +- .../Catalogs/Товары/Forms/Форма/Ext/Form.xml | 2 + .../help-to-catalog/Catalogs/Номенклатура.xml | 2 +- .../snapshots/basic/Catalogs/Товары.xml | 2 +- .../hide-command/Catalogs/Товары.xml | 2 +- .../show-command/Catalogs/Товары.xml | 2 +- .../snapshots/valid/Catalogs/Товары.xml | 2 +- .../with-placement/Catalogs/Товары.xml | 2 +- .../add-attribute/Catalogs/Контрагенты.xml | 2 +- .../add-tabpart/Catalogs/Контрагенты.xml | 2 +- .../combined-operations/Catalogs/Товары.xml | 2 +- .../modify-attribute/Catalogs/Контрагенты.xml | 2 +- .../modify-property/Catalogs/Организации.xml | 2 +- .../remove-attribute/Catalogs/Контрагенты.xml | 2 +- .../catalog-brief/Catalogs/Товары.xml | 2 +- .../catalog-full/Catalogs/Товары.xml | 2 +- .../Catalogs/Номенклатура.xml | 2 +- .../snapshots/dry-run/Catalogs/Тест.xml | 2 +- .../valid-catalog-detailed/Catalogs/Тест.xml | 2 +- .../snapshots/valid-catalog/Catalogs/Тест.xml | 2 +- .../snapshots/basic-role/Catalogs/Товары.xml | 2 +- .../russian-types/Catalogs/Контрагенты.xml | 2 +- .../synonym-rights/Catalogs/Товары.xml | 2 +- .../view-preset/Catalogs/Номенклатура.xml | 2 +- .../with-rls/Catalogs/Организации.xml | 2 +- .../multiple-types/Catalogs/Товары.xml | 2 +- .../snapshots/overview/Catalogs/Товары.xml | 2 +- .../with-rls/Catalogs/Организации.xml | 2 +- .../multiple-objects/Catalogs/Товары.xml | 2 +- .../snapshots/valid-role/Catalogs/Товары.xml | 2 +- .../snapshots/basic/Catalogs/Товары.xml | 2 +- .../snapshots/full/Catalogs/Товары.xml | 2 +- .../synonym-objects/Catalogs/Товары.xml | 2 +- .../with-content/Catalogs/Товары.xml | 2 +- .../snapshots/add-content/Catalogs/Товары.xml | 2 +- .../remove-content/Catalogs/Товары.xml | 2 +- .../content-mode/Catalogs/Товары.xml | 2 +- .../snapshots/overview/Catalogs/Товары.xml | 2 +- .../snapshots/valid/Catalogs/Товары.xml | 2 +- .../with-content/Catalogs/Товары.xml | 2 +- 71 files changed, 609 insertions(+), 52 deletions(-) create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/Configuration.xml create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи.xml create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Ext/ManagerModule.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма.xml create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form.xml create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form/Module.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/form-compile/snapshots/column-group/Languages/Русский.xml diff --git a/tests/skills/cases/cf-edit/snapshots/add-objects/Catalogs/Товары.xml b/tests/skills/cases/cf-edit/snapshots/add-objects/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cf-edit/snapshots/add-objects/Catalogs/Товары.xml +++ b/tests/skills/cases/cf-edit/snapshots/add-objects/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Остающийся.xml b/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Остающийся.xml index be5e69ab..6ea53f43 100644 --- a/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Остающийся.xml +++ b/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Остающийся.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Остающийся.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Удаляемый.xml b/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Удаляемый.xml index a3532443..fb84f17c 100644 --- a/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Удаляемый.xml +++ b/tests/skills/cases/cf-edit/snapshots/remove-object/Catalogs/Удаляемый.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Удаляемый.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cf-info/snapshots/config-with-objects/Catalogs/Товары.xml b/tests/skills/cases/cf-info/snapshots/config-with-objects/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cf-info/snapshots/config-with-objects/Catalogs/Товары.xml +++ b/tests/skills/cases/cf-info/snapshots/config-with-objects/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cfe-borrow/snapshots/catalog/Catalogs/Товары.xml b/tests/skills/cases/cfe-borrow/snapshots/catalog/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/catalog/Catalogs/Товары.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/catalog/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cfe-borrow/snapshots/multiple-objects/Catalogs/Товары.xml b/tests/skills/cases/cfe-borrow/snapshots/multiple-objects/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/multiple-objects/Catalogs/Товары.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/multiple-objects/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cfe-diff/snapshots/with-borrowed-catalog/Catalogs/Товары.xml b/tests/skills/cases/cfe-diff/snapshots/with-borrowed-catalog/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cfe-diff/snapshots/with-borrowed-catalog/Catalogs/Товары.xml +++ b/tests/skills/cases/cfe-diff/snapshots/with-borrowed-catalog/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cfe-patch-method/snapshots/after-handler/Catalogs/Товары.xml b/tests/skills/cases/cfe-patch-method/snapshots/after-handler/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cfe-patch-method/snapshots/after-handler/Catalogs/Товары.xml +++ b/tests/skills/cases/cfe-patch-method/snapshots/after-handler/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cfe-patch-method/snapshots/before-handler/Catalogs/Товары.xml b/tests/skills/cases/cfe-patch-method/snapshots/before-handler/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cfe-patch-method/snapshots/before-handler/Catalogs/Товары.xml +++ b/tests/skills/cases/cfe-patch-method/snapshots/before-handler/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/cfe-validate/snapshots/with-borrowed-object/Catalogs/Товары.xml b/tests/skills/cases/cfe-validate/snapshots/with-borrowed-object/Catalogs/Товары.xml index 15a89376..cd1ac997 100644 --- a/tests/skills/cases/cfe-validate/snapshots/with-borrowed-object/Catalogs/Товары.xml +++ b/tests/skills/cases/cfe-validate/snapshots/with-borrowed-object/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics/> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/form-add/snapshots/basic/Catalogs/Товары.xml b/tests/skills/cases/form-add/snapshots/basic/Catalogs/Товары.xml index 4c20ca8b..b2c182cd 100644 --- a/tests/skills/cases/form-add/snapshots/basic/Catalogs/Товары.xml +++ b/tests/skills/cases/form-add/snapshots/basic/Catalogs/Товары.xml @@ -287,7 +287,7 @@ <Characteristics /> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Товары.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/form-add/snapshots/list-form/Catalogs/Контрагенты.xml b/tests/skills/cases/form-add/snapshots/list-form/Catalogs/Контрагенты.xml index 3a2ecd8a..aaa93836 100644 --- a/tests/skills/cases/form-add/snapshots/list-form/Catalogs/Контрагенты.xml +++ b/tests/skills/cases/form-add/snapshots/list-form/Catalogs/Контрагенты.xml @@ -287,7 +287,7 @@ <Characteristics /> <PredefinedDataUpdate>Auto</PredefinedDataUpdate> <EditType>InDialog</EditType> - <QuickChoice>true</QuickChoice> + <QuickChoice>false</QuickChoice> <ChoiceMode>BothWays</ChoiceMode> <InputByString> <xr:Field>Catalog.Контрагенты.StandardAttribute.Description</xr:Field> diff --git a/tests/skills/cases/form-compile/snapshots/column-group/Configuration.xml b/tests/skills/cases/form-compile/snapshots/column-group/Configuration.xml new file mode 100644 index 00000000..601273a0 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/Configuration.xml @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="utf-8"?> +<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17"> + <Configuration uuid="UUID-001"> + <InternalInfo> + <xr:ContainedObject> + <xr:ClassId>UUID-002</xr:ClassId> + <xr:ObjectId>UUID-003</xr:ObjectId> + </xr:ContainedObject> + <xr:ContainedObject> + <xr:ClassId>UUID-004</xr:ClassId> + <xr:ObjectId>UUID-005</xr:ObjectId> + </xr:ContainedObject> + <xr:ContainedObject> + <xr:ClassId>UUID-006</xr:ClassId> + <xr:ObjectId>UUID-007</xr:ObjectId> + </xr:ContainedObject> + <xr:ContainedObject> + <xr:ClassId>UUID-008</xr:ClassId> + <xr:ObjectId>UUID-009</xr:ObjectId> + </xr:ContainedObject> + <xr:ContainedObject> + <xr:ClassId>UUID-010</xr:ClassId> + <xr:ObjectId>UUID-011</xr:ObjectId> + </xr:ContainedObject> + <xr:ContainedObject> + <xr:ClassId>UUID-012</xr:ClassId> + <xr:ObjectId>UUID-013</xr:ObjectId> + </xr:ContainedObject> + <xr:ContainedObject> + <xr:ClassId>UUID-014</xr:ClassId> + <xr:ObjectId>UUID-015</xr:ObjectId> + </xr:ContainedObject> + </InternalInfo> + <Properties> + <Name>TestConfig</Name> + <Synonym> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>TestConfig</v8:content> + </v8:item> + </Synonym> + <Comment /> + <NamePrefix /> + <ConfigurationExtensionCompatibilityMode>Version8_3_24</ConfigurationExtensionCompatibilityMode> + <DefaultRunMode>ManagedApplication</DefaultRunMode> + <UsePurposes> + <v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value> + </UsePurposes> + <ScriptVariant>Russian</ScriptVariant> + <DefaultRoles /> + <Vendor></Vendor> + <Version></Version> + <UpdateCatalogAddress /> + <IncludeHelpInContents>false</IncludeHelpInContents> + <UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication> + <UseOrdinaryFormInManagedApplication>false</UseOrdinaryFormInManagedApplication> + <AdditionalFullTextSearchDictionaries /> + <CommonSettingsStorage /> + <ReportsUserSettingsStorage /> + <ReportsVariantsStorage /> + <FormDataSettingsStorage /> + <DynamicListsUserSettingsStorage /> + <URLExternalDataStorage /> + <Content /> + <DefaultReportForm /> + <DefaultReportVariantForm /> + <DefaultReportSettingsForm /> + <DefaultReportAppearanceTemplate /> + <DefaultDynamicListSettingsForm /> + <DefaultSearchForm /> + <DefaultDataHistoryChangeHistoryForm /> + <DefaultDataHistoryVersionDataForm /> + <DefaultDataHistoryVersionDifferencesForm /> + <DefaultCollaborationSystemUsersChoiceForm /> + <RequiredMobileApplicationPermissions /> + <UsedMobileApplicationFunctionalities> + <app:functionality> + <app:functionality>Biometrics</app:functionality> + <app:use>true</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Location</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>BackgroundLocation</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>BluetoothPrinters</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>WiFiPrinters</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Contacts</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Calendars</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>PushNotifications</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>LocalNotifications</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>InAppPurchases</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>PersonalComputerFileExchange</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Ads</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>NumberDialing</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>CallProcessing</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>CallLog</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>AutoSendSMS</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>ReceiveSMS</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>SMSLog</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Camera</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Microphone</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>MusicLibrary</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>PictureAndVideoLibraries</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>AudioPlaybackAndVibration</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>BackgroundAudioPlaybackAndVibration</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>InstallPackages</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>OSBackup</app:functionality> + <app:use>true</app:use> + </app:functionality> + <app:functionality> + <app:functionality>ApplicationUsageStatistics</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>BarcodeScanning</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>BackgroundAudioRecording</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>AllFilesAccess</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Videoconferences</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>NFC</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>DocumentScanning</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>SpeechToText</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>Geofences</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>IncomingShareRequests</app:functionality> + <app:use>false</app:use> + </app:functionality> + <app:functionality> + <app:functionality>AllIncomingShareRequestsTypesProcessing</app:functionality> + <app:use>false</app:use> + </app:functionality> + </UsedMobileApplicationFunctionalities> + <StandaloneConfigurationRestrictionRoles /> + <MobileApplicationURLs /> + <AllowedIncomingShareRequestTypes /> + <MainClientApplicationWindowMode>Normal</MainClientApplicationWindowMode> + <DefaultInterface /> + <DefaultStyle /> + <DefaultLanguage>Language.Русский</DefaultLanguage> + <BriefInformation /> + <DetailedInformation /> + <Copyright /> + <VendorInformationAddress /> + <ConfigurationInformationAddress /> + <DataLockControlMode>Managed</DataLockControlMode> + <ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode> + <ModalityUseMode>DontUse</ModalityUseMode> + <SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode> + <InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode> + <DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode> + <CompatibilityMode>Version8_3_24</CompatibilityMode> + <DefaultConstantsForm /> + </Properties> + <ChildObjects> + <Language>Русский</Language> + <DataProcessor>Задачи</DataProcessor> + </ChildObjects> + </Configuration> +</MetaDataObject> \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи.xml b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи.xml new file mode 100644 index 00000000..7c3fb9e4 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17"> + <DataProcessor uuid="UUID-001"> + <InternalInfo> + <xr:GeneratedType name="DataProcessorObject.Задачи" category="Object"> + <xr:TypeId>UUID-002</xr:TypeId> + <xr:ValueId>UUID-003</xr:ValueId> + </xr:GeneratedType> + <xr:GeneratedType name="DataProcessorManager.Задачи" category="Manager"> + <xr:TypeId>UUID-004</xr:TypeId> + <xr:ValueId>UUID-005</xr:ValueId> + </xr:GeneratedType> + </InternalInfo> + <Properties> + <Name>Задачи</Name> + <Synonym> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Задачи</v8:content> + </v8:item> + </Synonym> + <Comment /> + <UseStandardCommands>false</UseStandardCommands> + <DefaultForm>DataProcessor.Задачи.Form.Форма</DefaultForm> + <AuxiliaryForm /> + <IncludeHelpInContents>false</IncludeHelpInContents> + <ExtendedPresentation /> + <Explanation /> + </Properties> + <ChildObjects> + <Form>Форма</Form> + </ChildObjects> + </DataProcessor> +</MetaDataObject> diff --git a/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Ext/ManagerModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма.xml new file mode 100644 index 00000000..dffeea01 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17"> + <Form uuid="UUID-001"> + <Properties> + <Name>Форма</Name> + <Synonym> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Форма</v8:content> + </v8:item> + </Synonym> + <Comment/> + <FormType>Managed</FormType> + <IncludeHelpInContents>false</IncludeHelpInContents> + <UsePurposes> + <v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value> + <v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value> + </UsePurposes> + <ExtendedPresentation/> + </Properties> + </Form> +</MetaDataObject> \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form.xml new file mode 100644 index 00000000..8474e7bf --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17"> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Список задач</v8:content> + </v8:item> + + false + + + + Список + + + + + + + + Список.Наименование + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Срок</v8:content> + </v8:item> + + Horizontal + + + + Список.ДатаНачала + + + + + Список.ДатаОкончания + + + + + + + InCell + true + + + + Список.Исполнитель + + + + + + +
+
+ + + + cfg:DataProcessorObject.Задачи + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Список</v8:content> + </v8:item> + + + v8:ValueTable + + + + + xs:string + + 150 + Variable + + + + + + xs:dateTime + + Date + + + + + + xs:dateTime + + Date + + + + + + xs:string + + 100 + Variable + + + + + + + diff --git a/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/DataProcessors/Задачи/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/column-group/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/column-group/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/column-group/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/column-group/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/column-group/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-edit/snapshots/add-attribute/DataProcessors/Реквизиты/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-edit/snapshots/add-attribute/DataProcessors/Реквизиты/Forms/Форма/Ext/Form.xml index 8662890e..d98cb53b 100644 --- a/tests/skills/cases/form-edit/snapshots/add-attribute/DataProcessors/Реквизиты/Forms/Форма/Ext/Form.xml +++ b/tests/skills/cases/form-edit/snapshots/add-attribute/DataProcessors/Реквизиты/Forms/Форма/Ext/Form.xml @@ -6,6 +6,7 @@ Реквизиты + false diff --git a/tests/skills/cases/form-edit/snapshots/add-command/DataProcessors/КомандыТест/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-edit/snapshots/add-command/DataProcessors/КомандыТест/Forms/Форма/Ext/Form.xml index 879080c9..bc58ec44 100644 --- a/tests/skills/cases/form-edit/snapshots/add-command/DataProcessors/КомандыТест/Forms/Форма/Ext/Form.xml +++ b/tests/skills/cases/form-edit/snapshots/add-command/DataProcessors/КомандыТест/Forms/Форма/Ext/Form.xml @@ -6,6 +6,7 @@ Команды + false