이 이동이 컨텍스트를 잃는 이유
Replit의 가치는 환경에 있으며, 그 환경은 뒤에 남겨집니다
Replit은 아이디어와 배포된 URL 사이의 거리를 좁히는 데 가장 강력합니다. 런타임, 데이터베이스, 보안 비밀(secrets), 배포 대상이 모두 관리됩니다. 로컬 리포지토리와 터미널 에이전트로 이동하면서 여러분이 의도적으로 포기하는 것이 바로 이것입니다. 제어권을 원하기 때문이죠. 하지만 프로젝트의 실제 동작 중 상당 부분은 해당 관리형 환경에 의해 정의되었으며, 이러한 가정들은 내보내는 코드의 그 어디에도 기록되어 있지 않습니다.
결정은 리포지토리가 아닌 채팅에 남습니다
프로토타입이 어떻게 빌드되었는지 살펴보세요. 의도를 입력하면 에이전트가 코드를 생성하고, 이를 수정하면 그 수정 사항이 메시지가 되었습니다. 리포지토리는 최종 상태를 기록합니다. 채팅은 그 이유를 기록합니다. 리포지토리를 이동하면 무엇(what)은 유지되지만, 로그아웃하려는 플랫폼에 왜(why)는 남겨두게 됩니다.
Claude Code 역시 빈 상태로 시작합니다
이것은 대부분의 마이그레이션 가이드가 생략하는 부분입니다. Claude Code는 각 세션을 히스토리 없이 시작합니다. 프로젝트 루트의 CLAUDE.md와 사용자 수준의 ~/.claude/CLAUDE.md를 읽고, MCP를 통해 연결한 모든 것에 액세스할 수 있지만, Claude Code가 프로젝트 컨텍스트를 잊어버리는 이유에서 설명한 것처럼 세션이 종료되면 누적된 기억은 사라집니다. 컨텍스트가 머무는 위치를 바꾸지 않고 도구만 전환하는 것은 문제를 다른 곳으로 옮기는 것에 불과합니다.
수동 마이그레이션
1단계: 코드 가져오기
가능하면 zip 파일 대신 Replit 자체의 Git 경로를 사용하세요:
- Repl에서 Version Control (Git) 패널을 엽니다.
- GitHub 계정을 연결하고 원격 리포지토리를 생성합니다.
- 푸시(Push)합니다. 그 이후부터는 양방향 동기화가 가능해집니다. Replit의 변경 사항을 푸시할 수 있고, GitHub의 변경 사항을 풀(Pull)할 수 있습니다.
연결이 제대로 작동하지 않으면 Repl을 .zip 파일로 다운로드하여 새 리포지토리에 수동으로 푸시하세요. 그런 다음 로컬에 클론하고 해당 디렉터리에서 Claude Code를 실행합니다. 프로젝트 히스토리를 가져오기 위한 공식 Anthropic 마이그레이션 명령은 없습니다. Claude Code 프로젝트를 재배치하기 위한 몇 가지 커뮤니티 도구가 존재하지만, Replit 내보내기의 경우 일반 Git이 전부입니다.
탭을 닫기 전에 환경이 대신 처리해 주던 작업들을 캡처해 두세요. 환경 변수 및 보안 비밀 이름(값은 제외), 데이터베이스 및 연결 패턴, 배포 대상, 예약된 작업(scheduled jobs), 그리고 Replit이 암묵적으로 처리하던 포트나 빌드 구성 등입니다. 이것들이 로컬 머신에서 가장 먼저 깨지는 가정들입니다.
2단계: CLAUDE.md에서 컨텍스트 재구축하기
이제 마이그레이션이 실제로 성과를 거둘지 결정하는 단계입니다. Replit 채팅 기록을 열고 지난 2주 동안의 내용을 읽으며 한 가지 질문을 떠올려 보세요. 내가 두 번 이상 설명해야 했던 것은 무엇인가? 그 반복이 바로 여러분의 지식 인벤토리입니다.
이를 CLAUDE.md에 다음 세 가지 그룹으로 작성하세요:
- 프로젝트 형태(Project shape) — 서비스가 무엇인지, 데이터 모델은 어떻게 생겼는지, 무엇이 더 이상 사용되지 않는지(deprecated), Replit이 더 이상 처리하지 않는 상황에서 배포 시나리오는 어떻게 되는지.
- 이유가 포함된 결정(Decisions with reasons) — 단순히 "멱등성 키(idempotency keys) 사용"이 아니라 "제공업체가 재시도하여 테스트 중 두 번 중복 결제되었으므로 웹훅에 멱등성 키 적용"과 같이 작성합니다.
- 함정(Traps) — 백필(backfill) 전에 실행해야 하는 마이그레이션, 실패 시 200을 반환하는 엔드포인트, 부하가 걸릴 때 불안정한(flaky) 테스트 등.
개인적인 선호 사항은 ~/.claude/CLAUDE.md에 보관하고, 프로젝트 관련 사실은 리포지토리 파일에 보관하여 팀원들이 여러분의 개인적 습관 없이 프로젝트 정보만 물려받을 수 있도록 하세요.
이것은 아무것도 없이 시작하는 것에 비해 확실한 개선입니다. 하지만 한계도 있습니다. 마크다운 파일은 브리핑 자료일 뿐, 메모리가 아닙니다. 힘든 디버깅 세션이 끝난 후 아무도 이를 업데이트하지 않으며, 세션마다 토큰 비용을 소모할 때까지 크기가 커지고, 장애 검토에 사용하는 어시스턴트나 다음 달에 더 저렴한 모델로 라우팅할 에이전트에는 그 어떤 정보도 전달되지 않습니다.
더 나은 방법: 도구에 종속되지 않는 단일 메모리 레이어
이동 과정에서 실제로 살아남은 것이 무엇인지 주목해 보세요. 바로 파일입니다. CLAUDE.md는 다음 이동에서도 살아남을 것이며, 도구 외부에 보관하는 다른 모든 것도 마찬가지입니다. 이것이 바로 프로젝트 지식을 현재 사용 중인 에이전트 내부가 아닌 메모리 레이어에 두어야 하는 이유입니다. MemoryLake에 한 번 저장해 두면, Claude Code가 MCP를 통해 이를 읽을 수 있으며, 나중에 도입할 다른 도구들도 마찬가지로 읽을 수 있습니다.
1단계: API 키 생성
키를 생성하고 약 30초 만에 첫 번째 요청을 완료하세요.

2단계: 첫 번째 메모리 업로드
프로젝트의 컨텍스트를 담고 있는 문서, 이미지, 파일을 업로드하세요. 방금 작성한 CLAUDE.md, 1단계의 환경 인벤토리, 아키텍처 노트, 프로토타입 단계의 장애 보고서, API 사양서 등이 해당됩니다.

3단계: AI 및 에이전트 연결
Claude, Codex, OpenClaw 및 기타 에이전트가 MCP 또는 API를 통해 해당 메모리에 액세스할 수 있도록 하세요. 클라이언트별 단계는 Claude Code에 메모리를 추가하는 방법을 참조하세요. 그러면 프로젝트가 이미 로드된 상태로 새 세션이 시작되며, 다음 도구 변경 시 재구축 비용 대신 연결 비용만 발생합니다. 동일한 패턴이 다른 코딩 에이전트 이동에도 적용됩니다: Cursor에서 Claude Code로 마이그레이션 및 GitHub Copilot에서 Claude Code로 마이그레이션.

이동에 드는 비용과 절약되는 비용
비용을 솔직하게 계산해 봅시다. Git 내보내기 및 로컬 설정: 1시간 미만. Replit이 처리하던 환경 가정을 복구하는 작업: 반나절(대부분은 실패 시 무언가 빠졌음을 발견하는 데 소요됨). 지식 인벤토리를 CLAUDE.md에 작성하는 작업: 또 다른 반나절(그리고 이 부분만이 복리로 누적되는 가치를 가집니다).
그다음으로 피할 수 있는 반복 비용이 있습니다. 고정된 프로젝트 컨텍스트가 2,000 토큰이고 세션과 에이전트 전반에 걸쳐 하루에 20번씩 다시 언급된다면, 이는 한 달에 약 120만 토큰을 반복하는 데 낭비하는 셈이며, 세션당 4~5분의 재브리핑 시간이 추가로 소요됩니다. 마이그레이션은 이를 해결할 가장 저렴한 타이밍입니다. 이미 재구축 비용을 한 번 지불하고 있기 때문입니다. 선택은 다음 도구와 함께 사라질 파일로 재구축할 것인지, 아니면 사라지지 않을 레이어로 재구축할 것인지뿐입니다.
전환을 위한 모범 사례
코드뿐만 아니라 환경도 내보내기
프로토타입은 관리형 환경에서 실행되었습니다. 떠나기 전에 보안 비밀(secrets)의 이름, 데이터베이스 토폴로지, 크론 작업(cron jobs), 빌드 단계를 적어두세요. 이것이 "Replit에서는 잘 작동했습니다" 버그의 가장 흔한 원인이며, 20분만 투자하면 완전히 예방할 수 있습니다.
채팅 로그가 아닌 결론을 마이그레이션하기
Replit 기록을 CLAUDE.md에 그대로 붙여넣지 마세요. 결정 사항(선택, 이유, 날짜)을 추출하여 저장하세요. 결론은 검색이 잘 되지만, 대화 기록은 핵심 신호를 묻어버리고 토큰 비용만 발생시킵니다.
잘 작동한다면 Replit에서 프로토타이핑을 계속하세요
많은 팀이 아이디어를 빠르게 검증하기 위해 Replit을 계속 사용하고, 프로덕션 강화(hardening)를 위해 Claude Code를 사용합니다. 이러한 분할은 양쪽 모두 동일한 프로젝트 메모리를 읽을 때만 원활하게 작동합니다. 그렇지 않으면 서로 다른 두 개의 진실 버전을 유지하게 되고, 동일한 함정을 두 번씩 다시 발견하게 됩니다.
결론
Replit에서 Claude Code로 이동하는 것은 하나의 이름을 공유하는 두 개의 마이그레이션입니다. 첫 번째는 기계적인 작업입니다. Git 패널을 연결하고, GitHub에 푸시하고, 클론하는 것으로 1시간 안에 끝납니다. 두 번째는 비용이 많이 드는 작업입니다. Replit이 조용히 처리하고 있던 환경 가정들과 에이전트 채팅에만 존재했던 추론 과정입니다.
두 가지 모두를 단 한 번, 의도적으로 재구축하세요. 하지만 지식은 에디터 외부의 무언가로 재구축해야 합니다. 오늘 이동하는 도구가 여러분이 이동할 마지막 도구는 아니기 때문입니다. 프로젝트 메모리가 에이전트가 읽는 레이어에 존재할 때, "마이그레이션"은 "모든 것을 다시 설명하는 것"을 의미하지 않고 "새로운 클라이언트가 동일한 소스를 가리키도록 하는 것"을 의미하게 됩니다.