Migracja z Devin Desktop (dawniej Windsurf)
Migracja z Devin Desktop, edytora Cognition noszącego do czerwca 2026 nazwę Windsurf, polega na przeniesieniu każdego pliku z .windsurf/rules/ według wartości pola trigger do plików instrukcji, reguł dla ścieżek albo skilli, zamianie .windsurf/workflows/ na skille i ponownym dodaniu serwerów MCP w każdym narzędziu. Migracja jest skończona, gdy test zachowania dowodzi, że Claude Code, Codex lub Cursor stosuje te same reguły.
Twój zespół przeszedł na Windsurf w zeszłym roku. Edytor zaktualizował się tymczasem do Devin Desktop, w repozytorium leży 14 plików w .windsurf/rules/ z czterema różnymi wartościami trigger i sześć workflow wywoływanych jak komendy w .windsurf/workflows/, a połowa zespołu chce teraz Claude Code albo Codex. Sklejenie plików reguł w jeden AGENTS.md wygląda na pięć minut pracy, dopóki agent nie zacznie stosować reguł pisanych dla Go do TypeScriptu i pomijać tych, które zawsze ładowały się tylko na żądanie.
Ta strona jest dla programisty, który przeprowadza przenosiny, i dla tech leada, który musi zachować reguły zespołu, gdy ludzie przechodzą w różnym tempie. Dotyczy tego, co trzeba zmienić w repozytorium; porównanie produktów znajdziesz w artykule Cursor, Claude Code i Codex vs Devin Desktop (dawniej Windsurf).
Co obejmuje ten przewodnik migracji
Dział zatytułowany „Co obejmuje ten przewodnik migracji”- Tabelę decyzji: zmieniać edytor czy dodać agenta terminalowego obok Devin Desktop
- Mapowanie reguł Windsurf według triggera na
AGENTS.md,CLAUDE.md, reguły ograniczone do ścieżek i skille - Cztery prompty do skopiowania: inwentaryzacja i przeniesienie reguł, zamiana workflow na skille, dowód, że reguły działają, i pierwsze zlecone zadanie z dowodami
- Komendy MCP dla Claude Code i Codexa oraz bramki weryfikacji, dzięki którym migrację da się udowodnić
- Typowe awarie zespołu w połowie migracji i sposób wyjścia z każdej z nich
Czy trzeba porzucić edytor, żeby zmienić agenta?
Dział zatytułowany „Czy trzeba porzucić edytor, żeby zmienić agenta?”Niekoniecznie. Zanim przeniesiesz jakikolwiek plik, zdecyduj, co właściwie wymieniasz.
| Sytuacja | Co zrobić |
|---|---|
| Lubisz edytor i chcesz mocniejszego agenta terminalowego | Zostań przy Devin Desktop i uruchamiaj Claude Code albo Codex obok niego w terminalu (albo w terminalu edytora, jeśli twoja wersja nadal go ma). README Codexa od OpenAI wymienia Windsurf wśród edytorów obsługiwanych przez rozszerzenie IDE (sprawdzone 2026-09-26). Przenieś reguły tak, żeby czytali je obaj agenci. |
| Chcesz agenta w IDE z uzupełnianiem inline | Przejdź na Cursora, jedyny z tej trójki, który jest edytorem. Jego modeli i cen nie dało się ponownie zweryfikować 2026-09-26, więc przed zakupem sprawdź cursor.com. |
| Chcesz agentów w CI, uruchomień według harmonogramu albo skryptów bez interfejsu | Dodaj Claude Code (claude -p) albo Codex (codex exec). Oba działają bez edytora; jeśli zostajesz przy Cognition, porównaj je z Devin CLI w przeglądzie agentów do kodowania. |
| Zależysz od modelu, który oferuje tylko Cognition, np. SWE-2 (w Devin Desktop i Devin CLI; premiera 2026-09-10 według aipricing.guru, źródło wtórne) | Zostaw tę pracę w Devin Desktop, dopóki twoje własne ewaluacje nie pokażą, że zamiennik mu dorównuje. Przegląd modeli pokazuje, na czym działa każde narzędzie. |
| Porównujesz więcej niż wielką trójkę | Zacznij od przeglądu agentów do kodowania, który obejmuje też Devin i Devin CLI. |
Zacznij od domyślnego modelu każdego narzędzia: Claude Opus 5.5 w Claude Code (od v2.1.280 w kanale wydań latest) i GPT-6 Astra w Codexie. Najpierw dostrój poziom wysiłku (effort), a model zmieniaj dopiero wtedy, gdy każą ci to twoje ewaluacje.
Jak triggery reguł Windsurf przekładają się na Claude Code, Codexa i Cursora?
Dział zatytułowany „Jak triggery reguł Windsurf przekładają się na Claude Code, Codexa i Cursora?”Plik reguły Windsurf ma we frontmatterze pole trigger, które decyduje, kiedy agent go widzi. Miejsce docelowe zależy od triggera, nie od pliku. Spłaszczenie wszystkich plików do jednego pliku instrukcji to najczęstszy błąd migracji, bo reguły ładowane na żądanie stają się stale obecnym szumem.
trigger w Windsurf | Claude Code | Codex | Cursor |
|---|---|---|---|
always_on | CLAUDE.md (pierwsza linia @AGENTS.md) | Główny AGENTS.md | Reguła stosowana zawsze |
glob z globs: | .claude/rules/NAME.md z listą paths: we frontmatterze | AGENTS.md w katalogu objętym globem | Reguła ograniczona do tych samych globów |
model_decision z description: | Skill w .claude/skills/NAME/SKILL.md; jego description decyduje, kiedy się ładuje | Skill w .agents/skills/NAME/SKILL.md | Skill w .agents/skills/NAME/ (ta sama kopia co dla Codexa) albo reguła, o którą agent prosi na podstawie opisu |
manual | Skill z disable-model-invocation: true, wywoływany jako /NAME | Skill wywoływany przez $NAME albo wybierany z /skills | Skill w .agents/skills/NAME/ albo reguła wskazana wprost |
.windsurf/workflows/NAME.md (workflow /NAME) | Skill | Skill | Skill |
| Automatycznie tworzone Memories | Przejrzyj i trwałe przenieś do AGENTS.md; dalej przejmuje je auto memory Claude Code | Przenieś do AGENTS.md | Przenieś do reguły |
Reguła glob, która odpowiada jednemu katalogowi, staje się w Codexie zagnieżdżonym AGENTS.md w tym katalogu. Glob po rozszerzeniu albo obejmujący wiele katalogów, np. **/*.go czy **/*.test.ts, nie ma odpowiednika w Codexie, bo Codex zawęża AGENTS.md według katalogu, a nie wzorca plików (codex-cli 0.157.1, sprawdzone 2026-09-26): zapisz go jako warunkową linię w głównym AGENTS.md („When editing *.go files: …”) albo jako skill i sprawdź pytaniem 3 promptu dowodowego poniżej.
Lokalizacje dla Claude Code i Codexa sprawdziliśmy 2026-09-26 na zainstalowanych CLI (Claude Code 2.1.283, codex-cli 0.157.1). Claude Code sam czyta AGENTS.md tylko wtedy, gdy nie ma CLAUDE.md, i dopiero od v2.1.277 (sesje first-party) albo v2.1.281 (Bedrock, Google Cloud, Foundry i bramki LLM), w obu przypadkach tylko w kanale latest, dlatego tabela kieruje go przez import @AGENTS.md, który działa w obu kanałach. Formatu plików reguł Cursora nie dało się ponownie zweryfikować 2026-09-26: utwórz jedną regułę w ustawieniach reguł Cursora, a potem każ agentowi skopiować ten format. To samo dotyczy lokalizacji skilli w Cursorze: fragment dokumentacji Cursora wymienia .agents/skills/, a także .claude/skills/, ale nie udało się tego ponownie zweryfikować 2026-09-26, więc sprawdź, czy Cursor widzi przeniesione skille, zanim zaczniesz na nich polegać.
Przenieś repozytorium w pięciu krokach
Dział zatytułowany „Przenieś repozytorium w pięciu krokach”-
Zinwentaryzuj wszystko, co pochodzi z Windsurf. Uruchom to w terminalu w katalogu głównym repozytorium. Pierwsze polecenie wypisuje pliki reguł, workflow i instrukcji ze wszystkich katalogów, nie tylko z głównego:
Okno terminala find . -path ./node_modules -prune -o -type f \( -path '*/.windsurf/*' -o -path '*/.devin/*' -o -name '.windsurfrules' -o -name 'AGENTS.md' -o -name 'CLAUDE.md' \) -printfind . -path ./node_modules -prune -o -type f \( -path '*/.windsurf/rules/*' -o -path '*/.devin/rules/*' \) -exec grep -h '^trigger:' {} + | sort | uniq -cDrugie polecenie liczy reguły według triggera we wszystkich katalogach, także w zagnieżdżonych folderach
.windsurf/w monorepo, więc wiesz, ile trafi do każdej kolumny tabeli powyżej. Reguły globalne, Memories i serwery MCP są w ustawieniach edytora na komputerze każdego inżyniera, nie w gicie. Wyeksportuj je z każdej maszyny, zanim ktokolwiek odinstaluje edytor. -
Przenieś reguły według triggera. Uruchom pierwszy prompt poniżej w agencie, na którego przechodzisz. Zapisuje pliki docelowe i tabelę mapowania, którą sprawdzasz zamiast czytać każdą regułę.
-
Zamień workflow na skille. Uruchom drugi prompt. Workflow Windsurf to nazwana, powtarzalna procedura, czyli dokładnie to, czym jest Agent Skill. Jeśli zespół używa i Claude Code, i Codexa, trzymaj jedną kopię każdego skilla i sprawdź wykrywanie w obu narzędziach: wpisz
/w Claude Code i uruchom/skillsw Codexie. -
Dodaj ponownie serwery MCP w każdym narzędziu. Konfiguracja MCP nie przechodzi między edytorami. Dodaj każdy serwer od nowa, a sekrety czytaj ze zmiennych środowiskowych, nigdy z linii poleceń. Przykład używa serwera Playwright MCP (
@playwright/mcp).Uruchom w terminalu.
--scope projectzapisuje.mcp.jsonw katalogu głównym repozytorium, więc cały zespół dostaje serwer z gita.Okno terminala claude mcp add --scope project playwright -- npx @playwright/mcp@latestUruchom w terminalu. Codex zapisuje wpis w
~/.codex/config.toml, więc każdy inżynier robi to raz u siebie.Okno terminala codex mcp add playwright -- npx @playwright/mcp@latestDodaj serwer w ustawieniach MCP Cursora z poleceniem
npx @playwright/mcp@latest. Format konfiguracji sprawdź na cursor.com/docs/mcp; nie był ponownie weryfikowany 2026-09-26.Które serwery w ogóle warto dodać, opisuje artykuł o niezbędnych serwerach MCP.
-
Udowodnij, że reguły działają, i dopiero wtedy commituj. Uruchom trzeci prompt w świeżej sesji. Commituj nowe pliki dopiero wtedy, gdy każda sprawdzana reguła ma odpowiedź z właściwego źródła. Zostaw
.windsurf/rules/na miejscu, dopóki ostatni inżynier nie przejdzie.
Jak udowodnić, że przeniesione reguły naprawdę działają?
Dział zatytułowany „Jak udowodnić, że przeniesione reguły naprawdę działają?”Tabela mapowania pokazuje, dokąd trafiła każda reguła. Nie pokazuje, że agent ją czyta. Zadaj w świeżej sesji, bez innego kontekstu, pytania, na które poprawna odpowiedź wynika tylko z konkretnych reguł, i wymagaj, żeby agent wskazał plik.
Zamień src/api/ i web/ na dwa katalogi objęte twoimi regułami glob. Pytanie 3 wyłapuje spłaszczenie: jeśli agent stosuje regułę tylko dla Go albo tylko dla API do docs/, reguła ograniczona do ścieżek stała się globalna. Odpowiedź RULE_NOT_LOADED przy regule always_on oznacza, że plik instrukcji nie jest czytany; zobacz awarie opisane niżej.
Potem daj agentowi prawdziwe zadanie z kryteriami akceptacji, takie, jakie wcześniej zlecałeś Cascade, i oceń je po dowodach, a nie po lekturze diffa.
Zacznij w trybie planowania, żeby nic nie zostało zmienione przed akceptacją planu. Shift+Tab przełącza tryby w trwającej sesji, a /rewind (Esc Esc) przywraca checkpoint, jeśli agent pójdzie w złą stronę.
claude --permission-mode planUruchom prompt interaktywnie, żeby zatwierdzić plan przed jakąkolwiek zmianą.
codexcodex exec nie wykona tego promptu w obecnej postaci: działa bez interakcji, więc nie poczeka na akceptację, a uruchomienie w piaskownicy może nie mieć sieci, żeby otworzyć pull request. Do uruchomienia bez interfejsu usuń zdanie „Plan first and wait for my approval”, a „Open a pull request” zamień na „Write the evidence to EVIDENCE.md and stop”. Resztę konfiguracji opisuje strona Codex bez interakcji: codex exec.
Wklej prompt do agenta z włączonym Plan Mode; dokumentacja Cursora (stan na 2026-08-28) opisuje Plan Mode jako tryb, który tworzy szczegółowy plan implementacji przed napisaniem jakiegokolwiek kodu („creates detailed implementation plans before writing any code”). Zatwierdź plan, a potem pozwól agentowi uruchomić testy.
Jak weryfikować pracę agenta po migracji bez czytania każdej linii?
Dział zatytułowany „Jak weryfikować pracę agenta po migracji bez czytania każdej linii?”Edytor się zmienia, bramki zostają. Ustaw je, zanim zostanie scalony pierwszy pull request po migracji.
- Kryteria akceptacji przed kodem. Każde zlecone zadanie wymienia swoje kryteria i polecenie, które dowodzi każdego z nich, jak w prompcie powyżej. Zobacz kryteria akceptacji, które agent potrafi sprawdzić.
- Wymagane kontrole w CI. Sprawdzanie typów, lint i testy blokują scalenie niezależnie od tego, który agent lub edytor napisał kod.
- Pakiet dowodów w każdym pull requeście. Każde kryterium jest przypisane do testu i jego wyniku, więc recenzent sprawdza przypisanie. Zobacz pakiet dowodów.
- Kontrola reguł w CI. Zapisz prompt dowodowy jako
.github/rules-check.md, uruchamiaj go bez interfejsu po każdej zmianie plików instrukcji, a zadanie CI niech kończy się błędem, gdy w odpowiedzi pojawi się token kontrolny:claude -p "$(cat .github/rules-check.md)" > rules-check.txt && ! grep -q 'RULE_NOT_LOADED' rules-check.txt. Unikalny token chroni przed fałszywym błędem, gdy poprawna odpowiedź brzmi np. „te reguły nie dotyczą docs/”. Uruchomienie bez interfejsu wymagaANTHROPIC_API_KEYjako sekretu CI. W zespole, który używa tylko Codexa, odpowiednikiem jestcodex exec "$(cat .github/rules-check.md)" > rules-check.txt && ! grep -q 'RULE_NOT_LOADED' rules-check.txtz sekretemCODEX_API_KEY. Projekt musi być oznaczony jako zaufany w konfiguracji Codexa na runnerze, bo od codex-cli 0.150.0 niezaufany projekt nie dostarczaAGENTS.mdi każda odpowiedź wraca jakoRULE_NOT_LOADED. Uwierzytelnianie i resztę konfiguracji CI opisuje uruchamianie Codexa bez interfejsu. - Chronione testy. Agent nie może osłabiać testu, żeby go przejść; reguła w
AGENTS.mdi CODEOWNERS na katalogach testów sprawiają, że takie zmiany są widoczne. Zobacz ochronę wyroczni testowej. - Akceptacja człowieka tam, gdzie testy nie sięgają. Inżynier, który zlecił zadanie, zatwierdza dowody i czyta diff tylko przy uwierzytelnianiu, migracjach danych, rozliczeniach i zmianach publicznego API. Listę kontrolną ma przegląd pull requestów od agentów.
Co się psuje, gdy zespół odchodzi od Devin Desktop?
Dział zatytułowany „Co się psuje, gdy zespół odchodzi od Devin Desktop?”Każda reguła stała się stale aktywna. Ktoś skleił .windsurf/rules/*.md w AGENTS.md, a agent stosuje teraz reguły frameworka do niewłaściwych plików, podczas gdy kontekst zapełniają reguły, których nie potrzebuje. Naprawa: uruchom ponownie prompt przenoszący reguły na oryginalnych plikach i sprawdź pytanie 3 z promptu dowodowego.
Claude Code nie widzi reguł. U inżynierów w kanale stable (v2.1.274 na 2026-09-26) Claude Code nie odczyta AGENTS.md samodzielnie (gdy brak CLAUDE.md), a CLAUDE.md bez importu ukrywa AGENTS.md w każdym kanale. Naprawa: zaczynaj każdy CLAUDE.md od @AGENTS.md i dodaj krok CI, który w przeciwnym razie kończy się błędem (head -n 1 CLAUDE.md | grep -qx '@AGENTS.md').
Codex ignoruje AGENTS.md w świeżym klonie. Od codex-cli 0.150.0 niezaufane projekty nie dostarczają instrukcji AGENTS.md na poziomie projektu. Naprawa: oznacz projekt jako zaufany, gdy Codex o to zapyta, i uruchom ponownie prompt dowodowy.
Reguły rozjeżdżają się między .windsurf/ a nowymi plikami. W okresie przejściowym ktoś zmienia polecenie testów tylko w jednym miejscu. Naprawa: od pierwszego dnia uznaj nowe pliki za źródło prawdy, na początku każdego pliku w .windsurf/rules/ dodaj notkę wskazującą jego nowe miejsce i usuń .windsurf/, gdy przejdzie ostatni inżynier.
Brakuje serwerów MCP. Nowy agent nie sięga do bazy danych ani przeglądarki, które miała stara konfiguracja, bo konfiguracja MCP żyła w ustawieniach edytora. Naprawa: odtwórz listę z eksportów z kroku 1 i dodaj .mcp.json Claude Code do repozytorium (commit), żeby następna osoba dostała go z gita.
Memories znikają. Wiedza, którą edytor wygenerował sam, nigdy nie trafiła do gita. Naprawa: przed odinstalowaniem każdy inżynier przegląda swoje Memories i przenosi trwałe (polecenia, konwencje, znane pułapki) do AGENTS.md zwykłym pull requestem.
Skrót workflow nic nie robi. Wpisanie /deploy-preview w Claude Code (albo $deploy-preview w Codexie) nic nie daje, bo opis albo katalog skilla jest błędny. Naprawa: sprawdź wykrywanie przez / w Claude Code albo /skills w Codexie i popraw pola name i description we frontmatterze.
Dokąd dalej po Devin Desktop
Dział zatytułowany „Dokąd dalej po Devin Desktop”Instalację nowego agenta zacznij od szybkiego startu z Claude Code, szybkiego startu z Codexem albo szybkiego startu z Cursorem. Jeśli zespół w okresie przejściowym używa dwóch agentów, artykuł o dodaniu Claude Code lub Codexa obok GitHub Copilota pokazuje ten sam wzorzec pilotażu i metryk.