From c8ac191a0133df4d890f5a9a7c4c0f3540c91dfa Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 7 May 2026 18:29:52 +0300 Subject: [PATCH] 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)