feat: initial commit

This commit is contained in:
2026-08-29 13:17:59 +02:00
commit 142f5f5759
91 changed files with 6155 additions and 0 deletions
@@ -0,0 +1,31 @@
# Maszynowo wykonywalna wersja notatki migracyjnej acme-sdk-2.x-migration.md.
#
# Zasada architektoniczna: co da się zmigrować deterministycznie, migrujemy regułą,
# a nie modelem. LLM jest od reszty - od przypadków, których reguła nie obejmuje,
# i od oceny, czy wynik ma sens. Reguły są częścią pakietu APM, więc podlegają
# temu samemu wersjonowaniu i przeglądowi co skill.
package: acme-sdk
applies_to: ">=2.0.0,<3.0.0"
file_glob: "*.py"
rules:
- id: import-client
description: "Client -> AcmeClient w imporcie"
pattern: '\bfrom acme import Client\b'
replacement: 'from acme import AcmeClient'
- id: constructor
description: "Konstruktor: nowa nazwa klasy, endpoint -> base_url"
pattern: '\bClient\(\s*api_key=(?P<key>[^,]+),\s*endpoint=(?P<endpoint>[^)]+)\)'
replacement: 'AcmeClient(api_key=\g<key>, base_url=\g<endpoint>)'
- id: send-message
description: "send() -> messages.create() z nowymi nazwami parametrów"
pattern: '\.send\(\s*to=(?P<to>[^,]+),\s*body=(?P<body>[^)]+)\)'
replacement: '.messages.create(recipient=\g<to>, content=\g<body>)'
- id: drop-close
description: "Klient 2.x zwalnia zasoby automatycznie - close() usunięte z API"
pattern: '^[ \t]*[A-Za-z_][A-Za-z0-9_]*\.close\(\)[ \t]*\n'
replacement: ''
multiline: true
- id: response-attribute
description: "Odpowiedź jest obiektem Message, nie słownikiem"
pattern: '(?P<var>\b[a-z_][a-z0-9_]*)\[[''"]id[''"]\]'
replacement: '\g<var>.id'