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)