К основному содержанию
скилл CX Codex

upstream-patches — скилл для Claude Code: что делает и как установить

Управляет патчами для подмодулей Terraform-провайдеров через ./scripts/upstream.sh. Помогает при обновлении провайдера, конфликтах и удалении правок.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add pulumi/agent-skills --skill upstream-patches -a claude-code
Открыть на GitHub

Что делает upstream-patches

Скилл инструктирует агента, как безопасно менять код в подмодуле upstream/ и каталоге patches/. Он находит нужный патч через поиск по файлам утилитами rg или grep, переключает окружение скриптом ./scripts/upstream.sh checkout и точечно дополняет коммит через git commit --amend, вместо того чтобы плодить новые файлы правок.

Прямые правки в upstream/ стираются при запуске upgrade-provider, потому что инструмент сбрасывает состояние подмодуля. Любые изменения требуют строгого цикла checkout и check_in. Если агент столкнулся с прерванным процессом, вызов ./scripts/upstream.sh init -f удалит все незавершённые правки и метаданные — поэтому сброс применяют только осознанно.

Какие задачи решает

  • найти файл патча и исходный коммит по затронутой строке
  • исправить регрессию внутри существующего патча без создания лишних файлов
  • удалить ненужный файл или фрагмент кода из конкретного патча
  • перебазировать набор патчей на свежий коммит апстрима

Примеры запросов агенту

  • Найди патч, который меняет resource_server.go, и внеси в него исправление
  • Перебазируй патчи провайдера на апстрим-коммит a1b2c3d
  • Удали патч patches/0002-fix-timeout.patch и синхронизируй состояние через ./scripts/upstream.sh

Как установить upstream-patches

1Через Skills CLI (Vercel)

npx skills add pulumi/agent-skills --skill upstream-patches -a claude-code

2Вручную: положить файлы

~/.claude/skills/upstream-patches/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/upstream-patches/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о upstream-patches

Как установить upstream-patches в Claude Code?

Выполните команду npx skills add pulumi/agent-skills --skill upstream-patches -a claude-code.

Зачем нужен скилл upstream-patches?

Он задаёт правила работы с подмодулями Terraform-провайдеров через ./scripts/upstream.sh. Агент сохраняет чистую историю Git и аккуратно обновляет существующие патчи при запусках upgrade-provider.

Почему нельзя просто отредактировать файлы в каталоге upstream?

Без команд ./scripts/upstream.sh checkout и ./scripts/upstream.sh check_in изменения не сохранятся в патчах. При следующем запуске upgrade-provider утилита сбросит подмодуль и все прямые правки сотрутся.

Исходный текст

SKILL.md · Apache-2.0
---
name: upstream-patches
description: Create, amend, remove, and rebase patches for Terraform provider submodules using `./scripts/upstream.sh`. Use when `upgrade-provider` or manual patch work needs owning-patch lookup, patch conflict fixes, patch/hunk removal, or upstream rebase.
---

# Upstream Patches

`upstream/` is a git submodule pointing to the upstream Terraform provider. `patches/` contains patch files applied on top of it. Use `./scripts/upstream.sh` to manage patch state.

## Default Behavior

- If fixing a regression introduced by an existing patch, amend the owning patch commit.
- Do not create a new patch unless the user explicitly asks.

## Commands Reference

| Command | Description |
|---------|-------------|
| `./scripts/upstream.sh init` | Initialize upstream and apply patches to working directory |
| `./scripts/upstream.sh init -f` | Destructively discard checkout/rebase state and re-initialize upstream |
| `./scripts/upstream.sh checkout` | Create branch with patches as commits for editing |
| `./scripts/upstream.sh rebase -i` | Interactively edit patch commits |
| `./scripts/upstream.sh rebase -o <commit>` | Rebase patches onto a new upstream commit |
| `./scripts/upstream.sh check_in` | Write commits back to patches and exit checkout mode |

## Guardrails

- Never commit directly to `upstream/` without `checkout/check_in`.
- Direct edits under `upstream/` outside checkout are ephemeral during `upgrade-provider`; the tool resets submodule state.
- Do not hand-edit `patches/*.patch` unless intentionally doing raw patch surgery.
- Prefer non-interactive rewrite flow over interactive rebase for agents.

## Find Owning Patch First

Before editing patch content, identify the owning patch/commit.

```bash
./scripts/upstream.sh checkout

# Find candidate patch files by touched file path or unique hunk text
rg -n "path/to/file|unique_symbol" patches/*.patch

# Optional: inspect candidate patch header/hunks
sed -n '1,120p' patches/00NN-Example.patch

# Map patch file to commit in upstream checkout branch
patch=patches/00NN-Example.patch
subject=$(sed -n 's/^Subject: \[PATCH\] //p' "$patch" | head -n1)
cd upstream
git log --oneline pulumi/patch-checkout --grep "$subject"

# If needed, disambiguate by touched path
git log --oneline pulumi/patch-checkout -- path/to/file
cd ..
```

If `rg` is unavailable, use `grep -En` for the patch search. Set `target_sha` to the owning commit and edit that commit, not `HEAD`.

## Amend Existing Patch (Preferred, Non-Interactive)

```bash
./scripts/upstream.sh checkout
cd upstream

target_sha=<owning-commit-sha>
base_sha=$(git rev-parse "${target_sha}^")
tmp_branch="rewrite-${target_sha:0:8}"

# Rebuild history from parent of target commit
git checkout -b "$tmp_branch" "$base_sha"
git cherry-pick "$target_sha"

# Apply fix and amend target commit
# ...edit files...
git add <files>
git commit --amend --no-edit

# Replay remaining commits
git cherry-pick "${target_sha}..pulumi/patch-checkout"

# If cherry-pick conflicts occur:
#   resolve files
#   git add <resolved files>
#   git cherry-pick --continue

# Move checkout branch to rewritten history
git branch -f pulumi/patch-checkout HEAD
git checkout pulumi/patch-checkout
git branch -D "$tmp_branch"
cd ..
```

Interactive fallback:

```bash
./scripts/upstream.sh checkout
./scripts/upstream.sh rebase -i
# mark target commit as edit, amend, then continue
```

## Remove Entire Patch

Use when a patch should be deleted completely.

```bash
rm patches/00NN-Description.patch
./scripts/upstream.sh checkout
./scripts/upstream.sh check_in
```

## Remove Part of a Patch

Use when only selected hunks/files should be removed from an existing patch.

1. Find owning patch/commit (`target_sha`) and use the amend workflow above.
2. Revert only unwanted changes from the target commit, then amend.

Example during amend step:

```bash
cd upstream
# Restore specific docs-only files from parent of amended commit
git checkout HEAD^ -- path/to/docs-only-file path/to/another-doc-file
git add path/to/docs-only-file path/to/another-doc-file
git commit --amend --no-edit
cd ..
```

## Create New Patch (Only If Requested)

```bash
./scripts/upstream.sh checkout
cd upstream
# ...make changes...
git add <files>
git commit -m "Describe new patch"
cd ..
./scripts/upstream.sh check_in
```

## Rebasing Patches to a New Upstream Version

```bash
./scripts/upstream.sh checkout

# Rebase onto the new upstream commit
./scripts/upstream.sh rebase -o <new_commit_sha>
# Resolve any conflicts that arise

# Write updated patch files
./scripts/upstream.sh check_in
```

## Verification Checklist

Before `check_in`:

- Confirm expected patch count change (`0` by default; `-1` for full patch removal).
- Confirm whether target patch should remain present (default yes) or be removed (explicit deletion case).
- Confirm you are editing the owning commit, not adding a new commit by accident.

After `check_in`:

- Verify patch count matches expectation.
- Verify target patch number/purpose is still present when expected.
- Verify no unexpected new `00NN-*.patch` was introduced.

## Interrupted Checkout or Rebase

Preserve work by default. Inspect `git -C upstream status`, complete the active `git am`/rebase, verify that every patch was applied, and run `./scripts/upstream.sh check_in` before rerunning automation. An interrupted checkout invokes `git am` separately for each patch, so later patch files may not have been reached.

Use `./scripts/upstream.sh init -f` only when intentionally discarding all interrupted work. It can remove conflict resolution, patch commits, operation metadata, and untracked files; it is not routine recovery for a stuck checkout.

© pulumi · Apache-2.0 · pulumi/agent-skills

Похожие скиллы

Все скиллы по теме «Git и GitHub» →
triage Matt Pocock Скилл проводит issue и внешние PR через роли триажа, проверку и подготовку брифа для агента. Подойдёт мейнтейнеру, который разбирает очередь задач. 990 453установок code-review Matt Pocock Проверяет изменения от выбранной точки по стандартам репозитория и требованиям задачи. Нужен для ревью ветки, PR или незавершённой работы. 789 521установок implement Matt Pocock Выполняет задачу по спецификации или тикетам, ведёт работу через тесты и завершает её ревью с коммитом. Подходит для задач, где нужен дисциплинированный цикл разработки. 774 700установок git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. 499 069установок setup-pre-commit Matt Pocock Скилл настраивает pre-commit для JavaScript-репозитория: Husky запускает форматирование, проверку типов и тесты перед коммитом. 489 289установок scaffold-exercises Matt Pocock Скилл создаёт структуру учебных упражнений с секциями, задачами, решениями и пояснениями. Пригодится при запуске нового раздела курса. 480 196установок

Из того же набора15

pulumi-cdk-to-pulumi Переводит приложение AWS CDK на Pulumi: собирает ресурсы из CloudFormation, конвертирует код и отдаёт отчёт для пул-реквеста. CX Codex +1 897установок cloudformation-to-pulumi Переносит шаблоны и активные стеки CloudFormation в код Pulumi. Помогает подготовить TypeScript-ресурсы для cdk-importer и сверить импорт без расхождений. CX Codex +1 888установок provider-upgrade Помогает поднять версию Pulumi-провайдера и разобрать диффы в preview, чтобы в облаке ничего не пересоздалось. CX Codex +1 848установок package-usage Находит стеки внутри организации Pulumi, которые используют указанный пакет, и проверяет актуальность их версий перед обновлениями. CX Codex +1 827установок pulumi-upgrade-provider Гоняет upgrade-provider --no-submit по репозиторию провайдера Pulumi, чинит типовые сбои и доводит прогон до локального результата. CX Codex +1 693установок pulumi-overview Руководство для ИИ-агентов по управлению облачной инфраструктурой через Pulumi: от разовых команд в CLI до многокомпонентных проектов. CX Codex +1 573установок pulumi-neo-handoff Передаёт текущую задачу из Claude в новую задачу Pulumi Neo одним промптом. Односторонний хендофф: управление уходит к Neo и не возвращается. CX Codex +1 435установок pulumi-debug-failed-operation Скилл читает запись об упавшем pulumi up или pulumi preview, находит причину и подсказывает, где её править. CX Codex +1 352установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой