Files
agentic-codemod-pipeline/.apm/skills/sdk-version-upgrade/SKILL.md
T
2026-08-29 13:17:59 +02:00

53 lines
2.4 KiB
Markdown

---
name: sdk-version-upgrade
description: Podniesienie wersji SDK lub biblioteki wraz z migracją wywołań API - planowanie zmiany, kolejność edycji, obsługa breaking changes i kryteria akceptacji. Użyj gdy zadanie mówi o bumpie wersji, upgradzie SDK, migracji do nowego major release lub usunięciu deprecated API.
license: Apache-2.0
allowed-tools:
- read_file
- search_repo
- list_files
- write_file
- replace_in_file
- run_verification
metadata:
owner: pubi-platform
version: "1.0.0"
references: acme-sdk-2.x-migration.md
---
# Upgrade wersji SDK
## Zasada nadrzędna
Upgrade to **dwie rozłączne zmiany**: (a) deklaracja wersji w pliku zależności,
(b) dostosowanie kodu do nowego API. Deklarację wersji ustawia deterministycznie silnik pipeline'u -
Twoim zadaniem jest wyłącznie (b). Nie edytuj ręcznie plików zależności, chyba że plan mówi inaczej.
## Kolejność pracy
1. Przeczytaj notatkę migracyjną dla docelowej wersji z katalogu `references/` tego skilla.
Jeśli brakuje notatki dla danej biblioteki - **zatrzymaj się** i zgłoś `requires_human`.
Nie migruj API "z pamięci modelu".
2. Zbuduj mapę zmian: `stary symbol -> nowy symbol -> plik(i) do zmiany`.
3. Edytuj plik po pliku, najmniejszą możliwą zmianą (`replace_in_file`, nie przepisywanie pliku).
4. Po każdym pliku uruchom weryfikację (`run_verification`). Czerwony wynik naprawiaj natychmiast,
zanim przejdziesz dalej - kumulowanie błędów uniemożliwia ustalenie przyczyny.
5. Na koniec sprawdź, czy nie zostały użycia starego API: `search_repo` po każdym symbolu z mapy.
## Breaking changes - reguły decyzyjne
| Sytuacja | Działanie |
|---|---|
| Zmiana nazwy klasy/metody, ta sama semantyka | Migruj bezpośrednio |
| Zmiana nazw parametrów | Migruj, zachowując wartości wywołań 1:1 |
| Zasób wymaga teraz zamknięcia / context managera | Użyj `with`, nie dodawaj ręcznego `close()` |
| Nowy wymagany parametr bez sensownej wartości domyślnej | `requires_human` - to decyzja biznesowa |
| Usunięta funkcjonalność bez zamiennika | `requires_human`, nie obchodź problemu własną implementacją |
## Kryteria akceptacji
- Wszystkie testy repozytorium zielone.
- Zero wystąpień starych symboli poza plikami changelog/dokumentacji.
- Diff nie zawiera zmian niezwiązanych z migracją.
- Deklarowana wersja zależności odpowiada wersji docelowej z zadania.