실제로 전송되는 것
CLAUDE.md 및 경로 범위 규칙으로 변환되는 스티어링(steering) 파일. Kiro는 워크스페이스용 .kiro/steering/과 글로벌용 ~/.kiro/steering/을 로드하며, 충돌 시 워크스페이스를 우선시합니다. Claude Code의 상응하는 파일은 프로젝트용 "팀 공유 지침"을 위한 ./CLAUDE.md와 모든 프로젝트용 "개인 선호도"를 위한 ~/.claude/CLAUDE.md입니다. 하지만 해결 방식이 다릅니다. Claude Code는 오버라이드하는 대신 로드 순서대로 병합하며, "두 규칙이 서로 모순되는 경우 Claude가 임의로 하나를 선택할 수 있다"고 경고합니다.
Kiro의 포함(inclusion) 모드는 부분적으로 수용됩니다. .claude/rules/ 파일은 glob 패턴의 paths: 프런트매터 필드를 허용하며, "Claude가 지정된 패턴과 일치하는 파일로 작업할 때만 적용"되는데, 이는 Kiro의 fileMatch와 유사합니다. Kiro의 always는 일반적인 항상 로드되는 파일이 됩니다. #name으로 호출되거나 에이전트가 설명에서 선택하는 Kiro의 manual 및 auto 모드는 직접적인 규칙 대응물이 없으므로, 해당 파일들은 스킬이 되거나 다듬어야 할 항상 켜져 있는 텍스트가 됩니다.
주의 사항이 있는 AGENTS.md. Kiro는 이를 읽고 "AGENTS.md 파일은 포함 모드를 지원하지 않으며 항상 포함된다"고 명시합니다. Claude Code는 "AGENTS.md가 아닌 CLAUDE.md를 읽습니다." 문서화된 연결 방법은 CLAUDE.md 상단에 한 줄짜리 @AGENTS.md 임포트를 추가하는 것이며, 이후 임포트된 파일은 세션 시작 시 로드됩니다. 하나의 파일만 권위 있게 유지하세요. 임포트는 "최대 4단계 깊이"까지 해석되며, 임포트된 모든 파일은 시작 시 컨텍스트에 들어갑니다.
디렉터리 이동으로 처리되는 스킬(Skills). 둘 다 동일한 개방형 표준을 기반으로 구축되었습니다. Kiro의 스킬 디렉터리는 개인 스킬의 경우 ~/.claude/skills/<name>/SKILL.md로, 프로젝트 스킬의 경우 .claude/skills/<name>/SKILL.md로 이동합니다. 우선순위에 주의하세요. 이는 Kiro의 스티어링 동작과 반대입니다. Claude Code의 규칙은 엔터프라이즈가 개인을 오버라이드하고 개인은 프로젝트를 오버라이드하므로, 동일한 이름의 개인 스킬이 프로젝트 스킬보다 우선합니다.
읽기 가능한 파일로서의 스펙(specs). .kiro/specs/<name>/에는 requirements.md, design.md, tasks.md가 포함되어 있습니다. 이는 리포지토리 내의 마크다운 파일로, 이동 후에도 여전히 읽을 수 있습니다. 다만 이들을 둘러싼 3단계 워크플로우는 함께 제공되지 않습니다.
실제적이지만 더 단순한 컨테이너로 들어가는 학습된 메모리. 이 부분은 새로운 내용이므로 별도의 섹션에서 다루겠습니다.
그 외에는 깔끔하게 전송되는 것이 없으며, 네 가지가 다르게 작동합니다.
6개의 레이어가 4개의 카테고리로 축소됩니다. Claude Code의 자동 메모리는 user("사용자의 역할, 전문성 및 작업 선호도"), feedback("사용자가 Claude에게 제공하는 수정 사항 및 확인된 접근 방식"), project("Claude가 코드나 git 히스토리에서 도출할 수 없는 진행 중인 작업, 마감일 및 결정 사항"), reference("프로젝트 외부에서 정보를 찾을 수 있는 위치")라는 type 필드를 기록합니다. Kiro의 preferences.md는 user에 매핑되고, 레슨은 feedback에 매핑되며, projects.md와 히스토리는 대략 project에 매핑됩니다. 벡터 검색, 항목별 중요도, 쿼리당 상위 8개 검색 기능을 갖춘 SQLite 테이블인 Kiro의 시맨틱 및 에피소드 저장소는 대응물이 없습니다. Claude Code는 MEMORY.md 인덱스와 메모리당 하나의 토픽 파일을 유지하며, "시작 시 user_role.md와 같은 토픽 파일을 로드하지 않습니다."
레슨의 보장성이 사라집니다. 이것이 대비해야 할 손실입니다. Kiro는 레슨을 신뢰도 1.0의 시맨틱 항목으로 저장하고, 하위 문자열 및 토픽 중복으로 중복을 제거하며, 최대 50개로 제한하고, "별도의 [Learned corrections] 블록으로" 주입합니다. 이 블록의 텍스트에는 "항상 이를 따르십시오. 기본 동작을 오버라이드합니다"라고 적혀 있습니다. 충돌 해결 순서에서 레슨은 다른 모든 것보다 위에 있는 1순위에 위치합니다. Claude Code의 feedback 유형은 다른 모든 것과 함께 로드되는 파일 내의 노트일 뿐이며, 문서에서는 지침 내용이 "강제된 구성이 아니라 컨텍스트"라고 명시하고 있습니다. 정보는 동일하지만 약속은 훨씬 약해집니다.
감쇠가 절벽으로 대체됩니다. Kiro는 점진적으로 감쇠합니다. 히스토리는 14일에 "하루에 첫 번째 항목 + 개수"로 감소하고, 61일에 "날짜 + 항목 개수만"으로 감소하며, 181일에 로드가 중단되고, 365일에 "디스크에서 삭제"됩니다. 에피소드 항목은 명시적인 곡선("~23일에 50%, ~77일에 10%")에 따라 감쇠하며, 저장소는 10,000개 항목 도달 시 "가장 중요도가 낮고 오래된" 것부터 먼저 정리합니다. Claude Code에는 감쇠가 없습니다. 파일은 "사용자나 Claude가 편집하거나 삭제할 때까지 유지"되며, 세션 트랜스크립트 보존 정리 대상에서 의도적으로 제외됩니다. 대신 읽기 제한이 있습니다. "MEMORY.md 파일의 처음 200줄 또는 25KB 중 먼저 도달하는 것"이며, 인덱스가 이를 초과하면 "쓰기는 여전히 성공"하지만 "다음 로드 시 제한을 초과하는 모든 내용은 삭제"됩니다. 점진적인 페이드 아웃 대신 엄격한 잘림(truncation)이 적용됩니다.
신뢰도 게이팅이 사라집니다. Kiro는 LLM이 시맨틱 메모리에 쓸 때 "신뢰도 ≥ 0.8"을 요구하며, "사용자가 명시적으로 쓴 내용은 신뢰도에 관계없이 항상 승리"합니다. Claude Code는 다르게 결정합니다. "Claude는 매 세션마다 무언가를 저장하지 않습니다. 향후 대화에서 정보가 유용할지 여부에 따라 기억할 가치가 있는 것을 결정합니다." 임계값이 아닌 판단의 문제로, 더 좋거나 나쁘다고 할 수는 없지만 사용자가 제어할 수 있는 노브는 아닙니다.
수동 마이그레이션
1단계: Kiro 사용을 중단하기 전에 대상이 없는 레이어 읽기
먼저 스냅샷을 찍으세요. kirocrew snapshot은 메모리, 워크스페이스, 크론, 설정, 스킬, 알림을 tarball로 묶습니다. Kiro만 이를 읽을 수 있으므로 임포트 파일이 아닌 백업으로 취급하세요. Kiro의 내장 일일 작업은 "최근 7개의 스냅샷을 유지"하므로 지난주의 스냅샷이 여전히 존재한다고 가정하지 마십시오. Kiro 자체 문서의 한 가지 경고: "스냅샷에는 민감한 데이터(감사 로그 무결성에 사용되는 보안 키)가 포함되어 있습니다."
그런 다음 다음 네 가지를 이 순서대로 읽으십시오.
레슨. 최대 50개, 신뢰도 1.0으로 제한되며 Kiro에서 가장 우선순위가 높은 레이어입니다. 이는 사용자가 직접 명시했거나 사용자의 수정 패턴에서 Kiro가 추출한 수정 사항입니다. 리포지토리의 어떤 것도 이를 암시하지 않으며, 이제 일반 노트가 되기 직전입니다.
preferences.md 및 projects.md. 둘 다 "추가 전용이 아니라 30개의 메시지마다 통합기에 의해 전체가 교체"되므로, 현재 읽고 있는 것은 로그가 아니라 Kiro가 파악한 사용자의 현재 모델입니다. 또한 각각 4,250자 및 6,400자로 제한되어 있어 신호 대 잡음비가 이례적으로 높은 짧은 글입니다.
에피소드 항목. 각각 10~2,000자의 짧은 스니펫으로 최대 10,000개까지 저장됩니다. 모두 읽을 필요는 없습니다. 검색 시 쿼리당 상위 8개가 반환되므로 현재 진행 중인 프로젝트를 쿼리하여 훑어보십시오.
Kiro Web의 학습된 메모리(사용한 경우). 설정의 메모리 아래에 있습니다. Kiro 자체 테이블은 내재화할 가치가 있는 경계를 보여줍니다. 메모리는 "에이전트가 작업하고 피드백을 제공할 때 자동으로 학습하는 것"이며 사용자는 "삭제"를 제어합니다. 스티어링은 "사용자가 명시적으로 작성하는 것"이며 사용자는 "모든 편집"을 제어합니다. 여기서는 전반부만 유실될 위험이 있습니다.
2단계: 작성된 절반을 안착시키고, 자동으로 작성되는 절반에 대한 기대치 설정하기
지침이 먼저입니다. 스티어링 파일에 fileMatch 패턴이 있던 곳마다 paths: glob을 사용하여 .kiro/steering/을 CLAUDE.md 및 .claude/rules/ 파일로 변환합니다. 생성된 시작점을 원한다면 /init을 실행하세요. 기존 파일을 덮어쓰는 대신 "개선 사항을 제안"합니다.
그런 다음 다듬으십시오. Claude Code의 가이드는 "CLAUDE.md 파일당 200줄 미만을 목표로 할 것"을 권장합니다. "파일이 길어지면 더 많은 컨텍스트를 소비하고 준수율이 떨어지기 때문"입니다. 항상 켜져 있는 파일이 수십 개로 늘어난 스티어링 디렉터리는 이 예산 내에서 온전히 살아남을 수 없으므로, 읽기 제한이 결정하게 두기보다는 무엇을 버릴지 직접 결정하는 것이 정직한 방법입니다.
/context로 실제로 로드된 내용을 확인하고 Memory files 아래의 목록을 확인하십시오. 이것이 가장 확실한 답변이며, 문서에 명시된 첫 번째 디버깅 단계입니다.
그 다음은 자동 메모리이며, 일주일 정도 시간을 두십시오. 기본적으로 켜져 있습니다. 저장 위치는 ~/.claude/projects/<project>/memory/이며, 여기서 <project>는 "git 리포지토리에서 파생되므로 동일한 리포지토리 내의 모든 작업 트리와 하위 디렉터리는 하나의 자동 메모리 디렉터리를 공유합니다."
나중에 발견하기보다 지금 내재화해야 할 두 가지 특성이 있습니다. 이는 의도적으로 지침 파일을 보완합니다. Claude는 "코드베이스에서 도출할 수 있는 모든 것을 건너뛰고" "CLAUDE.md 파일에 이미 명시된 모든 것을 건너뜁니다." 따라서 메모리 디렉터리에는 변환된 스티어링 파일에 없는 내용만 정확히 담기게 됩니다. 또한 이식성이 없습니다. "자동 메모리는 로컬 머신 전용"이며 "파일은 머신이나 클라우드 환경 간에 공유되지 않습니다."
따라서 이 마이그레이션의 이식성에 대한 솔직한 요약은 단지 하나의 홈 디렉터리에서 다른 홈 디렉터리로 이동했다는 것입니다. Kiro Crew의 메모리는 ~/.kiro/ 아래에 살았고, Claude Code의 메모리는 ~/.claude/ 아래에 삽니다. 둘 다 이동하지 않습니다. 이 문제의 일반적인 양상은 Claude Code가 프로젝트 컨텍스트를 잊어버리는 이유에서 다루고 있습니다.
일주일 후에 /memory를 실행하고 작성된 내용을 읽어보십시오. 그런 다음 Kiro 레슨을 명시적인 콘텐츠로 다시 입력하십시오. Claude가 스스로 작성하는 feedback 노트는 사용자가 강조한 규칙과 동일하지 않기 때문입니다.
더 나은 방법: 홈 디렉터리에 갇히지 않는 곳에 학습된 절반 보관하기
이 마이그레이션이 실제로 어떻게 구성되었는지 살펴보십시오. 스티어링 파일은 깔끔하게 변환되었습니다. 스킬은 디렉터리 이동이 필요했습니다. 스펙은 읽기 가능한 상태로 유지되었습니다. 그리고 진짜 작업이 필요했던 부분, 즉 깔끔한 대상이 없었던 부분은 한 머신의 단일 사용자 홈 디렉터리 아래에 있던 6개 레이어의 학습된 지식이었으며, 이를 직접 손으로 읽고 다시 타이핑해야 했습니다.
이것은 Kiro의 문제도, Claude Code의 문제도 아닙니다. 둘 다 학습된 메모리 시스템을 구축했고, 설계상 이를 로컬에 유지하며, 둘 다 합리적인 엔지니어링 선택입니다. 단지 특정 접근 방식을 거부한 이유에 대한 유일한 사본이 어느 한쪽에만 존재해서는 안 된다는 의미입니다.
이것이 바로 MemoryLake가 제공하는 것입니다. 도구가 쿼리하는 레이어에 프로젝트의 지속적인 지식을 보관하므로, 다음 전환은 단순한 전사 작업이 아니라 선호도의 선택이 됩니다. 설정은 3단계로 진행됩니다.
1단계: API 키 생성
로그인하고 API 키를 생성합니다. 연결하는 도구 전체에서 하나의 자격 증명만 사용합니다.

2단계: 첫 번째 메모리 업로드
각각 하나의 주장만 담긴 짧은 항목입니다. 기억이 생생할 때 1단계에서 읽은 내용을 바탕으로 바로 작성하십시오.

50개의 레슨, 항목당 하나씩. Kiro에서 가장 우선순위가 높은 레이어이자 소유한 것 중 가장 재구성하기 어려운 부분입니다.
현재 preferences.md 및 projects.md가 말하는 내용. 통째로 대체되는 파일은 구조상 짧습니다. 붙여넣기보다는 여러 주장으로 나누어 입력하십시오.
이유가 첨부된 결정 사항. "부하 상태에서 복제본이 지연되므로 쓰기를 대기열에 넣습니다." 규칙은 정책을 명시할 뿐이며, 이유만이 대안이 다시 제안되는 것을 막아줍니다.
이미 시도했다가 거부된 접근 방식. 스티어링에도 없고 커밋 메시지에도 없어 매 세션마다 다시 제안되는 내용들입니다.
3단계: AI 및 에이전트 연결
MemoryLake는 MCP 및 API를 통해 액세스할 수 있으며, Kiro와 Claude Code 모두 MCP 서버를 지원합니다. 따라서 전환 기간 동안 동일한 추론의 사본을 두 개 유지할 필요 없이 나란히 실행할 수 있으며, 다른 어시스턴트들도 API를 통해 동일한 메모리를 읽을 수 있습니다.

세 가지 솔직한 한계가 있습니다. MemoryLake는 Crew 스냅샷을 읽거나, Kiro Web의 메모리를 가져오거나, CLAUDE.md 및 자동 메모리 파일을 작성할 수 없습니다. 이는 각 제품 고유의 영역이며 위의 로더 동작은 해당 제품들의 몫입니다. MemoryLake는 사용자나 에이전트가 입력한 내용만 보관하므로 2단계는 수동으로 진행됩니다. 또한 지침은 강제된 구성이 아니라 컨텍스트입니다. 매번 반드시 지켜져야 하는 사항에 대해 Claude Code가 제시하는 자체적인 해답은 파일이 아니라 훅(hook)입니다.
실제 변화하는 점
스티어링 변환은 대부분 기계적입니다. fileMatch는 paths: glob이 되고, 항상 켜짐은 항상 켜짐으로 유지됩니다.
스킬은 디렉터리 이동과 우선순위 확인이 필요합니다. 개인 스킬이 프로젝트 스킬보다 우선합니다.
수정 사항이 오버라이드 블록을 잃게 됩니다. 중요한 사항은 노트가 아닌 명시적인 지침으로 다시 작성하십시오.
자동 정리가 중단됩니다. 더 이상 계층화된 페이드는 없지만, MEMORY.md는 200줄 또는 25KB를 초과하면 엄격하게 잘립니다.
이식성은 개선되지 않습니다. 하나의 홈 디렉터리에서 다른 홈 디렉터리로 이동할 뿐입니다. 이 일반적인 문제는 지속성 메모리가 실제로 의미하는 것에서 다루고 있습니다.
Kiro에서 Claude Code로 전환하기 위한 모범 사례
먼저 스냅샷을 찍고, tarball을 공유 드라이브에 두지 마십시오. Kiro는 여기에 민감한 키가 포함되어 있다고 경고합니다.
다른 무엇보다 먼저 레슨을 읽으십시오. 50개의 항목, 가장 높은 우선순위, 반대편에는 이에 상응하는 보장이 없습니다.
레슨을 메모리가 아닌 지침으로 다시 작성하십시오. feedback 노트는 컨텍스트이지만, 사용자가 작성한 CLAUDE.md 라인은 의도입니다.
fileMatch 스티어링을 paths: 규칙으로 변환하고 나머지는 다듬으십시오. 200줄 목표는 예산처럼 취급해야 하는 가이드라인입니다.
메모리가 아닌 /context로 확인하십시오. Memory files 목록이 실제로 로드된 내용입니다.
MEMORY.md 길이를 주시하십시오. 읽기 제한을 초과하면 "다음 로드 시 제한을 초과하는 모든 내용은 삭제"됩니다.
코드베이스를 CLAUDE.md에 붙여넣지 마십시오. 두 벤더 모두 리포지토리에 이미 명시된 내용을 다시 작성하지 말라고 조언합니다. 비용 측면의 문제는 Claude Code가 코드베이스를 다시 읽지 않도록 중지하는 방법에서 다루고 있습니다.
추론은 두 도구 외부에 보관하십시오. 여기의 모든 레이어에는 한계가 있으며, 추론은 가장 먼저 잘려 나가는 부분입니다. 일반적인 설명은 긴 컨텍스트 창이 메모리가 아닌 이유에서 확인할 수 있습니다.
결론
Kiro에서 Claude Code로의 마이그레이션은 이 제품군 중에서 학습된 절반이 갈 곳이 있는 최초의 마이그레이션이며, 이로 인해 더 쉬우면서도 동시에 더 기만적입니다. 스티어링은 CLAUDE.md 및 paths: 범위 규칙으로 변환되고, AGENTS.md는 한 줄짜리 임포트를 통해 연결되며, 스킬은 폴더 대 폴더로 이동하고, 스펙은 읽기 가능한 상태로 유지됩니다. 자동 메모리는 기본적으로 켜져 있으며 일주일 이내에 수정 사항을 기록하기 시작합니다.
손실은 구체적입니다. 6개의 레이어는 4개의 노트 유형이 되며, 신뢰도 게이트형 쓰기, 벡터 검색, 항목별 중요도, 명시적 감쇠 곡선을 갖춘 Kiro의 시맨틱 및 에피소드 저장소는 대응물이 없습니다. 레슨은 두 시스템이 제공하는 가장 강력한 보장, 즉 충돌 해결 순서의 맨 위에 주입되어 에이전트에게 기본 동작을 오버라이드하도록 지시하는 별도의 블록을 잃게 됩니다. 자동 감쇠는 200줄 또는 25KB를 초과하는 내용을 자동으로 삭제하는 엄격한 읽기 제한으로 대체됩니다. 그리고 두 시스템 모두 학습된 메모리를 한 머신의 홈 디렉터리에 보관하기 때문에 이식성은 개선되지 않습니다.
그러니 스냅샷을 찍고, 50개의 레슨과 두 개의 통합 파일을 읽고, glob 매핑을 사용하여 스티어링을 변환하고, 중요했던 수정 사항들을 다시 학습될 것이라 믿기보다는 명시적인 지침으로 다시 작성하십시오. 그런 다음 결정 사항과 거부된 접근 방식들을 ~/.kiro/나 ~/.claude/ 중 어느 쪽도 소유하지 않는 레이어에 두십시오. 그러면 다음 전환에는 한 분기가 아니라 단 하루 오후의 시간만 소요될 것입니다.